Version 272

This commit is contained in:
Hydrus Network Developer 2017-09-06 15:18:20 -05:00
parent e7449281e6
commit 1b4ae70b1c
50 changed files with 998 additions and 11487 deletions

View File

@ -8,6 +8,36 @@
<div class="content">
<h3>changelog</h3>
<ul>
<li><h3>version 272</h3></li>
<ul>
<li>finished moving the last misc network consumers to the new networking engine</li>
<li>greatly simplified and harmonised some of the new network job response processing</li>
<li>the gelbooru 404 issue should be fixed!</li>
<li>added a parsing patch for rule34hentai.net's mp4 links, which was causing 'link not found' failures on the hydrus parsing end. please tell your R34 subs to retry their fails</li>
<li>wrote a patch (actually updated an existing patch that had fallen to bitrot) for the danbooru booru (and extended it to anything else with 'Running Danbooru' in its html) to try to fetch the full-size image if one exists. this may not last long, so I do not recommend regular users rely on it, but feel free to play with it until I have a better fix in the new downloader engine</li>
<li>you can now add 'thread watcher' to the default import tag options. it has 'filename' and explicit tags options. unlike gallery downloaders, thread watchers will not inherit from the 'default' import tag options entry--you need to set the specific entry</li>
<li>added regular number key support to the new shortcut system</li>
<li>fixed the borked splash screen drag coordinate calculation</li>
<li>heavy session loads should be more polite to CPUs and window managers</li>
<li>pages should generally spawn with their proper name (rather than a flicker of 'page') no matter their spawning context</li>
<li>fixed osx page tab drag-and-drop coordinate calculations</li>
<li>figured a way to make os x page tab drag-and-drop start on a single left-mouse-down event</li>
<li>in an effort to improve popup display on systems with virtual desktops, the popup message parent window will now not go from hidden to shown while the mouse is on a display screen other than the main gui</li>
<li>fixed a wacky bug where clicking on a page tab, then on its sort dropdown, then on a different tab, would invoke the Deep Ones to commence a page tab drag and drop event</li>
<li>fixed an index issue when unclosing some pages in certain orders</li>
<li>increased pre-processing disk cache population time</li>
<li>tweaked regular memory maintenance disk cache population timings</li>
<li>fixed shortcut-driven tag petition events when the tag has a sibling (e.g. if you have sibling pair (a->b) and a shortcut (key->flip a), hitting 'key' will now correctly flip a (appearing as b) on and off in the media viewer)</li>
<li>fixed some ugly layout sizing calculations on the path tagging dialog</li>
<li>updated the path tagging listctrl to the new control</li>
<li>updated the quick namespaces listctrl to the new control</li>
<li>updated the regexbutton's menu to the new menu system</li>
<li>fixed some typo errors with the regexbutton's entries!</li>
<li>removed the old gallery downloader unit tests, as these operated on the old network and downloader engine--new, granular tests will be reintroduced for the new parsing components as they are written</li>
<li>cleaned up some shortcut key code</li>
<li>misc refactoring</li>
<li>misc improvements</li>
</ul>
<li><h3>version 271</h3></li>
<ul>
<li>fixed an issue where the notebook 'motion' event was being consumed, disallowing the regular OS 'highlighting' on tab mouseover</li>

View File

@ -7,8 +7,9 @@
<body>
<div class="content">
<h3>contact and links</h3>
<p>Please send me all your bug reports, questions, ideas, and comments. It is always interesting to see how other people are using my software, and what they generally think. Most of the changes every week are suggested by users.</p>
<p>Please contact me by email, twitter, tumblr, or the 8chan board--I do not mind which. I'm not active on github. I often like to spend a day or so to think before replying to non-urgent messages, but I do try to reply to everything.</p>
<p>Please send me all your bug reports, questions, ideas, and comments. It is always interesting to see how other people are using my software and what they generally think of it. Most of the changes every week are suggested by users.</p>
<p>You can contact me by email, twitter, tumblr, discord, or the 8chan board--I do not mind which. I'm not active on github (I use it mostly as a mirror of my home dev environment) and do not check its messages or issues. I often like to spend a day or so to think before replying to non-urgent messages, but I do try to reply to everything.</p>
<p>I am on the discord on Saturday afternoon, USA time, and Wednesday after I put the release out. If that is not a good time for you, feel free to leave me a DM and I will get to you when I can. There are also plenty of other hydrus users who idle who would be happy to help with any sort of support question.</p>
<p>I delete all tweets and resolved email conversations after three months. So, if you think you are waiting for a reply, or I said I was going to work on something you care about and seem to have forgotten, please do nudge me.</p>
<p>If you have a problem with something on someone else's server, please, <span class="warning">do not come to me</span>, as I cannot help. If your ex-gf's nudes have leaked onto the internet or you just find something terribly offensive, I cannot help you at all.</p>
<p>Anyway:</p>
@ -23,6 +24,7 @@
<li><a href="mailto:hydrus.admin@gmail.com">email</a></li>
<li><a href="https://discord.gg/vy8CUB4">discord</a></li>
<li><a href="https://www.patreon.com/hydrus_dev">patreon</a></li>
<li><a href="https://github.com/CuddleBear92/Hydrus-Presets-and-Scripts">user-run wiki (including download presets for several non-default boorus)</a>
</ul>
<p>If you would like to send me something physical, you can use my PO Box:</p>
<ul>

View File

@ -3243,17 +3243,60 @@ class WebSessionManagerClient( object ):
return True
def EnsureLoggedIn( self, name ):
if name in self._error_names:
raise Exception( name + ' could not establish a session! This ugly error is temporary due to the network engine rewrite. Please restart the client to reattempt this network context.' )
now = HydrusData.GetNow()
def EnsureHydrusSessionIsOK( self, service_key ):
with self._lock:
if not self._controller.services_manager.ServiceExists( service_key ):
raise HydrusExceptions.DataMissing( 'Service does not exist!' )
name = self._controller.services_manager.GetService( service_key ).GetName()
if service_key in self._error_names:
raise Exception( 'Could not establish a hydrus network session for ' + name + '! This ugly error is temporary due to the network engine rewrite. Please restart the client to reattempt this network context.' )
network_context = ClientNetworking.NetworkContext( CC.NETWORK_CONTEXT_HYDRUS, service_key )
required_cookies = [ 'session_key' ]
if self._IsLoggedIn( network_context, required_cookies ):
return
try:
self.SetupHydrusSession( service_key )
if not self._IsLoggedIn( network_context, required_cookies ):
return
HydrusData.Print( 'Successfully logged into ' + name + '.' )
except:
self._error_names.add( service_key )
raise
def EnsureLoggedIn( self, name ):
with self._lock:
if name in self._error_names:
raise Exception( name + ' could not establish a session! This ugly error is temporary due to the network engine rewrite. Please restart the client to reattempt this network context.' )
if name == 'hentai foundry':
network_context = ClientNetworking.NetworkContext( CC.NETWORK_CONTEXT_DOMAIN, 'hentai-foundry.com' )
@ -3388,6 +3431,32 @@ class WebSessionManagerClient( object ):
r = session.post( 'https://accounts.pixiv.net/api/login?lang=en', data = form_fields, headers = headers )
def SetupHydrusSession( self, service_key ):
# nah, replace this with a proper login script
service = self._controller.services_manager.GetService( service_key )
if not service.HasAccessKey():
raise HydrusExceptions.DataMissing( 'No access key for this service, so cannot set up session!' )
access_key = service.GetAccessKey()
url = 'blah'
network_job = ClientNetworking.NetworkJobHydrus( service_key, 'GET', url )
network_job.SetForLogin( True )
network_job.AddAdditionalHeader( 'Hydrus-Key', access_key.encode( 'hex' ) )
self._controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
def TestPixiv( self, pixiv_id, password ):
# this is just an ugly copy, but fuck it for the minute

View File

@ -381,7 +381,10 @@ class Controller( HydrusController.HydrusController ):
return False
def DoHTTP( self, *args, **kwargs ): return self._http.Request( *args, **kwargs )
def DoHTTP( self, *args, **kwargs ):
return self._http.Request( *args, **kwargs )
def DoIdleShutdownWork( self ):
@ -809,18 +812,26 @@ class Controller( HydrusController.HydrusController ):
if self.CurrentlyVeryIdle():
disk_cache_stop_time = HydrusData.GetNow() + 5
cache_period = 3600
disk_cache_stop_time = HydrusData.GetNow() + 30
elif self.CurrentlyIdle():
disk_cache_stop_time = HydrusData.GetNow() + 2
cache_period = 1800
disk_cache_stop_time = HydrusData.GetNow() + 10
else:
disk_cache_stop_time = HydrusData.GetNow() + 1
cache_period = 240
disk_cache_stop_time = HydrusData.GetNow() + 2
self.Read( 'load_into_disk_cache', stop_time = disk_cache_stop_time, caller_limit = disk_cache_maintenance_mb * 1024 * 1024 )
if HydrusData.TimeHasPassed( self._timestamps[ 'last_disk_cache_population' ] + cache_period ):
self.Read( 'load_into_disk_cache', stop_time = disk_cache_stop_time, caller_limit = disk_cache_maintenance_mb * 1024 * 1024 )
self._timestamps[ 'last_disk_cache_population' ] = HydrusData.GetNow()

View File

@ -7685,7 +7685,7 @@ class DB( HydrusDB.HydrusDB ):
self._controller.pub( 'splash_set_status_text', status, print_to_log = False )
job_key.SetVariable( 'popup_text_1', status )
stop_time = HydrusData.GetNow() + min( 5 + ( num_updates_to_do * 4 ), 30 )
stop_time = HydrusData.GetNow() + min( 15 + ( num_updates_to_do * 30 ), 300 )
self._LoadIntoDiskCache( stop_time = stop_time )

View File

@ -225,8 +225,8 @@ def ConvertShortcutToPrettyShortcut( modifier, key ):
elif modifier == wx.ACCEL_CTRL: modifier = 'ctrl'
elif modifier == wx.ACCEL_SHIFT: modifier = 'shift'
if key in range( 65, 91 ): key = chr( key + 32 ) # + 32 for converting ascii A -> a
elif key in range( 97, 123 ): key = chr( key )
if OrdIsAlphaUpper( key ): key = chr( key + 32 ) # + 32 for converting ascii A -> a
elif OrdIsAlphaLower( key ) or OrdIsNumber( key ): key = chr( key )
else: key = CC.wxk_code_string_lookup[ key ]
return ( modifier, key )
@ -496,6 +496,22 @@ def MergePredicates( predicates, add_namespaceless = False ):
return master_predicate_dict.values()
def OrdIsAlphaLower( o ):
return 97 <= o and o <= 122
def OrdIsAlphaUpper( o ):
return 65 <= o and o <= 90
def OrdIsAlpha( o ):
return OrdIsAlphaLower( o ) or OrdIsAlphaUpper( o )
def OrdIsNumber( o ):
return 48 <= o and o <= 57
def ReportShutdownException():
text = 'A serious error occured while trying to exit the program. Its traceback may be shown next. It should have also been written to client.log. You may need to quit the program from task manager.'
@ -817,7 +833,7 @@ class ClientOptions( HydrusSerialisable.SerialisableBase ):
self._dictionary[ 'booleans' ][ 'hide_message_manager_on_gui_iconise' ] = HC.PLATFORM_OSX
self._dictionary[ 'booleans' ][ 'hide_message_manager_on_gui_deactive' ] = False
self._dictionary[ 'booleans' ][ 'load_images_with_pil' ] = HC.PLATFORM_LINUX or HC.PLATFORM_OSX
self._dictionary[ 'booleans' ][ 'load_images_with_pil' ] = False
self._dictionary[ 'booleans' ][ 'use_system_ffmpeg' ] = False
@ -1195,6 +1211,11 @@ class ClientOptions( HydrusSerialisable.SerialisableBase ):
site_type = gallery_identifier.GetSiteType()
if site_type == HC.SITE_TYPE_THREAD_WATCHER:
return ImportTagOptions() # if nothing set, do nothing in this special case
if site_type == HC.SITE_TYPE_BOORU and default_booru_gallery_identifier in default_import_tag_options:
guidance_import_tag_options = default_import_tag_options[ default_booru_gallery_identifier ]
@ -2297,11 +2318,11 @@ class Shortcut( HydrusSerialisable.SerialisableBase ):
if self._shortcut_type == CC.SHORTCUT_TYPE_KEYBOARD:
if self._shortcut_key in range( 65, 91 ):
if OrdIsAlphaUpper( self._shortcut_key ):
components.append( chr( self._shortcut_key + 32 ) ) # + 32 for converting ascii A -> a
elif self._shortcut_key in range( 97, 123 ):
elif OrdIsAlphaLower( self._shortcut_key ) or OrdIsNumber( self._shortcut_key ):
components.append( chr( self._shortcut_key ) )
@ -2455,7 +2476,7 @@ def ConvertKeyEventToShortcut( event ):
key = event.KeyCode
if key in range( 65, 91 ) or key in CC.wxk_code_string_lookup.keys():
if OrdIsAlpha( key ) or OrdIsNumber( key ) or key in CC.wxk_code_string_lookup.keys():
modifiers = []

View File

@ -328,6 +328,11 @@ def GetDefaultNamespacesAndSearchValue( gallery_identifier ):
namespaces = [ '' ]
search_value = 'username'
elif site_type == HC.SITE_TYPE_THREAD_WATCHER:
namespaces = [ 'filename' ]
search_value = 'thread url'
return ( namespaces, search_value )
@ -336,7 +341,7 @@ def GetDefaultBoorus():
boorus = {}
name = 'gelbooru'
search_url = 'http://gelbooru.com/index.php?page=post&s=list&tags=%tags%&pid=%index%'
search_url = 'https://gelbooru.com/index.php?page=post&s=list&tags=%tags%&pid=%index%'
search_separator = '+'
advance_by_page_num = False
thumb_classname = 'thumb'
@ -388,7 +393,7 @@ def GetDefaultBoorus():
image_data = None
tag_classnames_to_namespaces = { 'category-0' : '', 'category-4' : 'character', 'category-3' : 'series', 'category-1' : 'creator' }
#boorus[ 'danbooru' ] = ClientData.Booru( name, search_url, search_separator, advance_by_page_num, thumb_classname, image_id, image_data, tag_classnames_to_namespaces )
boorus[ 'danbooru' ] = ClientData.Booru( name, search_url, search_separator, advance_by_page_num, thumb_classname, image_id, image_data, tag_classnames_to_namespaces )
name = 'mishimmie'
search_url = 'http://shimmie.katawa-shoujo.com/post/list/%tags%/%index%'

View File

@ -161,19 +161,7 @@ def GetImageboardFileURL( thread_url, filename, ext ):
HG.client_controller.network_engine.AddJob( network_job )
while not network_job.IsDone():
time.sleep( 0.1 )
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
raise network_job.GetErrorException()
network_job.WaitUntilDone()
thread_html = network_job.GetContent()
@ -544,36 +532,22 @@ class Gallery( object ):
HG.client_controller.network_engine.AddJob( network_job )
while not network_job.IsDone():
try:
time.sleep( 0.1 )
network_job.WaitUntilDone()
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
e = network_job.GetErrorException()
except Exception as e:
HydrusData.Print( 'The url ' + url + ' gave the following problem:' )
HydrusData.PrintException( e )
raise e
elif network_job.IsCancelled():
raise HydrusExceptions.CancelledException( 'Download cancelled!' )
else:
if temp_path is None:
return network_job.GetContent()
raise
if temp_path is None:
return network_job.GetContent()
def _GetGalleryPageURL( self, query, page_index ):
@ -809,6 +783,9 @@ class GalleryBooru( Gallery ):
# giving 404 on some content servers for http, no redirect for some reason
urls = [ ClientData.ConvertHTTPToHTTPS( url ) for url in urls ]
return ( urls, definitely_no_more_pages )
@ -819,8 +796,6 @@ class GalleryBooru( Gallery ):
soup = GetSoup( html )
image_base = None
image_url = None
try:
@ -833,7 +808,10 @@ class GalleryBooru( Gallery ):
image_string = soup.find( text = re.compile( 'Save this file' ) )
if image_string is None: image_string = soup.find( text = re.compile( 'Save this video' ) )
if image_string is None:
image_string = soup.find( text = re.compile( 'Save this video' ) )
if image_string is None:
@ -859,6 +837,22 @@ class GalleryBooru( Gallery ):
# catchall for rule34hentai.net's mp4s, which are loaded in a mickey-mouse flv player
if image_url is None:
magic_phrase = 'document.write("<source src=\''
if magic_phrase in html:
# /image/252605' type='video/mp4...
image_url_and_gumpf = html.split( magic_phrase, 1 )[1]
image_url = image_url_and_gumpf.split( '\'', 1 )[0]
else:
image = image_string.parent
@ -872,13 +866,16 @@ class GalleryBooru( Gallery ):
image_url = image[ 'src' ]
if 'sample/sample-' in image_url:
if 'Running Danbooru' in html:
# danbooru resized image
# possible danbooru resized image
image = soup.find( id = 'image-resize-link' )
possible_better_image = soup.find( id = 'image-resize-link' )
image_url = image[ 'href' ]
if possible_better_image is not None:
image_url = possible_better_image[ 'href' ]
elif image.name == 'a':

View File

@ -3287,8 +3287,8 @@ class FrameSplash( wx.Frame ):
self.Center()
self._last_drag_coordinates = None
self._total_drag_delta = ( 0, 0 )
self._drag_init_click_coordinates = None
self._drag_init_position = None
self._initial_position = self.GetPosition()
# this is 124 x 166
@ -3344,21 +3344,19 @@ class FrameSplash( wx.Frame ):
def EventDrag( self, event ):
if event.Dragging() and self._last_drag_coordinates is not None:
if event.Dragging() and self._drag_init_click_coordinates is not None:
( old_x, old_y ) = self._last_drag_coordinates
( init_x, init_y ) = self._drag_init_click_coordinates
( x, y ) = wx.GetMousePosition()
( delta_x, delta_y ) = ( x - old_x, y - old_y )
total_drag_delta = ( x - init_x, y - init_y )
( old_delta_x, old_delta_y ) = self._total_drag_delta
#
self._total_drag_delta = ( old_delta_x + delta_x, old_delta_y + delta_y )
( init_x, init_y ) = self._drag_init_position
( init_x, init_y ) = self._initial_position
( total_delta_x, total_delta_y ) = self._total_drag_delta
( total_delta_x, total_delta_y ) = total_drag_delta
self.SetPosition( ( init_x + total_delta_x, init_y + total_delta_y ) )
@ -3366,14 +3364,15 @@ class FrameSplash( wx.Frame ):
def EventDragBegin( self, event ):
self._last_drag_coordinates = wx.GetMousePosition()
self._drag_init_click_coordinates = wx.GetMousePosition()
self._drag_init_position = self.GetPosition()
event.Skip()
def EventDragEnd( self, event ):
self._last_drag_coordinates = None
self._drag_init_click_coordinates = None
event.Skip()

View File

@ -1756,9 +1756,9 @@ class Canvas( wx.Window ):
tags_manager = self._current_media.GetTagsManager()
current = tags_manager.GetCurrent()
pending = tags_manager.GetPending()
petitioned = tags_manager.GetPetitioned()
current = tags_manager.GetCurrent( service_key )
pending = tags_manager.GetPending( service_key )
petitioned = tags_manager.GetPetitioned( service_key )
if service_type == HC.LOCAL_TAG:

View File

@ -24,6 +24,86 @@ ID_TIMER_ANIMATED = wx.NewId()
ID_TIMER_SLIDESHOW = wx.NewId()
ID_TIMER_MEDIA_INFO_DISPLAY = wx.NewId()
def GetFocusTLP():
focus = wx.Window.FindFocus()
return GetTLP( focus )
def GetTLP( window ):
if window is None:
return None
elif isinstance( window, wx.TopLevelWindow ):
return window
else:
return window.GetTopLevelParent()
def IsWXAncestor( child, ancestor ):
parent = child
while not isinstance( parent, wx.TopLevelWindow ):
if parent == ancestor:
return True
parent = parent.GetParent()
return False
def NotebookScreenToHitTest( notebook, screen_position ):
if HC.PLATFORM_OSX:
# OS X has some unusual coordinates for its notebooks
# the notebook tabs are not considered to be in the client area (they are actually negative on getscreenposition())
# its hittest works on window coords, not client coords
# hence to get hittest position, we get our parent's client position and adjust by our given position in that
# this also seems to cause menus popped on notebooks to spawn high and left, wew
( my_x, my_y ) = notebook.GetPosition()
( p_x, p_y ) = notebook.GetParent().ScreenToClient( wx.GetMousePosition() )
position = ( p_x - my_x, p_y - my_y )
else:
position = notebook.ScreenToClient( screen_position )
return notebook.HitTest( position )
def TLPHasFocus( window ):
focus_tlp = GetFocusTLP()
window_tlp = GetTLP( window )
return window_tlp == focus_tlp
def WindowHasFocus( window ):
focus = wx.Window.FindFocus()
if focus is None:
return False
return window == focus
def WindowOrAnyTLPChildHasFocus( window ):
focus = wx.Window.FindFocus()
@ -61,62 +141,6 @@ def WindowOrSameTLPChildHasFocus( window ):
return False
def GetFocusTLP():
focus = wx.Window.FindFocus()
return GetTLP( focus )
def GetTLP( window ):
if window is None:
return None
elif isinstance( window, wx.TopLevelWindow ):
return window
else:
return window.GetTopLevelParent()
def TLPHasFocus( window ):
focus_tlp = GetFocusTLP()
window_tlp = GetTLP( window )
return window_tlp == focus_tlp
def WindowHasFocus( window ):
focus = wx.Window.FindFocus()
if focus is None:
return False
return window == focus
def IsWXAncestor( child, ancestor ):
parent = child
while not isinstance( parent, wx.TopLevelWindow ):
if parent == ancestor:
return True
parent = parent.GetParent()
return False
def WrapInGrid( parent, rows, expand_text = False ):
gridbox = wx.FlexGridSizer( 0, 2 )
@ -2147,155 +2171,83 @@ class RatingNumericalCanvas( RatingNumerical ):
class RegexButton( wx.Button ):
ID_REGEX_WHITESPACE = 9001 # temp fix, 0 is buggy
ID_REGEX_NUMBER = 1
ID_REGEX_ALPHANUMERIC = 2
ID_REGEX_ANY = 3
ID_REGEX_BEGINNING = 4
ID_REGEX_END = 5
ID_REGEX_0_OR_MORE_GREEDY = 6
ID_REGEX_1_OR_MORE_GREEDY = 7
ID_REGEX_0_OR_1_GREEDY = 8
ID_REGEX_0_OR_MORE_MINIMAL = 9
ID_REGEX_1_OR_MORE_MINIMAL = 10
ID_REGEX_0_OR_1_MINIMAL = 11
ID_REGEX_EXACTLY_M = 12
ID_REGEX_M_TO_N_GREEDY = 13
ID_REGEX_M_TO_N_MINIMAL = 14
ID_REGEX_LOOKAHEAD = 15
ID_REGEX_NEGATIVE_LOOKAHEAD = 16
ID_REGEX_LOOKBEHIND = 17
ID_REGEX_NEGATIVE_LOOKBEHIND = 18
ID_REGEX_NUMBER_WITHOUT_ZEROES = 19
ID_REGEX_BACKSPACE = 22
ID_REGEX_SET = 23
ID_REGEX_NOT_SET = 24
ID_REGEX_FILENAME = 25
ID_REGEX_MANAGE_FAVOURITES = 26
ID_REGEX_FAVOURITES = range( 100, 200 )
class RegexButton( BetterButton ):
def __init__( self, parent ):
wx.Button.__init__( self, parent, label = 'regex shortcuts' )
self.Bind( wx.EVT_BUTTON, self.EventButton )
self.Bind( wx.EVT_MENU, self.EventMenu )
BetterButton.__init__( self, parent, 'regex shortcuts', self._ShowMenu )
def EventButton( self, event ):
def _ShowMenu( self ):
menu = wx.Menu()
ClientGUIMenus.AppendMenuLabel( menu, 'click on a phrase to copy to clipboard' )
ClientGUIMenus.AppendMenuLabel( menu, 'click on a phrase to copy it to the clipboard' )
ClientGUIMenus.AppendSeparator( menu )
submenu = wx.Menu()
submenu.Append( self.ID_REGEX_WHITESPACE, r'whitespace character - \s' )
submenu.Append( self.ID_REGEX_NUMBER, r'number character - \d' )
submenu.Append( self.ID_REGEX_ALPHANUMERIC, r'alphanumeric or backspace character - \w' )
submenu.Append( self.ID_REGEX_ANY, r'any character - .' )
submenu.Append( self.ID_REGEX_BACKSPACE, r'backspace character - \\' )
submenu.Append( self.ID_REGEX_BEGINNING, r'beginning of line - ^' )
submenu.Append( self.ID_REGEX_END, r'end of line - $' )
submenu.Append( self.ID_REGEX_SET, u'any of these - [\u2026]' )
submenu.Append( self.ID_REGEX_NOT_SET, u'anything other than these - [^\u2026]' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'whitespace character - \s', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'\s' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'number character - \d', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'\d' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'alphanumeric or backspace character - \w', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'\w' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'any character - .', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'.' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'backslash character - \\', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'\\' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'beginning of line - ^', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'^' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'end of line - $', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'$' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'any of these - [\u2026]', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'[\u2026]' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'anything other than these - [^\u2026]', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'[^\u2026]' )
ClientGUIMenus.AppendSeparator( submenu )
submenu.Append( self.ID_REGEX_0_OR_MORE_GREEDY, r'0 or more matches, consuming as many as possible - *' )
submenu.Append( self.ID_REGEX_1_OR_MORE_GREEDY, r'1 or more matches, consuming as many as possible - +' )
submenu.Append( self.ID_REGEX_0_OR_1_GREEDY, r'0 or 1 matches, preferring 1 - ?' )
submenu.Append( self.ID_REGEX_0_OR_MORE_MINIMAL, r'0 or more matches, consuming as few as possible - *?' )
submenu.Append( self.ID_REGEX_1_OR_MORE_MINIMAL, r'1 or more matches, consuming as few as possible - +?' )
submenu.Append( self.ID_REGEX_0_OR_1_MINIMAL, r'0 or 1 matches, preferring 0 - *' )
submenu.Append( self.ID_REGEX_EXACTLY_M, r'exactly m matches - {m}' )
submenu.Append( self.ID_REGEX_M_TO_N_GREEDY, r'm to n matches, consuming as many as possible - {m,n}' )
submenu.Append( self.ID_REGEX_M_TO_N_MINIMAL, r'm to n matches, consuming as few as possible - {m,n}?' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'0 or more matches, consuming as many as possible - *', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'*' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'1 or more matches, consuming as many as possible - +', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'+' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'0 or 1 matches, preferring 1 - ?', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'?' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'0 or more matches, consuming as few as possible - *?', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'*?' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'1 or more matches, consuming as few as possible - +?', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'+?' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'0 or 1 matches, preferring 0 - ??', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'??' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'exactly m matches - {m}', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'{m}' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'm to n matches, consuming as many as possible - {m,n}', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'{m,n}' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'm to n matches, consuming as few as possible - {m,n}?', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'{m,n}?' )
ClientGUIMenus.AppendSeparator( submenu )
submenu.Append( self.ID_REGEX_LOOKAHEAD, u'the next characters are: (non-consuming) - (?=\u2026)' )
submenu.Append( self.ID_REGEX_NEGATIVE_LOOKAHEAD, u'the next characters are not: (non-consuming) - (?!\u2026)' )
submenu.Append( self.ID_REGEX_LOOKBEHIND, u'the previous characters are: (non-consuming) - (?<=\u2026)' )
submenu.Append( self.ID_REGEX_NEGATIVE_LOOKBEHIND, u'the previous characters are not: (non-consuming) - (?<!\u2026)' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'the next characters are: (non-consuming) - (?=\u2026)', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'(?=\u2026)' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'the next characters are not: (non-consuming) - (?!\u2026)', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'(?!\u2026)' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'the previous characters are: (non-consuming) - (?<=\u2026)', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'(?<=\u2026)' )
ClientGUIMenus.AppendMenuItem( self, submenu, u'the previous characters are not: (non-consuming) - (?<!\u2026)', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', u'(?<!\u2026)' )
ClientGUIMenus.AppendSeparator( submenu )
submenu.Append( self.ID_REGEX_NUMBER_WITHOUT_ZEROES, r'0074 -> 74 - [1-9]+\d*' )
submenu.Append( self.ID_REGEX_FILENAME, r'filename - (?<=' + os.path.sep.encode( 'string_escape' ) + r')[^' + os.path.sep.encode( 'string_escape' ) + r']*?(?=\..*$)' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'0074 -> 74 - [1-9]+\d*', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', r'[1-9]+\d*' )
ClientGUIMenus.AppendMenuItem( self, submenu, r'filename - (?<=' + os.path.sep.encode( 'string_escape' ) + r')[^' + os.path.sep.encode( 'string_escape' ) + r']*?(?=\..*$)', 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', '(?<=' + os.path.sep.encode( 'string_escape' ) + r')[^' + os.path.sep.encode( 'string_escape' ) + r']*?(?=\..*$)' )
menu.AppendMenu( -1, 'regex components', submenu )
ClientGUIMenus.AppendMenu( menu, submenu, 'regex components' )
submenu = wx.Menu()
submenu.Append( self.ID_REGEX_MANAGE_FAVOURITES, 'manage favourites' )
ClientGUIMenus.AppendMenuItem( self, submenu, 'manage favourites', 'manage some custom favourite phrases', self._ManageFavourites )
ClientGUIMenus.AppendSeparator( submenu )
for ( index, ( regex_phrase, description ) ) in enumerate( HC.options[ 'regex_favourites' ] ):
for ( regex_phrase, description ) in HC.options[ 'regex_favourites' ]:
menu_id = index + 100
submenu.Append( menu_id, description )
ClientGUIMenus.AppendMenuItem( self, submenu, description, 'copy this phrase to the clipboard', HG.client_controller.pub, 'clipboard', 'text', regex_phrase )
menu.AppendMenu( -1, 'favourites', submenu )
ClientGUIMenus.AppendMenu( menu, submenu, 'favourites' )
HG.client_controller.PopupMenu( self, menu )
def EventMenu( self, event ):
def _ManageFavourites( self ):
id = event.GetId()
import ClientGUIDialogsManage
phrase = None
if id == self.ID_REGEX_WHITESPACE: phrase = r'\s'
elif id == self.ID_REGEX_NUMBER: phrase = r'\d'
elif id == self.ID_REGEX_ALPHANUMERIC: phrase = r'\w'
elif id == self.ID_REGEX_ANY: phrase = r'.'
elif id == self.ID_REGEX_BACKSPACE: phrase = r'\\'
elif id == self.ID_REGEX_BEGINNING: phrase = r'^'
elif id == self.ID_REGEX_END: phrase = r'$'
elif id == self.ID_REGEX_SET: phrase = u'[\u2026]'
elif id == self.ID_REGEX_NOT_SET: phrase = u'[^\u2026]'
elif id == self.ID_REGEX_0_OR_MORE_GREEDY: phrase = r'*'
elif id == self.ID_REGEX_1_OR_MORE_GREEDY: phrase = r'+'
elif id == self.ID_REGEX_0_OR_1_GREEDY: phrase = r'?'
elif id == self.ID_REGEX_0_OR_MORE_MINIMAL: phrase = r'*?'
elif id == self.ID_REGEX_1_OR_MORE_MINIMAL: phrase = r'+?'
elif id == self.ID_REGEX_0_OR_1_MINIMAL: phrase = r'*'
elif id == self.ID_REGEX_EXACTLY_M: phrase = r'{m}'
elif id == self.ID_REGEX_M_TO_N_GREEDY: phrase = r'{m,n}'
elif id == self.ID_REGEX_M_TO_N_MINIMAL: phrase = r'{m,n}?'
elif id == self.ID_REGEX_LOOKAHEAD: phrase = u'(?=\u2026)'
elif id == self.ID_REGEX_NEGATIVE_LOOKAHEAD: phrase = u'(?!\u2026)'
elif id == self.ID_REGEX_LOOKBEHIND: phrase = u'(?<=\u2026)'
elif id == self.ID_REGEX_NEGATIVE_LOOKBEHIND: phrase = u'(?<!\u2026)'
elif id == self.ID_REGEX_NUMBER_WITHOUT_ZEROES: phrase = r'[1-9]+\d*'
elif id == self.ID_REGEX_FILENAME: phrase = '(?<=' + os.path.sep.encode( 'string_escape' ) + r')[^' + os.path.sep.encode( 'string_escape' ) + r']*?(?=\..*$)'
elif id == self.ID_REGEX_MANAGE_FAVOURITES:
with ClientGUIDialogsManage.DialogManageRegexFavourites( self.GetTopLevelParent() ) as dlg:
import ClientGUIDialogsManage
dlg.ShowModal()
with ClientGUIDialogsManage.DialogManageRegexFavourites( self.GetTopLevelParent() ) as dlg:
dlg.ShowModal()
elif id in self.ID_REGEX_FAVOURITES:
index = id - 100
( phrase, description ) = HC.options[ 'regex_favourites' ][ index ]
else: event.Skip()
if phrase is not None: HG.client_controller.pub( 'clipboard', 'text', phrase )
class SaneMultilineTextCtrl( wx.TextCtrl ):

View File

@ -1869,9 +1869,6 @@ class DialogPathsToTags( Dialog ):
( width, height ) = self.GetMinSize()
width = max( width, 930 )
height = max( height, 680 )
self.SetInitialSize( ( width, height ) )
@ -1898,7 +1895,7 @@ class DialogPathsToTags( Dialog ):
self._service_key = service_key
self._paths = paths
self._paths_list = ClientGUIListCtrl.SaneListCtrl( self, 250, [ ( '#', 50 ), ( 'path', 400 ), ( 'tags', -1 ) ] )
self._paths_list = ClientGUIListCtrl.BetterListCtrl( self, 'paths_to_tags', 25, 40, [ ( '#', 4 ), ( 'path', 40 ), ( 'tags', -1 ) ], self._ConvertDataToListCtrlTuples )
self._paths_list.Bind( wx.EVT_LIST_ITEM_SELECTED, self.EventItemSelected )
self._paths_list.Bind( wx.EVT_LIST_ITEM_DESELECTED, self.EventItemSelected )
@ -1915,27 +1912,36 @@ class DialogPathsToTags( Dialog ):
#
for ( index, path ) in enumerate( self._paths ):
pretty_num = HydrusData.ConvertIntToPrettyString( index + 1 )
tags = self._GetTags( index, path )
tags_string = ', '.join( tags )
self._paths_list.Append( ( pretty_num, path, tags_string ), ( index, path, tags ) )
# i.e. ( index, path )
self._paths_list.AddDatas( list( enumerate( self._paths ) ) )
#
vbox = wx.BoxSizer( wx.VERTICAL )
vbox.AddF( self._paths_list, CC.FLAGS_EXPAND_BOTH_WAYS )
vbox.AddF( self._notebook, CC.FLAGS_EXPAND_BOTH_WAYS )
vbox.AddF( self._notebook, CC.FLAGS_EXPAND_PERPENDICULAR )
self.SetSizer( vbox )
def _ConvertDataToListCtrlTuples( self, data ):
( index, path ) = data
tags = self._GetTags( index, path )
pretty_index = HydrusData.ConvertIntToPrettyString( index + 1 )
pretty_path = path
pretty_tags = ', '.join( tags )
display_tuple = ( pretty_index, pretty_path, pretty_tags )
sort_tuple = ( index, path, tags )
return ( display_tuple, sort_tuple )
def _GetTags( self, index, path ):
tags = []
@ -1960,7 +1966,7 @@ class DialogPathsToTags( Dialog ):
def EventItemSelected( self, event ):
paths = [ path for ( index, path, tags ) in self._paths_list.GetSelectedClientData() ]
paths = [ path for ( index, path ) in self._paths_list.GetData( only_selected = True ) ]
self._simple_panel.SetSelectedPaths( paths )
@ -1969,28 +1975,14 @@ class DialogPathsToTags( Dialog ):
def GetInfo( self ):
paths_to_tags = { path : tags for ( index, path, tags ) in self._paths_list.GetClientData() }
paths_to_tags = { path : self._GetTags( index, path ) for ( index, path ) in self._paths_list.GetData() }
return ( self._service_key, paths_to_tags )
def RefreshFileList( self ):
for ( list_index, ( index, path, old_tags ) ) in enumerate( self._paths_list.GetClientData() ):
# when doing regexes, make sure not to include '' results, same for system: and - started tags.
tags = self._GetTags( index, path )
if tags != old_tags:
pretty_num = HydrusData.ConvertIntToPrettyString( index + 1 )
tags_string = ', '.join( tags )
self._paths_list.UpdateRow( list_index, ( pretty_num, path, tags_string ), ( index, path, tags ) )
self._paths_list.UpdateDatas()
def SetTagBoxFocus( self ):
@ -2011,7 +2003,7 @@ class DialogPathsToTags( Dialog ):
self._quick_namespaces_panel = ClientGUICommon.StaticBox( self, 'quick namespaces' )
self._quick_namespaces_list = ClientGUIListCtrl.SaneListCtrl( self._quick_namespaces_panel, 200, [ ( 'namespace', 80 ), ( 'regex', -1 ) ], delete_key_callback = self.DeleteQuickNamespaces, activation_callback = self.EditQuickNamespaces )
self._quick_namespaces_list = ClientGUIListCtrl.BetterListCtrl( self._quick_namespaces_panel, 'quick_namespaces', 4, 20, [ ( 'namespace', 12 ), ( 'regex', -1 ) ], self._ConvertQuickRegexDataToListCtrlTuples, delete_key_callback = self.DeleteQuickNamespaces, activation_callback = self.EditQuickNamespaces )
self._add_quick_namespace_button = wx.Button( self._quick_namespaces_panel, label = 'add' )
self._add_quick_namespace_button.Bind( wx.EVT_BUTTON, self.EventAddQuickNamespace )
@ -2106,13 +2098,23 @@ class DialogPathsToTags( Dialog ):
self.SetSizer( hbox )
def _ConvertQuickRegexDataToListCtrlTuples( self, data ):
( namespace, regex ) = data
display_tuple = ( namespace, regex )
sort_tuple = ( namespace, regex )
return ( display_tuple, sort_tuple )
def DeleteQuickNamespaces( self ):
with DialogYesNo( self, 'Remove all selected?' ) as dlg:
if dlg.ShowModal() == wx.ID_YES:
self._quick_namespaces_list.RemoveAllSelected()
self._quick_namespaces_list.DeleteSelected()
self._refresh_callable()
@ -2121,17 +2123,26 @@ class DialogPathsToTags( Dialog ):
def EditQuickNamespaces( self ):
for index in self._quick_namespaces_list.GetAllSelected():
data_to_edit = self._quick_namespaces_list.GetData( only_selected = True )
for old_data in data_to_edit:
( namespace, regex ) = self._quick_namespaces_list.GetClientData( index = index )
( namespace, regex ) = old_data
with DialogInputNamespaceRegex( self, namespace = namespace, regex = regex ) as dlg:
if dlg.ShowModal() == wx.ID_OK:
( namespace, regex ) = dlg.GetInfo()
( new_namespace, new_regex ) = dlg.GetInfo()
self._quick_namespaces_list.UpdateRow( index, ( namespace, regex ), ( namespace, regex ) )
new_data = ( new_namespace, new_regex )
if new_data != old_data:
self._quick_namespaces_list.DeleteDatas( ( old_data, ) )
self._quick_namespaces_list.AddDatas( ( new_data, ) )
@ -2176,7 +2187,9 @@ class DialogPathsToTags( Dialog ):
( namespace, regex ) = dlg.GetInfo()
self._quick_namespaces_list.Append( ( namespace, regex ), ( namespace, regex ) )
data = ( namespace, regex )
self._quick_namespaces_list.AddDatas( ( data, ) )
self._refresh_callable()
@ -2245,7 +2258,7 @@ class DialogPathsToTags( Dialog ):
except: pass
for ( namespace, regex ) in self._quick_namespaces_list.GetClientData():
for ( namespace, regex ) in self._quick_namespaces_list.GetData():
try:
@ -2330,24 +2343,28 @@ class DialogPathsToTags( Dialog ):
self._filename_namespace = wx.TextCtrl( self._checkboxes_panel )
self._filename_namespace.Bind( wx.EVT_TEXT, self.EventRefresh )
self._filename_namespace.SetMinSize( ( 100, -1 ) )
self._filename_checkbox = wx.CheckBox( self._checkboxes_panel, label = 'add filename? [namespace]' )
self._filename_checkbox.Bind( wx.EVT_CHECKBOX, self.EventRefresh )
self._dir_namespace_1 = wx.TextCtrl( self._checkboxes_panel )
self._dir_namespace_1.Bind( wx.EVT_TEXT, self.EventRefresh )
self._dir_namespace_1.SetMinSize( ( 100, -1 ) )
self._dir_checkbox_1 = wx.CheckBox( self._checkboxes_panel, label = 'add first directory? [namespace]' )
self._dir_checkbox_1.Bind( wx.EVT_CHECKBOX, self.EventRefresh )
self._dir_namespace_2 = wx.TextCtrl( self._checkboxes_panel )
self._dir_namespace_2.Bind( wx.EVT_TEXT, self.EventRefresh )
self._dir_namespace_2.SetMinSize( ( 100, -1 ) )
self._dir_checkbox_2 = wx.CheckBox( self._checkboxes_panel, label = 'add second directory? [namespace]' )
self._dir_checkbox_2.Bind( wx.EVT_CHECKBOX, self.EventRefresh )
self._dir_namespace_3 = wx.TextCtrl( self._checkboxes_panel )
self._dir_namespace_3.Bind( wx.EVT_TEXT, self.EventRefresh )
self._dir_namespace_3.SetMinSize( ( 100, -1 ) )
self._dir_checkbox_3 = wx.CheckBox( self._checkboxes_panel, label = 'add third directory? [namespace]' )
self._dir_checkbox_3.Bind( wx.EVT_CHECKBOX, self.EventRefresh )
@ -2367,22 +2384,22 @@ class DialogPathsToTags( Dialog ):
filename_hbox = wx.BoxSizer( wx.HORIZONTAL )
filename_hbox.AddF( self._filename_checkbox, CC.FLAGS_EXPAND_BOTH_WAYS )
filename_hbox.AddF( self._filename_checkbox, CC.FLAGS_VCENTER )
filename_hbox.AddF( self._filename_namespace, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_1 = wx.BoxSizer( wx.HORIZONTAL )
dir_hbox_1.AddF( self._dir_checkbox_1, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_1.AddF( self._dir_checkbox_1, CC.FLAGS_VCENTER )
dir_hbox_1.AddF( self._dir_namespace_1, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_2 = wx.BoxSizer( wx.HORIZONTAL )
dir_hbox_2.AddF( self._dir_checkbox_2, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_2.AddF( self._dir_checkbox_2, CC.FLAGS_VCENTER )
dir_hbox_2.AddF( self._dir_namespace_2, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_3 = wx.BoxSizer( wx.HORIZONTAL )
dir_hbox_3.AddF( self._dir_checkbox_3, CC.FLAGS_EXPAND_BOTH_WAYS )
dir_hbox_3.AddF( self._dir_checkbox_3, CC.FLAGS_VCENTER )
dir_hbox_3.AddF( self._dir_namespace_3, CC.FLAGS_EXPAND_BOTH_WAYS )
self._checkboxes_panel.AddF( txt_hbox, CC.FLAGS_EXPAND_SIZER_PERPENDICULAR )
@ -2395,7 +2412,7 @@ class DialogPathsToTags( Dialog ):
hbox.AddF( self._tags_panel, CC.FLAGS_EXPAND_BOTH_WAYS )
hbox.AddF( self._single_tags_panel, CC.FLAGS_EXPAND_BOTH_WAYS )
hbox.AddF( self._checkboxes_panel, CC.FLAGS_EXPAND_BOTH_WAYS )
hbox.AddF( self._checkboxes_panel, CC.FLAGS_EXPAND_PERPENDICULAR )
self.SetSizer( hbox )

View File

@ -41,7 +41,6 @@ import re
import string
import time
import traceback
import urllib
import wx
import yaml

View File

@ -18,7 +18,7 @@ class ListBox( wx.ScrolledWindow ):
TEXT_X_PADDING = 3
def __init__( self, parent, min_height = 250 ):
def __init__( self, parent, min_height = 150 ):
wx.ScrolledWindow.__init__( self, parent, style = wx.VSCROLL | wx.BORDER_DOUBLE )

View File

@ -858,7 +858,12 @@ class BetterListCtrl( wx.ListCtrl, ListCtrlAutoWidthMixin ):
self._SortAndRefreshRows()
def UpdateDatas( self, datas ):
def UpdateDatas( self, datas = None ):
if datas is None:
datas = list( self._data_to_indices.keys() )
for data in datas:

View File

@ -32,7 +32,6 @@ import os
import threading
import time
import traceback
import urllib
import urlparse
import webbrowser
import wx
@ -203,7 +202,10 @@ def GenerateDumpMultipartFormDataCTAndBody( fields ):
for ( name, field_type, value ) in fields:
if field_type in ( CC.FIELD_TEXT, CC.FIELD_COMMENT, CC.FIELD_PASSWORD, CC.FIELD_VERIFICATION_RECAPTCHA, CC.FIELD_THREAD_ID ): m.field( name, HydrusData.ToByteString( value ) )
if field_type in ( CC.FIELD_TEXT, CC.FIELD_COMMENT, CC.FIELD_PASSWORD, CC.FIELD_VERIFICATION_RECAPTCHA, CC.FIELD_THREAD_ID ):
m.field( name, HydrusData.ToByteString( value ) )
elif field_type == CC.FIELD_CHECKBOX:
if value:

View File

@ -2348,7 +2348,7 @@ class MediaPanelThumbnails( MediaPanel ):
def EventDrag( self, event ):
if event.LeftIsDown() and self._drag_init_coordinates is not None:
if event.Dragging() and self._drag_init_coordinates is not None:
( old_x, old_y ) = self._drag_init_coordinates

View File

@ -629,7 +629,7 @@ class Page( wx.SplitterWindow ):
self._initialised = True
self._initial_hashes = []
self._management_panel.Start()
wx.CallAfter( self._management_panel.Start ) # importand this is callafter, so it happens after a heavy session load is done
def SetName( self, name ):
@ -668,7 +668,7 @@ class Page( wx.SplitterWindow ):
self._initialised = True
self._management_panel.Start()
wx.CallAfter( self._management_panel.Start ) # importand this is callafter, so it happens after a heavy session load is done
@ -732,6 +732,7 @@ class PagesNotebook( wx.Notebook ):
self.Bind( wx.EVT_MOTION, self.EventDrag )
self.Bind( wx.EVT_LEFT_DOWN, self.EventLeftDown )
self.Bind( wx.EVT_LEFT_UP, self.EventLeftUp )
self.Bind( wx.EVT_LEFT_DCLICK, self.EventLeftDoubleClick )
self.Bind( wx.EVT_MIDDLE_DOWN, self.EventMiddleClick )
self.Bind( wx.EVT_RIGHT_DOWN, self.EventMenu )
@ -949,9 +950,7 @@ class PagesNotebook( wx.Notebook ):
else:
position = self.ScreenToClient( screen_position )
( tab_index, flags ) = self.HitTest( position )
( tab_index, flags ) = ClientGUICommon.NotebookScreenToHitTest( self, screen_position )
if tab_index != wx.NOT_FOUND:
@ -1102,9 +1101,7 @@ class PagesNotebook( wx.Notebook ):
def _ShowMenu( self, screen_position ):
position = self.ScreenToClient( screen_position )
( tab_index, flags ) = self.HitTest( position )
( tab_index, flags ) = ClientGUICommon.NotebookScreenToHitTest( self, screen_position )
num_pages = self.GetPageCount()
@ -1306,7 +1303,7 @@ class PagesNotebook( wx.Notebook ):
def EventDrag( self, event ):
if event.LeftIsDown() and self._potential_drag_page is not None:
if event.Dragging() and self._potential_drag_page is not None:
drop_source = wx.DropSource( self._controller.gui )
@ -1332,6 +1329,8 @@ class PagesNotebook( wx.Notebook ):
def EventLeftDown( self, event ):
event_skip_ok = True
position = event.GetPosition()
( tab_index, flags ) = self.HitTest( position )
@ -1340,10 +1339,21 @@ class PagesNotebook( wx.Notebook ):
page = self.GetPage( tab_index )
if HC.PLATFORM_OSX and page == self.GetCurrentPage():
# drag doesn't work if we allow the event to go ahead
# but we do want the event to go ahead if it is a 'select different page' event
event_skip_ok = False
self._potential_drag_page = page
event.Skip()
if event_skip_ok:
event.Skip()
def EventLeftDoubleClick( self, event ):
@ -1367,6 +1377,17 @@ class PagesNotebook( wx.Notebook ):
self.ChooseNewPage()
else:
event.Skip()
def EventLeftUp( self, event ):
self._potential_drag_page = None
event.Skip()
def EventMenu( self, event ):
@ -1664,7 +1685,7 @@ class PagesNotebook( wx.Notebook ):
insertion_index = forced_insertion_index
page_name = 'page'
page_name = page.GetName()
self.InsertPage( insertion_index, page, page_name, select = True )
@ -1800,7 +1821,7 @@ class PagesNotebook( wx.Notebook ):
insertion_index = forced_insertion_index
page_name = 'pages'
page_name = page.GetName()
self.InsertPage( insertion_index, page, page_name, select = True )
@ -1824,11 +1845,11 @@ class PagesNotebook( wx.Notebook ):
page.Show()
index = min( index, self.GetPageCount() )
insert_index = min( index, self.GetPageCount() )
name = page.GetName()
self.InsertPage( index, page, name, True )
self.InsertPage( insert_index, page, name, True )
self._controller.pub( 'refresh_page_name', page.GetPageKey() )
@ -1872,31 +1893,16 @@ class PagesNotebook( wx.Notebook ):
screen_position = wx.GetMousePosition()
if HC.PLATFORM_OSX:
# idk why os x is giving problems here
# something about the coordinates of notebook stuff is all off, like the tab area is not included as part of the client area for HitTest calc, so all screentoclient calcs are wrong
# in the mouse events, going self.ClientToScreen( event.GetPosition() ) gives a different value to wx.GetMousePosition(), wew lad
# and yet other mouse->client comparisons are ok with other widgets, so this is presumably an OS X notebook issue
# this is a fuzzy fix for now, just filling in the different amounts I discovered with that
( x, y ) = screen_position
screen_position = ( x + 10, y + 33 )
dest_notebook = self._GetNotebookFromScreenPosition( screen_position )
position = dest_notebook.ScreenToClient( screen_position )
( x, y ) = screen_position
( x, y ) = position
( tab_index, flags ) = dest_notebook.HitTest( ( x, y ) )
( tab_index, flags ) = ClientGUICommon.NotebookScreenToHitTest( dest_notebook, ( x, y ) )
EDGE_PADDING = 10
( left_tab_index, gumpf ) = dest_notebook.HitTest( ( x - EDGE_PADDING, y ) )
( right_tab_index, gumpf ) = dest_notebook.HitTest( ( x + EDGE_PADDING, y ) )
( left_tab_index, gumpf ) = ClientGUICommon.NotebookScreenToHitTest( dest_notebook, ( x - EDGE_PADDING, y ) )
( right_tab_index, gumpf ) = ClientGUICommon.NotebookScreenToHitTest( dest_notebook, ( x + EDGE_PADDING, y ) )
landed_near_left_edge = left_tab_index != tab_index
landed_near_right_edge = right_tab_index != tab_index
@ -1995,7 +2001,7 @@ class PagesNotebook( wx.Notebook ):
page.Reparent( dest_notebook )
dest_notebook.InsertPage( insertion_tab_index, page, 'page' )
dest_notebook.InsertPage( insertion_tab_index, page, page.GetName() )
self.ShowPage( page )

View File

@ -1151,27 +1151,22 @@ The formula should attempt to parse full or relative urls. If the url is relativ
HG.client_controller.network_engine.AddJob( network_job )
while not network_job.IsDone():
try:
time.sleep( 0.1 )
network_job.WaitUntilDone()
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
self._my_example_data.SetValue( 'fetch failed' )
raise network_job.GetErrorException()
elif network_job.IsCancelled():
except HydrusExceptions.CancelledException:
self._my_example_data.SetValue( 'fetch cancelled' )
return
except HydrusExceptions.NetworkException as e:
self._my_example_data.SetValue( 'fetch failed' )
raise
example_data = network_job.GetContent()

View File

@ -590,7 +590,11 @@ class PopupMessageManager( wx.Frame ):
parent = self.GetParent()
# changing show status while parent iconised in Windows leads to grey window syndrome
going_to_bug_out_at_hide_or_show = HC.PLATFORM_WINDOWS and parent.IsIconized()
windows_and_iconised = HC.PLATFORM_WINDOWS and parent.IsIconized()
possibly_on_hidden_virtual_desktop = not ClientGUITopLevelWindows.MouseIsOnMyDisplay( parent )
going_to_bug_out_at_hide_or_show = windows_and_iconised or possibly_on_hidden_virtual_desktop
new_options = HG.client_controller.GetNewOptions()

View File

@ -1539,28 +1539,6 @@ class EditSubscriptionPanel( ClientGUIScrolledPanels.EditPanel ):
ClientGUITopLevelWindows.PostSizeChangedEvent( self )
def _SeedCache( self ):
dupe_seed_cache = self._seed_cache.Duplicate()
with ClientGUITopLevelWindows.DialogEdit( self, 'file import status' ) as dlg:
import ClientGUISeedCache
panel = ClientGUISeedCache.EditSeedCachePanel( dlg, HG.client_controller, dupe_seed_cache )
dlg.SetPanel( panel )
if dlg.ShowModal() == wx.ID_OK:
self._seed_cache = panel.GetValue()
self._UpdateCommandButtons()
self._UpdateSeedInfo()
def CheckNow( self ):
self._check_now = True

View File

@ -15,6 +15,7 @@ import ClientGUIScrolledPanelsReview
import ClientGUISerialisable
import ClientGUITagSuggestions
import ClientGUITopLevelWindows
import ClientNetworking
import ClientImporting
import ClientMedia
import ClientRatings
@ -679,9 +680,15 @@ class ManageClientServicesPanel( ClientGUIScrolledPanels.ManagePanel ):
url = scheme + host + ':' + str( port ) + '/' + request
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
try:
result = HG.client_controller.DoHTTP( HC.GET, url, hydrus_network = hydrus_network )
network_job.WaitUntilDone()
wx.MessageBox( 'Got an ok response!' )
@ -2163,7 +2170,7 @@ class ManageOptionsPanel( ClientGUIScrolledPanels.ManagePanel ):
gallery_identifiers = []
for site_type in [ HC.SITE_TYPE_DEFAULT, HC.SITE_TYPE_DEVIANT_ART, HC.SITE_TYPE_HENTAI_FOUNDRY, HC.SITE_TYPE_NEWGROUNDS, HC.SITE_TYPE_PIXIV, HC.SITE_TYPE_TUMBLR ]:
for site_type in [ HC.SITE_TYPE_DEFAULT, HC.SITE_TYPE_DEVIANT_ART, HC.SITE_TYPE_HENTAI_FOUNDRY, HC.SITE_TYPE_NEWGROUNDS, HC.SITE_TYPE_PIXIV, HC.SITE_TYPE_TUMBLR, HC.SITE_TYPE_THREAD_WATCHER ]:
gallery_identifiers.append( ClientDownloading.GalleryIdentifier( site_type ) )

View File

@ -131,6 +131,14 @@ def ExpandTLWIfPossible( tlw, frame_key, desired_size_delta ):
SlideOffScreenTLWUpAndLeft( tlw )
def MouseIsOnMyDisplay( window ):
window_display_index = wx.Display.GetFromWindow( window )
mouse_display_index = wx.Display.GetFromPoint( wx.GetMousePosition() )
return window_display_index == mouse_display_index
def PostSizeChangedEvent( window ):
event = CC.SizeChangedEvent( -1 )

View File

@ -28,6 +28,8 @@ import urlparse
import wx
import HydrusThreading
DID_FILE_WORK_MINIMUM_SLEEP_TIME = 0.25
def THREADDownloadURL( job_key, url, url_string ):
job_key.SetVariable( 'popup_title', url_string )
@ -45,24 +47,21 @@ def THREADDownloadURL( job_key, url, url_string ):
job_key.SetVariable( 'popup_network_job', network_job )
while not network_job.IsDone():
try:
time.sleep( 0.1 )
network_job.WaitUntilDone()
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
except HydrusExceptions.CancelledException:
job_key.Cancel()
raise network_job.GetErrorException()
raise
elif network_job.IsCancelled():
except HydrusExceptions.NetworkException:
return
job_key.Cancel()
raise
job_key.DeleteVariable( 'popup_network_job' )
@ -136,20 +135,11 @@ def THREADDownloadURLs( job_key, urls, title ):
job_key.SetVariable( 'popup_network_job', network_job )
while not network_job.IsDone():
try:
time.sleep( 0.1 )
network_job.WaitUntilDone()
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
raise network_job.GetErrorException()
elif network_job.IsCancelled():
except HydrusExceptions.CancelledException:
break
@ -812,7 +802,7 @@ class GalleryImport( HydrusSerialisable.SerialisableBase ):
if did_work:
time.sleep( 0.1 )
time.sleep( DID_FILE_WORK_MINIMUM_SLEEP_TIME )
else:
@ -1849,22 +1839,41 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
network_job = ClientNetworking.NetworkJob( 'GET', file_url, temp_path = temp_path )
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
try:
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
except HydrusExceptions.ShutdownException:
while not network_job.IsDone():
time.sleep( 0.1 )
return True
except HydrusExceptions.CancelledException:
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
return True
except HydrusExceptions.NetworkException:
status = CC.STATUS_FAILED
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
return True
finally:
@ -1874,43 +1883,22 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
if HG.view_shutdown:
with self._lock:
return True
self._current_action = 'importing file'
elif network_job.HasError():
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
status = CC.STATUS_FAILED
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
elif network_job.IsCancelled():
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
else:
with self._lock:
self._current_action = 'importing file'
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
finally:
@ -1942,10 +1930,12 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
self._urls_cache.UpdateSeedStatus( file_url, status, exception = e )
with self._lock:
finally:
self._current_action = ''
with self._lock:
self._current_action = ''
return True
@ -1970,22 +1960,19 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_page_set is not None:
wx.CallAfter( self._download_control_page_set, network_job )
try:
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_page_set is not None:
wx.CallAfter( self._download_control_page_set, network_job )
while not network_job.IsDone():
time.sleep( 0.1 )
network_job.WaitUntilDone()
finally:
@ -1995,73 +1982,56 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
if HG.view_shutdown:
html = network_job.GetContent()
soup = ClientDownloading.GetSoup( html )
#
all_links = soup.find_all( 'a' )
links_with_images = [ link for link in all_links if len( link.find_all( 'img' ) ) > 0 ]
all_linked_images = []
for link in all_links:
raise HydrusExceptions.ShutdownException()
images = link.find_all( 'img' )
elif network_job.HasError():
all_linked_images.extend( images )
e = network_job.GetErrorException()
all_images = soup.find_all( 'img' )
unlinked_images = [ image for image in all_images if image not in all_linked_images ]
#
file_urls = []
if self._download_image_links:
raise e
file_urls.extend( [ urlparse.urljoin( page_url, link[ 'href' ] ) for link in links_with_images if link.has_attr( 'href' ) ] )
elif network_job.IsCancelled():
if self._download_unlinked_images:
raise Exception( 'Page download cancelled!' )
file_urls.extend( [ urlparse.urljoin( page_url, image[ 'src' ] ) for image in unlinked_images if image.has_attr( 'src' ) ] )
else:
new_urls = [ file_url for file_url in file_urls if not self._urls_cache.HasSeed( file_url ) ]
self._urls_cache.AddSeeds( new_urls )
num_new = len( new_urls )
if num_new > 0:
html = network_job.GetContent()
soup = ClientDownloading.GetSoup( html )
#
all_links = soup.find_all( 'a' )
links_with_images = [ link for link in all_links if len( link.find_all( 'img' ) ) > 0 ]
all_linked_images = []
for link in all_links:
images = link.find_all( 'img' )
all_linked_images.extend( images )
all_images = soup.find_all( 'img' )
unlinked_images = [ image for image in all_images if image not in all_linked_images ]
#
file_urls = []
if self._download_image_links:
file_urls.extend( [ urlparse.urljoin( page_url, link[ 'href' ] ) for link in links_with_images if link.has_attr( 'href' ) ] )
if self._download_unlinked_images:
file_urls.extend( [ urlparse.urljoin( page_url, image[ 'src' ] ) for image in unlinked_images if image.has_attr( 'src' ) ] )
new_urls = [ file_url for file_url in file_urls if not self._urls_cache.HasSeed( file_url ) ]
self._urls_cache.AddSeeds( new_urls )
num_new = len( new_urls )
if num_new > 0:
self._new_files_event.set()
parser_status = 'page checked OK - ' + HydrusData.ConvertIntToPrettyString( num_new ) + ' new urls'
self._new_files_event.set()
parser_status = 'page checked OK - ' + HydrusData.ConvertIntToPrettyString( num_new ) + ' new urls'
except HydrusExceptions.NotFoundException:
error_occurred = True
@ -2117,7 +2087,7 @@ class PageOfImagesImport( HydrusSerialisable.SerialisableBase ):
if did_work:
time.sleep( 0.1 )
time.sleep( DID_FILE_WORK_MINIMUM_SLEEP_TIME )
else:
@ -2853,7 +2823,7 @@ class SeedCache( HydrusSerialisable.SerialisableBase ):
note += os.linesep
note += HydrusData.ToUnicode( traceback.format_exc() )
HydrusData.Print( 'Error when processing ' + seed + '!' )
HydrusData.Print( 'Error when processing ' + seed + ' !' )
HydrusData.Print( traceback.format_exc() )
@ -3586,6 +3556,10 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
import_file_options = ClientDefaults.GetDefaultImportFileOptions()
new_options = HG.client_controller.GetNewOptions()
import_tag_options = new_options.GetDefaultImportTagOptions( ClientDownloading.GalleryIdentifier( HC.SITE_TYPE_THREAD_WATCHER ) )
( times_to_check, check_period ) = HC.options[ 'thread_checker_timings' ]
self._thread_url = ''
@ -3593,7 +3567,7 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
self._urls_to_filenames = {}
self._urls_to_md5_base64 = {}
self._import_file_options = import_file_options
self._import_tag_options = ClientData.ImportTagOptions()
self._import_tag_options = import_tag_options
self._times_to_check = times_to_check
self._check_period = check_period
self._last_time_checked = 0
@ -3695,22 +3669,41 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
network_job = ClientNetworking.NetworkJobThreadWatcher( self._thread_key, 'GET', file_url, temp_path = temp_path )
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
try:
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
except HydrusExceptions.ShutdownException:
while not network_job.IsDone():
time.sleep( 0.1 )
return True
except HydrusExceptions.CancelledException:
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
return True
except HydrusExceptions.NetworkException:
status = CC.STATUS_FAILED
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
return True
finally:
@ -3720,43 +3713,22 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
if HG.view_shutdown:
with self._lock:
return
self._current_action = 'importing file'
elif network_job.HasError():
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
status = CC.STATUS_FAILED
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
elif network_job.IsCancelled():
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
else:
with self._lock:
self._current_action = 'importing file'
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
finally:
@ -3798,10 +3770,12 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
self._urls_cache.UpdateSeedStatus( file_url, status, exception = e )
with self._lock:
finally:
self._current_action = ''
with self._lock:
self._current_action = ''
return True
@ -3832,22 +3806,19 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_thread_set is not None:
wx.CallAfter( self._download_control_thread_set, network_job )
try:
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_thread_set is not None:
wx.CallAfter( self._download_control_thread_set, network_job )
while not network_job.IsDone():
time.sleep( 0.1 )
network_job.WaitUntilDone()
finally:
@ -3857,53 +3828,36 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
if HG.view_shutdown:
raw_json = network_job.GetContent()
file_infos = ClientDownloading.ParseImageboardFileURLsFromJSON( self._thread_url, raw_json )
new_urls = []
for ( file_url, file_md5_base64, file_original_filename ) in file_infos:
raise HydrusExceptions.ShutdownException()
elif network_job.HasError():
e = network_job.GetErrorException()
raise e
elif network_job.IsCancelled():
raise Exception( 'Page download cancelled!' )
else:
raw_json = network_job.GetContent()
file_infos = ClientDownloading.ParseImageboardFileURLsFromJSON( self._thread_url, raw_json )
new_urls = []
for ( file_url, file_md5_base64, file_original_filename ) in file_infos:
if not self._urls_cache.HasSeed( file_url ):
if not self._urls_cache.HasSeed( file_url ):
new_urls.append( file_url )
self._urls_to_filenames[ file_url ] = file_original_filename
if file_md5_base64 is not None:
new_urls.append( file_url )
self._urls_to_filenames[ file_url ] = file_original_filename
if file_md5_base64 is not None:
self._urls_to_md5_base64[ file_url ] = file_md5_base64
self._urls_to_md5_base64[ file_url ] = file_md5_base64
self._urls_cache.AddSeeds( new_urls )
self._urls_cache.AddSeeds( new_urls )
num_new = len( new_urls )
watcher_status = 'thread checked OK - ' + HydrusData.ConvertIntToPrettyString( num_new ) + ' new urls'
if num_new > 0:
num_new = len( new_urls )
watcher_status = 'thread checked OK - ' + HydrusData.ConvertIntToPrettyString( num_new ) + ' new urls'
if num_new > 0:
self._new_files_event.set()
self._new_files_event.set()
except HydrusExceptions.NotFoundException:
@ -4004,7 +3958,7 @@ class ThreadWatcherImport( HydrusSerialisable.SerialisableBase ):
if did_work:
time.sleep( 0.1 )
time.sleep( DID_FILE_WORK_MINIMUM_SLEEP_TIME )
else:
@ -4279,23 +4233,39 @@ class URLsImport( HydrusSerialisable.SerialisableBase ):
network_job = ClientNetworking.NetworkJob( 'GET', file_url, temp_path = temp_path )
HG.client_controller.network_engine.AddJob( network_job )
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
try:
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
with self._lock:
if self._download_control_file_set is not None:
wx.CallAfter( self._download_control_file_set, network_job )
except HydrusExceptions.CancelledException:
while not network_job.IsDone():
time.sleep( 0.1 )
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
return True
except HydrusExceptions.NetworkException:
status = CC.STATUS_FAILED
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
return True
finally:
if self._download_control_file_clear is not None:
@ -4304,38 +4274,17 @@ class URLsImport( HydrusSerialisable.SerialisableBase ):
if HG.view_shutdown:
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
raise HydrusExceptions.ShutdownException()
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
elif network_job.HasError():
status = CC.STATUS_FAILED
self._urls_cache.UpdateSeedStatus( file_url, status, note = network_job.GetErrorText() )
time.sleep( 2 )
elif network_job.IsCancelled():
status = CC.STATUS_SKIPPED
self._urls_cache.UpdateSeedStatus( file_url, status, note = 'cancelled during download!' )
else:
file_import_job = FileImportJob( temp_path, self._import_file_options )
( status, hash ) = HG.client_controller.client_files_manager.ImportFile( file_import_job )
self._urls_cache.UpdateSeedStatus( file_url, status )
if url_not_known_beforehand and hash is not None:
service_keys_to_content_updates = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_URLS, HC.CONTENT_UPDATE_ADD, ( hash, ( file_url, ) ) ) ] }
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
HG.client_controller.WriteSynchronous( 'content_updates', service_keys_to_content_updates )
finally:
@ -4367,10 +4316,12 @@ class URLsImport( HydrusSerialisable.SerialisableBase ):
self._urls_cache.UpdateSeedStatus( file_url, status, exception = e )
with self._lock:
finally:
self._RegenerateSeedCacheStatus()
with self._lock:
self._RegenerateSeedCacheStatus()
return True
@ -4397,7 +4348,7 @@ class URLsImport( HydrusSerialisable.SerialisableBase ):
if did_work:
time.sleep( 0.1 )
time.sleep( DID_FILE_WORK_MINIMUM_SLEEP_TIME )
else:

View File

@ -84,6 +84,20 @@ def CheckHydrusVersion( service_key, service_type, response_headers ):
raise HydrusExceptions.NetworkVersionException( 'Network version mismatch! The server\'s network version was ' + str( network_version ) + ', whereas your client\'s is ' + str( HC.NETWORK_VERSION ) + '! ' + message )
def CombineGETURLWithParameters( url, params_dict ):
def make_safe( text ):
# convert unicode to raw bytes
# quote that to be url-safe, ignoring the default '/' 'safe' character
return urllib.quote( HydrusData.ToByteString( text ), '' )
request_string = '&'.join( ( make_safe( key ) + '=' + make_safe( value ) for ( key, value ) in params_dict.items() ) )
return url + '?' + request_string
def ConvertDomainIntoAllApplicableDomains( domain ):
domains = []
@ -1822,7 +1836,7 @@ class NetworkJob( object ):
MAX_CONNECTION_ATTEMPTS = 5
def __init__( self, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, method, url, body = None, files = None, referral_url = None, temp_path = None ):
if HG.network_report_mode:
@ -1836,9 +1850,13 @@ class NetworkJob( object ):
self._method = method
self._url = url
self._body = body
self._files = files
self._referral_url = referral_url
self._temp_path = temp_path
self._for_login = for_login
self._for_login = False
self._additional_headers = {}
self._creation_time = HydrusData.GetNow()
@ -1851,6 +1869,8 @@ class NetworkJob( object ):
self._error_exception = None
self._error_text = None
self._is_done_event = threading.Event()
self._is_done = False
self._is_cancelled = False
self._bandwidth_manual_override = False
@ -1887,6 +1907,7 @@ class NetworkJob( object ):
method = self._method
url = self._url
data = self._body
files = self._files
headers = {}
@ -1895,6 +1916,11 @@ class NetworkJob( object ):
headers = { 'referer' : self._referral_url }
for ( key, value ) in self._additional_headers.items():
headers[ key ] = value
connection_successful = False
connection_attempts = 1
@ -1910,7 +1936,7 @@ class NetworkJob( object ):
timeout = HG.client_controller.GetNewOptions().GetInteger( 'network_timeout' )
response = session.request( method, url, data = data, headers = headers, stream = True, timeout = timeout )
response = session.request( method, url, data = data, files = files, headers = headers, stream = True, timeout = timeout )
connection_successful = True
@ -2036,7 +2062,11 @@ class NetworkJob( object ):
self._ReportDataUsed( chunk_length )
self._WaitOnOngoingBandwidth()
if HG.view_shutdown:
raise HydrusExceptions.ShutdownException()
def _ReportDataUsed( self, num_bytes ):
@ -2065,6 +2095,8 @@ class NetworkJob( object ):
self._is_done = True
self._is_done_event.set()
def _Sleep( self, seconds ):
@ -2079,6 +2111,14 @@ class NetworkJob( object ):
def AddAdditionalHeader( self, key, value ):
with self._lock:
self._additional_headers[ key ] = value
def BandwidthOK( self ):
with self._lock:
@ -2299,6 +2339,14 @@ class NetworkJob( object ):
def SetForLogin( self, for_login ):
with self._lock:
self._for_login = for_login
def SetStatus( self, text ):
with self._lock:
@ -2396,13 +2444,43 @@ class NetworkJob( object ):
def WaitUntilDone( self ):
self._is_done_event.wait()
with self._lock:
if self.engine.controller.ModelIsShutdown():
raise HydrusExceptions.ShutdownException()
elif self._error_exception is not None:
raise self._error_exception
elif self._IsCancelled():
if self._method == 'POST':
message = 'Upload cancelled!'
else:
message = 'Download cancelled!'
raise HydrusExceptions.CancelledException( message )
class NetworkJobDownloader( NetworkJob ):
def __init__( self, downloader_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, downloader_key, method, url, body = None, referral_url = None, temp_path = None ):
self._downloader_key = downloader_key
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2421,11 +2499,11 @@ class NetworkJobDownloader( NetworkJob ):
class NetworkJobDownloaderQuery( NetworkJobDownloader ):
def __init__( self, downloader_page_key, downloader_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, downloader_page_key, downloader_key, method, url, body = None, referral_url = None, temp_path = None ):
self._downloader_page_key = downloader_page_key
NetworkJobDownloader.__init__( self, downloader_key, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJobDownloader.__init__( self, downloader_key, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2444,11 +2522,11 @@ class NetworkJobDownloaderQuery( NetworkJobDownloader ):
class NetworkJobDownloaderQueryTemporary( NetworkJob ):
def __init__( self, downloader_page_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, downloader_page_key, method, url, body = None, referral_url = None, temp_path = None ):
self._downloader_page_key = downloader_page_key
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2467,11 +2545,11 @@ class NetworkJobDownloaderQueryTemporary( NetworkJob ):
class NetworkJobSubscription( NetworkJobDownloader ):
def __init__( self, subscription_key, downloader_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, subscription_key, downloader_key, method, url, body = None, referral_url = None, temp_path = None ):
self._subscription_key = subscription_key
NetworkJobDownloader.__init__( self, downloader_key, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJobDownloader.__init__( self, downloader_key, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2490,11 +2568,11 @@ class NetworkJobSubscription( NetworkJobDownloader ):
class NetworkJobSubscriptionTemporary( NetworkJob ):
def __init__( self, subscription_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, subscription_key, method, url, body = None, referral_url = None, temp_path = None ):
self._subscription_key = subscription_key
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2513,11 +2591,11 @@ class NetworkJobSubscriptionTemporary( NetworkJob ):
class NetworkJobHydrus( NetworkJob ):
def __init__( self, service_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, service_key, method, url, body = None, referral_url = None, temp_path = None ):
self._service_key = service_key
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2531,11 +2609,11 @@ class NetworkJobHydrus( NetworkJob ):
class NetworkJobThreadWatcher( NetworkJob ):
def __init__( self, thread_key, method, url, body = None, referral_url = None, temp_path = None, for_login = False ):
def __init__( self, thread_key, method, url, body = None, referral_url = None, temp_path = None ):
self._thread_key = thread_key
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path, for_login = for_login )
NetworkJob.__init__( self, method, url, body = body, referral_url = referral_url, temp_path = temp_path )
def _GenerateNetworkContexts( self ):
@ -2603,9 +2681,7 @@ class NetworkLoginManager( HydrusSerialisable.SerialisableBase ):
# look up the logins
# login_process = Login.GenerateLoginProcess
# say CallToThread( login_process.start, engine, credentials )
# return login_process
# the login can update itself if there are problems. it should also inform the user
raise NotImplementedError()

View File

@ -587,18 +587,15 @@ class ParseNodeContentLink( HydrusSerialisable.SerialisableBase ):
HG.client_controller.network_engine.AddJob( network_job )
while not network_job.IsDone():
try:
time.sleep( 0.1 )
network_job.WaitUntilDone()
if HG.view_shutdown:
except HydrusExceptions.CancelledException:
raise HydrusExceptions.ShutdownException()
break
elif network_job.HasError():
e = network_job.GetErrorException()
except HydrusExceptions.NetworkException as e:
if isinstance( e, HydrusExceptions.NotFoundException ):
@ -621,13 +618,9 @@ class ParseNodeContentLink( HydrusSerialisable.SerialisableBase ):
else:
raise e
raise
elif network_job.IsCancelled():
break
linked_data = network_job.GetContent()
@ -783,60 +776,59 @@ class ParseRootFileLookup( HydrusSerialisable.SerialisableBaseNamed ):
def FetchData( self, job_key, file_identifier ):
# add gauge report hook and in-stream cancel support to the get/post calls
request_args = dict( self._static_args )
if self._file_identifier_type != FILE_IDENTIFIER_TYPE_FILE:
request_args[ self._file_identifier_arg_name ] = HydrusData.EncodeBytes( self._file_identifier_encoding, file_identifier )
if self._query_type == HC.GET:
if self._file_identifier_type == FILE_IDENTIFIER_TYPE_FILE:
raise Exception( 'Cannot have a file as an argument on a GET query!' )
full_request_url = ClientNetworking.CombineGETURLWithParameters( self._url, request_args )
job_key.SetVariable( 'script_status', 'fetching ' + full_request_url )
job_key.AddURL( full_request_url )
network_job = ClientNetworking.NetworkJob( 'GET', full_request_url )
elif self._query_type == HC.POST:
if self._file_identifier_type == FILE_IDENTIFIER_TYPE_FILE:
job_key.SetVariable( 'script_status', 'uploading file' )
path = file_identifier
files = { self._file_identifier_arg_name : open( path, 'rb' ) }
else:
job_key.SetVariable( 'script_status', 'uploading identifier' )
files = None
network_job = ClientNetworking.NetworkJob( 'POST', self._url, body = request_args, files = files )
# send nj to nj control on this panel here
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
try:
# add gauge report hook and in-stream cancel support to the get/post calls
request_args = dict( self._static_args )
if self._file_identifier_type != FILE_IDENTIFIER_TYPE_FILE:
request_args[ self._file_identifier_arg_name ] = HydrusData.EncodeBytes( self._file_identifier_encoding, file_identifier )
if self._query_type == HC.GET:
if self._file_identifier_type == FILE_IDENTIFIER_TYPE_FILE:
raise Exception( 'Cannot have a file as an argument on a GET query!' )
rendered_url = self._url + '?' + '&'.join( ( HydrusData.ToByteString( key ) + '=' + HydrusData.ToByteString( value ) for ( key, value ) in request_args.items() ) )
job_key.SetVariable( 'script_status', 'fetching ' + rendered_url )
job_key.AddURL( rendered_url )
response = ClientNetworking.RequestsGet( self._url, params = request_args )
elif self._query_type == HC.POST:
if self._file_identifier_type == FILE_IDENTIFIER_TYPE_FILE:
job_key.SetVariable( 'script_status', 'uploading file' )
path = file_identifier
files = { self._file_identifier_arg_name : open( path, 'rb' ) }
else:
job_key.SetVariable( 'script_status', 'uploading identifier' )
files = None
response = ClientNetworking.RequestsPost( self._url, data = request_args, files = files )
if job_key.IsCancelled():
raise HydrusExceptions.CancelledException()
data = response.text
return data
network_job.WaitUntilDone()
except HydrusExceptions.NotFoundException:
@ -853,6 +845,15 @@ class ParseRootFileLookup( HydrusSerialisable.SerialisableBaseNamed ):
raise
if job_key.IsCancelled():
raise HydrusExceptions.CancelledException()
data = network_job.GetContent()
return data
def GetParsableContent( self ):

View File

@ -11,6 +11,7 @@ import HydrusGlobals as HG
import HydrusNetwork
import HydrusNetworking
import HydrusSerialisable
import json
import os
import threading
import time
@ -1499,9 +1500,17 @@ class ServiceIPFS( ServiceRemote ):
links_url = api_base_url + 'object/links/' + multihash
response = ClientNetworking.RequestsGet( links_url )
network_job = ClientNetworking.NetworkJob( 'GET', links_url )
links_json = response.json()
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
data = network_job.GetContent()
links_json = json.loads( data )
is_directory = False
@ -1562,9 +1571,17 @@ class ServiceIPFS( ServiceRemote ):
url = api_base_url + 'version'
response = ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
j = response.json()
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
data = network_job.GetContent()
j = json.loads( data )
return j[ 'Version' ]
@ -1680,7 +1697,17 @@ class ServiceIPFS( ServiceRemote ):
url = api_base_url + 'object/new?arg=unixfs-dir'
response = ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
data = network_job.GetContent()
response_json = json.loads( data )
for ( i, ( hash, mime, multihash ) ) in enumerate( file_info ):
@ -1694,20 +1721,36 @@ class ServiceIPFS( ServiceRemote ):
job_key.SetVariable( 'popup_text_1', 'creating directory: ' + HydrusData.ConvertValueRangeToPrettyString( i + 1, len( file_info ) ) )
job_key.SetVariable( 'popup_gauge_1', ( i + 1, len( file_info ) ) )
object_multihash = response.json()[ 'Hash' ]
object_multihash = response_json[ 'Hash' ]
filename = hash.encode( 'hex' ) + HC.mime_ext_lookup[ mime ]
url = api_base_url + 'object/patch/add-link?arg=' + object_multihash + '&arg=' + filename + '&arg=' + multihash
response = ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
data = network_job.GetContent()
response_json = json.loads( data )
directory_multihash = response.json()[ 'Hash' ]
directory_multihash = response_json[ 'Hash' ]
url = api_base_url + 'pin/add?arg=' + directory_multihash
response = ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
content_update_row = ( hashes, directory_multihash, note )
@ -1757,9 +1800,17 @@ class ServiceIPFS( ServiceRemote ):
files = { 'path' : ( hash.encode( 'hex' ), open( path, 'rb' ), mime_string ) }
response = ClientNetworking.RequestsPost( url, files = files )
network_job = ClientNetworking.NetworkJob( 'GET', url, files = files )
j = response.json()
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
data = network_job.GetContent()
j = json.loads( data )
multihash = j[ 'Hash' ]
@ -1785,7 +1836,13 @@ class ServiceIPFS( ServiceRemote ):
url = api_base_url + 'pin/rm/' + multihash
ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
content_updates = [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_DIRECTORIES, HC.CONTENT_UPDATE_DELETE, multihash ) ]
@ -1803,7 +1860,13 @@ class ServiceIPFS( ServiceRemote ):
try:
ClientNetworking.RequestsGet( url )
network_job = ClientNetworking.NetworkJob( 'GET', url )
network_job.OverrideBandwidth()
HG.client_controller.network_engine.AddJob( network_job )
network_job.WaitUntilDone()
except HydrusExceptions.NetworkException as e:

View File

@ -49,7 +49,7 @@ options = {}
# Misc
NETWORK_VERSION = 18
SOFTWARE_VERSION = 271
SOFTWARE_VERSION = 272
UNSCALED_THUMBNAIL_DIMENSIONS = ( 200, 200 )
@ -616,6 +616,7 @@ SITE_TYPE_HENTAI_FOUNDRY_TAGS = 12
SITE_TYPE_PIXIV_ARTIST_ID = 13
SITE_TYPE_PIXIV_TAG = 14
SITE_TYPE_DEFAULT = 15
SITE_TYPE_THREAD_WATCHER = 16
site_type_string_lookup = {}
@ -635,6 +636,7 @@ site_type_string_lookup[ SITE_TYPE_PIXIV ] = 'pixiv'
site_type_string_lookup[ SITE_TYPE_PIXIV_ARTIST_ID ] = 'pixiv artist id'
site_type_string_lookup[ SITE_TYPE_PIXIV_TAG ] = 'pixiv tag'
site_type_string_lookup[ SITE_TYPE_TUMBLR ] = 'tumblr'
site_type_string_lookup[ SITE_TYPE_THREAD_WATCHER ] = 'thread watcher'
# default options

View File

@ -11,7 +11,6 @@ import sys
import threading
import time
import traceback
import urllib
import HydrusData
import HydrusGlobals as HG

File diff suppressed because one or more lines are too long

View File

@ -320,7 +320,9 @@ class TestNetworkingJob( unittest.TestCase ):
def _GetJob( self, for_login = False ):
job = ClientNetworking.NetworkJob( 'GET', MOCK_URL, for_login = for_login )
job = ClientNetworking.NetworkJob( 'GET', MOCK_URL )
job.SetForLogin( for_login )
mock_controller = TestConstants.MockController()
bandwidth_manager = ClientNetworking.NetworkBandwidthManager()
@ -526,7 +528,9 @@ class TestNetworkingJobHydrus( unittest.TestCase ):
def _GetJob( self, for_login = False ):
job = ClientNetworking.NetworkJobHydrus( MOCK_HYDRUS_SERVICE_KEY, 'GET', MOCK_HYDRUS_URL, for_login = for_login )
job = ClientNetworking.NetworkJobHydrus( MOCK_HYDRUS_SERVICE_KEY, 'GET', MOCK_HYDRUS_URL )
job.SetForLogin( for_login )
mock_controller = TestConstants.MockController()
bandwidth_manager = ClientNetworking.NetworkBandwidthManager()

View File

@ -7,7 +7,7 @@ import unittest
import HydrusData
import ClientConstants as CC
class TestClientDownloadingFunctions( unittest.TestCase ):
class TestFunctions( unittest.TestCase ):
def test_dict_to_content_updates( self ):
@ -81,4 +81,4 @@ class TestClientDownloadingFunctions( unittest.TestCase ):
self.assertEqual( type( pretty_num ), unicode )

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,555 +0,0 @@
<!DOCTYPE HTML>
<html>
<head>
<title>#672179: dotkwa</title>
<meta charset='utf-8'>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="top" title="e621" href="/">
<link href="https://e621.net/post/atom" rel="alternate" title="e621 - Posts" type="application/atom+xml">
<link href="https://e621.net/user_record/atom" rel="alternate" title="e621 - User Records" type="application/atom+xml">
<link href="https://e621.net/comment/atom" rel="alternate" title="e621 - Comments" type="application/atom+xml">
<link href="https://e621.net/forum/atom" rel="alternate" title="e621 - Forum Posts" type="application/atom+xml">
<link href="https://e621.net/set/atom" rel="alternate" title="e621 - Sets" type="application/atom+xml">
<link href="https://e621.net/comment/atom/672179" rel="alternate" title="e621 - Comments for Post #672179" type="application/atom+xml">
<link class="main-stylesheet" href="/stylesheets/hexagon.css?1433152436" media="screen" rel="stylesheet" type="text/css">
<link class="override-stylesheet" href="/stylesheets/overrides/spring.css?1402221794" media="screen" rel="stylesheet" type="text/css">
<script type="text/javascript">
user_level = 0;
document.write('<style type="text/css">.blacklisted { display: none !important; } .lazy { display: block !important; } .tooltip-sample { display: block !important; } #user_css{ display: inline !important; }</style>');
</script>
<script src="/javascripts/application-min.js?1433712422" type="text/javascript"></script>
<!--[if lt IE 7]>
<style type="text/css">body div#post-view > div#right-col > div > div#note-container > div.note-body {overflow: visible;}</style>
<script src="ie7-js.googlecode.com/svn/trunk/lib/IE7.js" type="text/javascript"></script>
<![endif]-->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-4131065-5', 'auto');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
</script>
<script>var __HOST__="app5.e621.net"</script>
</head>
<body>
<div id="header">
<ul class="flat-list" id="navbar">
<li><a href="/">e621</a></li>
<li><a href="/user/login?url=%2Fpost%2Fshow%2F672179%2F2015-ambiguous_gender-animal_genitalia-anon-balls-">Login/Signup</a></li>
<li class='current-page'><a href="/post/index">Posts</a></li>
<li><a href="/comment/index">Comments</a></li>
<li><a href="/note/index">Notes</a></li>
<li><a href="/artist/index?order=updated">Artists</a></li>
<li><a href="/tag/index?order=count">Tags</a></li>
<li><a href="/pool/index">Pools</a></li>
<li><a href="/set/index">Sets</a></li>
<li><a href="/blip/index">Blips</a></li>
<li><a href="/wiki/show?title=help%3Ahome">Wiki</a></li>
<li><a href="/static/irc">Chat</a></li>
<li><a href="/forum/index" class="">Forum</a></li>
<li><a href="/static/contact">Contact</a></li>
<li><a href="/static/more" id="morelink">&raquo;</a></li>
<div id='user-css-show' onclick='toggleCSSDropdown()'>&#9654; Theme</div>
<div id='user-css-hide' onclick='toggleCSSDropdown()'>&#9660; Theme</div>
<div id='user-css-inner' class='section' style='height:55px;'>
<table>
<tr>
<td>Base</td>
<td><select id="user_css" name="user_css" onchange="cssChanged()"><option value="hexagon">Hexagon</option>
<option value="hexagon,skin-pony">Pony</option>
<option value="hexagon,skin-bloodlust">Bloodlust</option>
<option value="hexagon,skin-serpent">Serpent</option>
<option value="hexagon,skin-hexagon-clean">Hexagon Clean</option>
<option value="hexagon,skin-hotdog">Hot Dog</option></select></td>
</tr>
<tr>
<td>Extra</td>
<td><select id="user_override_css" name="user_override_css" onchange="cssChanged()"><option value="none">None</option>
<option value="overrides/autumn">Autumn</option>
<option value="overrides/christmas">Winter</option>
<option value="overrides/spring">Spring</option>
<option value="overrides/aurora">Aurora</option>
<option value="overrides/hexgrid">Hex Grid</option>
<option value="overrides/space">Space</option>
<option value="overrides/stars">Stars</option></select></td>
</tr>
</tr>
</table>
</div>
</ul>
<div id="subnav">
<ul class="flat-list">
<li><a href="/post/index">List</a></li>
<li><a href="/post/upload">Upload</a></li>
<li><a href="/post/m">Mobile</a></li>
<li><a href="/help/favorites">Favorites</a></li>
<li><a onclick="AnonBlacklist.show()" href="#">Blacklist</a></li>
<li><a href="/post/popular_by_day">Popular</a></li>
<li><a href="/post/random">Random</a></li>
<li><a href="/post_tag_history/index">Tag History</a></li>
<li><a href="/post_desc_history/index">Desc. History</a></li>
<li><a href="/post_flag_history/index">Flag History</a></li>
<li><a href="/post/recent_approvals">Recent approvals</a></li>
<li><a href="/help/posts">Help</a></li>
</ul>
</div>
</div>
<div class="section" id="news">
<div class="closebutton" onclick="$j('#news').hide(); Cookie.put('hide_news_notice', '1433201601'); return false;" href="#">X</div>
<h6><a href="/news">News</a> - Jun 01, 2015 (11 days ago)</h6>
<ul><li><span class="dtext-bold">June 1:</span> We pushed <a href="/forum/show/160503">some updates</a> today, including a shiny new <a href="/static/irc">IRC client</a></li></ul><ul><li><span class="dtext-bold">June 1:</span> Just a quick heads up. The "Add to pool" list was recently cleaned out. If you want to add something that isn't on the list just go to the edit page of the pool and mark it as "active". For more information see <a href="/forum/show/159835">forum #159835</a></li></ul><ul><li>Want to advertise on e621? <a href="https://e621.net/forum/show/10410">Click here!</a></li></ul>
</div>
<div id="notices">
<div id="notice" style="display:none;">
<div class="closebutton" onclick="noticeClose(this.parentNode);">X</div>
<p></p>
</div>
<div id="warning" style="display: none;"></div>
<div id="error" style="display:none;">
<div class="closebutton" onclick="noticeClose(this.parentNode);">X</div>
<p></p>
</div>
</div>
<div id="content">
<div id="post-view">
<div class="status-notice" id="pending-notice">
This post is pending moderator approval.
</div>
<div class="sidebar">
<div style="margin-bottom: 1em;">
<h5>Search <span class='searchhelp'><a href="/help/cheatsheet">(Search Options)</a></span></h5>
<form action="/post/search" method="get">
<div>
<input id="tags" name="tags" style="width:183px;" type="text">
</div>
</form>
</div>
<h5 class="post-sidebar-header">Tags</h5>
<div style="margin-bottom: 1em;">
<ul id="tag-sidebar">
<li style="cursor: pointer;" id="category-artist"
onclick='hideCategory("artist")'</li>
<b>Artist</b>
</li>
<li style="cursor: pointer; display: none;"
id="category-hidden-artist"
onclick='showCategory("artist")'</li>
<b>&#9658; Artist</b>
</li>
<li class="tag-type-artist"><a style='font-weight:normal;' href="/artist/show?name=dotkwa">?</a> <a href="/post/search?tags=dotkwa">dotkwa</a> <span class="post-count">53</span></li><li style="cursor: pointer;" id="category-character"
onclick='hideCategory("character")'</li>
<b>Character</b>
</li>
<li style="cursor: pointer; display: none;"
id="category-hidden-character"
onclick='showCategory("character")'</li>
<b>&#9658; Character</b>
</li>
<li class="tag-type-character"><a style='font-weight:normal;' href="/wiki/show?title=anon">?</a> <a href="/post/search?tags=anon">anon</a> <span class="post-count">175</span></li><li class="tag-type-character"><a style='font-weight:normal;' href="/wiki/show?title=ms_harshwhinny_%28mlp%29">?</a> <a href="/post/search?tags=ms_harshwhinny_%28mlp%29">ms harshwhinny (mlp)</a> <span class="post-count">158</span></li><li style="cursor: pointer;" id="category-copyright"
onclick='hideCategory("copyright")'</li>
<b>Copyright</b>
</li>
<li style="cursor: pointer; display: none;"
id="category-hidden-copyright"
onclick='showCategory("copyright")'</li>
<b>&#9658; Copyright</b>
</li>
<li class="tag-type-copyright"><a style='font-weight:normal;' href="/wiki/show?title=friendship_is_magic">?</a> <a href="/post/search?tags=friendship_is_magic">friendship is magic</a> <span class="post-count">89267</span></li><li class="tag-type-copyright"><a style='font-weight:normal;' href="/wiki/show?title=my_little_pony">?</a> <a href="/post/search?tags=my_little_pony">my little pony</a> <span class="post-count">99299</span></li><li style="cursor: pointer;" id="category-species"
onclick='hideCategory("species")'</li>
<b>Species</b>
</li>
<li style="cursor: pointer; display: none;"
id="category-hidden-species"
onclick='showCategory("species")'</li>
<b>&#9658; Species</b>
</li>
<li class="tag-type-species"><a style='font-weight:normal;' href="/wiki/show?title=earth_pony">?</a> <a href="/post/search?tags=earth_pony">earth pony</a> <span class="post-count">5535</span></li><li class="tag-type-species"><a style='font-weight:normal;' href="/wiki/show?title=equine">?</a> <a href="/post/search?tags=equine">equine</a> <span class="post-count">112745</span></li><li class="tag-type-species"><a style='font-weight:normal;' href="/wiki/show?title=horse">?</a> <a href="/post/search?tags=horse">horse</a> <span class="post-count">52267</span></li><li class="tag-type-species"><a style='font-weight:normal;' href="/wiki/show?title=mammal">?</a> <a href="/post/search?tags=mammal">mammal</a> <span class="post-count">444870</span></li><li class="tag-type-species"><a style='font-weight:normal;' href="/wiki/show?title=pony">?</a> <a href="/post/search?tags=pony">pony</a> <span class="post-count">37860</span></li><li style="cursor: pointer;" id="category-general"
onclick='hideCategory("general")'</li>
<b>General</b>
</li>
<li style="cursor: pointer; display: none;"
id="category-hidden-general"
onclick='showCategory("general")'</li>
<b>&#9658; General</b>
</li>
<li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=2015">?</a> <a href="/post/search?tags=2015">2015</a> <span class="post-count">23823</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=ambiguous_gender">?</a> <a href="/post/search?tags=ambiguous_gender">ambiguous gender</a> <span class="post-count">35808</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=animal_genitalia">?</a> <a href="/post/search?tags=animal_genitalia">animal genitalia</a> <span class="post-count">40150</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=balls">?</a> <a href="/post/search?tags=balls">balls</a> <span class="post-count">115499</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=black_and_white">?</a> <a href="/post/search?tags=black_and_white">black and white</a> <span class="post-count">15492</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=cutie_mark">?</a> <a href="/post/search?tags=cutie_mark">cutie mark</a> <span class="post-count">40880</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=dialogue">?</a> <a href="/post/search?tags=dialogue">dialogue</a> <span class="post-count">28933</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=dickgirl">?</a> <a href="/post/search?tags=dickgirl">dickgirl</a> <span class="post-count">18696</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=duo">?</a> <a href="/post/search?tags=duo">duo</a> <span class="post-count">176339</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=english_text">?</a> <a href="/post/search?tags=english_text">english text</a> <span class="post-count">57857</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=erection">?</a> <a href="/post/search?tags=erection">erection</a> <span class="post-count">94296</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=hair">?</a> <a href="/post/search?tags=hair">hair</a> <span class="post-count">214008</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=horsecock">?</a> <a href="/post/search?tags=horsecock">horsecock</a> <span class="post-count">18489</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=huge_penis">?</a> <a href="/post/search?tags=huge_penis">huge penis</a> <span class="post-count">3602</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=intersex">?</a> <a href="/post/search?tags=intersex">intersex</a> <span class="post-count">25604</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=monochrome">?</a> <a href="/post/search?tags=monochrome">monochrome</a> <span class="post-count">58195</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=penis">?</a> <a href="/post/search?tags=penis">penis</a> <span class="post-count">201054</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=sweat">?</a> <a href="/post/search?tags=sweat">sweat</a> <span class="post-count">19436</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=tea_bagging">?</a> <a href="/post/search?tags=tea_bagging">tea bagging</a> <span class="post-count">146</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=text">?</a> <a href="/post/search?tags=text">text</a> <span class="post-count">83777</span></li><li class="tag-type-general"><a style='font-weight:normal;' href="/wiki/show?title=vein">?</a> <a href="/post/search?tags=vein">vein</a> <span class="post-count">21172</span></li>
</ul>
</div>
<div id="stats">
<h5 class="post-sidebar-header">Statistics</h5>
<ul>
<li class="sourcelink">Source:
<div class='sourcelink-url'>
<a href="http://dotkwa.tumblr.com/post/121443888477/futa-harshwhinneyye" target="_blank">dotkwa.tumblr.com/post/121443888477/futa-harshwhinneyye</a><br>
<a href="http://40.media.tumblr.com/758892ccca10cef5d242b9f49a0b2a13/tumblr_npwci8NIQj1rbrnayo1_540.png" target="_blank">40.media.tumblr.com/758892ccca10cef5d242b9f49a0b2a13/tumblr_npwci8NIQj1rbrnayo1_540.png</a><br>
</div>
</li>
<li>Posted <a href="/post/index?tags=date%3A2015-06-13" title="Jun 13, 2015 07:45 PM">12 minutes ago</a> by <a href="/user/show/95927" >lemongrab</a></li>
<li>Rating: <span class='redtext'>Explicit</span></li>
<li>
Score: <span id="post-score-672179" style="cursor:help;" class="greentext" title="1 up, 0 down">1</span>
</li>
<li>Views: 68</li>
<li>ID: 672179</li>
<li>Size: <a href="https://static1.e621.net/data/75/88/758892ccca10cef5d242b9f49a0b2a13.png" id="highres" onclick="Post.toggle_size(); return false">509x595 (122.5 KB)</a></li>
<br />
<li>Favorited by: <span id="favorited-by"><a href="/user/show/181173">Mochi_Sandvich</a></span></li>
</ul>
</div>
<div>
<h5 class="post-sidebar-header">Options</h5>
<ul>
<li id="add-to-favs" class="add-to-fav"><a href="#" onclick="Favorite.create(672179); return false;">+Favorite</a></li>
<li id="remove-from-favs" class="remove-from-fav"><a href="#" onclick="Favorite.destroy(672179); return false;">-Favorite</a></li>
</ul>
</div>
<div>
<h5 class="post-sidebar-header">History</h5>
<ul>
<li><a href="/post_tag_history/index?post_id=672179" >Tags</a> / <a href="/post_desc_history/index?post_id=672179" >Description</a></li>
<li><a href="/note/history?post_id=672179" >Notes</a></li>
<li><a href="/post_flag_history/index?post_id=672179" >Flags</a></li>
</ul>
</div>
<div>
<h5 class="post-sidebar-header">Related Posts</h5>
<ul>
<li><a href="/post/show/672178" >Previous</a> / <a href="/post/random" >Random</a> / <a href="/post/show/672180" >Next</a></li>
<li></li>
<li><a href="/set/index?post_id=672179" >Sets with this post</a></li>
<br />
<li><a href="http://google.com/searchbyimage?image_url=https://static1.e621.net/data/preview/75/88/758892ccca10cef5d242b9f49a0b2a13.jpg">Reverse Google Search</a></li>
<li><a href="http://saucenao.com/search.php?url=https://static1.e621.net/data/preview/75/88/758892ccca10cef5d242b9f49a0b2a13.jpg">Reverse SauceNAO Search</a></li>
<li><a href="http://iqdb.org/?url=https://static1.e621.net/data/preview/75/88/758892ccca10cef5d242b9f49a0b2a13.jpg">Reverse IQDB Search</a></li>
<li><a href="http://iqdb.harry.lu/?url=https://static1.e621.net/data/preview/75/88/758892ccca10cef5d242b9f49a0b2a13.jpg">Reverse harry.lu Search</a></li>
</ul>
</div>
</div>
<div class="content" id="right-col">
<div id="ad-leaderboard" class='section'>
<!--/* e621.net - Leaderboard */-->
<script type='text/javascript'><!--//<![CDATA[
var m3_u = (location.protocol=='https:'?'https://ads.dragonfru.it/www/delivery/ajs.php':'http://ads.dragonfru.it/www/delivery/ajs.php');
var m3_r = Math.floor(Math.random()*99999999999);
if (!document.MAX_used) document.MAX_used = ',';
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
document.write ("?zoneid=1");
document.write ('&amp;cb=' + m3_r);
if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
document.write ("&amp;loc=" + escape(window.location));
if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
if (document.context) document.write ("&context=" + escape(document.context));
if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
document.write ("'></scr"+"ipt>");
//]]>--></script><noscript><a href='http://ads.dragonfru.it/www/delivery/ck.php?n=af14737a&amp;cb=INSERT_RANDOM_NUMBER_HERE'
target='_blank'><img src='http://ads.dragonfru.it/www/delivery/avw.php?zoneid=1&amp;cb=INSERT_RANDOM_NUMBER_HERE&amp;n=af14737a'
border='0' alt='' /></a></noscript>
<div class="Clear"></div>
</div>
<div>
<div id="note-container">
</div>
<a name="image"></a>
<img alt="e621 2015 ambiguous_gender animal_genitalia anon balls black_and_white cutie_mark dialogue dickgirl dotkwa duo earth_pony english_text equine erection friendship_is_magic hair horse horsecock huge_penis intersex mammal monochrome ms_harshwhinny_(mlp) my_little_pony penis pony sweat tea_bagging text vein" data-height="595" data-orig_height="595" data-orig_width="509" data-resize="true" data-resize_mode="1" data-sample_url="https://static1.e621.net/data/75/88/758892ccca10cef5d242b9f49a0b2a13.png" data-sample_width="509" data-width="509" id="image" onclick="Note.toggle();" src="https://static1.e621.net/data/75/88/758892ccca10cef5d242b9f49a0b2a13.png">
</div>
<div class="Clear">&nbsp;</div>
<div style="margin-bottom: 1em;">
<p id="note-count"></p>
<script type="text/javascript">
Note.post_id = 672179
Note.updateNoteCount()
Note.show()
</script>
</div>
<div>
<h4>
<a href="#" onclick="if ($('comments')){$('comments').hide();} $j('#edit').fadeIn(); $('post_tags').focus(); return false;">Edit</a>
| <a href="#" onclick="$('edit').hide(); $j('#comments').fadeIn(); return false;">Respond</a>
| <a href="https://static1.e621.net/data/75/88/758892ccca10cef5d242b9f49a0b2a13.png">Download</a>
</h4>
</div>
<a name="edit"></a>
<div id="edit" style="display: none;">
<div style="margin-bottom: 1em;">
<h2>Before editing, read the <a href="/wiki/show?title=howto%3Atag" >how to tag guide</a>.</h2>
</div>
<form action="/post/update/672179" id="edit-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="cF0ArTmr6z+V98Js7tdopRe4WGfGZkOPE8RXvfXKWOg="></div>
<input id="post_old_tags" name="post[old_tags]" type="hidden" value="2015 ambiguous_gender animal_genitalia anon balls black_and_white cutie_mark dialogue dickgirl dotkwa duo earth_pony english_text equine erection friendship_is_magic hair horse horsecock huge_penis intersex mammal monochrome ms_harshwhinny_(mlp) my_little_pony penis pony sweat tea_bagging text vein">
<div class='section' style='width:700px;'>
<table class='nomargin'>
<tr>
<td width="15%">
<label class="block" for="post_rating_questionable">Rating</label>
</td>
<td width="85%">
<input checked="checked" id="post_rating_explicit" name="post[rating]" tabindex="1" type="radio" value="Explicit">
<label for="post_rating_explicit">Explicit</label>
<input id="post_rating_questionable" name="post[rating]" tabindex="2" type="radio" value="Questionable">
<label for="post_rating_questionable">Questionable</label>
<input id="post_rating_safe" name="post[rating]" tabindex="3" type="radio" value="Safe">
<label for="post_rating_safe">Safe</label>
</td>
</tr>
<tr>
<td colspan='2'><p>Explicit tags include any sexual body parts and acts. (<a href="/help/ratings" target="_blank">help</a>)</p></td>
</tr>
<tr>
<td><label>Parent Post ID</label></td>
<td><input id="post_parent_id" name="post[parent_id]" size="10" tabindex="4" type="text"></td>
</tr>
<tr>
<td>
<label class="block" for="post_tags">Tags</label><br />Separated by spaces<br /><a href="/help/tags" target="_blank">Tagging help</a>
</td>
<td>
<textarea cols="50" id="post_tags" name="post[tags]" rows="5" tabindex="10">2015 ambiguous_gender animal_genitalia anon balls black_and_white cutie_mark dialogue dickgirl dotkwa duo earth_pony english_text equine erection friendship_is_magic hair horse horsecock huge_penis intersex mammal monochrome ms_harshwhinny_(mlp) my_little_pony penis pony sweat tea_bagging text vein</textarea>
<a href="#" onclick="RelatedTags.find('post_tags'); return false;">Related tags</a> |
<a href="#" onclick="RelatedTags.find('post_tags', 'artist'); return false;">Related artists</a> |
<a href="#" onclick="RelatedTags.find('post_tags', 'char'); return false;">Related characters</a> |
<a href="#" onclick="RelatedTags.find('post_tags', 'copyright'); return false;">Related copyrights</a> |
<a href="#" onclick="RelatedTags.find_artist($F('post_source')); return false;">Find artist</a>
</td>
</tr>
<tr>
<td><label class="block" for="post_source">Source</label><br />Each URL on a new line<br />Limit of 5 URLs</td>
<td><textarea cols="50" id="post_source" name="post[source]" rows="3">http://dotkwa.tumblr.com/post/121443888477/futa-harshwhinneyye
http://40.media.tumblr.com/758892ccca10cef5d242b9f49a0b2a13/tumblr_npwci8NIQj1rbrnayo1_540.png</textarea></td>
</tr>
<tr>
<td><label for="post_description">Description</label></td>
<td><textarea cols="50" id="post_description" name="post[description]" rows="3" tabindex="11"></textarea></td>
</tr>
<tr>
<td><label for="reason">Edit reason (optional)</label><br />Inline DText allowed</td>
<td><input id="reason" maxlength="255" name="reason" style="width:468px;" tabindex="12" type="text" value=""></td>
</tr>
</table>
<input accesskey="s" tabindex="13" type="submit" value="Save changes">
</div>
<div>
<h5>Related Tags</h5>
<div style="margin-bottom: 1em;" id="related"><em>None</em></div>
</div>
</form>
</div>
<a name="comments"></a>
<div id="comments" style="margin-top: 1em;">
<div style="margin-bottom: 1em;">
</div>
<div class="response-list" id="response-list-for-672179">
</div>
<div style="clear: both;">
<h6 id="respond-link-672179"><a href="/user/login?url=%2Fpost%2Fshow%2F672179%2F2015-ambiguous_gender-animal_genitalia-anon-balls-">Login to respond &raquo;</a></h6>
</div>
<script type="text/javascript">
jQuery("#commentform-672179").submit(function(){
jQuery("#commentform-672179").find(":submit").prop("disabled", true);
jQuery.ajax({
url: "/comment/create",
type: "POST",
dataType: "html",
headers: {
accept: "text/javascript"
},
data: jQuery("#commentform-672179").serialize()
}).done(function(data){
jQuery(data).appendTo("#response-list-for-672179").highlight();
jQuery("#commentform-672179").find(":submit").prop("disabled", false);
jQuery("#reply-text-672179").val("");
jQuery("#comment-preview-672179").hide();
}).error(function(data){
jQuery("#error").show().find("p").html("Error: " + data.responseText);
noticeCheckScroll();
jQuery("#commentform-672179").find(":submit").prop("disabled", false);
});
return false;
});
</script>
</div>
</div>
<div class="Clear">&nbsp;</div>
</div>
<div class="Clear">&nbsp;</div>
</div>
<script type="text/javascript" id="blacklisted-images">
cssOverrideUpdated = 1412208000;
cssOverrideDefault = "overrides/spring";
var user_ignore_theme_changes = false;
Cookie.setup();
Post.init_blacklisted();
if (parseInt(Cookie.get("hide_news_notice"), 10) >= 1433201601){ $("news").hide() }
if (!Cookie.get("css") || Cookie.get("css").indexOf(";") == -1) // if css cookie doesn't exist or is the old format (and won't have a semicolon), recreate it
Cookie.put("css","hexagon;overrides/spring;"+cssOverrideUpdated);
loadCSS();
</script>
<script type="text/javascript">
Post.observe_text_area("post_tags");
var favorited_by = ["Mochi_Sandvich"];
if (favorited_by.include(Cookie.get("login"))) {
if ($("add-to-favs"))
$("add-to-favs").hide()
} else
$("remove-from-favs").hide()
RelatedTags.init([], [])
Post.fit_to_window();
// Disable resizing by default if the image fits the window, so it doesn't shrink when you zoom in
var image = jQuery("#image");
var width = jQuery("#content").width() - jQuery(".sidebar").width();
if (image && image.data("orig_width") <= width)
image.data("resize", false);
jQuery(window).resize(function(){
Post.fit_to_window();
});
</script>
</body>
</html>
<!--
Host: app5.e621.net
Cookies: _galitag-sidebarcsshexagon;overrides/spring;1412208000modeview_gaGA1.2.307022383.1434225245blacklist_avatarstrue__cfduidd1815110871361a05c6811700e443f1621434225242blacklist_usersfalse__utmt1__utmz71838535.1434225245.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)__utmc71838535__utmb71838535.1.10.1434225245__utma71838535.307022383.1434225245.1434225245.1434225245.1_gat1e621BAh7BzoQX2NzcmZfdG9rZW4iMWNGMEFyVG1yNnorVjk4SnM3dGRvcFJlNFdHZkdaa09QRThSWHZmWEtXT2c9Og9zZXNzaW9uX2lkIiUxZTVjNWY0NjZhNzJiM2IwZTZlNTZhMzAwNGFhMmFmNw==--97802d5b917389c0c5feb1d91712f5b3cdefbba0
//-->

View File

@ -1,347 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<link rel="stylesheet" type="text/css" href="http://img.hentai-foundry.com/themes/default/css/default.css" title="Default CSS" />
<link rel="shortcut icon" href="/themes/Hentai/favicon.ico" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search Hentai Foundry"
href="/search/OpenSearchDescription"
/>
<script type="text/javascript" src="http://img.hentai-foundry.com/themes/default/js/util.js"></script>
<meta name="description" content="Hentai Foundry is an online art gallery for adult oriented art. Despite its name, it is not limited to hentai but also welcomes adult in other styles such as cartoon and realism."> <meta name="keywords" content="Hentai, futanari, furry, porn, sex, fan, art, fanart, pictures, anime, cartoons, tv, movies, forum, upload, image, gallery">
<link title="Sparrow&#039;s Pictures" rel="alternate" type="application/atom+xml" href="/feed/userPictures/username/Sparrow" />
<script type="text/javascript" src="/assets/67f68f61/jquery.js"></script>
<script type="text/javascript" src="/assets/67f68f61/jquery.ba-bbq.js"></script>
<title>Sparrow&#039;s Pictures - Hentai Foundry</title>
<link rel="meta" href="http://img.hentai-foundry.com/themes/Hentai/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
<meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3) gen true for "http://www.hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3))' />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://www.hentai-foundry.com/" r (SS~~000 9 SS~~001 5 SS~~002 5 SS~~003 5 SS~~004 9 SS~~005 5 SS~~007 5 SS~~008 5 SS~~009 9 SS~~00A 5))'></head>
<body>
<div style="background: url(http://img.hentai-foundry.com/themes/default/images/header_bg.gif); height: 140px; width: 100%">
<div style="text-align: left">
<a href="/site/index">
<img src="http://img.hentai-foundry.com/themes/Hentai/images/logo.png" border="0" alt="Logo" title="Logo" />
</a>
</div>
<div style="position: absolute; right: 15px; top: 15px;">
<form action="/search/index" method="GET">
<span style="white-space:nowrap">
<input type="text" name="query" />
<input type="submit" value="Search" />
</span><br />
<a class="navlink" href="/search/index">Advanced Search</a> </form>
</div>
<div class='headerLogin'>
<form action="/site/login" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div> Username <input type="text" name="LoginForm[username]" /> &nbsp;
Password <input type="password" name="LoginForm[password]" /> &nbsp;
<input type="submit" value="Login" /><br />
<div align='right' style="margin-top: 5px;">
Remember <input type="checkbox" value="1" name="LoginForm[rememberMe]" style="background: #676573;" />
&nbsp; <a class='navlink' href="/users/create">Register</a> &nbsp;
| &nbsp; <a class='navlink' href="/users/LostPassword">Forgot your password?</a></div>
</form>
</div>
</div>
<div id="mainmenu" style="text-align: center; background: #676573; color: #000; font-weight: bold; font-size: 0.9em;">
<div id="filtersButton"><a OnClick="ths = $(this); jQuery(&#039;#FilterBox&#039;).css({top: ths.offset().top, left: ths.offset().left + ths.outerWidth() + 10}); jQuery(&#039;#FilterBox&#039;).toggle(500); return false;" href="#"><img title="[Filters]" src="http://img.hentai-foundry.com/themes/default/images/buttons/filter.png" alt="[Filters]" /></a></div><div class="box" id="FilterBox">
<div class="boxheader">
<div class="boxtitle">Filters <a style="float: right;" href="#" onClick="jQuery('#FilterBox').toggle(500); return false;">X</a></div>
</div>
<div class="boxbody">
<form action="/pictures/user/Sparrow" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div><div class='filter_div rating_nudity'>
<label for='rating_nudity'><small><small>Show</small></small> Nudity <img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /></label><select class="ratingListBox" name="rating_nudity" id="rating_nudity">
<option value="0">None</option>
<option value="1">Mild Nudity</option>
<option value="2">Moderate Nudity</option>
<option value="3" selected="selected">Explicit Nudity</option>
</select></div><div class='filter_div rating_violence'>
<label for='rating_violence'><small><small>Show</small></small> Violence <img title="Violence" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_violence1.gif" alt="V" /></label><select class="ratingListBox" name="rating_violence" id="rating_violence">
<option value="0">None</option>
<option value="1">Comic or Mild Violence</option>
<option value="2">Moderate Violence</option>
<option value="3" selected="selected">Explicit or Graphic Violence</option>
</select></div><div class='filter_div rating_profanity'>
<label for='rating_profanity'><small><small>Show</small></small> Profanity <img title="Profanity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_lang1.gif" alt="L" /></label><select class="ratingListBox" name="rating_profanity" id="rating_profanity">
<option value="0">None</option>
<option value="1">Mild Profanity</option>
<option value="2">Moderate Profanity</option>
<option value="3" selected="selected">Proliferous or Severe Profanity</option>
</select></div><div class='filter_div rating_racism'>
<label for='rating_racism'><small><small>Show</small></small> Racism <img title="Racism" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_racism1.gif" alt="R" /></label><select class="ratingListBox" name="rating_racism" id="rating_racism">
<option value="0">None</option>
<option value="1">Mild Racist themes or content</option>
<option value="2">Racist themes or content</option>
<option value="3" selected="selected">Strong racist themes or content</option>
</select></div><div class='filter_div rating_sex'>
<label for='rating_sex'><small><small>Show</small></small> Sexual content <img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /></label><select class="ratingListBox" name="rating_sex" id="rating_sex">
<option value="0">None</option>
<option value="1">Mild suggestive content</option>
<option value="2">Moderate suggestive or sexual content</option>
<option value="3" selected="selected">Explicit or adult sexual content</option>
</select></div><div class='filter_div rating_spoilers'>
<label for='rating_spoilers'><small><small>Show</small></small> Spoiler Warning <img title="Spoiler Warning" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_spoiler1.gif" alt="Sp" /></label><select class="ratingListBox" name="rating_spoilers" id="rating_spoilers">
<option value="0">None</option>
<option value="1">Mild Spoiler Warning</option>
<option value="2">Moderate Spoiler Warning</option>
<option value="3" selected="selected">Major Spoiler Warning</option>
</select></div><div class='filter_div rating_yaoi'>
<label for='rating_yaoi'><small><small>Show</small></small> Shonen-ai / Yaoi <img title="Shonen-ai (male homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yaoi.gif" alt="♂♂" /></label><input type="hidden" value="0" name="rating_yaoi" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yaoi" id="rating_yaoi" /></div><div class='filter_div rating_yuri'>
<label for='rating_yuri'><small><small>Show</small></small> Shoujo-ai / Yuri <img title="Shoujo-ai (female homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yuri.gif" alt="♀♀" /></label><input type="hidden" value="0" name="rating_yuri" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yuri" id="rating_yuri" /></div><div class='filter_div rating_loli'>
<label for='rating_loli'><small><small>Show</small></small> Lolicon <img title="Lolicon (Young female) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_loli.gif" alt="Lo" /></label><input type="hidden" value="0" name="rating_loli" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_loli" id="rating_loli" /></div><div class='filter_div rating_shota'>
<label for='rating_shota'><small><small>Show</small></small> Shotacon <img title="Shotacon (Young male) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_shota.gif" alt="So" /></label><input type="hidden" value="0" name="rating_shota" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_shota" id="rating_shota" /></div><div class='filter_div rating_teen'>
<label for='rating_teen'><small><small>Show</small></small> Teen <img title="Teen content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_teen.gif" alt="T" /></label><input type="hidden" value="0" name="rating_teen" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_teen" id="rating_teen" /></div><div class='filter_div rating_guro'>
<label for='rating_guro'><small><small>Show</small></small> Guro <img title="Gore, scat, similar macabre content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_guro.gif" alt="G" /></label><input type="hidden" value="0" name="rating_guro" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_guro" id="rating_guro" /></div><div class='filter_div rating_furry'>
<label for='rating_furry'><small><small>Show</small></small> Furry <img title="Anthropomorphic/furry content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_furry.gif" alt="Fur" /></label><input type="hidden" value="0" name="rating_furry" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_furry" id="rating_furry" /></div><div class='filter_div rating_beast'>
<label for='rating_beast'><small><small>Show</small></small> Beast <img title="Bestiality" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_beast.gif" alt="B" /></label><input type="hidden" value="0" name="rating_beast" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_beast" id="rating_beast" /></div><div class='filter_div rating_male'>
<label for='rating_male'><small><small>Show</small></small> Male <img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /></label><input type="hidden" value="0" name="rating_male" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_male" id="rating_male" /></div><div class='filter_div rating_female'>
<label for='rating_female'><small><small>Show</small></small> Female <img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></label><input type="hidden" value="0" name="rating_female" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_female" id="rating_female" /></div><div class='filter_div rating_futa'>
<label for='rating_futa'><small><small>Show</small></small> Futa <img title="Contains Futanari/Dickgirl/Transgender/Hermaphrodite subject" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_futa.gif" alt="TG" /></label><input type="hidden" value="0" name="rating_futa" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_futa" id="rating_futa" /></div><div class='filter_div rating_other'>
<label for='rating_other'><small><small>Show</small></small> Other <img title="Other offensive content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_other.gif" alt="!?" /></label><input type="hidden" value="0" name="rating_other" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_other" id="rating_other" /></div><br><div class='filter_div filter_media'><label for="filter_media">Limit Media to</label><select name="filter_media" id="filter_media">
<option value="A" selected="selected">All</option>
<optgroup label="Traditional media">
<optgroup label=".. Drawings">
<option value="1">Charcoal</option>
<option value="2">Colored Pencil / Crayon</option>
<option value="3">Ink or markers</option>
<option value="4">Oil pastels</option>
<option value="5">Graphite pencil</option>
<option value="6">Other drawing</option>
</optgroup>
<optgroup label=".. Paintings">
<option value="11">Airbrush</option>
<option value="12">Acrylics</option>
<option value="13">Oils</option>
<option value="14">Watercolor</option>
<option value="15">Other painting</option>
</optgroup>
<optgroup label=".. Crafts / Physical art">
<option value="21">Plushies</option>
<option value="22">Sculpture</option>
<option value="23">Other crafts</option>
</optgroup>
</optgroup>
<optgroup label="Digital media (CG)">
<option value="31">3D modelling</option>
<option value="33">Digital drawing or painting</option>
<option value="36">MS Paint</option>
<option value="32">Oekaki</option>
<option value="34">Pixel art</option>
<option value="35">Other digital art</option>
</optgroup>
<option value="0">Unspecified</option>
</select></div><div class='filter_div filter_order'><label for="filter_order">Sort By</label><select name="filter_order" id="filter_order">
<option value="date_new" selected="selected">Date Submitted (Newest)</option>
<option value="date_old">Date Submitted (Oldest)</option>
<option value="update_new">Date updated (Newest)</option>
<option value="update_old">Date updated (Oldest)</option>
<option value="a-z">Title A-z</option>
<option value="z-a">Title z-A</option>
<option value="views most">Views (most first)</option>
<option value="rating highest">rating (highest first)</option>
<option value="comments most">Comments (most first)</option>
<option value="faves most">Faves (most first)</option>
<option value="popularity most">Popularity (highest first)</option>
</select></div><div class='filter_div filter_type'><label for="filter_type">Limit Pictures to</label><select name="filter_type" id="filter_type">
<option value="0" selected="selected">All</option>
<option value="1">Regular Pictures</option>
<option value="2">Flash Submissions</option>
</select></div><input type="submit" name="yt0" value="Apply" id="yt0" /><input onClick="jQuery(&#039;#FilterBox&#039;).toggle(500);" name="yt1" type="button" value="Close" /></form></div>
</div><ul id="yw3">
<li><a href="/site/about">About</a></li>
<li><a href="http://forums.hentai-foundry.com/viewforum.php?f=13">FAQ</a></li>
<li><a href="http://forums.hentai-foundry.com/">Forums</a></li>
<li><a href="/paintChat/index">PaintChat</a></li>
<li><a href="/category/browse">Browse Categories</a></li>
<li><a href="/users/byletter">Browse Users</a></li>
<li><span>Browse Submissions</span>
<ul>
<li><a href="/pictures/featured">Featured Submissions</a></li>
<li><a href="/pictures/recent">Recent Submissions</a></li>
<li><a href="/pictures/popular">Popular Submissions</a></li>
<li><a href="/pictures/random">Random Submissions</a></li>
</ul>
</li>
<li><a href="/site/online">Who&#039;s Online</a></li>
</ul></div>
<center id='topad'>
<p><a href="http://www.pvglasses.com/?revid=17063&campaign=24264"><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/pink/pvg-728x90.jpg" alt="" /></a></p></center>
<div class="container" id="page">
<div class="breadcrumbs">
<a href="/">Home</a> &raquo; <a href="/user/Sparrow/profile">Sparrow</a> &raquo; <span>Pictures</span></div><!-- breadcrumbs -->
<div class="tabContainer"><ul class="tabs">
<li><a href="/user/Sparrow/profile" >Profile</a></li>
<li><a href="/pictures/user/Sparrow" class="active" >Pictures (681)</a></li>
<li><a href="/pictures/user/Sparrow/scraps" >Scraps (393)</a></li>
<li><a href="/stories/user/Sparrow" >Stories (6)</a></li>
</ul>
<div class="view">
<div id="yw0" class="list-view">
<div class='galleryHeader'><div class="pager">Go to page: <ul id="yw1" class="yiiPager"><li class="first hidden"><a href="/pictures/user/Sparrow">&lt;&lt; First</a></li>
<li class="previous hidden"><a href="/pictures/user/Sparrow">&lt; Previous</a></li>
<li class="page selected"><a href="/pictures/user/Sparrow">1</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/2">2</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/3">3</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/4">4</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/5">5</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/6">6</a></li>
<li class="next"><a href="/pictures/user/Sparrow/page/2">Next &gt;</a></li>
<li class="last"><a href="/pictures/user/Sparrow/page/6">Last &gt;&gt;</a></li></ul></div>
<div class="summary">Displaying 1-25 of 135 results.</div></div>
<table class="galleryViewTable">
<tr>
<td class='thumb_square' id='thumb_square_0' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/226304/Ashantae"><span class="thumbTitle">Ashantae!</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/226304/Ashantae"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=226304&amp;size=128&amp;shadow=0" alt="Ashantae!" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex2.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_1' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/225935/Coco-VS-Admiral-Swiggins"><span class="thumbTitle">Coco VS Admiral Swiggins</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/225935/Coco-VS-Admiral-Swiggins"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=225935&amp;size=128&amp;shadow=0" alt="Coco VS Admiral Swiggins" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_2' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/225472/Poon-Cellar"><span class="thumbTitle">Poon Cellar</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/225472/Poon-Cellar"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=225472&amp;size=128&amp;shadow=0" alt="Poon Cellar" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_3' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/225063/Goal-Tending"><span class="thumbTitle">Goal Tending</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/225063/Goal-Tending"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=225063&amp;size=128&amp;shadow=0" alt="Goal Tending" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_4' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/223991/Coco-VS-StarStorm"><span class="thumbTitle">Coco VS StarStorm</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/223991/Coco-VS-StarStorm"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=223991&amp;size=128&amp;shadow=0" alt="Coco VS StarStorm" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_5' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/221783/Gala-Event"><span class="thumbTitle">Gala Event</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/221783/Gala-Event"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=221783&amp;size=128&amp;shadow=0" alt="Gala Event" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_6' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/221379/Linda-Rinda"><span class="thumbTitle">Linda Rinda</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/221379/Linda-Rinda"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=221379&amp;size=128&amp;shadow=0" alt="Linda Rinda" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex2.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_7' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/220615/Farahs-Day-Off--27"><span class="thumbTitle">Farah's Day Off 27</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/220615/Farahs-Day-Off--27"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=220615&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 27" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_8' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/219856/Viewing-Room-Workout"><span class="thumbTitle">Viewing Room Workout</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/219856/Viewing-Room-Workout"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=219856&amp;size=128&amp;shadow=0" alt="Viewing Room Workout" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_9' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/219284/Farahs-Day-Off--26"><span class="thumbTitle">Farah's Day Off 26</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/219284/Farahs-Day-Off--26"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=219284&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 26" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_10' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/218886/Nyaow-Streaming"><span class="thumbTitle">N(ya)ow Streaming!</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/218886/Nyaow-Streaming"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=218886&amp;size=128&amp;shadow=0" alt="N(ya)ow Streaming!" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude2.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex2.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_11' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/218035/Farahs-Day-Off--25"><span class="thumbTitle">Farah's Day Off 25</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/218035/Farahs-Day-Off--25"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=218035&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 25" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_12' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/216981/A-Vivi-draws-near.-Command"><span class="thumbTitle">A Vivi draws near. Command?</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/216981/A-Vivi-draws-near.-Command"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=216981&amp;size=128&amp;shadow=0" alt="A Vivi draws near. Command?" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_13' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/216642/Farahs-Day-Off--24"><span class="thumbTitle">Farah's Day Off 24</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/216642/Farahs-Day-Off--24"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=216642&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 24" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_14' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/215266/Farahs-Day-Off--23"><span class="thumbTitle">Farah's Day Off 23</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/215266/Farahs-Day-Off--23"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=215266&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 23" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_15' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/213132/Relative-Risk"><span class="thumbTitle">Relative Risk</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/213132/Relative-Risk"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=213132&amp;size=128&amp;shadow=0" alt="Relative Risk" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_16' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/212665/Farahs-Day-Off--21"><span class="thumbTitle">Farah's Day Off 21</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/212665/Farahs-Day-Off--21"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=212665&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 21" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_17' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/212282/Sticky-Sheva-Situation"><span class="thumbTitle">Sticky Sheva Situation</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/212282/Sticky-Sheva-Situation"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=212282&amp;size=128&amp;shadow=0" alt="Sticky Sheva Situation" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_18' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/211269/Farahs-Day-Off-20-2"><span class="thumbTitle">Farah's Day Off 20-2</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/211269/Farahs-Day-Off-20-2"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=211269&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 20-2" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_19' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/211268/Farahs-Day-Off-20-1"><span class="thumbTitle">Farah's Day Off 20-1</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/211268/Farahs-Day-Off-20-1"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=211268&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 20-1" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_20' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/211038/Newcomers"><span class="thumbTitle">Newcomers</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/211038/Newcomers"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=211038&amp;size=128&amp;shadow=0" alt="Newcomers" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_21' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/209967/Farahs-Day-Off-19"><span class="thumbTitle">Farah's Day Off 19</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/209967/Farahs-Day-Off-19"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=209967&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 19" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_22' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/209292/The-New-Adventures-of-Helena-Lovelace-01"><span class="thumbTitle">The New Adventures of Helena Lovelace 01</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/209292/The-New-Adventures-of-Helena-Lovelace-01"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=209292&amp;size=128&amp;shadow=0" alt="The New Adventures of Helena Lovelace 01" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_23' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/208609/Farahs-Day-Off--18"><span class="thumbTitle">Farah's Day Off 18</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/208609/Farahs-Day-Off--18"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=208609&amp;size=128&amp;shadow=0" alt="Farah&#039;s Day Off 18" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_24' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/207979/Wonderful-Backlit-Foreign-Boyfriend-Experience"><span class="thumbTitle">Wonderful Backlit Foreign Boyfriend Experience</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/207979/Wonderful-Backlit-Foreign-Boyfriend-Experience"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=207979&amp;size=128&amp;shadow=0" alt="Wonderful Backlit Foreign Boyfriend Experience" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
</table>
<div class='galleryFooter'><div class="pager">Go to page: <ul id="yw2" class="yiiPager"><li class="first hidden"><a href="/pictures/user/Sparrow">&lt;&lt; First</a></li>
<li class="previous hidden"><a href="/pictures/user/Sparrow">&lt; Previous</a></li>
<li class="page selected"><a href="/pictures/user/Sparrow">1</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/2">2</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/3">3</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/4">4</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/5">5</a></li>
<li class="page"><a href="/pictures/user/Sparrow/page/6">6</a></li>
<li class="next"><a href="/pictures/user/Sparrow/page/2">Next &gt;</a></li>
<li class="last"><a href="/pictures/user/Sparrow/page/6">Last &gt;&gt;</a></li></ul></div></div><div class="keys" style="display:none" title="/pictures/user/Sparrow"><span>226304</span><span>225935</span><span>225472</span><span>225063</span><span>223991</span><span>221783</span><span>221379</span><span>220615</span><span>219856</span><span>219284</span><span>218886</span><span>218035</span><span>216981</span><span>216642</span><span>215266</span><span>213132</span><span>212665</span><span>212282</span><span>211269</span><span>211268</span><span>211038</span><span>209967</span><span>209292</span><span>208609</span><span>207979</span></div>
</div></div></div>
</div><!-- page -->
<div id="footer">
<div class="box" id="yw4">
<div class="boxbody">
Site Copyright © 2006-2013 All Rights Reserved<br />
<a href="http://www.hentai-foundry.com/pictures/user/layzcarter/5/Truely-Heart">Truely</a> created by <a href="/user/layzcarter/profile">Layzcarter</a><br />
Site design by <a href="/user/layzcarter/profile">Layzcarter</a>, <a href="/user/admin/profile">Admin</a>, and <a href="/user/Voe/profile">Voe</a><br />
<br />Art and stories Copyright their artists/writers<br />
Series & Characters Copyright their respective creators/studios<br />
<p>All characters depicted are 18 or older, even if otherwise specified. </p><!-- IPv6-test.com button BEGIN -->
<a href='http://ipv6-test.com/validate.php?url=referer'>
<img src='http://img.hentai-foundry.com/themes/default/images/button-ipv6-80x15.png' alt='ipv6 ready' title='ipv6 ready' border='0' />
</a>
<!-- IPv6-test.com button END --><br /><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/icra_sw.gif" alt="" /></div>
</div><br />
<center>
</center>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-620339-3";
_udn = "www.hentai-foundry.com";
urchinTracker();
</script></div><!-- footer -->
<script type="text/javascript" src="/assets/f6f22552/listview/jquery.yiilistview.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('#yw0').yiiListView({'ajaxUpdate':[],'ajaxVar':'ajax','pagerClass':'pager','loadingClass':'list-view-loading','sorterClass':'sorter','enableHistory':false});
$('body').on('click','#yt0',function(){jQuery.ajax({'success':function() {location.reload();},'type':'POST','url':'/site/filters','cache':false,'data':jQuery(this).parents("form").serialize()});return false;});
});
/*]]>*/
</script>
</body>
</html>

View File

@ -1,400 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<link rel="stylesheet" type="text/css" href="http://img.hentai-foundry.com/themes/default/css/default.css" title="Default CSS" />
<link rel="shortcut icon" href="/themes/Hentai/favicon.ico" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search Hentai Foundry"
href="/search/OpenSearchDescription"
/>
<script type="text/javascript" src="http://img.hentai-foundry.com/themes/default/js/util.js"></script>
<meta name="description" content="Simple request that turned into a fairly beefy project. Anyway, it&amp;#039;s a pretty soft pinup of Shantae dressed as Asha, the protagonist of Monster World IV. The two share a good amount of design in common, but for the most part it was an excuse for me to draw Shantae just being sexy.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Enjoy!&lt;/em&gt;"> <meta name="keywords" content="Shantae Asha Monster_World cosplay nips">
<link title="Comments Feed" rel="alternate" type="application/atom+xml" href="/feed/PictureComments/id/226304" />
<script type="text/javascript" src="/assets/67f68f61/jquery.js"></script>
<script type="text/javascript" src="/assets/c966e7e0/jquery.qtip-1.0.0-rc3.min.js"></script>
<title>Ashantae! by Sparrow - Hentai Foundry</title>
<link rel="meta" href="http://img.hentai-foundry.com/themes/Hentai/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
<meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3) gen true for "http://www.hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3))' />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://www.hentai-foundry.com/" r (SS~~000 9 SS~~001 5 SS~~002 5 SS~~003 5 SS~~004 9 SS~~005 5 SS~~007 5 SS~~008 5 SS~~009 9 SS~~00A 5))'></head>
<body>
<div style="background: url(http://img.hentai-foundry.com/themes/default/images/header_bg.gif); height: 140px; width: 100%">
<div style="text-align: left">
<a href="/site/index">
<img src="http://img.hentai-foundry.com/themes/Hentai/images/logo.png" border="0" alt="Logo" title="Logo" />
</a>
</div>
<div style="position: absolute; right: 15px; top: 15px;">
<form action="/search/index" method="GET">
<span style="white-space:nowrap">
<input type="text" name="query" />
<input type="submit" value="Search" />
</span><br />
<a class="navlink" href="/search/index">Advanced Search</a> </form>
</div>
<div class='headerLogin'>
<form action="/site/login" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div> Username <input type="text" name="LoginForm[username]" /> &nbsp;
Password <input type="password" name="LoginForm[password]" /> &nbsp;
<input type="submit" value="Login" /><br />
<div align='right' style="margin-top: 5px;">
Remember <input type="checkbox" value="1" name="LoginForm[rememberMe]" style="background: #676573;" />
&nbsp; <a class='navlink' href="/users/create">Register</a> &nbsp;
| &nbsp; <a class='navlink' href="/users/LostPassword">Forgot your password?</a></div>
</form>
</div>
</div>
<div id="mainmenu" style="text-align: center; background: #676573; color: #000; font-weight: bold; font-size: 0.9em;">
<div id="filtersButton"><a OnClick="ths = $(this); jQuery(&#039;#FilterBox&#039;).css({top: ths.offset().top, left: ths.offset().left + ths.outerWidth() + 10}); jQuery(&#039;#FilterBox&#039;).toggle(500); return false;" href="#"><img title="[Filters]" src="http://img.hentai-foundry.com/themes/default/images/buttons/filter.png" alt="[Filters]" /></a></div><div class="box" id="FilterBox">
<div class="boxheader">
<div class="boxtitle">Filters <a style="float: right;" href="#" onClick="jQuery('#FilterBox').toggle(500); return false;">X</a></div>
</div>
<div class="boxbody">
<form action="/pictures/user/Sparrow/226304/Ashantae" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div><div class='filter_div rating_nudity'>
<label for='rating_nudity'><small><small>Show</small></small> Nudity <img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /></label><select class="ratingListBox" name="rating_nudity" id="rating_nudity">
<option value="0">None</option>
<option value="1">Mild Nudity</option>
<option value="2">Moderate Nudity</option>
<option value="3" selected="selected">Explicit Nudity</option>
</select></div><div class='filter_div rating_violence'>
<label for='rating_violence'><small><small>Show</small></small> Violence <img title="Violence" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_violence1.gif" alt="V" /></label><select class="ratingListBox" name="rating_violence" id="rating_violence">
<option value="0">None</option>
<option value="1">Comic or Mild Violence</option>
<option value="2">Moderate Violence</option>
<option value="3" selected="selected">Explicit or Graphic Violence</option>
</select></div><div class='filter_div rating_profanity'>
<label for='rating_profanity'><small><small>Show</small></small> Profanity <img title="Profanity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_lang1.gif" alt="L" /></label><select class="ratingListBox" name="rating_profanity" id="rating_profanity">
<option value="0">None</option>
<option value="1">Mild Profanity</option>
<option value="2">Moderate Profanity</option>
<option value="3" selected="selected">Proliferous or Severe Profanity</option>
</select></div><div class='filter_div rating_racism'>
<label for='rating_racism'><small><small>Show</small></small> Racism <img title="Racism" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_racism1.gif" alt="R" /></label><select class="ratingListBox" name="rating_racism" id="rating_racism">
<option value="0">None</option>
<option value="1">Mild Racist themes or content</option>
<option value="2">Racist themes or content</option>
<option value="3" selected="selected">Strong racist themes or content</option>
</select></div><div class='filter_div rating_sex'>
<label for='rating_sex'><small><small>Show</small></small> Sexual content <img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /></label><select class="ratingListBox" name="rating_sex" id="rating_sex">
<option value="0">None</option>
<option value="1">Mild suggestive content</option>
<option value="2">Moderate suggestive or sexual content</option>
<option value="3" selected="selected">Explicit or adult sexual content</option>
</select></div><div class='filter_div rating_spoilers'>
<label for='rating_spoilers'><small><small>Show</small></small> Spoiler Warning <img title="Spoiler Warning" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_spoiler1.gif" alt="Sp" /></label><select class="ratingListBox" name="rating_spoilers" id="rating_spoilers">
<option value="0">None</option>
<option value="1">Mild Spoiler Warning</option>
<option value="2">Moderate Spoiler Warning</option>
<option value="3" selected="selected">Major Spoiler Warning</option>
</select></div><div class='filter_div rating_yaoi'>
<label for='rating_yaoi'><small><small>Show</small></small> Shonen-ai / Yaoi <img title="Shonen-ai (male homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yaoi.gif" alt="♂♂" /></label><input type="hidden" value="0" name="rating_yaoi" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yaoi" id="rating_yaoi" /></div><div class='filter_div rating_yuri'>
<label for='rating_yuri'><small><small>Show</small></small> Shoujo-ai / Yuri <img title="Shoujo-ai (female homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yuri.gif" alt="♀♀" /></label><input type="hidden" value="0" name="rating_yuri" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yuri" id="rating_yuri" /></div><div class='filter_div rating_loli'>
<label for='rating_loli'><small><small>Show</small></small> Lolicon <img title="Lolicon (Young female) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_loli.gif" alt="Lo" /></label><input type="hidden" value="0" name="rating_loli" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_loli" id="rating_loli" /></div><div class='filter_div rating_shota'>
<label for='rating_shota'><small><small>Show</small></small> Shotacon <img title="Shotacon (Young male) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_shota.gif" alt="So" /></label><input type="hidden" value="0" name="rating_shota" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_shota" id="rating_shota" /></div><div class='filter_div rating_teen'>
<label for='rating_teen'><small><small>Show</small></small> Teen <img title="Teen content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_teen.gif" alt="T" /></label><input type="hidden" value="0" name="rating_teen" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_teen" id="rating_teen" /></div><div class='filter_div rating_guro'>
<label for='rating_guro'><small><small>Show</small></small> Guro <img title="Gore, scat, similar macabre content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_guro.gif" alt="G" /></label><input type="hidden" value="0" name="rating_guro" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_guro" id="rating_guro" /></div><div class='filter_div rating_furry'>
<label for='rating_furry'><small><small>Show</small></small> Furry <img title="Anthropomorphic/furry content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_furry.gif" alt="Fur" /></label><input type="hidden" value="0" name="rating_furry" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_furry" id="rating_furry" /></div><div class='filter_div rating_beast'>
<label for='rating_beast'><small><small>Show</small></small> Beast <img title="Bestiality" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_beast.gif" alt="B" /></label><input type="hidden" value="0" name="rating_beast" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_beast" id="rating_beast" /></div><div class='filter_div rating_male'>
<label for='rating_male'><small><small>Show</small></small> Male <img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /></label><input type="hidden" value="0" name="rating_male" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_male" id="rating_male" /></div><div class='filter_div rating_female'>
<label for='rating_female'><small><small>Show</small></small> Female <img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></label><input type="hidden" value="0" name="rating_female" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_female" id="rating_female" /></div><div class='filter_div rating_futa'>
<label for='rating_futa'><small><small>Show</small></small> Futa <img title="Contains Futanari/Dickgirl/Transgender/Hermaphrodite subject" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_futa.gif" alt="TG" /></label><input type="hidden" value="0" name="rating_futa" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_futa" id="rating_futa" /></div><div class='filter_div rating_other'>
<label for='rating_other'><small><small>Show</small></small> Other <img title="Other offensive content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_other.gif" alt="!?" /></label><input type="hidden" value="0" name="rating_other" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_other" id="rating_other" /></div><br><div class='filter_div filter_media'><label for="filter_media">Limit Media to</label><select name="filter_media" id="filter_media">
<option value="A" selected="selected">All</option>
<optgroup label="Traditional media">
<optgroup label=".. Drawings">
<option value="1">Charcoal</option>
<option value="2">Colored Pencil / Crayon</option>
<option value="3">Ink or markers</option>
<option value="4">Oil pastels</option>
<option value="5">Graphite pencil</option>
<option value="6">Other drawing</option>
</optgroup>
<optgroup label=".. Paintings">
<option value="11">Airbrush</option>
<option value="12">Acrylics</option>
<option value="13">Oils</option>
<option value="14">Watercolor</option>
<option value="15">Other painting</option>
</optgroup>
<optgroup label=".. Crafts / Physical art">
<option value="21">Plushies</option>
<option value="22">Sculpture</option>
<option value="23">Other crafts</option>
</optgroup>
</optgroup>
<optgroup label="Digital media (CG)">
<option value="31">3D modelling</option>
<option value="33">Digital drawing or painting</option>
<option value="36">MS Paint</option>
<option value="32">Oekaki</option>
<option value="34">Pixel art</option>
<option value="35">Other digital art</option>
</optgroup>
<option value="0">Unspecified</option>
</select></div><div class='filter_div filter_order'><label for="filter_order">Sort By</label><select name="filter_order" id="filter_order">
<option value="date_new" selected="selected">Date Submitted (Newest)</option>
<option value="date_old">Date Submitted (Oldest)</option>
<option value="update_new">Date updated (Newest)</option>
<option value="update_old">Date updated (Oldest)</option>
<option value="a-z">Title A-z</option>
<option value="z-a">Title z-A</option>
<option value="views most">Views (most first)</option>
<option value="rating highest">rating (highest first)</option>
<option value="comments most">Comments (most first)</option>
<option value="faves most">Faves (most first)</option>
<option value="popularity most">Popularity (highest first)</option>
</select></div><div class='filter_div filter_type'><label for="filter_type">Limit Pictures to</label><select name="filter_type" id="filter_type">
<option value="0" selected="selected">All</option>
<option value="1">Regular Pictures</option>
<option value="2">Flash Submissions</option>
</select></div><input type="submit" name="yt1" value="Apply" id="yt1" /><input onClick="jQuery(&#039;#FilterBox&#039;).toggle(500);" name="yt2" type="button" value="Close" /></form></div>
</div><ul id="yw17">
<li><a href="/site/about">About</a></li>
<li><a href="http://forums.hentai-foundry.com/viewforum.php?f=13">FAQ</a></li>
<li><a href="http://forums.hentai-foundry.com/">Forums</a></li>
<li><a href="/paintChat/index">PaintChat</a></li>
<li><a href="/category/browse">Browse Categories</a></li>
<li><a href="/users/byletter">Browse Users</a></li>
<li><span>Browse Submissions</span>
<ul>
<li><a href="/pictures/featured">Featured Submissions</a></li>
<li><a href="/pictures/recent">Recent Submissions</a></li>
<li><a href="/pictures/popular">Popular Submissions</a></li>
<li><a href="/pictures/random">Random Submissions</a></li>
</ul>
</li>
<li><a href="/site/online">Who&#039;s Online</a></li>
</ul></div>
<center id='topad'>
<p><a href="http://www.pvglasses.com/?revid=17063&campaign=24264"><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/pink/pvg-728x90.jpg" alt="" /></a></p></center>
<div class="container" id="page">
<div class="breadcrumbs">
<a href="/">Home</a> &raquo; <a href="/user/Sparrow/profile">Sparrow</a> &raquo; <a href="/pictures/user/Sparrow">Pictures</a> &raquo; <span>Ashantae!</span></div><!-- breadcrumbs -->
<!-- resize_width=1250 | model->size_width=999 --><div class="box" id="yw0">
<div class="boxheader">
<div class="boxtitle"><span class="imageTitle">Ashantae!</span> <small>by</small> <a href="/user/Sparrow/profile">Sparrow</a> </div>
</div>
<div class="boxbody">
<center><img width="999" height="1370" src="http://pictures.hentai-foundry.com//s/Sparrow/226304.jpg" alt="Ashantae! by Sparrow" /></center> <script type="text/JavaScript">
function vote(value)
{
$.ajax({
type: "POST",
data: {
id: 226304,
vote: value,
YII_CSRF_TOKEN: "8a390060fc082247c06755b297dc4754aa15a3e5" },
url: "/pictures/vote",
success: function(msg)
{
$('#voteBox').hide(300);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(jqXHR.responseText);
}
});
}
</script>
<div id='voteBox' class='voteBox'>Vote: <a onClick="vote(1); return false;" href="#"><img title="[vote up]" src="http://img.hentai-foundry.com/themes/default/images/buttons/vote_happy.png" alt="[vote up]" /></a> <a onClick="vote(0); return false;" href="#"><img title="[vote down]" src="http://img.hentai-foundry.com/themes/default/images/buttons/vote_sad.png" alt="[vote down]" /></a></div></div>
<div class="boxfooter"> </div>
</div><div class="box" id="yw1">
<div class="boxheader">
<div class="boxtitle">Description</div>
</div>
<div class="boxbody">
<a href="/user/Sparrow/profile"><img style="float: left" title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a><div style='margin-left: 70px; min-height: 64px;'>Simple request that turned into a fairly beefy project. Anyway, it&#039;s a pretty soft pinup of Shantae dressed as Asha, the protagonist of Monster World IV. The two share a good amount of design in common, but for the most part it was an excuse for me to draw Shantae just being sexy.<br />
<br />
<em>Enjoy!</em></div></div>
</div><div class="box" id="yw2">
<div class="boxheader">
<div class="boxtitle">General Info</div>
</div>
<div class="boxbody">
<div id="favoritesDialog">
</div><table border=0>
<tr><td><b>Ratings</b></td> <td><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex2.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div></td> <td><b>Comments</b></td> <td>17</td></tr>
<tr><td><b>Category</b></td> <td><span class="categoryBreadcrumbs">
<a href="/categories/23/Games/pictures">Games</a></span></td> <td><b>Media</b></td> <td>Digital drawing or painting</td></tr>
<tr><td><b>Date Submitted</b></td> <td>August 31, 2013 7:08:03 PM</td> <td><b>Time Taken</b></td> <td>2-3h</td></tr>
<tr><td><b>Views</b></td> <td>8431</td> <td><b>Reference</b></td> <td>Nope</td></tr>
<tr><td><b><a href="#" id="yt0">Favorites...</a></b></td> <td>197</td> <td><b>Keywords</b></td> <td><a rel="tag" href="/search/index?query=Shantae&amp;search_in=keywords">Shantae</a>, <a rel="tag" href="/search/index?query=Asha&amp;search_in=keywords">Asha</a>, <a rel="tag" href="/search/index?query=Monster_World&amp;search_in=keywords">Monster_World</a>, <a rel="tag" href="/search/index?query=cosplay&amp;search_in=keywords">cosplay</a>, <a rel="tag" href="/search/index?query=nips&amp;search_in=keywords">nips</a></td></tr>
<tr><td><b>Vote Score</b></td> <td>100</td> <td><b>License</b></td> <td><span id='license' title='Default automatic international copyright.<br />
<br />
More Information: <a href="http://en.wikipedia.org/wiki/Berne_Convention_for_the_Protection_of_Literary_and_Artistic_Works">http://en.wikipedia.org/wiki/Berne_Convention_for_the_Protection_of_Literary_and_Artistic_Works</a>'>Berne Convention</span></td></tr>
</table></div>
</div><div class="box" id="comments_box">
<div class="boxheader">
<div class="boxtitle">Comments (17) <a class="feedLink" href="/feed/PictureComments/id/226304"><img title="RSS Feed" src="http://img.hentai-foundry.com/themes/default/images/feed-icon-14x14.png" alt="RSS Feed" /></a></div>
</div>
<div class="boxbody">
<p>You are not authorized to comment here. Your must be registered and logged in to comment</p><div style="margin-left: 0px;" id="comment_1401192"><div class="box" id="yw4">
<div class="boxheader">
<div class="boxtitle"><a href="/user/AlCiao/profile">AlCiao</a> <small>on</small> September 3, 2013 8:09:35 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/AlCiao/profile"><img title="AlCiao" src="http://avatars.hentai-foundry.com/192634.jpg" alt="AlCiao" /></a></div>What? A pic without a dick, or a tits bigger than a woman&#039;s head? WHO ARE YOU AND WHAT HAVE YOU DONE WITH THE REAL SPARROW! xD<br />
<br />
Seriously, though, great job. I like the similarity to <em>enchante</em> too; that&#039;s actually the first thing that came to my head once I saw the title of this piece. Voted.</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1401175"><div class="box" id="yw5">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Pordama/profile">Pordama</a> <small>on</small> September 3, 2013 7:26:28 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Pordama/profile"><img title="Pordama" src="http://avatars.hentai-foundry.com/DefaultAvatar.gif" alt="Pordama" /></a></div>Wonderful Pic</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399788"><div class="box" id="yw6">
<div class="boxheader">
<div class="boxtitle"><a href="/user/masterZ/profile">masterZ</a> <small>on</small> September 1, 2013 12:20:13 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/masterZ/profile"><img title="masterZ" src="http://avatars.hentai-foundry.com/5448-1196432352.jpg" alt="masterZ" /></a></div>.... aaaaand I think you got that right.</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399336"><div class="box" id="yw7">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Bandichar/profile">Bandichar</a> <small>on</small> August 31, 2013 8:04:31 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Bandichar/profile"><img title="Bandichar" src="http://avatars.hentai-foundry.com/DefaultAvatar.gif" alt="Bandichar" /></a></div>The world needs more excuses to draw Shantae, really.  :)</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399305"><div class="box" id="yw8">
<div class="boxheader">
<div class="boxtitle"><a href="/user/notmenotyou/profile">notmenotyou</a> <small>on</small> August 31, 2013 7:09:55 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/notmenotyou/profile"><img title="notmenotyou" src="http://avatars.hentai-foundry.com/103092-1302185462.jpg" alt="notmenotyou" /></a></div>Is something like an unsexy Shantae even possible?</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399056"><div class="box" id="yw9">
<div class="boxheader">
<div class="boxtitle"><a href="/user/darkminou/profile">darkminou</a> <small>on</small> August 31, 2013 12:09:52 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/darkminou/profile"><img title="darkminou" src="http://avatars.hentai-foundry.com/5386-1294240293.gif" alt="darkminou" /></a></div>so<br />
this is a<br />
SHANTASHA!!</div></div>
</div></div><div style="margin-left: 30px;" id="comment_1399085"><div class="box" id="yw10">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Sparrow/profile">Sparrow</a> <small>on</small> August 31, 2013 1:06:59 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Sparrow/profile"><img title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a></div>Yeah but I thought &quot;ashantae&quot; sounded a little like <em>enchanté...</em></div></div>
</div></div><div style="margin-left: 60px;" id="comment_1399202"><div class="box" id="yw11">
<div class="boxheader">
<div class="boxtitle"><a href="/user/darkminou/profile">darkminou</a> <small>on</small> August 31, 2013 4:18:32 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/darkminou/profile"><img title="darkminou" src="http://avatars.hentai-foundry.com/5386-1294240293.gif" alt="darkminou" /></a></div>And? a cock sound like aboat shell so you know...</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399176"><div class="box" id="yw12">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Doorman/profile">Doorman</a> <small>on</small> August 31, 2013 3:41:30 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Doorman/profile"><img title="Doorman" src="http://avatars.hentai-foundry.com/159105-1345347198.jpg" alt="Doorman" /></a></div>Damn... great job.<br />
You should draw Shantae more often.<br />
 :)</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399073"><div class="box" id="yw13">
<div class="boxheader">
<div class="boxtitle"><a href="/user/TheReigndeer/profile">TheReigndeer</a> <small>on</small> August 31, 2013 12:31:52 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/TheReigndeer/profile"><img title="TheReigndeer" src="http://avatars.hentai-foundry.com/172425.jpg" alt="TheReigndeer" /></a></div>There&#039;s a new one coming out.<br />
THERE&#039;S A NEW ONE COMING OUT.<br />
<strong>THERE&#039;S A NEW ONE COMING OUT!</strong><br />
<br />
...also I like this ^_^<br />
 </div></div>
</div></div><div style="margin-left: 30px;" id="comment_1399086"><div class="box" id="yw14">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Sparrow/profile">Sparrow</a> <small>on</small> August 31, 2013 1:07:53 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Sparrow/profile"><img title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a></div>If it&#039;s anything like the Gameboy one it&#039;ll be pretty but way overrated. Monster World IV&#039;s a total classic though...</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399083"><div class="box" id="yw15">
<div class="boxheader">
<div class="boxtitle"><a href="/user/TheRedDakkar/profile">TheRedDakkar</a> <small>on</small> August 31, 2013 1:00:06 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/TheRedDakkar/profile"><img title="TheRedDakkar" src="http://avatars.hentai-foundry.com/182770-1345509970.jpg" alt="TheRedDakkar" /></a></div>Can&#039;t say I know of either character, but that&#039;s not stopping me from enjoying those delicious nipples.</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1399081"><div class="box" id="yw16">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Batanen/profile">Batanen</a> <small>on</small> August 31, 2013 12:52:02 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Batanen/profile"><img title="Batanen" src="http://avatars.hentai-foundry.com/DefaultAvatar.gif" alt="Batanen" /></a></div>I really love Shantae and you really make her look very very sexy Mr. Sparrow. &lt;3</div></div>
</div></div></div>
<div class="commentsFooter">Go to page: <ul id="yw3" class="yiiPager"><li class="first hidden"><a href="/pictures/user/Sparrow/226304/Ashantae">&lt;&lt; First</a></li>
<li class="previous hidden"><a href="/pictures/user/Sparrow/226304/Ashantae">&lt; Previous</a></li>
<li class="page selected"><a href="/pictures/user/Sparrow/226304/Ashantae">1</a></li>
<li class="page"><a href="/pictures/user/Sparrow/226304/Ashantae/page/2">2</a></li>
<li class="next"><a href="/pictures/user/Sparrow/226304/Ashantae/page/2">Next &gt;</a></li>
<li class="last"><a href="/pictures/user/Sparrow/226304/Ashantae/page/2">Last &gt;&gt;</a></li></ul><ul class="yiiPager"><li class="next"><a class="page" href="/pictures/user/Sparrow/226304/Ashantae/page/all">All</a></li></ul></div>
</div>
</div><!-- page -->
<div id="footer">
<div class="box" id="yw18">
<div class="boxbody">
Site Copyright © 2006-2013 All Rights Reserved<br />
<a href="http://www.hentai-foundry.com/pictures/user/layzcarter/5/Truely-Heart">Truely</a> created by <a href="/user/layzcarter/profile">Layzcarter</a><br />
Site design by <a href="/user/layzcarter/profile">Layzcarter</a>, <a href="/user/admin/profile">Admin</a>, and <a href="/user/Voe/profile">Voe</a><br />
<br />Art and stories Copyright their artists/writers<br />
Series & Characters Copyright their respective creators/studios<br />
<p>All characters depicted are 18 or older, even if otherwise specified. </p><!-- IPv6-test.com button BEGIN -->
<a href='http://ipv6-test.com/validate.php?url=referer'>
<img src='http://img.hentai-foundry.com/themes/default/images/button-ipv6-80x15.png' alt='ipv6 ready' title='ipv6 ready' border='0' />
</a>
<!-- IPv6-test.com button END --><br /><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/icra_sw.gif" alt="" /></div>
</div><br />
<center>
</center>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-620339-3";
_udn = "www.hentai-foundry.com";
urchinTracker();
</script></div><!-- footer -->
<script type="text/javascript" src="/assets/67f68f61/jui/js/jquery-ui.min.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
$("#license").qtip({'show':{'delay':50},'position':{'corner':{'target':'rightMiddle'}},'hide':{'delay':250,'fixed':true},'style':{'name':'light','width':{'max':1000},'tip':'leftTop'}});
$('body').on('click','#yt0',function(){jQuery.ajax({'success':function(data) { $("#favoritesDialog").html(data).dialog("open"); return false; },'url':'/pictures/fans?pid=226304','cache':false});return false;});
jQuery('#favoritesDialog').dialog({'title':'Fans of \"Ashantae!\"','autoOpen':false,'width':'50%','height':$(window).height() / 2,'resizable':false});
$('body').on('click','#delete_comment_1401192',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1401192},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1401175',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1401175},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399788',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399788},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399336',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399336},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399305',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399305},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399056',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399056},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399085',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399085},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399202',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399202},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399176',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399176},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399073',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399073},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399086',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399086},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399083',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399083},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1399081',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1399081},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#yt1',function(){jQuery.ajax({'success':function() {location.reload();},'type':'POST','url':'/site/filters','cache':false,'data':jQuery(this).parents("form").serialize()});return false;});
});
/*]]>*/
</script>
</body>
</html>

View File

@ -1,346 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<link rel="stylesheet" type="text/css" href="http://img.hentai-foundry.com/themes/default/css/default.css" title="Default CSS" />
<link rel="shortcut icon" href="/themes/Hentai/favicon.ico" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search Hentai Foundry"
href="/search/OpenSearchDescription"
/>
<script type="text/javascript" src="http://img.hentai-foundry.com/themes/default/js/util.js"></script>
<meta name="description" content="Hentai Foundry is an online art gallery for adult oriented art. Despite its name, it is not limited to hentai but also welcomes adult in other styles such as cartoon and realism."> <meta name="keywords" content="Hentai, futanari, furry, porn, sex, fan, art, fanart, pictures, anime, cartoons, tv, movies, forum, upload, image, gallery">
<script type="text/javascript" src="/assets/67f68f61/jquery.js"></script>
<script type="text/javascript" src="/assets/67f68f61/jquery.ba-bbq.js"></script>
<title>Sparrow&#039;s Scraps - Hentai Foundry</title>
<link rel="meta" href="http://img.hentai-foundry.com/themes/Hentai/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
<meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3) gen true for "http://www.hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3))' />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://www.hentai-foundry.com/" r (SS~~000 9 SS~~001 5 SS~~002 5 SS~~003 5 SS~~004 9 SS~~005 5 SS~~007 5 SS~~008 5 SS~~009 9 SS~~00A 5))'></head>
<body>
<div style="background: url(http://img.hentai-foundry.com/themes/default/images/header_bg.gif); height: 140px; width: 100%">
<div style="text-align: left">
<a href="/site/index">
<img src="http://img.hentai-foundry.com/themes/Hentai/images/logo.png" border="0" alt="Logo" title="Logo" />
</a>
</div>
<div style="position: absolute; right: 15px; top: 15px;">
<form action="/search/index" method="GET">
<span style="white-space:nowrap">
<input type="text" name="query" />
<input type="submit" value="Search" />
</span><br />
<a class="navlink" href="/search/index">Advanced Search</a> </form>
</div>
<div class='headerLogin'>
<form action="/site/login" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div> Username <input type="text" name="LoginForm[username]" /> &nbsp;
Password <input type="password" name="LoginForm[password]" /> &nbsp;
<input type="submit" value="Login" /><br />
<div align='right' style="margin-top: 5px;">
Remember <input type="checkbox" value="1" name="LoginForm[rememberMe]" style="background: #676573;" />
&nbsp; <a class='navlink' href="/users/create">Register</a> &nbsp;
| &nbsp; <a class='navlink' href="/users/LostPassword">Forgot your password?</a></div>
</form>
</div>
</div>
<div id="mainmenu" style="text-align: center; background: #676573; color: #000; font-weight: bold; font-size: 0.9em;">
<div id="filtersButton"><a OnClick="ths = $(this); jQuery(&#039;#FilterBox&#039;).css({top: ths.offset().top, left: ths.offset().left + ths.outerWidth() + 10}); jQuery(&#039;#FilterBox&#039;).toggle(500); return false;" href="#"><img title="[Filters]" src="http://img.hentai-foundry.com/themes/default/images/buttons/filter.png" alt="[Filters]" /></a></div><div class="box" id="FilterBox">
<div class="boxheader">
<div class="boxtitle">Filters <a style="float: right;" href="#" onClick="jQuery('#FilterBox').toggle(500); return false;">X</a></div>
</div>
<div class="boxbody">
<form action="/pictures/user/Sparrow/scraps" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div><div class='filter_div rating_nudity'>
<label for='rating_nudity'><small><small>Show</small></small> Nudity <img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /></label><select class="ratingListBox" name="rating_nudity" id="rating_nudity">
<option value="0">None</option>
<option value="1">Mild Nudity</option>
<option value="2">Moderate Nudity</option>
<option value="3" selected="selected">Explicit Nudity</option>
</select></div><div class='filter_div rating_violence'>
<label for='rating_violence'><small><small>Show</small></small> Violence <img title="Violence" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_violence1.gif" alt="V" /></label><select class="ratingListBox" name="rating_violence" id="rating_violence">
<option value="0">None</option>
<option value="1">Comic or Mild Violence</option>
<option value="2">Moderate Violence</option>
<option value="3" selected="selected">Explicit or Graphic Violence</option>
</select></div><div class='filter_div rating_profanity'>
<label for='rating_profanity'><small><small>Show</small></small> Profanity <img title="Profanity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_lang1.gif" alt="L" /></label><select class="ratingListBox" name="rating_profanity" id="rating_profanity">
<option value="0">None</option>
<option value="1">Mild Profanity</option>
<option value="2">Moderate Profanity</option>
<option value="3" selected="selected">Proliferous or Severe Profanity</option>
</select></div><div class='filter_div rating_racism'>
<label for='rating_racism'><small><small>Show</small></small> Racism <img title="Racism" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_racism1.gif" alt="R" /></label><select class="ratingListBox" name="rating_racism" id="rating_racism">
<option value="0">None</option>
<option value="1">Mild Racist themes or content</option>
<option value="2">Racist themes or content</option>
<option value="3" selected="selected">Strong racist themes or content</option>
</select></div><div class='filter_div rating_sex'>
<label for='rating_sex'><small><small>Show</small></small> Sexual content <img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /></label><select class="ratingListBox" name="rating_sex" id="rating_sex">
<option value="0">None</option>
<option value="1">Mild suggestive content</option>
<option value="2">Moderate suggestive or sexual content</option>
<option value="3" selected="selected">Explicit or adult sexual content</option>
</select></div><div class='filter_div rating_spoilers'>
<label for='rating_spoilers'><small><small>Show</small></small> Spoiler Warning <img title="Spoiler Warning" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_spoiler1.gif" alt="Sp" /></label><select class="ratingListBox" name="rating_spoilers" id="rating_spoilers">
<option value="0">None</option>
<option value="1">Mild Spoiler Warning</option>
<option value="2">Moderate Spoiler Warning</option>
<option value="3" selected="selected">Major Spoiler Warning</option>
</select></div><div class='filter_div rating_yaoi'>
<label for='rating_yaoi'><small><small>Show</small></small> Shonen-ai / Yaoi <img title="Shonen-ai (male homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yaoi.gif" alt="♂♂" /></label><input type="hidden" value="0" name="rating_yaoi" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yaoi" id="rating_yaoi" /></div><div class='filter_div rating_yuri'>
<label for='rating_yuri'><small><small>Show</small></small> Shoujo-ai / Yuri <img title="Shoujo-ai (female homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yuri.gif" alt="♀♀" /></label><input type="hidden" value="0" name="rating_yuri" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yuri" id="rating_yuri" /></div><div class='filter_div rating_loli'>
<label for='rating_loli'><small><small>Show</small></small> Lolicon <img title="Lolicon (Young female) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_loli.gif" alt="Lo" /></label><input type="hidden" value="0" name="rating_loli" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_loli" id="rating_loli" /></div><div class='filter_div rating_shota'>
<label for='rating_shota'><small><small>Show</small></small> Shotacon <img title="Shotacon (Young male) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_shota.gif" alt="So" /></label><input type="hidden" value="0" name="rating_shota" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_shota" id="rating_shota" /></div><div class='filter_div rating_teen'>
<label for='rating_teen'><small><small>Show</small></small> Teen <img title="Teen content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_teen.gif" alt="T" /></label><input type="hidden" value="0" name="rating_teen" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_teen" id="rating_teen" /></div><div class='filter_div rating_guro'>
<label for='rating_guro'><small><small>Show</small></small> Guro <img title="Gore, scat, similar macabre content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_guro.gif" alt="G" /></label><input type="hidden" value="0" name="rating_guro" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_guro" id="rating_guro" /></div><div class='filter_div rating_furry'>
<label for='rating_furry'><small><small>Show</small></small> Furry <img title="Anthropomorphic/furry content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_furry.gif" alt="Fur" /></label><input type="hidden" value="0" name="rating_furry" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_furry" id="rating_furry" /></div><div class='filter_div rating_beast'>
<label for='rating_beast'><small><small>Show</small></small> Beast <img title="Bestiality" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_beast.gif" alt="B" /></label><input type="hidden" value="0" name="rating_beast" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_beast" id="rating_beast" /></div><div class='filter_div rating_male'>
<label for='rating_male'><small><small>Show</small></small> Male <img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /></label><input type="hidden" value="0" name="rating_male" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_male" id="rating_male" /></div><div class='filter_div rating_female'>
<label for='rating_female'><small><small>Show</small></small> Female <img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></label><input type="hidden" value="0" name="rating_female" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_female" id="rating_female" /></div><div class='filter_div rating_futa'>
<label for='rating_futa'><small><small>Show</small></small> Futa <img title="Contains Futanari/Dickgirl/Transgender/Hermaphrodite subject" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_futa.gif" alt="TG" /></label><input type="hidden" value="0" name="rating_futa" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_futa" id="rating_futa" /></div><div class='filter_div rating_other'>
<label for='rating_other'><small><small>Show</small></small> Other <img title="Other offensive content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_other.gif" alt="!?" /></label><input type="hidden" value="0" name="rating_other" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_other" id="rating_other" /></div><br><div class='filter_div filter_media'><label for="filter_media">Limit Media to</label><select name="filter_media" id="filter_media">
<option value="A" selected="selected">All</option>
<optgroup label="Traditional media">
<optgroup label=".. Drawings">
<option value="1">Charcoal</option>
<option value="2">Colored Pencil / Crayon</option>
<option value="3">Ink or markers</option>
<option value="4">Oil pastels</option>
<option value="5">Graphite pencil</option>
<option value="6">Other drawing</option>
</optgroup>
<optgroup label=".. Paintings">
<option value="11">Airbrush</option>
<option value="12">Acrylics</option>
<option value="13">Oils</option>
<option value="14">Watercolor</option>
<option value="15">Other painting</option>
</optgroup>
<optgroup label=".. Crafts / Physical art">
<option value="21">Plushies</option>
<option value="22">Sculpture</option>
<option value="23">Other crafts</option>
</optgroup>
</optgroup>
<optgroup label="Digital media (CG)">
<option value="31">3D modelling</option>
<option value="33">Digital drawing or painting</option>
<option value="36">MS Paint</option>
<option value="32">Oekaki</option>
<option value="34">Pixel art</option>
<option value="35">Other digital art</option>
</optgroup>
<option value="0">Unspecified</option>
</select></div><div class='filter_div filter_order'><label for="filter_order">Sort By</label><select name="filter_order" id="filter_order">
<option value="date_new" selected="selected">Date Submitted (Newest)</option>
<option value="date_old">Date Submitted (Oldest)</option>
<option value="update_new">Date updated (Newest)</option>
<option value="update_old">Date updated (Oldest)</option>
<option value="a-z">Title A-z</option>
<option value="z-a">Title z-A</option>
<option value="views most">Views (most first)</option>
<option value="rating highest">rating (highest first)</option>
<option value="comments most">Comments (most first)</option>
<option value="faves most">Faves (most first)</option>
<option value="popularity most">Popularity (highest first)</option>
</select></div><div class='filter_div filter_type'><label for="filter_type">Limit Pictures to</label><select name="filter_type" id="filter_type">
<option value="0" selected="selected">All</option>
<option value="1">Regular Pictures</option>
<option value="2">Flash Submissions</option>
</select></div><input type="submit" name="yt0" value="Apply" id="yt0" /><input onClick="jQuery(&#039;#FilterBox&#039;).toggle(500);" name="yt1" type="button" value="Close" /></form></div>
</div><ul id="yw3">
<li><a href="/site/about">About</a></li>
<li><a href="http://forums.hentai-foundry.com/viewforum.php?f=13">FAQ</a></li>
<li><a href="http://forums.hentai-foundry.com/">Forums</a></li>
<li><a href="/paintChat/index">PaintChat</a></li>
<li><a href="/category/browse">Browse Categories</a></li>
<li><a href="/users/byletter">Browse Users</a></li>
<li><span>Browse Submissions</span>
<ul>
<li><a href="/pictures/featured">Featured Submissions</a></li>
<li><a href="/pictures/recent">Recent Submissions</a></li>
<li><a href="/pictures/popular">Popular Submissions</a></li>
<li><a href="/pictures/random">Random Submissions</a></li>
</ul>
</li>
<li><a href="/site/online">Who&#039;s Online</a></li>
</ul></div>
<center id='topad'>
<p><a href="http://www.pvglasses.com/?revid=17063&campaign=24264"><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/pink/pvg-728x90.jpg" alt="" /></a></p></center>
<div class="container" id="page">
<div class="breadcrumbs">
<a href="/">Home</a> &raquo; <a href="/user/Sparrow/profile">Sparrow</a> &raquo; <span>Scraps</span></div><!-- breadcrumbs -->
<div class="tabContainer"><ul class="tabs">
<li><a href="/user/Sparrow/profile" >Profile</a></li>
<li><a href="/pictures/user/Sparrow" >Pictures (681)</a></li>
<li><a href="/pictures/user/Sparrow/scraps" class="active" >Scraps (393)</a></li>
<li><a href="/stories/user/Sparrow" >Stories (6)</a></li>
</ul>
<div class="view">
<div id="yw0" class="list-view">
<div class='galleryHeader'><div class="pager">Go to page: <ul id="yw1" class="yiiPager"><li class="first hidden"><a href="/pictures/user/Sparrow/scraps">&lt;&lt; First</a></li>
<li class="previous hidden"><a href="/pictures/user/Sparrow/scraps">&lt; Previous</a></li>
<li class="page selected"><a href="/pictures/user/Sparrow/scraps">1</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/2">2</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/3">3</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/4">4</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/5">5</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/6">6</a></li>
<li class="next"><a href="/pictures/user/Sparrow/scraps/page/2">Next &gt;</a></li>
<li class="last"><a href="/pictures/user/Sparrow/scraps/page/6">Last &gt;&gt;</a></li></ul></div>
<div class="summary">Displaying 1-25 of 128 results.</div></div>
<table class="galleryViewTable">
<tr>
<td class='thumb_square' id='thumb_square_0' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/226084/Swegabe-Sketches--Gabrielle-027"><span class="thumbTitle">Swegabe Sketches Gabrielle 027</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/226084/Swegabe-Sketches--Gabrielle-027"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=226084&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 027" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_1' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/224103/Make-Trade"><span class="thumbTitle">Make Trade?</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/224103/Make-Trade"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=224103&amp;size=128&amp;shadow=0" alt="Make Trade?" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Profanity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_lang3.gif" alt="L" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_2' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/220618/Swegabe-Sketches--Gabrielle-020"><span class="thumbTitle">Swegabe Sketches Gabrielle 020</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/220618/Swegabe-Sketches--Gabrielle-020"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=220618&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 020" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_3' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/216451/Bigger-Dipper"><span class="thumbTitle">Bigger Dipper</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/216451/Bigger-Dipper"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=216451&amp;size=128&amp;shadow=0" alt="Bigger Dipper" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_4' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/213985/Swegabe-Sketches--Gabrielle-008"><span class="thumbTitle">Swegabe Sketches Gabrielle 008</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/213985/Swegabe-Sketches--Gabrielle-008"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=213985&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 008" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_5' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/211271/Swegabe-Sketches--Gabrielle-003"><span class="thumbTitle">Swegabe Sketches Gabrielle 003</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/211271/Swegabe-Sketches--Gabrielle-003"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=211271&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 003" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_6' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/210311/Himari-Says-Hi"><span class="thumbTitle">Himari Says 'Hi'</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/210311/Himari-Says-Hi"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=210311&amp;size=128&amp;shadow=0" alt="Himari Says &#039;Hi&#039;" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_7' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/209971/Swegabe-Sketches--Gabrielle-002"><span class="thumbTitle">Swegabe Sketches Gabrielle 002</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/209971/Swegabe-Sketches--Gabrielle-002"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=209971&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 002" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_8' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/209970/Swegabe-Sketches--Gabrielle-001"><span class="thumbTitle">Swegabe Sketches Gabrielle 001</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/209970/Swegabe-Sketches--Gabrielle-001"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=209970&amp;size=128&amp;shadow=0" alt="Swegabe Sketches Gabrielle 001" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_9' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/204463/Minobred-Overkill"><span class="thumbTitle">Minobred Overkill</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/204463/Minobred-Overkill"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=204463&amp;size=128&amp;shadow=0" alt="Minobred Overkill" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_10' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/203723/Single-File-Please"><span class="thumbTitle">Single File Please</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/203723/Single-File-Please"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=203723&amp;size=128&amp;shadow=0" alt="Single File Please" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_11' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/202593/Kneel-O-April"><span class="thumbTitle">Kneel, O April</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/202593/Kneel-O-April"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=202593&amp;size=128&amp;shadow=0" alt="Kneel, O April" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_12' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/201296/McPie-2"><span class="thumbTitle">McPie 2</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/201296/McPie-2"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=201296&amp;size=128&amp;shadow=0" alt="McPie 2" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_13' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/195882/HANDLED"><span class="thumbTitle">HANDLED</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/195882/HANDLED"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=195882&amp;size=128&amp;shadow=0" alt="HANDLED" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_14' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/184275/Relative-Frequency"><span class="thumbTitle">Relative Frequency</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/184275/Relative-Frequency"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=184275&amp;size=128&amp;shadow=0" alt="Relative Frequency" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_15' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/183458/Coco-VS-Voltar"><span class="thumbTitle">Coco VS Voltar</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/183458/Coco-VS-Voltar"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=183458&amp;size=128&amp;shadow=0" alt="Coco VS Voltar" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_16' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/183085/Coco-VS-Froggy-G"><span class="thumbTitle">Coco VS Froggy G</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/183085/Coco-VS-Froggy-G"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=183085&amp;size=128&amp;shadow=0" alt="Coco VS Froggy G" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_17' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/181508/Mystra-Meets-Mister-18"><span class="thumbTitle">Mystra Meets Mister 18"</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/181508/Mystra-Meets-Mister-18"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=181508&amp;size=128&amp;shadow=0" alt="Mystra Meets Mister 18&quot;" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_18' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/180699/Tunnel-Trouble"><span class="thumbTitle">Tunnel Trouble</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/180699/Tunnel-Trouble"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=180699&amp;size=128&amp;shadow=0" alt="Tunnel Trouble" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_19' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/177549/Coco-VS-Leon"><span class="thumbTitle">Coco VS Leon</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/177549/Coco-VS-Leon"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=177549&amp;size=128&amp;shadow=0" alt="Coco VS Leon" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
<tr>
<td class='thumb_square' id='thumb_square_20' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/175824/The-Ladies-Boyle"><span class="thumbTitle">The Ladies Boyle</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/175824/The-Ladies-Boyle"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=175824&amp;size=128&amp;shadow=0" alt="The Ladies Boyle" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_21' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/168744/Coco-VS-Yuri"><span class="thumbTitle">Coco VS Yuri</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/168744/Coco-VS-Yuri"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=168744&amp;size=128&amp;shadow=0" alt="Coco VS Yuri" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_22' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/166167/VVVVViewtiful"><span class="thumbTitle">VVVVViewtiful!</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/166167/VVVVViewtiful"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=166167&amp;size=128&amp;shadow=0" alt="VVVVViewtiful!" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_23' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/165429/Walled"><span class="thumbTitle">Walled</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/165429/Walled"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=165429&amp;size=128&amp;shadow=0" alt="Walled" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude2.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex2.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
<td class='thumb_square' id='thumb_square_24' style='width: 20%'>
<div style="height: 2.5em; display: inline-block;"><a href="/pictures/user/Sparrow/164936/Coco-VS-Lonestar"><span class="thumbTitle">Coco VS Lonestar</span></a></div><table><tr><td style="height: 128px;"><a href="/pictures/user/Sparrow/164936/Coco-VS-Lonestar"><img class="thumb" src="http://thumbs.hentai-foundry.com/thumb.php?pid=164936&amp;size=128&amp;shadow=0" alt="Coco VS Lonestar" /></a></td></tr></table><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div><a href="/user/Sparrow/profile">Sparrow</a>
</td>
</tr>
</table>
<div class='galleryFooter'><div class="pager">Go to page: <ul id="yw2" class="yiiPager"><li class="first hidden"><a href="/pictures/user/Sparrow/scraps">&lt;&lt; First</a></li>
<li class="previous hidden"><a href="/pictures/user/Sparrow/scraps">&lt; Previous</a></li>
<li class="page selected"><a href="/pictures/user/Sparrow/scraps">1</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/2">2</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/3">3</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/4">4</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/5">5</a></li>
<li class="page"><a href="/pictures/user/Sparrow/scraps/page/6">6</a></li>
<li class="next"><a href="/pictures/user/Sparrow/scraps/page/2">Next &gt;</a></li>
<li class="last"><a href="/pictures/user/Sparrow/scraps/page/6">Last &gt;&gt;</a></li></ul></div></div><div class="keys" style="display:none" title="/pictures/user/Sparrow/scraps"><span>226084</span><span>224103</span><span>220618</span><span>216451</span><span>213985</span><span>211271</span><span>210311</span><span>209971</span><span>209970</span><span>204463</span><span>203723</span><span>202593</span><span>201296</span><span>195882</span><span>184275</span><span>183458</span><span>183085</span><span>181508</span><span>180699</span><span>177549</span><span>175824</span><span>168744</span><span>166167</span><span>165429</span><span>164936</span></div>
</div></div></div>
</div><!-- page -->
<div id="footer">
<div class="box" id="yw4">
<div class="boxbody">
Site Copyright © 2006-2013 All Rights Reserved<br />
<a href="http://www.hentai-foundry.com/pictures/user/layzcarter/5/Truely-Heart">Truely</a> created by <a href="/user/layzcarter/profile">Layzcarter</a><br />
Site design by <a href="/user/layzcarter/profile">Layzcarter</a>, <a href="/user/admin/profile">Admin</a>, and <a href="/user/Voe/profile">Voe</a><br />
<br />Art and stories Copyright their artists/writers<br />
Series & Characters Copyright their respective creators/studios<br />
<p>All characters depicted are 18 or older, even if otherwise specified. </p><!-- IPv6-test.com button BEGIN -->
<a href='http://ipv6-test.com/validate.php?url=referer'>
<img src='http://img.hentai-foundry.com/themes/default/images/button-ipv6-80x15.png' alt='ipv6 ready' title='ipv6 ready' border='0' />
</a>
<!-- IPv6-test.com button END --><br /><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/icra_sw.gif" alt="" /></div>
</div><br />
<center>
</center>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-620339-3";
_udn = "www.hentai-foundry.com";
urchinTracker();
</script></div><!-- footer -->
<script type="text/javascript" src="/assets/f6f22552/listview/jquery.yiilistview.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('#yw0').yiiListView({'ajaxUpdate':[],'ajaxVar':'ajax','pagerClass':'pager','loadingClass':'list-view-loading','sorterClass':'sorter','enableHistory':false});
$('body').on('click','#yt0',function(){jQuery.ajax({'success':function() {location.reload();},'type':'POST','url':'/site/filters','cache':false,'data':jQuery(this).parents("form").serialize()});return false;});
});
/*]]>*/
</script>
</body>
</html>

View File

@ -1,402 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<link rel="stylesheet" type="text/css" href="http://img.hentai-foundry.com/themes/default/css/default.css" title="Default CSS" />
<link rel="shortcut icon" href="/themes/Hentai/favicon.ico" type="image/x-icon" />
<link rel="search" type="application/opensearchdescription+xml"
title="Search Hentai Foundry"
href="/search/OpenSearchDescription"
/>
<script type="text/javascript" src="http://img.hentai-foundry.com/themes/default/js/util.js"></script>
<meta name="description" content="Aaand that&amp;#039;s all she wrote. For now, anyway as you can probably guess this isn&amp;#039;t the last we&amp;#039;ll see of the Horseome Foursome, but for the time being they&amp;#039;ve got better stuff to do, so leave our heroine with a tall tankard of horse jizz to wash away the anal-induced hangover.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;Enjoy~&lt;/em&gt;"> <meta name="keywords" content="bukkake horsecock gokkun prom_night">
<link title="Comments Feed" rel="alternate" type="application/atom+xml" href="/feed/PictureComments/id/226084" />
<script type="text/javascript" src="/assets/67f68f61/jquery.js"></script>
<script type="text/javascript" src="/assets/c966e7e0/jquery.qtip-1.0.0-rc3.min.js"></script>
<title>Swegabe Sketches Gabrielle 027 by Sparrow - Hentai Foundry</title>
<link rel="meta" href="http://img.hentai-foundry.com/themes/Hentai/labels.rdf" type="application/rdf+xml" title="ICRA labels" />
<meta http-equiv="pics-Label" content='(pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http://hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3) gen true for "http://www.hentai-foundry.com" r (n 3 s 3 v 0 l 2 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 3))' />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://www.hentai-foundry.com/" r (SS~~000 9 SS~~001 5 SS~~002 5 SS~~003 5 SS~~004 9 SS~~005 5 SS~~007 5 SS~~008 5 SS~~009 9 SS~~00A 5))'></head>
<body>
<div style="background: url(http://img.hentai-foundry.com/themes/default/images/header_bg.gif); height: 140px; width: 100%">
<div style="text-align: left">
<a href="/site/index">
<img src="http://img.hentai-foundry.com/themes/Hentai/images/logo.png" border="0" alt="Logo" title="Logo" />
</a>
</div>
<div style="position: absolute; right: 15px; top: 15px;">
<form action="/search/index" method="GET">
<span style="white-space:nowrap">
<input type="text" name="query" />
<input type="submit" value="Search" />
</span><br />
<a class="navlink" href="/search/index">Advanced Search</a> </form>
</div>
<div class='headerLogin'>
<form action="/site/login" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div> Username <input type="text" name="LoginForm[username]" /> &nbsp;
Password <input type="password" name="LoginForm[password]" /> &nbsp;
<input type="submit" value="Login" /><br />
<div align='right' style="margin-top: 5px;">
Remember <input type="checkbox" value="1" name="LoginForm[rememberMe]" style="background: #676573;" />
&nbsp; <a class='navlink' href="/users/create">Register</a> &nbsp;
| &nbsp; <a class='navlink' href="/users/LostPassword">Forgot your password?</a></div>
</form>
</div>
</div>
<div id="mainmenu" style="text-align: center; background: #676573; color: #000; font-weight: bold; font-size: 0.9em;">
<div id="filtersButton"><a OnClick="ths = $(this); jQuery(&#039;#FilterBox&#039;).css({top: ths.offset().top, left: ths.offset().left + ths.outerWidth() + 10}); jQuery(&#039;#FilterBox&#039;).toggle(500); return false;" href="#"><img title="[Filters]" src="http://img.hentai-foundry.com/themes/default/images/buttons/filter.png" alt="[Filters]" /></a></div><div class="box" id="FilterBox">
<div class="boxheader">
<div class="boxtitle">Filters <a style="float: right;" href="#" onClick="jQuery('#FilterBox').toggle(500); return false;">X</a></div>
</div>
<div class="boxbody">
<form action="/pictures/user/Sparrow/226084/Swegabe-Sketches--Gabrielle-027" method="post">
<div style="display:none"><input type="hidden" value="8a390060fc082247c06755b297dc4754aa15a3e5" name="YII_CSRF_TOKEN" /></div><div class='filter_div rating_nudity'>
<label for='rating_nudity'><small><small>Show</small></small> Nudity <img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude1.gif" alt="N" /></label><select class="ratingListBox" name="rating_nudity" id="rating_nudity">
<option value="0">None</option>
<option value="1">Mild Nudity</option>
<option value="2">Moderate Nudity</option>
<option value="3" selected="selected">Explicit Nudity</option>
</select></div><div class='filter_div rating_violence'>
<label for='rating_violence'><small><small>Show</small></small> Violence <img title="Violence" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_violence1.gif" alt="V" /></label><select class="ratingListBox" name="rating_violence" id="rating_violence">
<option value="0">None</option>
<option value="1">Comic or Mild Violence</option>
<option value="2">Moderate Violence</option>
<option value="3" selected="selected">Explicit or Graphic Violence</option>
</select></div><div class='filter_div rating_profanity'>
<label for='rating_profanity'><small><small>Show</small></small> Profanity <img title="Profanity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_lang1.gif" alt="L" /></label><select class="ratingListBox" name="rating_profanity" id="rating_profanity">
<option value="0">None</option>
<option value="1">Mild Profanity</option>
<option value="2">Moderate Profanity</option>
<option value="3" selected="selected">Proliferous or Severe Profanity</option>
</select></div><div class='filter_div rating_racism'>
<label for='rating_racism'><small><small>Show</small></small> Racism <img title="Racism" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_racism1.gif" alt="R" /></label><select class="ratingListBox" name="rating_racism" id="rating_racism">
<option value="0">None</option>
<option value="1">Mild Racist themes or content</option>
<option value="2">Racist themes or content</option>
<option value="3" selected="selected">Strong racist themes or content</option>
</select></div><div class='filter_div rating_sex'>
<label for='rating_sex'><small><small>Show</small></small> Sexual content <img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex1.gif" alt="Sx" /></label><select class="ratingListBox" name="rating_sex" id="rating_sex">
<option value="0">None</option>
<option value="1">Mild suggestive content</option>
<option value="2">Moderate suggestive or sexual content</option>
<option value="3" selected="selected">Explicit or adult sexual content</option>
</select></div><div class='filter_div rating_spoilers'>
<label for='rating_spoilers'><small><small>Show</small></small> Spoiler Warning <img title="Spoiler Warning" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_spoiler1.gif" alt="Sp" /></label><select class="ratingListBox" name="rating_spoilers" id="rating_spoilers">
<option value="0">None</option>
<option value="1">Mild Spoiler Warning</option>
<option value="2">Moderate Spoiler Warning</option>
<option value="3" selected="selected">Major Spoiler Warning</option>
</select></div><div class='filter_div rating_yaoi'>
<label for='rating_yaoi'><small><small>Show</small></small> Shonen-ai / Yaoi <img title="Shonen-ai (male homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yaoi.gif" alt="♂♂" /></label><input type="hidden" value="0" name="rating_yaoi" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yaoi" id="rating_yaoi" /></div><div class='filter_div rating_yuri'>
<label for='rating_yuri'><small><small>Show</small></small> Shoujo-ai / Yuri <img title="Shoujo-ai (female homosexual) context" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_yuri.gif" alt="♀♀" /></label><input type="hidden" value="0" name="rating_yuri" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_yuri" id="rating_yuri" /></div><div class='filter_div rating_loli'>
<label for='rating_loli'><small><small>Show</small></small> Lolicon <img title="Lolicon (Young female) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_loli.gif" alt="Lo" /></label><input type="hidden" value="0" name="rating_loli" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_loli" id="rating_loli" /></div><div class='filter_div rating_shota'>
<label for='rating_shota'><small><small>Show</small></small> Shotacon <img title="Shotacon (Young male) content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_shota.gif" alt="So" /></label><input type="hidden" value="0" name="rating_shota" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_shota" id="rating_shota" /></div><div class='filter_div rating_teen'>
<label for='rating_teen'><small><small>Show</small></small> Teen <img title="Teen content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_teen.gif" alt="T" /></label><input type="hidden" value="0" name="rating_teen" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_teen" id="rating_teen" /></div><div class='filter_div rating_guro'>
<label for='rating_guro'><small><small>Show</small></small> Guro <img title="Gore, scat, similar macabre content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_guro.gif" alt="G" /></label><input type="hidden" value="0" name="rating_guro" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_guro" id="rating_guro" /></div><div class='filter_div rating_furry'>
<label for='rating_furry'><small><small>Show</small></small> Furry <img title="Anthropomorphic/furry content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_furry.gif" alt="Fur" /></label><input type="hidden" value="0" name="rating_furry" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_furry" id="rating_furry" /></div><div class='filter_div rating_beast'>
<label for='rating_beast'><small><small>Show</small></small> Beast <img title="Bestiality" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_beast.gif" alt="B" /></label><input type="hidden" value="0" name="rating_beast" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_beast" id="rating_beast" /></div><div class='filter_div rating_male'>
<label for='rating_male'><small><small>Show</small></small> Male <img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /></label><input type="hidden" value="0" name="rating_male" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_male" id="rating_male" /></div><div class='filter_div rating_female'>
<label for='rating_female'><small><small>Show</small></small> Female <img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></label><input type="hidden" value="0" name="rating_female" /><input class="ratingCheckbox" checked="checked" type="checkbox" value="1" name="rating_female" id="rating_female" /></div><div class='filter_div rating_futa'>
<label for='rating_futa'><small><small>Show</small></small> Futa <img title="Contains Futanari/Dickgirl/Transgender/Hermaphrodite subject" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_futa.gif" alt="TG" /></label><input type="hidden" value="0" name="rating_futa" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_futa" id="rating_futa" /></div><div class='filter_div rating_other'>
<label for='rating_other'><small><small>Show</small></small> Other <img title="Other offensive content" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_other.gif" alt="!?" /></label><input type="hidden" value="0" name="rating_other" /><input class="ratingCheckbox" type="checkbox" value="1" name="rating_other" id="rating_other" /></div><br><div class='filter_div filter_media'><label for="filter_media">Limit Media to</label><select name="filter_media" id="filter_media">
<option value="A" selected="selected">All</option>
<optgroup label="Traditional media">
<optgroup label=".. Drawings">
<option value="1">Charcoal</option>
<option value="2">Colored Pencil / Crayon</option>
<option value="3">Ink or markers</option>
<option value="4">Oil pastels</option>
<option value="5">Graphite pencil</option>
<option value="6">Other drawing</option>
</optgroup>
<optgroup label=".. Paintings">
<option value="11">Airbrush</option>
<option value="12">Acrylics</option>
<option value="13">Oils</option>
<option value="14">Watercolor</option>
<option value="15">Other painting</option>
</optgroup>
<optgroup label=".. Crafts / Physical art">
<option value="21">Plushies</option>
<option value="22">Sculpture</option>
<option value="23">Other crafts</option>
</optgroup>
</optgroup>
<optgroup label="Digital media (CG)">
<option value="31">3D modelling</option>
<option value="33">Digital drawing or painting</option>
<option value="36">MS Paint</option>
<option value="32">Oekaki</option>
<option value="34">Pixel art</option>
<option value="35">Other digital art</option>
</optgroup>
<option value="0">Unspecified</option>
</select></div><div class='filter_div filter_order'><label for="filter_order">Sort By</label><select name="filter_order" id="filter_order">
<option value="date_new" selected="selected">Date Submitted (Newest)</option>
<option value="date_old">Date Submitted (Oldest)</option>
<option value="update_new">Date updated (Newest)</option>
<option value="update_old">Date updated (Oldest)</option>
<option value="a-z">Title A-z</option>
<option value="z-a">Title z-A</option>
<option value="views most">Views (most first)</option>
<option value="rating highest">rating (highest first)</option>
<option value="comments most">Comments (most first)</option>
<option value="faves most">Faves (most first)</option>
<option value="popularity most">Popularity (highest first)</option>
</select></div><div class='filter_div filter_type'><label for="filter_type">Limit Pictures to</label><select name="filter_type" id="filter_type">
<option value="0" selected="selected">All</option>
<option value="1">Regular Pictures</option>
<option value="2">Flash Submissions</option>
</select></div><input type="submit" name="yt1" value="Apply" id="yt1" /><input onClick="jQuery(&#039;#FilterBox&#039;).toggle(500);" name="yt2" type="button" value="Close" /></form></div>
</div><ul id="yw19">
<li><a href="/site/about">About</a></li>
<li><a href="http://forums.hentai-foundry.com/viewforum.php?f=13">FAQ</a></li>
<li><a href="http://forums.hentai-foundry.com/">Forums</a></li>
<li><a href="/paintChat/index">PaintChat</a></li>
<li><a href="/category/browse">Browse Categories</a></li>
<li><a href="/users/byletter">Browse Users</a></li>
<li><span>Browse Submissions</span>
<ul>
<li><a href="/pictures/featured">Featured Submissions</a></li>
<li><a href="/pictures/recent">Recent Submissions</a></li>
<li><a href="/pictures/popular">Popular Submissions</a></li>
<li><a href="/pictures/random">Random Submissions</a></li>
</ul>
</li>
<li><a href="/site/online">Who&#039;s Online</a></li>
</ul></div>
<center id='topad'>
<p><a href="http://www.pvglasses.com/?revid=17063&campaign=24264"><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/pink/pvg-728x90.jpg" alt="" /></a></p></center>
<div class="container" id="page">
<div class="breadcrumbs">
<a href="/">Home</a> &raquo; <a href="/user/Sparrow/profile">Sparrow</a> &raquo; <a href="/pictures/user/Sparrow">Pictures</a> &raquo; <span>Swegabe Sketches Gabrielle 027</span></div><!-- breadcrumbs -->
<!-- resize_width=1250 | model->size_width=1111 --><div class="box" id="yw0">
<div class="boxheader">
<div class="boxtitle"><span class="imageTitle">Swegabe Sketches Gabrielle 027</span> <small>by</small> <a href="/user/Sparrow/profile">Sparrow</a> </div>
</div>
<div class="boxbody">
<center><img width="1111" height="1334" src="http://pictures.hentai-foundry.com//s/Sparrow/226084.jpg" alt="Swegabe Sketches Gabrielle 027 by Sparrow" /></center> <script type="text/JavaScript">
function vote(value)
{
$.ajax({
type: "POST",
data: {
id: 226084,
vote: value,
YII_CSRF_TOKEN: "8a390060fc082247c06755b297dc4754aa15a3e5" },
url: "/pictures/vote",
success: function(msg)
{
$('#voteBox').hide(300);
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(jqXHR.responseText);
}
});
}
</script>
<div id='voteBox' class='voteBox'>Vote: <a onClick="vote(1); return false;" href="#"><img title="[vote up]" src="http://img.hentai-foundry.com/themes/default/images/buttons/vote_happy.png" alt="[vote up]" /></a> <a onClick="vote(0); return false;" href="#"><img title="[vote down]" src="http://img.hentai-foundry.com/themes/default/images/buttons/vote_sad.png" alt="[vote down]" /></a></div></div>
<div class="boxfooter"> </div>
</div><div class="box" id="yw1">
<div class="boxheader">
<div class="boxtitle">Description</div>
</div>
<div class="boxbody">
<a href="/user/Sparrow/profile"><img style="float: left" title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a><div style='margin-left: 70px; min-height: 64px;'>Aaand that&#039;s all she wrote. For now, anyway as you can probably guess this isn&#039;t the last we&#039;ll see of the Horseome Foursome, but for the time being they&#039;ve got better stuff to do, so leave our heroine with a tall tankard of horse jizz to wash away the anal-induced hangover.<br />
<br />
<em>Enjoy~</em></div></div>
</div><div class="box" id="yw2">
<div class="boxheader">
<div class="boxtitle">General Info</div>
</div>
<div class="boxbody">
<div id="favoritesDialog">
</div><table border=0>
<tr><td><b>Ratings</b></td> <td><div class='ratings_box'><img title="Nudity" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_nude3.gif" alt="N" /><img title="Sexual content" src="http://img.hentai-foundry.com/themes/default/images/rating_icons/ic_sex3.gif" alt="Sx" /><img title="Contains male nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_male.gif" alt="♂" /><img title="Contains female nudity" src="http://img.hentai-foundry.com/themes/Hentai/images/rating_icons/ic_female.gif" alt="♀" /></div></td> <td><b>Comments</b></td> <td>16</td></tr>
<tr><td><b>Category</b></td> <td><span class="categoryBreadcrumbs">
<a href="/categories/4/Original/pictures">Original</a> &raquo; <a href="/categories/10/Original/Bukkake/pictures">Bukkake</a></span></td> <td><b>Media</b></td> <td>Digital drawing or painting</td></tr>
<tr><td><b>Date Submitted</b></td> <td>August 30, 2013 2:25:31 PM</td> <td><b>Time Taken</b></td> <td>Yes</td></tr>
<tr><td><b>Views</b></td> <td>7929</td> <td><b>Reference</b></td> <td>No</td></tr>
<tr><td><b><a href="#" id="yt0">Favorites...</a></b></td> <td>113</td> <td><b>Keywords</b></td> <td><a rel="tag" href="/search/index?query=bukkake&amp;search_in=keywords">bukkake</a>, <a rel="tag" href="/search/index?query=horsecock&amp;search_in=keywords">horsecock</a>, <a rel="tag" href="/search/index?query=gokkun&amp;search_in=keywords">gokkun</a>, <a rel="tag" href="/search/index?query=prom_night&amp;search_in=keywords">prom_night</a></td></tr>
<tr><td><b>Vote Score</b></td> <td>45</td> <td><b>License</b></td> <td><span id='license' title='Default automatic international copyright.<br />
<br />
More Information: <a href="http://en.wikipedia.org/wiki/Berne_Convention_for_the_Protection_of_Literary_and_Artistic_Works">http://en.wikipedia.org/wiki/Berne_Convention_for_the_Protection_of_Literary_and_Artistic_Works</a>'>Berne Convention</span></td></tr>
</table></div>
</div><div class="box" id="comments_box">
<div class="boxheader">
<div class="boxtitle">Comments (16) <a class="feedLink" href="/feed/PictureComments/id/226084"><img title="RSS Feed" src="http://img.hentai-foundry.com/themes/default/images/feed-icon-14x14.png" alt="RSS Feed" /></a></div>
</div>
<div class="boxbody">
<p>You are not authorized to comment here. Your must be registered and logged in to comment</p><div style="margin-left: 0px;" id="comment_1400104"><div class="box" id="yw4">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Marienne/profile">Marienne</a> <small>on</small> September 1, 2013 8:59:26 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Marienne/profile"><img title="Marienne" src="http://avatars.hentai-foundry.com/114552-1323034581.jpg" alt="Marienne" /></a></div>Her first tankard of many, I&#039;m guessing?</div></div>
</div></div><div style="margin-left: 30px;" id="comment_1400473"><div class="box" id="yw5">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Sparrow/profile">Sparrow</a> <small>on</small> September 2, 2013 9:33:42 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Sparrow/profile"><img title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a></div>We can assume. I actually don&#039;t think she quaffs any other <em>cumsteins</em> later on, so this might just be for the novelty.</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1398148"><div class="box" id="yw6">
<div class="boxheader">
<div class="boxtitle"><a href="/user/earwig/profile">earwig</a> <small>on</small> August 30, 2013 9:23:52 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/earwig/profile"><img title="earwig" src="http://avatars.hentai-foundry.com/178893.png" alt="earwig" /></a></div>Some people claim that the &#039;hair of the dog&#039; is the best hangover cure, Gabe seems to know that &#039;jizz of the horse&#039; works much better.</div></div>
</div></div><div style="margin-left: 30px;" id="comment_1398182"><div class="box" id="yw7">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Swegabe/profile">Swegabe</a> <small>on</small> August 30, 2013 10:19:06 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Swegabe/profile"><img title="Swegabe" src="http://avatars.hentai-foundry.com/1799.jpg" alt="Swegabe" /></a></div>Hair of the Dog, huh...Does that I have to suck dog balls? ;)</div></div>
</div></div><div style="margin-left: 60px;" id="comment_1400108"><div class="box" id="yw8">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Marienne/profile">Marienne</a> <small>on</small> September 1, 2013 9:00:24 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Marienne/profile"><img title="Marienne" src="http://avatars.hentai-foundry.com/114552-1323034581.jpg" alt="Marienne" /></a></div>Oh, yeah. Science says so. I have the data right h----oh, this page is rather, um, stained. You should just take my word for it, yes.</div></div>
</div></div><div style="margin-left: 90px;" id="comment_1400304"><div class="box" id="yw9">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Swegabe/profile">Swegabe</a> <small>on</small> September 2, 2013 3:33:54 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Swegabe/profile"><img title="Swegabe" src="http://avatars.hentai-foundry.com/1799.jpg" alt="Swegabe" /></a></div>If you say it, then it must be true!</div></div>
</div></div><div style="margin-left: 60px;" id="comment_1398467"><div class="box" id="yw10">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Elderickan/profile">Elderickan</a> <small>on</small> August 30, 2013 5:23:57 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Elderickan/profile"><img title="Elderickan" src="http://avatars.hentai-foundry.com/89063-1282939874.jpg" alt="Elderickan" /></a></div>To misquote; If you do it, we will watch ^^</div></div>
</div></div><div style="margin-left: 60px;" id="comment_1398188"><div class="box" id="yw11">
<div class="boxheader">
<div class="boxtitle"><a href="/user/earwig/profile">earwig</a> <small>on</small> August 30, 2013 10:30:05 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/earwig/profile"><img title="earwig" src="http://avatars.hentai-foundry.com/178893.png" alt="earwig" /></a></div>I think the better question why aren&#039;t you ALREADY sucking dog balls?</div></div>
</div></div><div style="margin-left: 90px;" id="comment_1398196"><div class="box" id="yw12">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Swegabe/profile">Swegabe</a> <small>on</small> August 30, 2013 10:39:21 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Swegabe/profile"><img title="Swegabe" src="http://avatars.hentai-foundry.com/1799.jpg" alt="Swegabe" /></a></div>Because I suck...</div></div>
</div></div><div style="margin-left: 120px;" id="comment_1398198"><div class="box" id="yw13">
<div class="boxheader">
<div class="boxtitle"><a href="/user/ashraam/profile">ashraam</a> <small>on</small> August 30, 2013 10:40:38 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/ashraam/profile"><img title="ashraam" src="http://avatars.hentai-foundry.com/46667.jpg" alt="ashraam" /></a></div>*rimshot*</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1398439"><div class="box" id="yw14">
<div class="boxheader">
<div class="boxtitle"><a href="/user/KingofKings4life/profile">KingofKings4life</a> <small>on</small> August 30, 2013 4:51:30 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/KingofKings4life/profile"><img title="KingofKings4life" src="http://avatars.hentai-foundry.com/34470.jpg" alt="KingofKings4life" /></a></div>So she spent prom night fucking a bunch of equines? That doesn&#039;t seem so odd to me...</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1398192"><div class="box" id="yw15">
<div class="boxheader">
<div class="boxtitle"><a href="/user/ashraam/profile">ashraam</a> <small>on</small> August 30, 2013 10:33:48 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/ashraam/profile"><img title="ashraam" src="http://avatars.hentai-foundry.com/46667.jpg" alt="ashraam" /></a></div>Quote picture of series #24: &quot;<span style="color:#000000">One is going to jam his cock in her slutty mouth, another will stuff her greedy pussy way past her cervix, another will stretch out her ass widening her hips permanently and the last one will just jerk off in one of the mugs and the picture following that will be her drinking from said cum filled mug or multiple mugs.&quot;<br />
<br />
Apparently I&#039;ve been tainted by sparrow&#039;s work soo much I can nearly predict his ideas.<br />
<br />
SPARROW!! WHAT HAVE YOU DONE TO ME!!!???</span></div></div>
</div></div><div style="margin-left: 30px;" id="comment_1398302"><div class="box" id="yw16">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Sparrow/profile">Sparrow</a> <small>on</small> August 30, 2013 2:48:17 PM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Sparrow/profile"><img title="Sparrow" src="http://avatars.hentai-foundry.com/48322.png" alt="Sparrow" /></a></div>Made you a more thoughtful person?</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1398157"><div class="box" id="yw17">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Melkhiordarkblade/profile">Melkhiordarkblade</a> <small>on</small> August 30, 2013 9:34:00 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Melkhiordarkblade/profile"><img title="Melkhiordarkblade" src="http://avatars.hentai-foundry.com/116620-1339980626.jpg" alt="Melkhiordarkblade" /></a></div>If I knew Prom night was like that I would have went instead of staying home playing video games.</div></div>
</div></div><div style="margin-left: 0px;" id="comment_1398129"><div class="box" id="yw18">
<div class="boxheader">
<div class="boxtitle"><a href="/user/Swegabe/profile">Swegabe</a> <small>on</small> August 30, 2013 8:33:19 AM<span class="commentButtons"></span></div>
</div>
<div class="boxbody">
<div class="commentBody"><div style="margin-left: -70px; position: absolute;"><a href="/user/Swegabe/profile"><img title="Swegabe" src="http://avatars.hentai-foundry.com/1799.jpg" alt="Swegabe" /></a></div><strong>Horse Spunk - Takes the sting off!</strong></div></div>
</div></div></div>
<div class="commentsFooter"></div>
</div>
</div><!-- page -->
<div id="footer">
<div class="box" id="yw20">
<div class="boxbody">
Site Copyright © 2006-2013 All Rights Reserved<br />
<a href="http://www.hentai-foundry.com/pictures/user/layzcarter/5/Truely-Heart">Truely</a> created by <a href="/user/layzcarter/profile">Layzcarter</a><br />
Site design by <a href="/user/layzcarter/profile">Layzcarter</a>, <a href="/user/admin/profile">Admin</a>, and <a href="/user/Voe/profile">Voe</a><br />
<br />Art and stories Copyright their artists/writers<br />
Series & Characters Copyright their respective creators/studios<br />
<p>All characters depicted are 18 or older, even if otherwise specified. </p><!-- IPv6-test.com button BEGIN -->
<a href='http://ipv6-test.com/validate.php?url=referer'>
<img src='http://img.hentai-foundry.com/themes/default/images/button-ipv6-80x15.png' alt='ipv6 ready' title='ipv6 ready' border='0' />
</a>
<!-- IPv6-test.com button END --><br /><img title="" src="http://img.hentai-foundry.com/themes/Hentai/images/icra_sw.gif" alt="" /></div>
</div><br />
<center>
</center>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-620339-3";
_udn = "www.hentai-foundry.com";
urchinTracker();
</script></div><!-- footer -->
<script type="text/javascript" src="/assets/67f68f61/jui/js/jquery-ui.min.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
$("#license").qtip({'show':{'delay':50},'position':{'corner':{'target':'rightMiddle'}},'hide':{'delay':250,'fixed':true},'style':{'name':'light','width':{'max':1000},'tip':'leftTop'}});
$('body').on('click','#yt0',function(){jQuery.ajax({'success':function(data) { $("#favoritesDialog").html(data).dialog("open"); return false; },'url':'/pictures/fans?pid=226084','cache':false});return false;});
jQuery('#favoritesDialog').dialog({'title':'Fans of \"Swegabe Sketches Gabrielle 027\"','autoOpen':false,'width':'50%','height':$(window).height() / 2,'resizable':false});
$('body').on('click','#delete_comment_1400104',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1400104},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1400473',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1400473},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398148',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398148},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398182',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398182},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1400108',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1400108},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1400304',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1400304},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398467',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398467},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398188',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398188},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398196',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398196},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398198',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398198},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398439',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398439},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398192',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398192},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398302',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398302},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398157',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398157},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#delete_comment_1398129',function(){if(confirm('Are you sure you want to delete this comment?')) {jQuery.ajax({'success':function() { location.reload(); },'error':function(jqXHR) { alert(jqXHR.responseText); },'data':{'YII_CSRF_TOKEN':'8a390060fc082247c06755b297dc4754aa15a3e5','id':1398129},'type':'POST','url':'/Comment/DeletepictureComment','cache':false});return false;} else return false;});
$('body').on('click','#yt1',function(){jQuery.ajax({'success':function() {location.reload();},'type':'POST','url':'/site/filters','cache':false,'data':jQuery(this).parents("form").serialize()});return false;});
});
/*]]>*/
</script>
</body>
</html>

View File

@ -1,536 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Warlord-of-Noodles's Games</title>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge" /><![endif]-->
<link rel="stylesheet" href="http://css.ngfiles.com/ng_publish.css?1374679673" type="text/css" media="all" /> <link rel="stylesheet" href="http://css.ngfiles.com/iphone.css?1328564601" type="text/css" media="only screen and (max-device-width: 480px)" /> <link rel="stylesheet" href="http://css.ngfiles.com/print.css?1328564601" type="text/css" media="print" />
<!--[if lte IE 8]>
<script type="text/javascript">
// <![CDATA[
PHP.set('is_ie', true);
// ]]>
</script>
<![endif]-->
<!--[if lte IE 9]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie9.css?1328656560" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie8.css?1337819134" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 7]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie7.css?1328564601" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 6]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie6.css?1328564286" type="text/css" media="screen" />
<![endif]-->
<style type="text/css">
/* this way the menus work with or without the javascript working */
#header dl dd {
display: none;
}
#header dl:hover dd {
/*display: block; */
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
// <![CDATA[
if (!window.jQuery) {
document.write('<script src="http://js.ngfiles.com/jquery/jquery.js" type="text/javascript"><\/script>');
}
// ]]>
</script>
<script type="text/javascript" src="http://js.ngfiles.com/ng_publish.js?1374772896"></script>
<script type="text/javascript" src="http://js.ngfiles.com/css_browser_selector.js"></script>
<script type="text/javascript">
// <![CDATA[
var $ng_adcode_ctime = 1375211106;
var $ng_adcode_country = 2;
var $ng_adcode_revsharing_id = null;
var $ng_adcode_page = "userpages";
var $ng_adcode_suitability = "T";
//]]>
</script>
<link rel="icon" type="image/png" href="http://www.newgrounds.com/img/icons/favicon.png" />
<link rel="shortcut icon" href="http://www.newgrounds.com/favicon.ico" type="image/vnd.microsoft.icon" />
<link rel="apple-touch-icon" href="http://img.ngfiles.com/misc/newgrounds_webclip.png" />
<meta http-equiv="content-type" content="text/html; charset=windows-1252" />
<meta name="viewport" content="width=976" />
<script type="text/javascript">
var $ng_adcode_user_is_supporter = 0;
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-850825-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div id="blackout" style="display: none">
<div id="blackout_bg"></div>
<div class="pagecentered" id="blackout_center">
</div>
</div>
<a href="#main" class="skipto">Skip to content.</a>
<div id="outer" >
<div id="header" class="header">
<div class="siteinfo">
<h1><a href="http://www.newgrounds.com">Newgrounds.com &mdash; Everything, By Everyone.</a></h1>
<div class="navigation">
<div class="navbar" id="header_nav">
<dl id="games">
<dt><a href="http://www.newgrounds.com/games">Games</a></dt>
<dd><a href="http://www.newgrounds.com/games/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/games/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/games/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/games/under_judgment">Under Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/portal">Classic Portal</a></dd>
<dd><a href="http://www.newgrounds.com/projects/games"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/programmer"><em>Team Up!</em></a></dd>
</dl>
<dl id="movies">
<dt><a href="http://www.newgrounds.com/movies">Movies</a></dt>
<dd><a href="http://www.newgrounds.com/movies/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/movies/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/movies/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment">Under Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/portal">Classic Portal</a></dd>
<dd><a href="http://www.newgrounds.com/projects/movies"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/artist"><em>Team Up!</em></a></dd>
</dl>
<dl id="audio">
<dt><a href="http://www.newgrounds.com/audio">Audio</a></dt>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/date">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/bbs/forum/13">Audio Forum</a></dd>
<dd><a href="http://www.newgrounds.com/projects/audio"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/musician"><em>Team Up!</em></a></dd>
</dl>
<dl id="art">
<dt><a href="http://www.newgrounds.com/art">Art</a></dt>
<dd><a href="http://www.newgrounds.com/art/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/art/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/art/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/bbs/forum/14">Art Forum</a></dd>
<dd><a href="http://www.newgrounds.com/art/submit/create"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/artist"><em>Team Up!</em></a></dd>
</dl>
<dl id="channels">
<dt><a href="http://www.newgrounds.com/collection">Channels</a></dt>
<dd><a href="http://www.newgrounds.com/collection/series">Series</a></dd>
<dd><a href="http://www.newgrounds.com/collection">Collections</a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment">Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/playlists">Playlists</a></dd>
</dl>
<dl id="community">
<dt><a href="http://www.newgrounds.com/bbs">Community</a></dt>
<dd><a href="http://www.newgrounds.com/bbs">Forums</a></dd>
<dd><a href="http://chat.newgrounds.com">Chat</a></dd>
<dd><a href="http://www.newgrounds.com/calendar">Calendar</a></dd>
<dd><a href="http://www.newgrounds.com/news/artists">Artist News</a></dd>
<dd><a href="http://www.newgrounds.com/rankings">Rankings</a></dd>
<dd><a href="http://www.newgrounds.com/downloads">Downloads</a></dd>
<dd><a href="http://www.newgrounds.com/wiki">Wiki</a></dd>
</dl>
<dl id="shop">
<dt><a href="http://www.newgrounds.com/store">Shop</a></dt>
<dd><a href="http://www.newgrounds.com/store/category/apparel">T-Shirts</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/collectible">Collectibles</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/print">Print</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/disc">Discs</a></dd>
</dl>
</div>
</div>
<h6>
<a href="http://qikalain.newgrounds.com">Wall Artist</a> </h6>
</div>
<div class="sitelinks">
<form id="loginboxform" action="https://www.newgrounds.com/login" method="post" class="loginbox">
<label id="header_label_username" for="username" style="display:none">Username</label>
<input type="text" maxlength="20" id="username" name="username" value="" />
<label id="header_label_password" for="password" style="display:none">Password</label>
<input type="password" maxlength="32" id="password" name="password" />
<input type="hidden" name="referrer" value="http://warlord-of-noodles.newgrounds.com/games" />
<div class="checkboxes">
<input type="checkbox" value="on" id="remember" name="remember" />
<span><label for="remember">Save Info?</label></span>
</div>
<button type="submit">Log In</button>
<ul class="loginlinks">
<li><a href="http://www.newgrounds.com/join">Not a member? Sign Up!</a></li>
<li><a href="http://www.newgrounds.com/join/forgot">Forgot login?</a></li>
</ul>
</form>
<form class="search" id="topsearch" action="http://www.newgrounds.com/search" method="get">
<input type="text" name="topsearch_text" id="topsearch_text" />
<div class="select">
<div></div>
<span>Movies</span>
<select class="formtext" name="topsearch_type" id="topsearch_type">
<option value="16">Games</option>
<option value="15" selected="selected">Movies</option>
<option value="17">Audio</option>
<option value="14">Art</option>
<option value="4">Forums</option> </select>
</div>
<button type="submit">Search</button>
</form>
<script type="text/javascript">
// <![CDATA[
PHP.set('search_urls', {"16":"http:\/\/www.newgrounds.com\/portal\/search\/games","15":"http:\/\/www.newgrounds.com\/portal\/search\/movies","17":"http:\/\/www.newgrounds.com\/audio\/search\/title","14":"http:\/\/www.newgrounds.com\/art\/search","4":"http:\/\/www.newgrounds.com\/bbs\/search\/topic","9":"http:\/\/www.newgrounds.com\/users\/search"});
// ]]>
</script>
</div>
</div>
<div class="headerads">
<!-- include ads here -->
<div style='display:none' class='adcode_container'>top-superbanner:728x90</div> <div style="display:none" class="storead_container">212:90:0</div> </div>
<div id="main">
<div class="three3">
<div class="podtop userheader">
<h2 class="empty" id="page_username"><img src="http://uimg.ngfiles.com/icons/2785/2785798_small.jpg" alt="Warlord-of-Noodles" width="25" height="25" title="" />Warlord-of-Noodles</h2>
<div>
<a href="/"><span>Main</span></a>
<a href="/news/"><span>News</span></a>
<a href="/movies/"><span>Movies</span></a>
<a ><span>Games</span></a>
<a href="/art/"><span>Art</span></a>
<a href="/favorites/"><span>Favorites</span></a>
<a href="/reviews/"><span>Reviews</span></a>
<a href="/stats/"><span>Stats</span></a>
<a href="/fans/"><span>2,357 Fans</span></a>
<a title="Manage Favorites" href="http://&lt;deleted&gt;.newgrounds.com/favorites/following"
id="manage_favorites" class="fave" style="display: none">
<span></span>
<span class="hovertext"><span>Manage Favorites</span></span>
</a>
<script type="text/javascript" src="http://js.ngfiles.com/portal/favorites.js"></script>
<form method="post" action="/follow" id="follow_user" class="fave">
<input type="hidden" name="userkey" id="userkey" value="e7ae1%O825db0362509%14b6O9b47c7ac6c%Pc225cr75%%d2c9a4%7%1%105%e25fs948c5c0dO9e52r7732rs%3fe6e7%%sc%6%1d9db5d70d3r7Pa18e%6frPfb2b1ecr06e06eab28e914d426938429b15f15665%s%4d7P%%O%rr5791-3443319" /> <input type="hidden" value="30" name="fav_type" />
<input type="hidden" name="id" value="2785798" />
<button type="submit" name="submit_favorite"><span></span></button>
<span class="hovertext">
<span>Follow Warlord-of-Noodles</span>
</span>
</form>
<script type="text/javascript">
listen_follow('#follow_user', '#manage_favorites');
</script>
</div>
</div>
</div>
<div class="thincol">
<div style='display:none' class='adcode_container'>left-rectangle:300x250</div>
<div class="one3">
<div class="podtop">
<h2 class="info">Contact Info / Websites</h2>
<div>
</div>
</div>
<div class="podcontent">
<ul class="blocklist">
<li class="mail"><a href="http://www.newgrounds.com/pm/send/warlord-of-noodles">Send a Private Message (PM)</a></li>
</ul>
</div>
<div class="podcontent">
<ol class="website-links">
<li><a href="http://www.betsydraws.com/" target="_blank" rel="nofollow"><img alt="www.betsydraws.com" src="http://s2.googleusercontent.com/s2/favicons?domain=www.betsydraws.com&amp;feature=newgrounds" /> www.betsydraws.com</a></li>
<li><a href="http://warlordofnoodles.comicgenesis.com/" target="_blank" rel="nofollow"><img alt="warlordofnoodles.comicgenesis.com" src="http://s2.googleusercontent.com/s2/favicons?domain=warlordofnoodles.comicgenesis.com&amp;feature=newgrounds" /> Brother Swan</a></li>
<li><a href="http://www.youtube.com/user/LadyCelest" target="_blank" rel="nofollow"><img alt="www.youtube.com" src="http://s2.googleusercontent.com/s2/favicons?domain=www.youtube.com&amp;feature=newgrounds" /> My Youtube</a></li>
<li><a href="http://warlord-of-noodles.deviantart.com/" target="_blank" rel="nofollow"><img alt="warlord-of-noodles.deviantart.com" src="http://s2.googleusercontent.com/s2/favicons?domain=warlord-of-noodles.deviantart.com&amp;feature=newgrounds" /> My Deviant Art</a></li>
<li><a href="https://twitter.com/#!/Warlordofnoodle" target="_blank" rel="nofollow"><img alt="twitter.com" src="http://s2.googleusercontent.com/s2/favicons?domain=twitter.com&amp;feature=newgrounds" /> My Twitter</a></li>
<li><a href="http://brotherswan.proboards.com/" target="_blank" rel="nofollow"><img alt="brotherswan.proboards.com" src="http://s2.googleusercontent.com/s2/favicons?domain=brotherswan.proboards.com&amp;feature=newgrounds" /> My Stories' forum</a></li>
</ol>
</div>
<div class="podbot"></div>
</div>
</div>
<div class="fatcol">
<div class="two3">
<div class="podcontent">
<p><span style="text-transform:capitalize">Warlord-of-Noodles</span> does not have any games.</p>
</div>
<div class="podbot"></div>
</div>
</div>
<br style="clear: both" />
</div>
<div id="footer" >
<div class="featuredcontent">
<div class="featurebar">
<dl>
<dt>Featured Content</dt>
<dd id="featgames" >
<a href="/ajax/footer_feature.php?footer_feature=games" rel="nofollow">Games</a>
</dd>
<dd id="featmovies" >
<a href="/ajax/footer_feature.php?footer_feature=movies" rel="nofollow">Movies</a>
</dd>
<dd id="feataudio" >
<a href="/ajax/footer_feature.php?footer_feature=audio" rel="nofollow">Audio</a>
</dd>
<dd id="featart" >
<a href="/ajax/footer_feature.php?footer_feature=art" rel="nofollow">Art</a>
</dd>
<dd id="featchannels" >
<a href="/ajax/footer_feature.php?footer_feature=channels" rel="nofollow">Channels</a>
</dd>
<dd id="featusers" class="currentfeat">
<a href="/ajax/footer_feature.php?footer_feature=users" rel="nofollow">Users</a>
</dd>
</dl>
</div>
<div class="footerfeatures">
<a href="/ajax/footer_feature.php?footer_feature=channels" class="fprev" rel="nofollow">
<span>Previous Section</span>
</a>
<div id="content">
<div class="user">
<a href="http://freyaloi.newgrounds.com/news/post/858254">
Freyaloi <strong>livestream: online</strong>
</a>
</div>
<div class="user">
<a href="http://mirocka.newgrounds.com/news/post/858251">
Mirocka <strong>Commissions</strong>
</a>
</div>
<div class="user">
<a href="http://ramenrider.newgrounds.com/news/post/858249">
RamenRider <strong>Update Entry (July 30th)</strong>
</a>
</div>
<div class="user">
<a href="http://gujit.newgrounds.com/news/post/858246">
Gujit <strong>Way to the Mountain</strong>
</a>
</div>
<div class="user">
<a href="http://evil-dog.newgrounds.com/news/post/858244">
Evil-Dog <strong>Road of the Dead 2: Live streaming all day!</strong>
</a>
</div>
<div class="user">
<a href="http://sonik1.newgrounds.com/news/post/858239">
sonik1 <strong>Suprise project comming up!</strong>
</a>
</div>
</div>
<a href="/ajax/footer_feature.php?footer_feature=games" class="fnext" rel="nofollow">
<span>Next Section</span>
</a>
</div>
<script type="text/javascript">
// <![CDATA[
PHP.set('feature_url', '/ajax/footer_feature.php');
(function () {
var featuredcontent = jQuery('#footer div.featuredcontent');
featuredcontent.delegate('div.featurebar a, a.fprev, a.fnext', 'click', function (e) {
featuredcontent.load(
PHP.get('feature_url'),
this.href.split('?')[1]
);
e.preventDefault();
});
})();
// ]]>
</script>
</div>
<div class="footerads">
<div style="display:none" class="storead_container">212:90:0</div> <div style='display:none' class='adcode_container'>bottom-superbanner:728x90</div> </div>
<div class="siteinfo">
<div class="copyright">
<p><strong>&copy; Copyright 1995-2013 Newgrounds, Inc. All rights reserved. <a href="http://www.newgrounds.com/wiki/help-information/privacy-policy">Privacy Policy</a> | <a href="http://www.newgrounds.com/wiki/help-information/terms-of-use">Terms of Use</a></strong></p>
<p>newgrounds.com &mdash; Your #1 online entertainment &amp; artist community! All your base are belong to us.</p>
</div>
<div class="navigation">
<dl>
<dt>Main Sections</dt>
<dd><a href="http://www.newgrounds.com/games"><span>Games</span></a></dd>
<dd><a href="http://www.newgrounds.com/movies"><span>Movies</span></a></dd>
<dd><a href="http://www.newgrounds.com/art"><span>Art</span></a></dd>
<dd><a href="http://www.newgrounds.com/audio"><span>Audio</span></a></dd>
<dd><a href="http://www.newgrounds.com/store"><span>Store</span></a></dd>
</dl>
<dl>
<dt>Extra, Extra!</dt>
<dd><a href="http://www.newgrounds.com/collection/series"><span>Series</span></a></dd>
<dd><a href="http://www.newgrounds.com/collection"><span>Collections</span></a></dd>
<dd><a href="http://www.newgrounds.com/games/under_judgment"><span>Game Judging</span></a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment"><span>Movie Judging</span></a></dd>
<dd><a href="http://www.newgrounds.com/portal"><span>Classic Portal</span></a></dd>
<dd><a href="http://www.newgrounds.com/downloads"><span>Downloads</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/creator-resources"><span>Creator Resources</span></a></dd>
</dl>
<dl>
<dt>Community</dt>
<dd><a href="http://www.newgrounds.com/bbs"><span>Forums</span></a></dd>
<dd><a href="http://www.newgrounds.com/calendar"><span>Calendar</span></a></dd>
<dd><a href="http://www.newgrounds.com/news/artists"><span>Artist News</span></a></dd>
<dd><a href="http://www.newgrounds.com/rankings"><span>Rankings</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki"><span>NG Wiki</span></a></dd>
</dl>
<dl>
<dt>NG Related</dt>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds"><span>About NG</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/help-information"><span>Site Help</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds/staff"><span>The Staff</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds/history"><span>NG History</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/help-information/rss"><span>RSS</span></a></dd>
</dl>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="//www.newgrounds.com/ads/cache/ad_controller.js?rand=1363205747"></script>
<script type="text/javascript">
// <![CDATA[
(function ($) {
if ($ng_adcode_user_is_supporter) {
//$('#footer').css('height','575px');
//$('#frontpagemessage').css('bottom','-556px');
} else {
$('.adcode_container').each(function() {
$(this).show();
var params = $(this).html().split(":");
var adcode = $ng_adcode_config.getUnit(params[0],params[1]);
$(this).html(''+adcode);
});
$('.storead_container').each(function() {
$(this).show();
var params = $(this).html().split(":");
var adcode = $ng_adcode_config.getStoreAd(params[0],params[1],params[2]);
$(this).html(''+adcode);
});
}
})(jQuery);
$ng_adcode_config = null; // free memory
// ]]>
</script>
<script type="text/javascript"> (function(){ var sNew = document.createElement("script"); sNew.defer = true; sNew.src = "http://tag.crsspxl.com/s1.js?d=1370"; var s0 = document.getElementsByTagName('script')[0]; s0.parentNode.insertBefore(sNew, s0); })(); </script>
</body>
</html>

View File

@ -1,989 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Warlord-of-Noodles's Movies</title>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge" /><![endif]-->
<link rel="stylesheet" href="http://css.ngfiles.com/ng_publish.css?1374679673" type="text/css" media="all" /> <link rel="stylesheet" href="http://css.ngfiles.com/iphone.css?1328564601" type="text/css" media="only screen and (max-device-width: 480px)" /> <link rel="stylesheet" href="http://css.ngfiles.com/print.css?1328564601" type="text/css" media="print" />
<!--[if lte IE 8]>
<script type="text/javascript">
// <![CDATA[
PHP.set('is_ie', true);
// ]]>
</script>
<![endif]-->
<!--[if lte IE 9]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie9.css?1328656560" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie8.css?1337819134" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 7]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie7.css?1328564601" type="text/css" media="screen" />
<![endif]-->
<!--[if lte IE 6]>
<link rel="stylesheet" href="http://css.ngfiles.com/ie6.css?1328564286" type="text/css" media="screen" />
<![endif]-->
<style type="text/css">
/* this way the menus work with or without the javascript working */
#header dl dd {
display: none;
}
#header dl:hover dd {
/*display: block; */
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
// <![CDATA[
if (!window.jQuery) {
document.write('<script src="http://js.ngfiles.com/jquery/jquery.js" type="text/javascript"><\/script>');
}
// ]]>
</script>
<script type="text/javascript" src="http://js.ngfiles.com/ng_publish.js?1374772896"></script>
<script type="text/javascript" src="http://js.ngfiles.com/css_browser_selector.js"></script>
<script type="text/javascript">
// <![CDATA[
var $ng_adcode_ctime = 1375207749;
var $ng_adcode_country = 2;
var $ng_adcode_revsharing_id = null;
var $ng_adcode_page = "userpages";
var $ng_adcode_suitability = "T";
//]]>
</script>
<link rel="icon" type="image/png" href="http://www.newgrounds.com/img/icons/favicon.png" />
<link rel="shortcut icon" href="http://www.newgrounds.com/favicon.ico" type="image/vnd.microsoft.icon" />
<link rel="apple-touch-icon" href="http://img.ngfiles.com/misc/newgrounds_webclip.png" />
<meta http-equiv="content-type" content="text/html; charset=windows-1252" />
<meta name="viewport" content="width=976" />
<script type="text/javascript">
var $ng_adcode_user_is_supporter = 0;
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-850825-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div id="blackout" style="display: none">
<div id="blackout_bg"></div>
<div class="pagecentered" id="blackout_center">
</div>
</div>
<a href="#main" class="skipto">Skip to content.</a>
<div id="outer" >
<div id="header" class="header">
<div class="siteinfo">
<h1><a href="http://www.newgrounds.com">Newgrounds.com &mdash; Everything, By Everyone.</a></h1>
<div class="navigation">
<div class="navbar" id="header_nav">
<dl id="games">
<dt><a href="http://www.newgrounds.com/games">Games</a></dt>
<dd><a href="http://www.newgrounds.com/games/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/games/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/games/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/games/under_judgment">Under Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/portal">Classic Portal</a></dd>
<dd><a href="http://www.newgrounds.com/projects/games"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/programmer"><em>Team Up!</em></a></dd>
</dl>
<dl id="movies">
<dt><a href="http://www.newgrounds.com/movies">Movies</a></dt>
<dd><a href="http://www.newgrounds.com/movies/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/movies/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/movies/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment">Under Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/portal">Classic Portal</a></dd>
<dd><a href="http://www.newgrounds.com/projects/movies"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/artist"><em>Team Up!</em></a></dd>
</dl>
<dl id="audio">
<dt><a href="http://www.newgrounds.com/audio">Audio</a></dt>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/date">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/audio/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/bbs/forum/13">Audio Forum</a></dd>
<dd><a href="http://www.newgrounds.com/projects/audio"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/musician"><em>Team Up!</em></a></dd>
</dl>
<dl id="art">
<dt><a href="http://www.newgrounds.com/art">Art</a></dt>
<dd><a href="http://www.newgrounds.com/art/browse">Latest</a></dd>
<dd><a href="http://www.newgrounds.com/art/browse/sort/score/interval/month">Greatest</a></dd>
<dd><a href="http://www.newgrounds.com/art/browse/sort/views/interval/week">Popular</a></dd>
<dd><a href="http://www.newgrounds.com/bbs/forum/14">Art Forum</a></dd>
<dd><a href="http://www.newgrounds.com/art/submit/create"><em>Submit Yours!</em></a></dd>
<dd><a href="http://www.newgrounds.com/collab/browse/artist"><em>Team Up!</em></a></dd>
</dl>
<dl id="channels">
<dt><a href="http://www.newgrounds.com/collection">Channels</a></dt>
<dd><a href="http://www.newgrounds.com/collection/series">Series</a></dd>
<dd><a href="http://www.newgrounds.com/collection">Collections</a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment">Judgment</a></dd>
<dd><a href="http://www.newgrounds.com/playlists">Playlists</a></dd>
</dl>
<dl id="community">
<dt><a href="http://www.newgrounds.com/bbs">Community</a></dt>
<dd><a href="http://www.newgrounds.com/bbs">Forums</a></dd>
<dd><a href="http://chat.newgrounds.com">Chat</a></dd>
<dd><a href="http://www.newgrounds.com/calendar">Calendar</a></dd>
<dd><a href="http://www.newgrounds.com/news/artists">Artist News</a></dd>
<dd><a href="http://www.newgrounds.com/rankings">Rankings</a></dd>
<dd><a href="http://www.newgrounds.com/downloads">Downloads</a></dd>
<dd><a href="http://www.newgrounds.com/wiki">Wiki</a></dd>
</dl>
<dl id="shop">
<dt><a href="http://www.newgrounds.com/store">Shop</a></dt>
<dd><a href="http://www.newgrounds.com/store/category/apparel">T-Shirts</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/collectible">Collectibles</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/print">Print</a></dd>
<dd><a href="http://www.newgrounds.com/store/category/disc">Discs</a></dd>
</dl>
</div>
</div>
<h6>
<a href="http://qikalain.newgrounds.com">Wall Artist</a> </h6>
</div>
<div class="sitelinks">
<form id="loginboxform" action="https://www.newgrounds.com/login" method="post" class="loginbox">
<label id="header_label_username" for="username" style="display:none">Username</label>
<input type="text" maxlength="20" id="username" name="username" value="" />
<label id="header_label_password" for="password" style="display:none">Password</label>
<input type="password" maxlength="32" id="password" name="password" />
<input type="hidden" name="referrer" value="http://warlord-of-noodles.newgrounds.com/movies/" />
<div class="checkboxes">
<input type="checkbox" value="on" id="remember" name="remember" />
<span><label for="remember">Save Info?</label></span>
</div>
<button type="submit">Log In</button>
<ul class="loginlinks">
<li><a href="http://www.newgrounds.com/join">Not a member? Sign Up!</a></li>
<li><a href="http://www.newgrounds.com/join/forgot">Forgot login?</a></li>
</ul>
</form>
<form class="search" id="topsearch" action="http://www.newgrounds.com/search" method="get">
<input type="text" name="topsearch_text" id="topsearch_text" />
<div class="select">
<div></div>
<span>Movies</span>
<select class="formtext" name="topsearch_type" id="topsearch_type">
<option value="16">Games</option>
<option value="15" selected="selected">Movies</option>
<option value="17">Audio</option>
<option value="14">Art</option>
<option value="4">Forums</option> </select>
</div>
<button type="submit">Search</button>
</form>
<script type="text/javascript">
// <![CDATA[
PHP.set('search_urls', {"16":"http:\/\/www.newgrounds.com\/portal\/search\/games","15":"http:\/\/www.newgrounds.com\/portal\/search\/movies","17":"http:\/\/www.newgrounds.com\/audio\/search\/title","14":"http:\/\/www.newgrounds.com\/art\/search","4":"http:\/\/www.newgrounds.com\/bbs\/search\/topic","9":"http:\/\/www.newgrounds.com\/users\/search"});
// ]]>
</script>
</div>
</div>
<div class="headerads">
<!-- include ads here -->
<div style='display:none' class='adcode_container'>top-superbanner:728x90</div> <div style="display:none" class="storead_container">212:90:0</div> </div>
<div id="main">
<div class="three3">
<div class="podtop userheader">
<h2 class="empty" id="page_username"><img src="http://uimg.ngfiles.com/icons/2785/2785798_small.jpg" alt="Warlord-of-Noodles" width="25" height="25" title="" />Warlord-of-Noodles</h2>
<div>
<a href="/"><span>Main</span></a>
<a href="/news/"><span>News</span></a>
<a ><span>Movies</span></a>
<a href="/art/"><span>Art</span></a>
<a href="/favorites/"><span>Favorites</span></a>
<a href="/reviews/"><span>Reviews</span></a>
<a href="/stats/"><span>Stats</span></a>
<a href="/fans/"><span>2,357 Fans</span></a>
<a title="Manage Favorites" href="http://&lt;deleted&gt;.newgrounds.com/favorites/following"
id="manage_favorites" class="fave" style="display: none">
<span></span>
<span class="hovertext"><span>Manage Favorites</span></span>
</a>
<script type="text/javascript" src="http://js.ngfiles.com/portal/favorites.js"></script>
<form method="post" action="/follow" id="follow_user" class="fave">
<input type="hidden" name="userkey" id="userkey" value="f0fe1%O425db43666fd%74b6O9b4cc7a1bc%Pc221br72%%d2c9a4%7%7%105%ea5fs448a5cf7O9e8br773frs%dde6e6%%s8%9%1c9db5d74dbr3Pa800%60rPfb290dcr06e06eab28e914d426938429b15f15665%s%4d7P%%O%rr2116-3425970" /> <input type="hidden" value="30" name="fav_type" />
<input type="hidden" name="id" value="2785798" />
<button type="submit" name="submit_favorite"><span></span></button>
<span class="hovertext">
<span>Follow Warlord-of-Noodles</span>
</span>
</form>
<script type="text/javascript">
listen_follow('#follow_user', '#manage_favorites');
</script>
</div>
</div>
</div>
<div class="thincol">
<div style='display:none' class='adcode_container'>left-rectangle:300x250</div>
<div class="one3">
<div class="podtop">
<h2 class="info">Contact Info / Websites</h2>
<div>
</div>
</div>
<div class="podcontent">
<ul class="blocklist">
<li class="mail"><a href="http://www.newgrounds.com/pm/send/warlord-of-noodles">Send a Private Message (PM)</a></li>
</ul>
</div>
<div class="podcontent">
<ol class="website-links">
<li><a href="http://www.betsydraws.com/" target="_blank" rel="nofollow"><img alt="www.betsydraws.com" src="http://s2.googleusercontent.com/s2/favicons?domain=www.betsydraws.com&amp;feature=newgrounds" /> www.betsydraws.com</a></li>
<li><a href="http://warlordofnoodles.comicgenesis.com/" target="_blank" rel="nofollow"><img alt="warlordofnoodles.comicgenesis.com" src="http://s2.googleusercontent.com/s2/favicons?domain=warlordofnoodles.comicgenesis.com&amp;feature=newgrounds" /> Brother Swan</a></li>
<li><a href="http://www.youtube.com/user/LadyCelest" target="_blank" rel="nofollow"><img alt="www.youtube.com" src="http://s2.googleusercontent.com/s2/favicons?domain=www.youtube.com&amp;feature=newgrounds" /> My Youtube</a></li>
<li><a href="http://warlord-of-noodles.deviantart.com/" target="_blank" rel="nofollow"><img alt="warlord-of-noodles.deviantart.com" src="http://s2.googleusercontent.com/s2/favicons?domain=warlord-of-noodles.deviantart.com&amp;feature=newgrounds" /> My Deviant Art</a></li>
<li><a href="https://twitter.com/#!/Warlordofnoodle" target="_blank" rel="nofollow"><img alt="twitter.com" src="http://s2.googleusercontent.com/s2/favicons?domain=twitter.com&amp;feature=newgrounds" /> My Twitter</a></li>
<li><a href="http://brotherswan.proboards.com/" target="_blank" rel="nofollow"><img alt="brotherswan.proboards.com" src="http://s2.googleusercontent.com/s2/favicons?domain=brotherswan.proboards.com&amp;feature=newgrounds" /> My Stories' forum</a></li>
</ol>
</div>
<div class="podbot"></div>
</div>
<div>
<div class="podtop">
<h2 class="trophies">Movie Trophies</h2>
<div><a href="/trophies">View All &raquo;</a></div>
</div>
<div class="podcontent">
<ul class="trophies">
<li>
<a href="http://www.newgrounds.com/portal/view/621259" class="daily1">
<strong>Little Bunny Foo Foo</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/621259" class="weekly2">
<strong>Little Bunny Foo Foo</strong>
Weekly 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/617915" class="daily1">
<strong>Swingers 006</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/612665" class="daily1">
<strong>Tlaloc's Test</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/612665" class="weekly3">
<strong>Tlaloc's Test</strong>
Weekly 3rd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/610813" class="daily3">
<strong>Dandy</strong>
Daily 3rd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/609683" class="daily1">
<strong>Swingers Episode 5</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/609683" class="weekly4">
<strong>Swingers Episode 5</strong>
Weekly 4th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/606387" class="daily2">
<strong>Out takes 01</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/606111" class="daily2">
<strong>A Simple Melody</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/606111" class="weekly3">
<strong>A Simple Melody</strong>
Weekly 3rd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/604603" class="daily2">
<strong>Coyote and Rattlesnake</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/603027" class="daily2">
<strong>Swingers Episode 4</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/601680" class="daily1">
<strong>And TheRaven Brought Fire</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/601680" class="weekly5">
<strong>And TheRaven Brought Fire</strong>
Weekly 5th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/600626" class="daily3">
<strong>The Fox and the Grapes</strong>
Daily 3rd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/593806" class="daily4">
<strong>Miss Kitty Sees You</strong>
Daily 4th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/591049" class="daily3">
<strong>Swingers Episode 3</strong>
Daily 3rd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/584272" class="daily4">
<strong>Swingers Episode 2</strong>
Daily 4th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/583715" class="daily2">
<strong>Cat Dust</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/583715" class="weekly4">
<strong>Cat Dust</strong>
Weekly 4th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/577497" class="daily2">
<strong>Swingers Episode 1</strong>
Daily 2nd Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/563780" class="daily4">
<strong>Do I Smell Chocolate?</strong>
Daily 4th Place </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/562785" class="daily1">
<strong>Step Sleeper</strong>
Daily Feature </a>
</li>
<li>
<a href="http://www.newgrounds.com/portal/view/488200" class="daily5">
<strong>Mordred's Lullaby</strong>
Daily 5th Place </a>
</li>
</ul>
</div>
<div class="podbot"></div>
</div>
</div>
<div class="fatcol">
<div>
<div class="podtop">
<h2 class="movie">2013 Submissions</h2>
<div>
<a href="http://www.newgrounds.com/portal/view/621259"><strong>Best of 2013: </strong>Little Bunny Foo Foo </a>
</div>
</div>
<div class="podcontent iconarray movies">
<a href="http://www.newgrounds.com/portal/view/621259" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/621000/flash_621259.jpg" alt="Little Bunny Foo Foo" width="140" height="90" title="" /> <span>
<strong>Little Bunny Foo Foo</strong>
<em><span style="width:89%">Rated Stars</span></em>
</span>
<span>
<span>someimes the field mice deserve it.</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/617915" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/617000/flash_617915.png" alt="Swingers 006" width="140" height="90" title="" /> <span>
<strong>Swingers 006</strong>
<em><span style="width:83%">Rated Stars</span></em>
</span>
<span>
<span>Not even golden geese are easy money</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/612665" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/612000/flash_612665.jpg" alt="Tlaloc's Test" width="140" height="90" title="" /> <span>
<strong>Tlaloc's Test</strong>
<em><span style="width:90%">Rated Stars</span></em>
</span>
<span>
<span>Do you trust the Water Pump?</span>
<span>Other</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/610813" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/610000/flash_610813.png" alt="Dandy" width="140" height="90" title="" /> <span>
<strong>Dandy</strong>
<em><span style="width:87%">Rated Stars</span></em>
</span>
<span>
<span>Be careful of whom you ask favors</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/609683" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/609000/flash_609683.jpg" alt="Swingers Episode 5" width="140" height="90" title="" /> <span>
<strong>Swingers Episode 5</strong>
<em><span style="width:84%">Rated Stars</span></em>
</span>
<span>
<span>Curiosity Kills</span>
<span>Comedy - Original</span>
</span>
</a>
</div>
<div class="podbot"></div>
</div>
<div>
<div class="podtop">
<h2 class="movie">2012 Submissions</h2>
<div>
<a href="http://www.newgrounds.com/portal/view/593806"><strong>Best of 2012: </strong>Miss Kitty Sees You </a>
</div>
</div>
<div class="podcontent iconarray movies">
<a href="http://www.newgrounds.com/portal/view/606387" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/606000/flash_606387.jpg" alt="Out takes 01" width="140" height="90" title="" /> <span>
<strong>Out takes 01</strong>
<em><span style="width:80%">Rated Stars</span></em>
</span>
<span>
<span>Out takes from swingers and no evil</span>
<span>Other</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/606111" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/606000/flash_606111.jpg" alt="A Simple Melody" width="140" height="90" title="" /> <span>
<strong>A Simple Melody</strong>
<em><span style="width:89%">Rated Stars</span></em>
</span>
<span>
<span>Sing a simple melody</span>
<span>Other</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/604603" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/604000/flash_604603.jpg" alt="Coyote and Rattlesnake" width="140" height="90" title="" /> <span>
<strong>Coyote and Rattlesnake</strong>
<em><span style="width:86%">Rated Stars</span></em>
</span>
<span>
<span>A Sia Folktale</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/604152" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/604000/flash_604152.jpg" alt="Falling Angel" width="140" height="90" title="" /> <span>
<strong>Falling Angel</strong>
<em><span style="width:77%">Rated Stars</span></em>
</span>
<span>
<span>A message from above</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/603027" class="rated-t"><span></span>
<img src="http://picon.ngfiles.com/603000/flash_603027.jpg" alt="Swingers Episode 4" width="140" height="90" title="" /> <span>
<strong>Swingers Episode 4</strong>
<em><span style="width:84%">Rated Stars</span></em>
</span>
<span>
<span>I do beleive in spooks</span>
<span>Action</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/601680" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/601000/flash_601680.jpg" alt="And TheRaven Brought Fire" width="140" height="90" title="" /> <span>
<strong>And TheRaven Brought Fire</strong>
<em><span style="width:89%">Rated Stars</span></em>
</span>
<span>
<span>At one time there was nothing but darkness, and then the Raven brought fire</span>
<span>Action</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/600626" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/600000/flash_600626.jpg" alt="The Fox and the Grapes" width="140" height="90" title="" /> <span>
<strong>The Fox and the Grapes</strong>
<em><span style="width:81%">Rated Stars</span></em>
</span>
<span>
<span>An Aesop Fabel</span>
<span>Other</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/593806" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/593000/flash_593806.jpg" alt="Miss Kitty Sees You" width="140" height="90" title="" /> <span>
<strong>Miss Kitty Sees You</strong>
<em><span style="width:83%">Rated Stars</span></em>
</span>
<span>
<span>Miss Kitty sings all ladylike</span>
<span>Other</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/591049" class="rated-t"><span></span>
<img src="http://picon.ngfiles.com/591000/flash_591049.jpg" alt="Swingers Episode 3" width="140" height="90" title="" /> <span>
<strong>Swingers Episode 3</strong>
<em><span style="width:82%">Rated Stars</span></em>
</span>
<span>
<span>Blues is hazed</span>
<span>Comedy - Original</span>
</span>
</a>
</div>
<div class="podbot"></div>
</div>
<div>
<div class="podtop">
<h2 class="movie">2011 Submissions</h2>
<div>
<a href="http://www.newgrounds.com/portal/view/583715"><strong>Best of 2011: </strong>Cat Dust </a>
</div>
</div>
<div class="podcontent iconarray movies">
<a href="http://www.newgrounds.com/portal/view/584272" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/584000/flash_584272.jpg" alt="Swingers Episode 2" width="140" height="90" title="" /> <span>
<strong>Swingers Episode 2</strong>
<em><span style="width:82%">Rated Stars</span></em>
</span>
<span>
<span>An exstortionist comes to make an offer.</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/583715" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/583000/flash_583715.jpg" alt="Cat Dust" width="140" height="90" title="" /> <span>
<strong>Cat Dust</strong>
<em><span style="width:88%">Rated Stars</span></em>
</span>
<span>
<span>How far will lazyness go?</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/577497" class="rated-t"><span></span>
<img src="http://picon.ngfiles.com/577000/flash_577497.jpg" alt="Swingers Episode 1" width="140" height="90" title="" /> <span>
<strong>Swingers Episode 1</strong>
<em><span style="width:82%">Rated Stars</span></em>
</span>
<span>
<span>Tonight normal activity is broken by a thunderclap.... or several</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/563780" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/563000/flash_563780.jpg" alt="Do I Smell Chocolate?" width="140" height="90" title="" /> <span>
<strong>Do I Smell Chocolate?</strong>
<em><span style="width:75%">Rated Stars</span></em>
</span>
<span>
<span>Papllion is a Special snowflake</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/562785" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/562000/flash_562785.jpg" alt="Step Sleeper" width="140" height="90" title="" /> <span>
<strong>Step Sleeper</strong>
<em><span style="width:82%">Rated Stars</span></em>
</span>
<span>
<span>Happy cat is a stubborn cat</span>
<span>Comedy - Original</span>
</span>
</a>
</div>
<div class="podbot"></div>
</div>
<div>
<div class="podtop">
<h2 class="movie">2010 Submissions</h2>
<div>
<a href="http://www.newgrounds.com/portal/view/553298"><strong>Best of 2010: </strong>She's in my Class </a>
</div>
</div>
<div class="podcontent iconarray movies">
<a href="http://www.newgrounds.com/portal/view/553298" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/553000/flash_553298.jpg" alt="She's in my Class" width="140" height="90" title="" /> <span>
<strong>She's in my Class</strong>
<em><span style="width:74%">Rated Stars</span></em>
</span>
<span>
<span>Sorrel is afraid of Spider</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/550882" class="rated-t"><span></span>
<img src="http://picon.ngfiles.com/550000/flash_550882.jpeg" alt="The Tree Knows" width="140" height="90" title="" /> <span>
<strong>The Tree Knows</strong>
<em><span style="width:72%">Rated Stars</span></em>
</span>
<span>
<span>The tree sees you doing wrong</span>
<span>Comedy - Original</span>
</span>
</a>
</div>
<div class="podbot"></div>
</div>
<div>
<div class="podtop">
<h2 class="movie">2009 Submissions</h2>
<div>
<a href="http://www.newgrounds.com/portal/view/488200"><strong>Best of 2009: </strong>Mordred's Lullaby </a>
</div>
</div>
<div class="podcontent iconarray movies">
<a href="http://www.newgrounds.com/portal/view/509249" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/509000/flash_509249.png" alt="Doushite?" width="140" height="90" title="" /> <span>
<strong>Doushite?</strong>
<em><span style="width:73%">Rated Stars</span></em>
</span>
<span>
<span>Spider has a nervous break down</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/509175" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/509000/flash_509175.png" alt="Oscar" width="140" height="90" title="" /> <span>
<strong>Oscar</strong>
<em><span style="width:78%">Rated Stars</span></em>
</span>
<span>
<span>Havre Highschool is pleagued by the ghost of a janator</span>
<span>Comedy - Original</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/488200" class="rated-t"><span></span>
<img src="http://picon.ngfiles.com/488000/flash_488200.png" alt="Mordred's Lullaby" width="140" height="90" title="" /> <span>
<strong>Mordred's Lullaby</strong>
<em><span style="width:86%">Rated Stars</span></em>
</span>
<span>
<span>Morgan Lafe Sings of her son's Destiny</span>
<span>Music Video</span>
</span>
</a>
<a href="http://www.newgrounds.com/portal/view/488180" class="rated-e"><span></span>
<img src="http://picon.ngfiles.com/488000/flash_488180.png" alt="Stop Eating Mud" width="140" height="90" title="" /> <span>
<strong>Stop Eating Mud</strong>
<em><span style="width:82%">Rated Stars</span></em>
</span>
<span>
<span>A little girl attempts to sell mud as candy.</span>
<span>Comedy - Original</span>
</span>
</a>
</div>
<div class="podbot"></div>
</div>
</div>
<br style="clear: both" />
</div>
<div id="footer" >
<div class="featuredcontent">
<div class="featurebar">
<dl>
<dt>Featured Content</dt>
<dd id="featgames" >
<a href="/ajax/footer_feature.php?footer_feature=games" rel="nofollow">Games</a>
</dd>
<dd id="featmovies" >
<a href="/ajax/footer_feature.php?footer_feature=movies" rel="nofollow">Movies</a>
</dd>
<dd id="feataudio" >
<a href="/ajax/footer_feature.php?footer_feature=audio" rel="nofollow">Audio</a>
</dd>
<dd id="featart" >
<a href="/ajax/footer_feature.php?footer_feature=art" rel="nofollow">Art</a>
</dd>
<dd id="featchannels" >
<a href="/ajax/footer_feature.php?footer_feature=channels" rel="nofollow">Channels</a>
</dd>
<dd id="featusers" class="currentfeat">
<a href="/ajax/footer_feature.php?footer_feature=users" rel="nofollow">Users</a>
</dd>
</dl>
</div>
<div class="footerfeatures">
<a href="/ajax/footer_feature.php?footer_feature=channels" class="fprev" rel="nofollow">
<span>Previous Section</span>
</a>
<div id="content">
<div class="user">
<a href="http://mirocka.newgrounds.com/news/post/858251">
Mirocka <strong>Commissions</strong>
</a>
</div>
<div class="user">
<a href="http://ramenrider.newgrounds.com/news/post/858249">
RamenRider <strong>Update Entry (July 30th)</strong>
</a>
</div>
<div class="user">
<a href="http://gujit.newgrounds.com/news/post/858246">
Gujit <strong>Way to the Mountain</strong>
</a>
</div>
<div class="user">
<a href="http://evil-dog.newgrounds.com/news/post/858244">
Evil-Dog <strong>Road of the Dead 2: Live streaming all day!</strong>
</a>
</div>
<div class="user">
<a href="http://sonik1.newgrounds.com/news/post/858239">
sonik1 <strong>Suprise project comming up!</strong>
</a>
</div>
<div class="user">
<a href="http://justsomerandomdude.newgrounds.com/news/post/858238">
justsomerandomdude <strong>Sneakpeek</strong>
</a>
</div>
</div>
<a href="/ajax/footer_feature.php?footer_feature=games" class="fnext" rel="nofollow">
<span>Next Section</span>
</a>
</div>
<script type="text/javascript">
// <![CDATA[
PHP.set('feature_url', '/ajax/footer_feature.php');
(function () {
var featuredcontent = jQuery('#footer div.featuredcontent');
featuredcontent.delegate('div.featurebar a, a.fprev, a.fnext', 'click', function (e) {
featuredcontent.load(
PHP.get('feature_url'),
this.href.split('?')[1]
);
e.preventDefault();
});
})();
// ]]>
</script>
</div>
<div class="footerads">
<div style="display:none" class="storead_container">212:90:0</div> <div style='display:none' class='adcode_container'>bottom-superbanner:728x90</div> </div>
<div class="siteinfo">
<div class="copyright">
<p><strong>&copy; Copyright 1995-2013 Newgrounds, Inc. All rights reserved. <a href="http://www.newgrounds.com/wiki/help-information/privacy-policy">Privacy Policy</a> | <a href="http://www.newgrounds.com/wiki/help-information/terms-of-use">Terms of Use</a></strong></p>
<p>newgrounds.com &mdash; Your #1 online entertainment &amp; artist community! All your base are belong to us.</p>
</div>
<div class="navigation">
<dl>
<dt>Main Sections</dt>
<dd><a href="http://www.newgrounds.com/games"><span>Games</span></a></dd>
<dd><a href="http://www.newgrounds.com/movies"><span>Movies</span></a></dd>
<dd><a href="http://www.newgrounds.com/art"><span>Art</span></a></dd>
<dd><a href="http://www.newgrounds.com/audio"><span>Audio</span></a></dd>
<dd><a href="http://www.newgrounds.com/store"><span>Store</span></a></dd>
</dl>
<dl>
<dt>Extra, Extra!</dt>
<dd><a href="http://www.newgrounds.com/collection/series"><span>Series</span></a></dd>
<dd><a href="http://www.newgrounds.com/collection"><span>Collections</span></a></dd>
<dd><a href="http://www.newgrounds.com/games/under_judgment"><span>Game Judging</span></a></dd>
<dd><a href="http://www.newgrounds.com/movies/under_judgment"><span>Movie Judging</span></a></dd>
<dd><a href="http://www.newgrounds.com/portal"><span>Classic Portal</span></a></dd>
<dd><a href="http://www.newgrounds.com/downloads"><span>Downloads</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/creator-resources"><span>Creator Resources</span></a></dd>
</dl>
<dl>
<dt>Community</dt>
<dd><a href="http://www.newgrounds.com/bbs"><span>Forums</span></a></dd>
<dd><a href="http://www.newgrounds.com/calendar"><span>Calendar</span></a></dd>
<dd><a href="http://www.newgrounds.com/news/artists"><span>Artist News</span></a></dd>
<dd><a href="http://www.newgrounds.com/rankings"><span>Rankings</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki"><span>NG Wiki</span></a></dd>
</dl>
<dl>
<dt>NG Related</dt>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds"><span>About NG</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/help-information"><span>Site Help</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds/staff"><span>The Staff</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/about-newgrounds/history"><span>NG History</span></a></dd>
<dd><a href="http://www.newgrounds.com/wiki/help-information/rss"><span>RSS</span></a></dd>
</dl>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="//www.newgrounds.com/ads/cache/ad_controller.js?rand=1363205747"></script>
<script type="text/javascript">
// <![CDATA[
(function ($) {
if ($ng_adcode_user_is_supporter) {
//$('#footer').css('height','575px');
//$('#frontpagemessage').css('bottom','-556px');
} else {
$('.adcode_container').each(function() {
$(this).show();
var params = $(this).html().split(":");
var adcode = $ng_adcode_config.getUnit(params[0],params[1]);
$(this).html(''+adcode);
});
$('.storead_container').each(function() {
$(this).show();
var params = $(this).html().split(":");
var adcode = $ng_adcode_config.getStoreAd(params[0],params[1],params[2]);
$(this).html(''+adcode);
});
}
})(jQuery);
$ng_adcode_config = null; // free memory
// ]]>
</script>
<script type="text/javascript"> (function(){ var sNew = document.createElement("script"); sNew.defer = true; sNew.src = "http://tag.crsspxl.com/s1.js?d=1370"; var s0 = document.getElementsByTagName('script')[0]; s0.parentNode.insertBefore(sNew, s0); })(); </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

45
test.py
View File

@ -17,7 +17,6 @@ from include import HydrusTags
from include import HydrusThreading
from include import TestClientConstants
from include import TestClientDaemons
from include import TestClientDownloading
from include import TestClientListBoxes
from include import TestClientNetworking
from include import TestConstants
@ -83,8 +82,6 @@ class Controller( object ):
HydrusData.ShowText = show_text
self._http = ClientNetworking.HTTPConnectionManager()
self._reads = {}
self._reads[ 'hydrus_sessions' ] = []
@ -208,8 +205,6 @@ class Controller( object ):
return False
def DoHTTP( self, *args, **kwargs ): return self._http.Request( *args, **kwargs )
def GetClientSessionManager( self ):
return self._client_session_manager
@ -220,8 +215,6 @@ class Controller( object ):
return self._server_files_dir
def GetHTTP( self ): return self._http
def GetNewOptions( self ):
return self._new_options
@ -312,25 +305,44 @@ class Controller( object ):
if only_run is None: run_all = True
else: run_all = False
if run_all or only_run == 'daemons': suites.append( unittest.TestLoader().loadTestsFromModule( TestClientDaemons ) )
if run_all or only_run == 'daemons':
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientDaemons ) )
if run_all or only_run == 'data':
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientConstants ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestFunctions ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusSerialisable ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusSessions ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusTags ) )
if run_all or only_run == 'db': suites.append( unittest.TestLoader().loadTestsFromModule( TestDB ) )
if run_all or only_run == 'downloading':
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientDownloading ) )
if run_all or only_run == 'db':
suites.append( unittest.TestLoader().loadTestsFromModule( TestDB ) )
if run_all or only_run == 'networking':
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientNetworking ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusNetworking ) )
if run_all or only_run == 'gui':
suites.append( unittest.TestLoader().loadTestsFromModule( TestDialogs ) )
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientListBoxes ) )
if run_all or only_run == 'image': suites.append( unittest.TestLoader().loadTestsFromModule( TestClientImageHandling ) )
if run_all or only_run == 'nat': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusNATPunch ) )
if run_all or only_run == 'server': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusServer ) )
if run_all or only_run == 'image':
suites.append( unittest.TestLoader().loadTestsFromModule( TestClientImageHandling ) )
if run_all or only_run == 'nat':
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusNATPunch ) )
if run_all or only_run == 'server':
suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusServer ) )
suite = unittest.TestSuite( suites )
@ -339,11 +351,6 @@ class Controller( object ):
runner.run( suite )
def SetHTTP( self, http ):
self._http = http
def SetRead( self, name, value ):
self._reads[ name ] = value