diff --git a/local-webserver/src/ios/GCDWebServer/.gitignore b/local-webserver/src/ios/GCDWebServer/.gitignore
new file mode 100644
index 0000000..f8bf09a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/.gitignore
@@ -0,0 +1,5 @@
+.DS_Store
+xcuserdata
+project.xcworkspace
+
+Tests/Payload
diff --git a/local-webserver/src/ios/GCDWebServer/.travis.yml b/local-webserver/src/ios/GCDWebServer/.travis.yml
new file mode 100644
index 0000000..0bad31e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/.travis.yml
@@ -0,0 +1,2 @@
+language: objective-c
+script: ./Run-Tests.sh
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.h b/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.h
new file mode 100644
index 0000000..de3b538
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.h
@@ -0,0 +1,156 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServer.h"
+
+@class GCDWebDAVServer;
+
+/**
+ *  Delegate methods for GCDWebDAVServer.
+ *
+ *  @warning These methods are always called on the main thread in a serialized way.
+ */
+@protocol GCDWebDAVServerDelegate <GCDWebServerDelegate>
+@optional
+
+/**
+ *  This method is called whenever a file has been downloaded.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didDownloadFileAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a file has been uploaded.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didUploadFileAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a file or directory has been moved.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called whenever a file or directory has been copied.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didCopyItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called whenever a file or directory has been deleted.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didDeleteItemAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a directory has been created.
+ */
+- (void)davServer:(GCDWebDAVServer*)server didCreateDirectoryAtPath:(NSString*)path;
+
+@end
+
+/**
+ *  The GCDWebDAVServer subclass of GCDWebServer implements a class 1 compliant
+ *  WebDAV server. It is also partially class 2 compliant but only when the
+ *  client is the OS X WebDAV implementation (so it can work with the OS X Finder).
+ *
+ *  See the README.md file for more information about the features of GCDWebDAVServer.
+ */
+@interface GCDWebDAVServer : GCDWebServer
+
+/**
+ *  Returns the upload directory as specified when the server was initialized.
+ */
+@property(nonatomic, readonly) NSString* uploadDirectory;
+
+/**
+ *  Sets the delegate for the server.
+ */
+@property(nonatomic, assign) id<GCDWebDAVServerDelegate> delegate;
+
+/**
+ *  Sets which files are allowed to be operated on depending on their extension.
+ *
+ *  The default value is nil i.e. all file extensions are allowed.
+ */
+@property(nonatomic, copy) NSArray* allowedFileExtensions;
+
+/**
+ *  Sets if files and directories whose name start with a period are allowed to
+ *  be operated on.
+ *
+ *  The default value is NO.
+ */
+@property(nonatomic) BOOL allowHiddenItems;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithUploadDirectory:(NSString*)path;
+
+@end
+
+/**
+ *  Hooks to customize the behavior of GCDWebDAVServer.
+ *
+ *  @warning These methods can be called on any GCD thread.
+ */
+@interface GCDWebDAVServer (Subclassing)
+
+/**
+ *  This method is called to check if a file upload is allowed to complete.
+ *  The uploaded file is available for inspection at "tempPath".
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldUploadFileAtPath:(NSString*)path withTemporaryFile:(NSString*)tempPath;
+
+/**
+ *  This method is called to check if a file or directory is allowed to be moved.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called to check if a file or directory is allowed to be copied.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldCopyItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called to check if a file or directory is allowed to be deleted.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldDeleteItemAtPath:(NSString*)path;
+
+/**
+ *  This method is called to check if a directory is allowed to be created.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldCreateDirectoryAtPath:(NSString*)path;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.m b/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.m
new file mode 100644
index 0000000..c7341fa
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebDAVServer/GCDWebDAVServer.m
@@ -0,0 +1,688 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebDAVServer requires ARC
+#endif
+
+// WebDAV specifications: http://webdav.org/specs/rfc4918.html
+
+// Requires "HEADER_SEARCH_PATHS = $(SDKROOT)/usr/include/libxml2" in Xcode build settings
+#import <libxml/parser.h>
+
+#import "GCDWebDAVServer.h"
+
+#import "GCDWebServerFunctions.h"
+
+#import "GCDWebServerDataRequest.h"
+#import "GCDWebServerFileRequest.h"
+
+#import "GCDWebServerDataResponse.h"
+#import "GCDWebServerErrorResponse.h"
+#import "GCDWebServerFileResponse.h"
+
+#define kXMLParseOptions (XML_PARSE_NONET | XML_PARSE_RECOVER | XML_PARSE_NOBLANKS | XML_PARSE_COMPACT | XML_PARSE_NOWARNING | XML_PARSE_NOERROR)
+
+typedef NS_ENUM(NSInteger, DAVProperties) {
+  kDAVProperty_ResourceType = (1 << 0),
+  kDAVProperty_CreationDate = (1 << 1),
+  kDAVProperty_LastModified = (1 << 2),
+  kDAVProperty_ContentLength = (1 << 3),
+  kDAVAllProperties = kDAVProperty_ResourceType | kDAVProperty_CreationDate | kDAVProperty_LastModified | kDAVProperty_ContentLength
+};
+
+@interface GCDWebDAVServer () {
+@private
+  NSString* _uploadDirectory;
+  NSArray* _allowedExtensions;
+  BOOL _allowHidden;
+}
+@end
+
+@implementation GCDWebDAVServer (Methods)
+
+// Must match implementation in GCDWebUploader
+- (BOOL)_checkSandboxedPath:(NSString*)path {
+  return [[path stringByStandardizingPath] hasPrefix:_uploadDirectory];
+}
+
+- (BOOL)_checkFileExtension:(NSString*)fileName {
+  if (_allowedExtensions && ![_allowedExtensions containsObject:[[fileName pathExtension] lowercaseString]]) {
+    return NO;
+  }
+  return YES;
+}
+
+static inline BOOL _IsMacFinder(GCDWebServerRequest* request) {
+  NSString* userAgentHeader = [request.headers objectForKey:@"User-Agent"];
+  return ([userAgentHeader hasPrefix:@"WebDAVFS/"] || [userAgentHeader hasPrefix:@"WebDAVLib/"]);  // OS X WebDAV client
+}
+
+- (GCDWebServerResponse*)performOPTIONS:(GCDWebServerRequest*)request {
+  GCDWebServerResponse* response = [GCDWebServerResponse response];
+  if (_IsMacFinder(request)) {
+    [response setValue:@"1, 2" forAdditionalHeader:@"DAV"];  // Classes 1 and 2
+  } else {
+    [response setValue:@"1" forAdditionalHeader:@"DAV"];  // Class 1
+  }
+  return response;
+}
+
+- (GCDWebServerResponse*)performGET:(GCDWebServerRequest*)request {
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if (([itemName hasPrefix:@"."] && !_allowHidden) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Downlading item name \"%@\" is not allowed", itemName];
+  }
+  
+  // Because HEAD requests are mapped to GET ones, we need to handle directories but it's OK to return nothing per http://webdav.org/specs/rfc4918.html#rfc.section.9.4
+  if (isDirectory) {
+    return [GCDWebServerResponse response];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(davServer:didDownloadFileAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate davServer:self didDownloadFileAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerFileResponse responseWithFile:absolutePath];
+}
+
+- (GCDWebServerResponse*)performPUT:(GCDWebServerFileRequest*)request {
+  if ([request hasByteRange]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Range uploads not supported"];
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  if (![self _checkSandboxedPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  BOOL isDirectory;
+  if (![[NSFileManager defaultManager] fileExistsAtPath:[absolutePath stringByDeletingLastPathComponent] isDirectory:&isDirectory] || !isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Conflict message:@"Missing intermediate collection(s) for \"%@\"", relativePath];
+  }
+  
+  BOOL existing = [[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory];
+  if (existing && isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_MethodNotAllowed message:@"PUT not allowed on existing collection \"%@\"", relativePath];
+  }
+  
+  NSString* fileName = [absolutePath lastPathComponent];
+  if (([fileName hasPrefix:@"."] && !_allowHidden) || ![self _checkFileExtension:fileName]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Uploading file name \"%@\" is not allowed", fileName];
+  }
+  
+  if (![self shouldUploadFileAtPath:absolutePath withTemporaryFile:request.temporaryPath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Uploading file to \"%@\" is not permitted", relativePath];
+  }
+  
+  [[NSFileManager defaultManager] removeItemAtPath:absolutePath error:NULL];
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] moveItemAtPath:request.temporaryPath toPath:absolutePath error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed moving uploaded file to \"%@\"", relativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(davServer:didUploadFileAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate davServer:self didUploadFileAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerResponse responseWithStatusCode:(existing ? kGCDWebServerHTTPStatusCode_NoContent : kGCDWebServerHTTPStatusCode_Created)];
+}
+
+- (GCDWebServerResponse*)performDELETE:(GCDWebServerRequest*)request {
+  NSString* depthHeader = [request.headers objectForKey:@"Depth"];
+  if (depthHeader && ![depthHeader isEqualToString:@"infinity"]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Unsupported 'Depth' header: %@", depthHeader];
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if (([itemName hasPrefix:@"."] && !_allowHidden) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Deleting item name \"%@\" is not allowed", itemName];
+  }
+  
+  if (![self shouldDeleteItemAtPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Deleting \"%@\" is not permitted", relativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] removeItemAtPath:absolutePath error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed deleting \"%@\"", relativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(davServer:didDeleteItemAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate davServer:self didDeleteItemAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_NoContent];
+}
+
+- (GCDWebServerResponse*)performMKCOL:(GCDWebServerDataRequest*)request {
+  if ([request hasBody] && (request.contentLength > 0)) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_UnsupportedMediaType message:@"Unexpected request body for MKCOL method"];
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  if (![self _checkSandboxedPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  BOOL isDirectory;
+  if (![[NSFileManager defaultManager] fileExistsAtPath:[absolutePath stringByDeletingLastPathComponent] isDirectory:&isDirectory] || !isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Conflict message:@"Missing intermediate collection(s) for \"%@\"", relativePath];
+  }
+  
+  NSString* directoryName = [absolutePath lastPathComponent];
+  if (!_allowHidden && [directoryName hasPrefix:@"."]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Creating directory name \"%@\" is not allowed", directoryName];
+  }
+  
+  if (![self shouldCreateDirectoryAtPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Creating directory \"%@\" is not permitted", relativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] createDirectoryAtPath:absolutePath withIntermediateDirectories:NO attributes:nil error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed creating directory \"%@\"", relativePath];
+  }
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  NSString* creationDateHeader = [request.headers objectForKey:@"X-GCDWebServer-CreationDate"];
+  if (creationDateHeader) {
+    NSDate* date = GCDWebServerParseISO8601(creationDateHeader);
+    if (!date || ![[NSFileManager defaultManager] setAttributes:@{NSFileCreationDate: date} ofItemAtPath:absolutePath error:&error]) {
+      return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed setting creation date for directory \"%@\"", relativePath];
+    }
+  }
+#endif
+  
+  if ([self.delegate respondsToSelector:@selector(davServer:didCreateDirectoryAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate davServer:self didCreateDirectoryAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_Created];
+}
+
+- (GCDWebServerResponse*)performCOPY:(GCDWebServerRequest*)request isMove:(BOOL)isMove {
+  if (!isMove) {
+    NSString* depthHeader = [request.headers objectForKey:@"Depth"];  // TODO: Support "Depth: 0"
+    if (depthHeader && ![depthHeader isEqualToString:@"infinity"]) {
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Unsupported 'Depth' header: %@", depthHeader];
+    }
+  }
+  
+  NSString* srcRelativePath = request.path;
+  NSString* srcAbsolutePath = [_uploadDirectory stringByAppendingPathComponent:srcRelativePath];
+  if (![self _checkSandboxedPath:srcAbsolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", srcRelativePath];
+  }
+  
+  NSString* dstRelativePath = [request.headers objectForKey:@"Destination"];
+  NSRange range = [dstRelativePath rangeOfString:[request.headers objectForKey:@"Host"]];
+  if ((dstRelativePath == nil) || (range.location == NSNotFound)) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Malformed 'Destination' header: %@", dstRelativePath];
+  }
+  dstRelativePath = [[dstRelativePath substringFromIndex:(range.location + range.length)] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+  NSString* dstAbsolutePath = [_uploadDirectory stringByAppendingPathComponent:dstRelativePath];
+  if (![self _checkSandboxedPath:dstAbsolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", srcRelativePath];
+  }
+  
+  BOOL isDirectory;
+  if (![[NSFileManager defaultManager] fileExistsAtPath:[dstAbsolutePath stringByDeletingLastPathComponent] isDirectory:&isDirectory] || !isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Conflict message:@"Invalid destination \"%@\"", dstRelativePath];
+  }
+  
+  NSString* itemName = [dstAbsolutePath lastPathComponent];
+  if ((!_allowHidden && [itemName hasPrefix:@"."]) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"%@ to item name \"%@\" is not allowed", isMove ? @"Moving" : @"Copying", itemName];
+  }
+  
+  NSString* overwriteHeader = [request.headers objectForKey:@"Overwrite"];
+  BOOL existing = [[NSFileManager defaultManager] fileExistsAtPath:dstAbsolutePath];
+  if (existing && ((isMove && ![overwriteHeader isEqualToString:@"T"]) || (!isMove && [overwriteHeader isEqualToString:@"F"]))) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_PreconditionFailed message:@"Destination \"%@\" already exists", dstRelativePath];
+  }
+  
+  if (isMove) {
+    if (![self shouldMoveItemFromPath:srcAbsolutePath toPath:dstAbsolutePath]) {
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Moving \"%@\" to \"%@\" is not permitted", srcRelativePath, dstRelativePath];
+    }
+  } else {
+    if (![self shouldCopyItemFromPath:srcAbsolutePath toPath:dstAbsolutePath]) {
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Copying \"%@\" to \"%@\" is not permitted", srcRelativePath, dstRelativePath];
+    }
+  }
+  
+  NSError* error = nil;
+  if (isMove) {
+    [[NSFileManager defaultManager] removeItemAtPath:dstAbsolutePath error:NULL];
+    if (![[NSFileManager defaultManager] moveItemAtPath:srcAbsolutePath toPath:dstAbsolutePath error:&error]) {
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden underlyingError:error message:@"Failed copying \"%@\" to \"%@\"", srcRelativePath, dstRelativePath];
+    }
+  } else {
+    if (![[NSFileManager defaultManager] copyItemAtPath:srcAbsolutePath toPath:dstAbsolutePath error:&error]) {
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden underlyingError:error message:@"Failed copying \"%@\" to \"%@\"", srcRelativePath, dstRelativePath];
+    }
+  }
+  
+  if (isMove) {
+    if ([self.delegate respondsToSelector:@selector(davServer:didMoveItemFromPath:toPath:)]) {
+      dispatch_async(dispatch_get_main_queue(), ^{
+        [self.delegate davServer:self didMoveItemFromPath:srcAbsolutePath toPath:dstAbsolutePath];
+      });
+    }
+  } else {
+    if ([self.delegate respondsToSelector:@selector(davServer:didCopyItemFromPath:toPath:)]) {
+      dispatch_async(dispatch_get_main_queue(), ^{
+        [self.delegate davServer:self didCopyItemFromPath:srcAbsolutePath toPath:dstAbsolutePath];
+      });
+    }
+  }
+  
+  return [GCDWebServerResponse responseWithStatusCode:(existing ? kGCDWebServerHTTPStatusCode_NoContent : kGCDWebServerHTTPStatusCode_Created)];
+}
+
+static inline xmlNodePtr _XMLChildWithName(xmlNodePtr child, const xmlChar* name) {
+  while (child) {
+    if ((child->type == XML_ELEMENT_NODE) && !xmlStrcmp(child->name, name)) {
+      return child;
+    }
+    child = child->next;
+  }
+  return NULL;
+}
+
+- (void)_addPropertyResponseForItem:(NSString*)itemPath resource:(NSString*)resourcePath properties:(DAVProperties)properties xmlString:(NSMutableString*)xmlString {
+  CFStringRef escapedPath = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)resourcePath, NULL, CFSTR("<&>?+"), kCFStringEncodingUTF8);
+  if (escapedPath) {
+    NSDictionary* attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:itemPath error:NULL];
+    NSString* type = [attributes objectForKey:NSFileType];
+    BOOL isFile = [type isEqualToString:NSFileTypeRegular];
+    BOOL isDirectory = [type isEqualToString:NSFileTypeDirectory];
+    if ((isFile && [self _checkFileExtension:itemPath]) || isDirectory) {
+      [xmlString appendString:@"<D:response>"];
+      [xmlString appendFormat:@"<D:href>%@</D:href>", escapedPath];
+      [xmlString appendString:@"<D:propstat>"];
+      [xmlString appendString:@"<D:prop>"];
+      
+      if (properties & kDAVProperty_ResourceType) {
+        if (isDirectory) {
+          [xmlString appendString:@"<D:resourcetype><D:collection/></D:resourcetype>"];
+        } else {
+          [xmlString appendString:@"<D:resourcetype/>"];
+        }
+      }
+      
+      if ((properties & kDAVProperty_CreationDate) && [attributes objectForKey:NSFileCreationDate]) {
+        [xmlString appendFormat:@"<D:creationdate>%@</D:creationdate>", GCDWebServerFormatISO8601([attributes fileCreationDate])];
+      }
+      
+      if ((properties & kDAVProperty_LastModified) && isFile && [attributes objectForKey:NSFileModificationDate]) {  // Last modification date is not useful for directories as it changes implicitely and 'Last-Modified' header is not provided for directories anyway
+        [xmlString appendFormat:@"<D:getlastmodified>%@</D:getlastmodified>", GCDWebServerFormatRFC822([attributes fileModificationDate])];
+      }
+      
+      if ((properties & kDAVProperty_ContentLength) && !isDirectory && [attributes objectForKey:NSFileSize]) {
+        [xmlString appendFormat:@"<D:getcontentlength>%llu</D:getcontentlength>", [attributes fileSize]];
+      }
+      
+      [xmlString appendString:@"</D:prop>"];
+      [xmlString appendString:@"<D:status>HTTP/1.1 200 OK</D:status>"];
+      [xmlString appendString:@"</D:propstat>"];
+      [xmlString appendString:@"</D:response>\n"];
+    }
+    CFRelease(escapedPath);
+  } else {
+    [self logError:@"Failed escaping path: %@", itemPath];
+  }
+}
+
+- (GCDWebServerResponse*)performPROPFIND:(GCDWebServerDataRequest*)request {
+  NSInteger depth;
+  NSString* depthHeader = [request.headers objectForKey:@"Depth"];
+  if ([depthHeader isEqualToString:@"0"]) {
+    depth = 0;
+  } else if ([depthHeader isEqualToString:@"1"]) {
+    depth = 1;
+  } else {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Unsupported 'Depth' header: %@", depthHeader];  // TODO: Return 403 / propfind-finite-depth for "infinity" depth
+  }
+  
+  DAVProperties properties = 0;
+  if (request.data.length) {
+    BOOL success = YES;
+    xmlDocPtr document = xmlReadMemory(request.data.bytes, (int)request.data.length, NULL, NULL, kXMLParseOptions);
+    if (document) {
+      xmlNodePtr rootNode = _XMLChildWithName(document->children, (const xmlChar*)"propfind");
+      xmlNodePtr allNode = rootNode ? _XMLChildWithName(rootNode->children, (const xmlChar*)"allprop") : NULL;
+      xmlNodePtr propNode = rootNode ? _XMLChildWithName(rootNode->children, (const xmlChar*)"prop") : NULL;
+      if (allNode) {
+        properties = kDAVAllProperties;
+      } else if (propNode) {
+        xmlNodePtr node = propNode->children;
+        while (node) {
+          if (!xmlStrcmp(node->name, (const xmlChar*)"resourcetype")) {
+            properties |= kDAVProperty_ResourceType;
+          } else if (!xmlStrcmp(node->name, (const xmlChar*)"creationdate")) {
+            properties |= kDAVProperty_CreationDate;
+          } else if (!xmlStrcmp(node->name, (const xmlChar*)"getlastmodified")) {
+            properties |= kDAVProperty_LastModified;
+          } else if (!xmlStrcmp(node->name, (const xmlChar*)"getcontentlength")) {
+            properties |= kDAVProperty_ContentLength;
+          } else {
+            [self logWarning:@"Unknown DAV property requested \"%s\"", node->name];
+          }
+          node = node->next;
+        }
+      } else {
+        success = NO;
+      }
+      xmlFreeDoc(document);
+    } else {
+      success = NO;
+    }
+    if (!success) {
+      NSString* string = [[NSString alloc] initWithData:request.data encoding:NSUTF8StringEncoding];
+      return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Invalid DAV properties:\n%@", string];
+    }
+  } else {
+    properties = kDAVAllProperties;
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if (([itemName hasPrefix:@"."] && !_allowHidden) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Retrieving properties for item name \"%@\" is not allowed", itemName];
+  }
+  
+  NSArray* items = nil;
+  if (isDirectory) {
+    NSError* error = nil;
+    items = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:absolutePath error:&error];
+    if (items == nil) {
+      return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed listing directory \"%@\"", relativePath];
+    }
+  }
+  
+  NSMutableString* xmlString = [NSMutableString stringWithString:@"<?xml version=\"1.0\" encoding=\"utf-8\" ?>"];
+  [xmlString appendString:@"<D:multistatus xmlns:D=\"DAV:\">\n"];
+  if (![relativePath hasPrefix:@"/"]) {
+    relativePath = [@"/" stringByAppendingString:relativePath];
+  }
+  [self _addPropertyResponseForItem:absolutePath resource:relativePath properties:properties xmlString:xmlString];
+  if (depth == 1) {
+    if (![relativePath hasSuffix:@"/"]) {
+      relativePath = [relativePath stringByAppendingString:@"/"];
+    }
+    for (NSString* item in items) {
+      if (_allowHidden || ![item hasPrefix:@"."]) {
+        [self _addPropertyResponseForItem:[absolutePath stringByAppendingPathComponent:item] resource:[relativePath stringByAppendingString:item] properties:properties xmlString:xmlString];
+      }
+    }
+  }
+  [xmlString appendString:@"</D:multistatus>"];
+  
+  GCDWebServerDataResponse* response = [GCDWebServerDataResponse responseWithData:[xmlString dataUsingEncoding:NSUTF8StringEncoding]
+                                                                      contentType:@"application/xml; charset=\"utf-8\""];
+  response.statusCode = kGCDWebServerHTTPStatusCode_MultiStatus;
+  return response;
+}
+
+- (GCDWebServerResponse*)performLOCK:(GCDWebServerDataRequest*)request {
+  if (!_IsMacFinder(request)) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_MethodNotAllowed message:@"LOCK method only allowed for Mac Finder"];
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* depthHeader = [request.headers objectForKey:@"Depth"];
+  NSString* timeoutHeader = [request.headers objectForKey:@"Timeout"];
+  NSString* scope = nil;
+  NSString* type = nil;
+  NSString* owner = nil;
+  NSString* token = nil;
+  BOOL success = YES;
+  xmlDocPtr document = xmlReadMemory(request.data.bytes, (int)request.data.length, NULL, NULL, kXMLParseOptions);
+  if (document) {
+    xmlNodePtr node = _XMLChildWithName(document->children, (const xmlChar*)"lockinfo");
+    if (node) {
+      xmlNodePtr scopeNode = _XMLChildWithName(node->children, (const xmlChar*)"lockscope");
+      if (scopeNode && scopeNode->children && scopeNode->children->name) {
+        scope = [NSString stringWithUTF8String:(const char*)scopeNode->children->name];
+      }
+      xmlNodePtr typeNode = _XMLChildWithName(node->children, (const xmlChar*)"locktype");
+      if (typeNode && typeNode->children && typeNode->children->name) {
+        type = [NSString stringWithUTF8String:(const char*)typeNode->children->name];
+      }
+      xmlNodePtr ownerNode = _XMLChildWithName(node->children, (const xmlChar*)"owner");
+      if (ownerNode) {
+        ownerNode = _XMLChildWithName(ownerNode->children, (const xmlChar*)"href");
+        if (ownerNode && ownerNode->children && ownerNode->children->content) {
+          owner = [NSString stringWithUTF8String:(const char*)ownerNode->children->content];
+        }
+      }
+    } else {
+      success = NO;
+    }
+    xmlFreeDoc(document);
+  } else {
+    success = NO;
+  }
+  if (!success) {
+    NSString* string = [[NSString alloc] initWithData:request.data encoding:NSUTF8StringEncoding];
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Invalid DAV properties:\n%@", string];
+  }
+  
+  if (![scope isEqualToString:@"exclusive"] || ![type isEqualToString:@"write"] || ![depthHeader isEqualToString:@"0"]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Locking request \"%@/%@/%@\" for \"%@\" is not allowed", scope, type, depthHeader, relativePath];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if ((!_allowHidden && [itemName hasPrefix:@"."]) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Locking item name \"%@\" is not allowed", itemName];
+  }
+  
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  NSString* lockTokenHeader = [request.headers objectForKey:@"X-GCDWebServer-LockToken"];
+  if (lockTokenHeader) {
+    token = lockTokenHeader;
+  }
+#endif
+  if (!token) {
+    CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
+    CFStringRef string = CFUUIDCreateString(kCFAllocatorDefault, uuid);
+    token = [NSString stringWithFormat:@"urn:uuid:%@", (__bridge NSString*)string];
+    CFRelease(string);
+    CFRelease(uuid);
+  }
+  
+  NSMutableString* xmlString = [NSMutableString stringWithString:@"<?xml version=\"1.0\" encoding=\"utf-8\" ?>"];
+  [xmlString appendString:@"<D:prop xmlns:D=\"DAV:\">\n"];
+  [xmlString appendString:@"<D:lockdiscovery>\n<D:activelock>\n"];
+  [xmlString appendFormat:@"<D:locktype><D:%@/></D:locktype>\n", type];
+  [xmlString appendFormat:@"<D:lockscope><D:%@/></D:lockscope>\n", scope];
+  [xmlString appendFormat:@"<D:depth>%@</D:depth>\n", depthHeader];
+  if (owner) {
+    [xmlString appendFormat:@"<D:owner><D:href>%@</D:href></D:owner>\n", owner];
+  }
+  if (timeoutHeader) {
+    [xmlString appendFormat:@"<D:timeout>%@</D:timeout>\n", timeoutHeader];
+  }
+  [xmlString appendFormat:@"<D:locktoken><D:href>%@</D:href></D:locktoken>\n", token];
+  NSString* lockroot = [@"http://" stringByAppendingString:[[request.headers objectForKey:@"Host"] stringByAppendingString:[@"/" stringByAppendingString:relativePath]]];
+  [xmlString appendFormat:@"<D:lockroot><D:href>%@</D:href></D:lockroot>\n", lockroot];
+  [xmlString appendString:@"</D:activelock>\n</D:lockdiscovery>\n"];
+  [xmlString appendString:@"</D:prop>"];
+  
+  [self logVerbose:@"WebDAV pretending to lock \"%@\"", relativePath];
+  GCDWebServerDataResponse* response = [GCDWebServerDataResponse responseWithData:[xmlString dataUsingEncoding:NSUTF8StringEncoding]
+                                                                      contentType:@"application/xml; charset=\"utf-8\""];
+  return response;
+}
+
+- (GCDWebServerResponse*)performUNLOCK:(GCDWebServerRequest*)request {
+  if (!_IsMacFinder(request)) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_MethodNotAllowed message:@"UNLOCK method only allowed for Mac Finder"];
+  }
+  
+  NSString* relativePath = request.path;
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* tokenHeader = [request.headers objectForKey:@"Lock-Token"];
+  if (!tokenHeader.length) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"Missing 'Lock-Token' header"];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if ((!_allowHidden && [itemName hasPrefix:@"."]) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Unlocking item name \"%@\" is not allowed", itemName];
+  }
+  
+  [self logVerbose:@"WebDAV pretending to unlock \"%@\"", relativePath];
+  return [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_NoContent];
+}
+
+@end
+
+@implementation GCDWebDAVServer
+
+@synthesize uploadDirectory=_uploadDirectory, allowedFileExtensions=_allowedExtensions, allowHiddenItems=_allowHidden;
+
+- (instancetype)initWithUploadDirectory:(NSString*)path {
+  if ((self = [super init])) {
+    _uploadDirectory = [[path stringByStandardizingPath] copy];
+    GCDWebDAVServer* __unsafe_unretained server = self;
+    
+    // 9.1 PROPFIND method
+    [self addDefaultHandlerForMethod:@"PROPFIND" requestClass:[GCDWebServerDataRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performPROPFIND:(GCDWebServerDataRequest*)request];
+    }];
+    
+    // 9.3 MKCOL Method
+    [self addDefaultHandlerForMethod:@"MKCOL" requestClass:[GCDWebServerDataRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performMKCOL:(GCDWebServerDataRequest*)request];
+    }];
+    
+    // 9.4 GET & HEAD methods
+    [self addDefaultHandlerForMethod:@"GET" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performGET:request];
+    }];
+    
+    // 9.6 DELETE method
+    [self addDefaultHandlerForMethod:@"DELETE" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performDELETE:request];
+    }];
+    
+    // 9.7 PUT method
+    [self addDefaultHandlerForMethod:@"PUT" requestClass:[GCDWebServerFileRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performPUT:(GCDWebServerFileRequest*)request];
+    }];
+    
+    // 9.8 COPY method
+    [self addDefaultHandlerForMethod:@"COPY" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performCOPY:request isMove:NO];
+    }];
+    
+    // 9.9 MOVE method
+    [self addDefaultHandlerForMethod:@"MOVE" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performCOPY:request isMove:YES];
+    }];
+    
+    // 9.10 LOCK method
+    [self addDefaultHandlerForMethod:@"LOCK" requestClass:[GCDWebServerDataRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performLOCK:(GCDWebServerDataRequest*)request];
+    }];
+    
+    // 9.11 UNLOCK method
+    [self addDefaultHandlerForMethod:@"UNLOCK" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performUNLOCK:request];
+    }];
+    
+    // 10.1 OPTIONS method / DAV Header
+    [self addDefaultHandlerForMethod:@"OPTIONS" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server performOPTIONS:request];
+    }];
+    
+  }
+  return self;
+}
+
+@end
+
+@implementation GCDWebDAVServer (Subclassing)
+
+- (BOOL)shouldUploadFileAtPath:(NSString*)path withTemporaryFile:(NSString*)tempPath {
+  return YES;
+}
+
+- (BOOL)shouldMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  return YES;
+}
+
+- (BOOL)shouldCopyItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  return YES;
+}
+
+- (BOOL)shouldDeleteItemAtPath:(NSString*)path {
+  return YES;
+}
+
+- (BOOL)shouldCreateDirectoryAtPath:(NSString*)path {
+  return YES;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer.podspec b/local-webserver/src/ios/GCDWebServer/GCDWebServer.podspec
new file mode 100644
index 0000000..d713b26
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer.podspec
@@ -0,0 +1,49 @@
+# http://guides.cocoapods.org/syntax/podspec.html
+# http://guides.cocoapods.org/making/getting-setup-with-trunk.html
+# $ sudo gem update cocoapods
+# (optional) $ pod trunk register {email} {name} --description={computer}
+# $ pod trunk push
+# DELETE THIS SECTION BEFORE PROCEEDING!
+
+Pod::Spec.new do |s|
+  s.name     = 'GCDWebServer'
+  s.version  = '3.1'
+  s.author   =  { 'Pierre-Olivier Latour' => 'info@pol-online.net' }
+  s.license  = { :type => 'BSD', :file => 'LICENSE' }
+  s.homepage = 'https://github.com/swisspol/GCDWebServer'
+  s.summary  = 'Lightweight GCD based HTTP server for OS X & iOS (includes web based uploader & WebDAV server)'
+  
+  s.source   = { :git => 'https://github.com/swisspol/GCDWebServer.git', :tag => s.version.to_s }
+  s.ios.deployment_target = '5.0'
+  s.osx.deployment_target = '10.7'
+  s.requires_arc = true
+  
+  s.default_subspec = 'Core'
+  
+  s.subspec 'Core' do |cs|
+    cs.source_files = 'GCDWebServer/**/*.{h,m}'
+    cs.private_header_files = "GCDWebServer/Core/GCDWebServerPrivate.h"
+    cs.requires_arc = true
+    cs.ios.library = 'z'
+    cs.ios.frameworks = 'MobileCoreServices', 'CFNetwork'
+    cs.osx.library = 'z'
+    cs.osx.framework = 'SystemConfiguration'
+  end
+  
+  s.subspec 'WebDAV' do |cs|
+    cs.dependency 'GCDWebServer/Core'
+    cs.source_files = 'GCDWebDAVServer/*.{h,m}'
+    cs.requires_arc = true
+    cs.ios.library = 'xml2'
+    cs.osx.library = 'xml2'
+    cs.compiler_flags = '-I$(SDKROOT)/usr/include/libxml2'
+  end
+  
+  s.subspec 'WebUploader' do |cs|
+    cs.dependency 'GCDWebServer/Core'
+    cs.source_files = 'GCDWebUploader/*.{h,m}'
+    cs.requires_arc = true
+    cs.resource = "GCDWebUploader/GCDWebUploader.bundle"
+  end
+  
+end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer.xcodeproj/project.pbxproj b/local-webserver/src/ios/GCDWebServer/GCDWebServer.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..e358bba
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer.xcodeproj/project.pbxproj
@@ -0,0 +1,637 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXAggregateTarget section */
+		E274F876187E77D8009E0582 /* Build All */ = {
+			isa = PBXAggregateTarget;
+			buildConfigurationList = E274F879187E77D8009E0582 /* Build configuration list for PBXAggregateTarget "Build All" */;
+			buildPhases = (
+			);
+			dependencies = (
+				E274F87D187E77E5009E0582 /* PBXTargetDependency */,
+				E274F87B187E77E3009E0582 /* PBXTargetDependency */,
+			);
+			name = "Build All";
+			productName = "Build All";
+		};
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+		E208D149167B76B700500836 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E208D148167B76B700500836 /* CFNetwork.framework */; };
+		E208D1B3167BB17E00500836 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E208D1B2167BB17E00500836 /* CoreServices.framework */; };
+		E221128F1690B6470048D2B2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E221128E1690B6470048D2B2 /* main.m */; };
+		E22112951690B64F0048D2B2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E22112921690B64F0048D2B2 /* AppDelegate.m */; };
+		E22112971690B64F0048D2B2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E22112941690B64F0048D2B2 /* main.m */; };
+		E22112991690B7AA0048D2B2 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E22112981690B7AA0048D2B2 /* CFNetwork.framework */; };
+		E221129B1690B7B10048D2B2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E221129A1690B7B10048D2B2 /* UIKit.framework */; };
+		E221129D1690B7BA0048D2B2 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E221129C1690B7BA0048D2B2 /* MobileCoreServices.framework */; };
+		E28BAE3418F99C810095C089 /* GCDWebServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1718F99C810095C089 /* GCDWebServer.m */; };
+		E28BAE3518F99C810095C089 /* GCDWebServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1718F99C810095C089 /* GCDWebServer.m */; };
+		E28BAE3618F99C810095C089 /* GCDWebServerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1918F99C810095C089 /* GCDWebServerConnection.m */; };
+		E28BAE3718F99C810095C089 /* GCDWebServerConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1918F99C810095C089 /* GCDWebServerConnection.m */; };
+		E28BAE3818F99C810095C089 /* GCDWebServerFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1B18F99C810095C089 /* GCDWebServerFunctions.m */; };
+		E28BAE3918F99C810095C089 /* GCDWebServerFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1B18F99C810095C089 /* GCDWebServerFunctions.m */; };
+		E28BAE3A18F99C810095C089 /* GCDWebServerRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1F18F99C810095C089 /* GCDWebServerRequest.m */; };
+		E28BAE3B18F99C810095C089 /* GCDWebServerRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE1F18F99C810095C089 /* GCDWebServerRequest.m */; };
+		E28BAE3C18F99C810095C089 /* GCDWebServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2118F99C810095C089 /* GCDWebServerResponse.m */; };
+		E28BAE3D18F99C810095C089 /* GCDWebServerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2118F99C810095C089 /* GCDWebServerResponse.m */; };
+		E28BAE3E18F99C810095C089 /* GCDWebServerDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2418F99C810095C089 /* GCDWebServerDataRequest.m */; };
+		E28BAE3F18F99C810095C089 /* GCDWebServerDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2418F99C810095C089 /* GCDWebServerDataRequest.m */; };
+		E28BAE4018F99C810095C089 /* GCDWebServerFileRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2618F99C810095C089 /* GCDWebServerFileRequest.m */; };
+		E28BAE4118F99C810095C089 /* GCDWebServerFileRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2618F99C810095C089 /* GCDWebServerFileRequest.m */; };
+		E28BAE4218F99C810095C089 /* GCDWebServerMultiPartFormRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2818F99C810095C089 /* GCDWebServerMultiPartFormRequest.m */; };
+		E28BAE4318F99C810095C089 /* GCDWebServerMultiPartFormRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2818F99C810095C089 /* GCDWebServerMultiPartFormRequest.m */; };
+		E28BAE4418F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2A18F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m */; };
+		E28BAE4518F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2A18F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m */; };
+		E28BAE4618F99C810095C089 /* GCDWebServerDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2D18F99C810095C089 /* GCDWebServerDataResponse.m */; };
+		E28BAE4718F99C810095C089 /* GCDWebServerDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2D18F99C810095C089 /* GCDWebServerDataResponse.m */; };
+		E28BAE4818F99C810095C089 /* GCDWebServerErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2F18F99C810095C089 /* GCDWebServerErrorResponse.m */; };
+		E28BAE4918F99C810095C089 /* GCDWebServerErrorResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE2F18F99C810095C089 /* GCDWebServerErrorResponse.m */; };
+		E28BAE4A18F99C810095C089 /* GCDWebServerFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE3118F99C810095C089 /* GCDWebServerFileResponse.m */; };
+		E28BAE4B18F99C810095C089 /* GCDWebServerFileResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE3118F99C810095C089 /* GCDWebServerFileResponse.m */; };
+		E28BAE4C18F99C810095C089 /* GCDWebServerStreamedResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE3318F99C810095C089 /* GCDWebServerStreamedResponse.m */; };
+		E28BAE4D18F99C810095C089 /* GCDWebServerStreamedResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = E28BAE3318F99C810095C089 /* GCDWebServerStreamedResponse.m */; };
+		E2A0E80A18F3432600C580B1 /* GCDWebDAVServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E2A0E80918F3432600C580B1 /* GCDWebDAVServer.m */; };
+		E2A0E80B18F3432600C580B1 /* GCDWebDAVServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E2A0E80918F3432600C580B1 /* GCDWebDAVServer.m */; };
+		E2A0E80D18F35C9A00C580B1 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E2A0E80C18F35C9A00C580B1 /* libxml2.dylib */; };
+		E2A0E80F18F35CA300C580B1 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E2A0E80E18F35CA300C580B1 /* libxml2.dylib */; };
+		E2B0D4A718F13495009A7927 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E2B0D4A618F13495009A7927 /* libz.dylib */; };
+		E2B0D4A918F134A8009A7927 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E2B0D4A818F134A8009A7927 /* libz.dylib */; };
+		E2BE850A18E77ECA0061360B /* GCDWebUploader.bundle in Resources */ = {isa = PBXBuildFile; fileRef = E2BE850718E77ECA0061360B /* GCDWebUploader.bundle */; };
+		E2BE850B18E77ECA0061360B /* GCDWebUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = E2BE850918E77ECA0061360B /* GCDWebUploader.m */; };
+		E2BE850C18E785940061360B /* GCDWebUploader.m in Sources */ = {isa = PBXBuildFile; fileRef = E2BE850918E77ECA0061360B /* GCDWebUploader.m */; };
+		E2BE850F18E788990061360B /* GCDWebUploader.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = E2BE850718E77ECA0061360B /* GCDWebUploader.bundle */; };
+		E2BE851118E79DAF0061360B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2BE851018E79DAF0061360B /* SystemConfiguration.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		E274F87A187E77E3009E0582 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8DD76FA90486AB0100D96B5E;
+			remoteInfo = "GCDWebServer (Mac)";
+		};
+		E274F87C187E77E5009E0582 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = E22112591690B4DE0048D2B2;
+			remoteInfo = "GCDWebServer (iOS)";
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		E2BE850E18E788910061360B /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				E2BE850F18E788990061360B /* GCDWebUploader.bundle in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		8DD76FB20486AB0100D96B5E /* GCDWebServer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = GCDWebServer; sourceTree = BUILT_PRODUCTS_DIR; };
+		E208D148167B76B700500836 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
+		E208D1B2167BB17E00500836 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; };
+		E221125A1690B4DE0048D2B2 /* GCDWebServer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GCDWebServer.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		E221128E1690B6470048D2B2 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		E22112911690B64F0048D2B2 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		E22112921690B64F0048D2B2 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		E22112931690B64F0048D2B2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		E22112941690B64F0048D2B2 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		E22112981690B7AA0048D2B2 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; };
+		E221129A1690B7B10048D2B2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
+		E221129C1690B7BA0048D2B2 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; };
+		E26DC18719E84B2200C68DDC /* GCDWebServer.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = GCDWebServer.podspec; sourceTree = "<group>"; };
+		E26DC18819E84BC000C68DDC /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
+		E28BAE1618F99C810095C089 /* GCDWebServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServer.h; sourceTree = "<group>"; };
+		E28BAE1718F99C810095C089 /* GCDWebServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServer.m; sourceTree = "<group>"; };
+		E28BAE1818F99C810095C089 /* GCDWebServerConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerConnection.h; sourceTree = "<group>"; };
+		E28BAE1918F99C810095C089 /* GCDWebServerConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerConnection.m; sourceTree = "<group>"; };
+		E28BAE1A18F99C810095C089 /* GCDWebServerFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerFunctions.h; sourceTree = "<group>"; };
+		E28BAE1B18F99C810095C089 /* GCDWebServerFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerFunctions.m; sourceTree = "<group>"; };
+		E28BAE1C18F99C810095C089 /* GCDWebServerHTTPStatusCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerHTTPStatusCodes.h; sourceTree = "<group>"; };
+		E28BAE1D18F99C810095C089 /* GCDWebServerPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerPrivate.h; sourceTree = "<group>"; };
+		E28BAE1E18F99C810095C089 /* GCDWebServerRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerRequest.h; sourceTree = "<group>"; };
+		E28BAE1F18F99C810095C089 /* GCDWebServerRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerRequest.m; sourceTree = "<group>"; };
+		E28BAE2018F99C810095C089 /* GCDWebServerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerResponse.h; sourceTree = "<group>"; };
+		E28BAE2118F99C810095C089 /* GCDWebServerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerResponse.m; sourceTree = "<group>"; };
+		E28BAE2318F99C810095C089 /* GCDWebServerDataRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerDataRequest.h; sourceTree = "<group>"; };
+		E28BAE2418F99C810095C089 /* GCDWebServerDataRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerDataRequest.m; sourceTree = "<group>"; };
+		E28BAE2518F99C810095C089 /* GCDWebServerFileRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerFileRequest.h; sourceTree = "<group>"; };
+		E28BAE2618F99C810095C089 /* GCDWebServerFileRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerFileRequest.m; sourceTree = "<group>"; };
+		E28BAE2718F99C810095C089 /* GCDWebServerMultiPartFormRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerMultiPartFormRequest.h; sourceTree = "<group>"; };
+		E28BAE2818F99C810095C089 /* GCDWebServerMultiPartFormRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerMultiPartFormRequest.m; sourceTree = "<group>"; };
+		E28BAE2918F99C810095C089 /* GCDWebServerURLEncodedFormRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerURLEncodedFormRequest.h; sourceTree = "<group>"; };
+		E28BAE2A18F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerURLEncodedFormRequest.m; sourceTree = "<group>"; };
+		E28BAE2C18F99C810095C089 /* GCDWebServerDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerDataResponse.h; sourceTree = "<group>"; };
+		E28BAE2D18F99C810095C089 /* GCDWebServerDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerDataResponse.m; sourceTree = "<group>"; };
+		E28BAE2E18F99C810095C089 /* GCDWebServerErrorResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerErrorResponse.h; sourceTree = "<group>"; };
+		E28BAE2F18F99C810095C089 /* GCDWebServerErrorResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerErrorResponse.m; sourceTree = "<group>"; };
+		E28BAE3018F99C810095C089 /* GCDWebServerFileResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerFileResponse.h; sourceTree = "<group>"; };
+		E28BAE3118F99C810095C089 /* GCDWebServerFileResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerFileResponse.m; sourceTree = "<group>"; };
+		E28BAE3218F99C810095C089 /* GCDWebServerStreamedResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebServerStreamedResponse.h; sourceTree = "<group>"; };
+		E28BAE3318F99C810095C089 /* GCDWebServerStreamedResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebServerStreamedResponse.m; sourceTree = "<group>"; };
+		E2A0E80818F3432600C580B1 /* GCDWebDAVServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebDAVServer.h; sourceTree = "<group>"; };
+		E2A0E80918F3432600C580B1 /* GCDWebDAVServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebDAVServer.m; sourceTree = "<group>"; };
+		E2A0E80C18F35C9A00C580B1 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/lib/libxml2.dylib; sourceTree = DEVELOPER_DIR; };
+		E2A0E80E18F35CA300C580B1 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
+		E2B0D4A618F13495009A7927 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+		E2B0D4A818F134A8009A7927 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/lib/libz.dylib; sourceTree = DEVELOPER_DIR; };
+		E2BE850718E77ECA0061360B /* GCDWebUploader.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = GCDWebUploader.bundle; sourceTree = "<group>"; };
+		E2BE850818E77ECA0061360B /* GCDWebUploader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDWebUploader.h; sourceTree = "<group>"; };
+		E2BE850918E77ECA0061360B /* GCDWebUploader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDWebUploader.m; sourceTree = "<group>"; };
+		E2BE851018E79DAF0061360B /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8DD76FAD0486AB0100D96B5E /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				E2BE851118E79DAF0061360B /* SystemConfiguration.framework in Frameworks */,
+				E208D1B3167BB17E00500836 /* CoreServices.framework in Frameworks */,
+				E208D149167B76B700500836 /* CFNetwork.framework in Frameworks */,
+				E2A0E80F18F35CA300C580B1 /* libxml2.dylib in Frameworks */,
+				E2B0D4A718F13495009A7927 /* libz.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E22112571690B4DE0048D2B2 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				E221129D1690B7BA0048D2B2 /* MobileCoreServices.framework in Frameworks */,
+				E221129B1690B7B10048D2B2 /* UIKit.framework in Frameworks */,
+				E22112991690B7AA0048D2B2 /* CFNetwork.framework in Frameworks */,
+				E2A0E80D18F35C9A00C580B1 /* libxml2.dylib in Frameworks */,
+				E2B0D4A918F134A8009A7927 /* libz.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		08FB7794FE84155DC02AAC07 /* LittleCMS */ = {
+			isa = PBXGroup;
+			children = (
+				E26DC18819E84BC000C68DDC /* README.md */,
+				E26DC18719E84B2200C68DDC /* GCDWebServer.podspec */,
+				E28BAE1418F99C810095C089 /* GCDWebServer */,
+				E2A0E80718F3432600C580B1 /* GCDWebDAVServer */,
+				E2BE850618E77ECA0061360B /* GCDWebUploader */,
+				E221128D1690B6470048D2B2 /* Mac */,
+				E22112901690B64F0048D2B2 /* iOS */,
+				E282F1A7150FF0630004D7C0 /* Mac Frameworks and Libraries */,
+				E221129E1690B7CB0048D2B2 /* iOS Frameworks and Libraries */,
+				1AB674ADFE9D54B511CA2CBB /* Products */,
+			);
+			name = LittleCMS;
+			sourceTree = "<group>";
+		};
+		1AB674ADFE9D54B511CA2CBB /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8DD76FB20486AB0100D96B5E /* GCDWebServer */,
+				E221125A1690B4DE0048D2B2 /* GCDWebServer.app */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		E221128D1690B6470048D2B2 /* Mac */ = {
+			isa = PBXGroup;
+			children = (
+				E221128E1690B6470048D2B2 /* main.m */,
+			);
+			path = Mac;
+			sourceTree = "<group>";
+		};
+		E22112901690B64F0048D2B2 /* iOS */ = {
+			isa = PBXGroup;
+			children = (
+				E22112911690B64F0048D2B2 /* AppDelegate.h */,
+				E22112921690B64F0048D2B2 /* AppDelegate.m */,
+				E22112931690B64F0048D2B2 /* Info.plist */,
+				E22112941690B64F0048D2B2 /* main.m */,
+			);
+			path = iOS;
+			sourceTree = "<group>";
+		};
+		E221129E1690B7CB0048D2B2 /* iOS Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				E221129C1690B7BA0048D2B2 /* MobileCoreServices.framework */,
+				E221129A1690B7B10048D2B2 /* UIKit.framework */,
+				E22112981690B7AA0048D2B2 /* CFNetwork.framework */,
+				E2A0E80C18F35C9A00C580B1 /* libxml2.dylib */,
+				E2B0D4A818F134A8009A7927 /* libz.dylib */,
+			);
+			name = "iOS Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		E282F1A7150FF0630004D7C0 /* Mac Frameworks and Libraries */ = {
+			isa = PBXGroup;
+			children = (
+				E2BE851018E79DAF0061360B /* SystemConfiguration.framework */,
+				E208D1B2167BB17E00500836 /* CoreServices.framework */,
+				E208D148167B76B700500836 /* CFNetwork.framework */,
+				E2A0E80E18F35CA300C580B1 /* libxml2.dylib */,
+				E2B0D4A618F13495009A7927 /* libz.dylib */,
+			);
+			name = "Mac Frameworks and Libraries";
+			sourceTree = "<group>";
+		};
+		E28BAE1418F99C810095C089 /* GCDWebServer */ = {
+			isa = PBXGroup;
+			children = (
+				E28BAE1518F99C810095C089 /* Core */,
+				E28BAE2218F99C810095C089 /* Requests */,
+				E28BAE2B18F99C810095C089 /* Responses */,
+			);
+			path = GCDWebServer;
+			sourceTree = "<group>";
+		};
+		E28BAE1518F99C810095C089 /* Core */ = {
+			isa = PBXGroup;
+			children = (
+				E28BAE1618F99C810095C089 /* GCDWebServer.h */,
+				E28BAE1718F99C810095C089 /* GCDWebServer.m */,
+				E28BAE1818F99C810095C089 /* GCDWebServerConnection.h */,
+				E28BAE1918F99C810095C089 /* GCDWebServerConnection.m */,
+				E28BAE1A18F99C810095C089 /* GCDWebServerFunctions.h */,
+				E28BAE1B18F99C810095C089 /* GCDWebServerFunctions.m */,
+				E28BAE1C18F99C810095C089 /* GCDWebServerHTTPStatusCodes.h */,
+				E28BAE1D18F99C810095C089 /* GCDWebServerPrivate.h */,
+				E28BAE1E18F99C810095C089 /* GCDWebServerRequest.h */,
+				E28BAE1F18F99C810095C089 /* GCDWebServerRequest.m */,
+				E28BAE2018F99C810095C089 /* GCDWebServerResponse.h */,
+				E28BAE2118F99C810095C089 /* GCDWebServerResponse.m */,
+			);
+			path = Core;
+			sourceTree = "<group>";
+		};
+		E28BAE2218F99C810095C089 /* Requests */ = {
+			isa = PBXGroup;
+			children = (
+				E28BAE2318F99C810095C089 /* GCDWebServerDataRequest.h */,
+				E28BAE2418F99C810095C089 /* GCDWebServerDataRequest.m */,
+				E28BAE2518F99C810095C089 /* GCDWebServerFileRequest.h */,
+				E28BAE2618F99C810095C089 /* GCDWebServerFileRequest.m */,
+				E28BAE2718F99C810095C089 /* GCDWebServerMultiPartFormRequest.h */,
+				E28BAE2818F99C810095C089 /* GCDWebServerMultiPartFormRequest.m */,
+				E28BAE2918F99C810095C089 /* GCDWebServerURLEncodedFormRequest.h */,
+				E28BAE2A18F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m */,
+			);
+			path = Requests;
+			sourceTree = "<group>";
+		};
+		E28BAE2B18F99C810095C089 /* Responses */ = {
+			isa = PBXGroup;
+			children = (
+				E28BAE2C18F99C810095C089 /* GCDWebServerDataResponse.h */,
+				E28BAE2D18F99C810095C089 /* GCDWebServerDataResponse.m */,
+				E28BAE2E18F99C810095C089 /* GCDWebServerErrorResponse.h */,
+				E28BAE2F18F99C810095C089 /* GCDWebServerErrorResponse.m */,
+				E28BAE3018F99C810095C089 /* GCDWebServerFileResponse.h */,
+				E28BAE3118F99C810095C089 /* GCDWebServerFileResponse.m */,
+				E28BAE3218F99C810095C089 /* GCDWebServerStreamedResponse.h */,
+				E28BAE3318F99C810095C089 /* GCDWebServerStreamedResponse.m */,
+			);
+			path = Responses;
+			sourceTree = "<group>";
+		};
+		E2A0E80718F3432600C580B1 /* GCDWebDAVServer */ = {
+			isa = PBXGroup;
+			children = (
+				E2A0E80818F3432600C580B1 /* GCDWebDAVServer.h */,
+				E2A0E80918F3432600C580B1 /* GCDWebDAVServer.m */,
+			);
+			path = GCDWebDAVServer;
+			sourceTree = "<group>";
+		};
+		E2BE850618E77ECA0061360B /* GCDWebUploader */ = {
+			isa = PBXGroup;
+			children = (
+				E2BE850718E77ECA0061360B /* GCDWebUploader.bundle */,
+				E2BE850818E77ECA0061360B /* GCDWebUploader.h */,
+				E2BE850918E77ECA0061360B /* GCDWebUploader.m */,
+			);
+			path = GCDWebUploader;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8DD76FA90486AB0100D96B5E /* GCDWebServer (Mac) */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "GCDWebServer (Mac)" */;
+			buildPhases = (
+				E21F038418FB37D80043AD1E /* Delete GCDWebUploader.bundle */,
+				E2BE850E18E788910061360B /* CopyFiles */,
+				8DD76FAB0486AB0100D96B5E /* Sources */,
+				8DD76FAD0486AB0100D96B5E /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "GCDWebServer (Mac)";
+			productInstallPath = "$(HOME)/bin";
+			productName = LittleCMS;
+			productReference = 8DD76FB20486AB0100D96B5E /* GCDWebServer */;
+			productType = "com.apple.product-type.tool";
+		};
+		E22112591690B4DE0048D2B2 /* GCDWebServer (iOS) */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = E22112751690B4DF0048D2B2 /* Build configuration list for PBXNativeTarget "GCDWebServer (iOS)" */;
+			buildPhases = (
+				E2BE850418E77B730061360B /* Resources */,
+				E22112561690B4DE0048D2B2 /* Sources */,
+				E22112571690B4DE0048D2B2 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "GCDWebServer (iOS)";
+			productName = GCDWebServer;
+			productReference = E221125A1690B4DE0048D2B2 /* GCDWebServer.app */;
+			productType = "com.apple.product-type.application";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		08FB7793FE84155DC02AAC07 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0610;
+			};
+			buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "GCDWebServer" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 1;
+			knownRegions = (
+				English,
+				Japanese,
+				French,
+				German,
+				en,
+			);
+			mainGroup = 08FB7794FE84155DC02AAC07 /* LittleCMS */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				E274F876187E77D8009E0582 /* Build All */,
+				8DD76FA90486AB0100D96B5E /* GCDWebServer (Mac) */,
+				E22112591690B4DE0048D2B2 /* GCDWebServer (iOS) */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		E2BE850418E77B730061360B /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				E2BE850A18E77ECA0061360B /* GCDWebUploader.bundle in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		E21F038418FB37D80043AD1E /* Delete GCDWebUploader.bundle */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Delete GCDWebUploader.bundle";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cd \"$BUILT_PRODUCTS_DIR\"\nrm -rf \"GCDWebUploader.bundle\"\n";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8DD76FAB0486AB0100D96B5E /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				E28BAE4618F99C810095C089 /* GCDWebServerDataResponse.m in Sources */,
+				E28BAE3818F99C810095C089 /* GCDWebServerFunctions.m in Sources */,
+				E28BAE4A18F99C810095C089 /* GCDWebServerFileResponse.m in Sources */,
+				E28BAE4418F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m in Sources */,
+				E28BAE3A18F99C810095C089 /* GCDWebServerRequest.m in Sources */,
+				E28BAE3418F99C810095C089 /* GCDWebServer.m in Sources */,
+				E28BAE3618F99C810095C089 /* GCDWebServerConnection.m in Sources */,
+				E28BAE3C18F99C810095C089 /* GCDWebServerResponse.m in Sources */,
+				E28BAE4018F99C810095C089 /* GCDWebServerFileRequest.m in Sources */,
+				E28BAE4C18F99C810095C089 /* GCDWebServerStreamedResponse.m in Sources */,
+				E28BAE3E18F99C810095C089 /* GCDWebServerDataRequest.m in Sources */,
+				E2A0E80A18F3432600C580B1 /* GCDWebDAVServer.m in Sources */,
+				E28BAE4218F99C810095C089 /* GCDWebServerMultiPartFormRequest.m in Sources */,
+				E2BE850C18E785940061360B /* GCDWebUploader.m in Sources */,
+				E221128F1690B6470048D2B2 /* main.m in Sources */,
+				E28BAE4818F99C810095C089 /* GCDWebServerErrorResponse.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E22112561690B4DE0048D2B2 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				E2A0E80B18F3432600C580B1 /* GCDWebDAVServer.m in Sources */,
+				E28BAE4918F99C810095C089 /* GCDWebServerErrorResponse.m in Sources */,
+				E28BAE4518F99C810095C089 /* GCDWebServerURLEncodedFormRequest.m in Sources */,
+				E28BAE4B18F99C810095C089 /* GCDWebServerFileResponse.m in Sources */,
+				E28BAE3918F99C810095C089 /* GCDWebServerFunctions.m in Sources */,
+				E28BAE4118F99C810095C089 /* GCDWebServerFileRequest.m in Sources */,
+				E28BAE4D18F99C810095C089 /* GCDWebServerStreamedResponse.m in Sources */,
+				E28BAE3F18F99C810095C089 /* GCDWebServerDataRequest.m in Sources */,
+				E2BE850B18E77ECA0061360B /* GCDWebUploader.m in Sources */,
+				E22112951690B64F0048D2B2 /* AppDelegate.m in Sources */,
+				E28BAE4718F99C810095C089 /* GCDWebServerDataResponse.m in Sources */,
+				E28BAE3D18F99C810095C089 /* GCDWebServerResponse.m in Sources */,
+				E28BAE3518F99C810095C089 /* GCDWebServer.m in Sources */,
+				E28BAE3718F99C810095C089 /* GCDWebServerConnection.m in Sources */,
+				E28BAE3B18F99C810095C089 /* GCDWebServerRequest.m in Sources */,
+				E22112971690B64F0048D2B2 /* main.m in Sources */,
+				E28BAE4318F99C810095C089 /* GCDWebServerMultiPartFormRequest.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		E274F87B187E77E3009E0582 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8DD76FA90486AB0100D96B5E /* GCDWebServer (Mac) */;
+			targetProxy = E274F87A187E77E3009E0582 /* PBXContainerItemProxy */;
+		};
+		E274F87D187E77E5009E0582 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = E22112591690B4DE0048D2B2 /* GCDWebServer (iOS) */;
+			targetProxy = E274F87C187E77E5009E0582 /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+		1DEB928608733DD80010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				PRODUCT_NAME = GCDWebServer;
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		1DEB928708733DD80010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				MACOSX_DEPLOYMENT_TARGET = 10.7;
+				PRODUCT_NAME = GCDWebServer;
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		1DEB928A08733DD80010E9CD /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
+				GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __GCDWEBSERVER_ENABLE_TESTING__;
+				HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2";
+				ONLY_ACTIVE_ARCH = YES;
+				WARNING_CFLAGS = (
+					"-Wall",
+					"-Weverything",
+					"-Wshadow",
+					"-Wshorten-64-to-32",
+					"-Wno-vla",
+					"-Wno-explicit-ownership-type",
+					"-Wno-gnu-statement-expression",
+					"-Wno-direct-ivar-access",
+					"-Wno-implicit-retain-self",
+					"-Wno-assign-enum",
+					"-Wno-format-nonliteral",
+					"-Wno-cast-align",
+					"-Wno-padded",
+					"-Wno-documentation",
+					"-Wno-documentation-unknown-command",
+					"-Wno-objc-missing-property-synthesis",
+				);
+			};
+			name = Debug;
+		};
+		1DEB928B08733DD80010E9CD /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CLANG_ENABLE_OBJC_ARC = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = __GCDWEBSERVER_ENABLE_TESTING__;
+				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
+				HEADER_SEARCH_PATHS = "$(SDKROOT)/usr/include/libxml2";
+				WARNING_CFLAGS = "-Wall";
+			};
+			name = Release;
+		};
+		E22112761690B4DF0048D2B2 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				INFOPLIST_FILE = iOS/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+				PRODUCT_NAME = GCDWebServer;
+				PROVISIONING_PROFILE = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		E22112771690B4DF0048D2B2 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				INFOPLIST_FILE = iOS/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 5.0;
+				PRODUCT_NAME = GCDWebServer;
+				PROVISIONING_PROFILE = "";
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
+		E274F877187E77D8009E0582 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		E274F878187E77D8009E0582 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "GCDWebServer (Mac)" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928608733DD80010E9CD /* Debug */,
+				1DEB928708733DD80010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "GCDWebServer" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				1DEB928A08733DD80010E9CD /* Debug */,
+				1DEB928B08733DD80010E9CD /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		E22112751690B4DF0048D2B2 /* Build configuration list for PBXNativeTarget "GCDWebServer (iOS)" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				E22112761690B4DF0048D2B2 /* Debug */,
+				E22112771690B4DF0048D2B2 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		E274F879187E77D8009E0582 /* Build configuration list for PBXAggregateTarget "Build All" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				E274F877187E77D8009E0582 /* Debug */,
+				E274F878187E77D8009E0582 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.h
new file mode 100644
index 0000000..ff414c9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.h
@@ -0,0 +1,567 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <TargetConditionals.h>
+
+#import "GCDWebServerRequest.h"
+#import "GCDWebServerResponse.h"
+
+/**
+ *  The GCDWebServerMatchBlock is called for every handler added to the
+ *  GCDWebServer whenever a new HTTP request has started (i.e. HTTP headers have
+ *  been received). The block is passed the basic info for the request (HTTP method,
+ *  URL, headers...) and must decide if it wants to handle it or not.
+ *
+ *  If the handler can handle the request, the block must return a new
+ *  GCDWebServerRequest instance created with the same basic info.
+ *  Otherwise, it simply returns nil.
+ */
+typedef GCDWebServerRequest* (^GCDWebServerMatchBlock)(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery);
+
+/**
+ *  The GCDWebServerProcessBlock is called after the HTTP request has been fully
+ *  received (i.e. the entire HTTP body has been read). The block is passed the
+ *  GCDWebServerRequest created at the previous step by the GCDWebServerMatchBlock.
+ *
+ *  The block must return a GCDWebServerResponse or nil on error, which will
+ *  result in a 500 HTTP status code returned to the client. It's however
+ *  recommended to return a GCDWebServerErrorResponse on error so more useful
+ *  information can be returned to the client.
+ */
+typedef GCDWebServerResponse* (^GCDWebServerProcessBlock)(GCDWebServerRequest* request);
+
+/**
+ *  The GCDWebServerAsynchronousProcessBlock works like the GCDWebServerProcessBlock
+ *  except the GCDWebServerResponse can be returned to the server at a later time
+ *  allowing for asynchronous generation of the response.
+ *
+ *  The block must eventually call "completionBlock" passing a GCDWebServerResponse
+ *  or nil on error, which will result in a 500 HTTP status code returned to the client.
+ *  It's however recommended to return a GCDWebServerErrorResponse on error so more
+ *  useful information can be returned to the client.
+ */
+typedef void (^GCDWebServerCompletionBlock)(GCDWebServerResponse* response);
+typedef void (^GCDWebServerAsyncProcessBlock)(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock);
+
+/**
+ *  The port used by the GCDWebServer (NSNumber / NSUInteger).
+ *
+ *  The default value is 0 i.e. let the OS pick a random port.
+ */
+extern NSString* const GCDWebServerOption_Port;
+
+/**
+ *  The Bonjour name used by the GCDWebServer (NSString). If set to an empty string,
+ *  the name will automatically take the value of the GCDWebServerOption_ServerName
+ *  option. If this option is set to nil, Bonjour will be disabled.
+ *
+ *  The default value is an empty string.
+ */
+extern NSString* const GCDWebServerOption_BonjourName;
+
+/**
+ *  The Bonjour service type used by the GCDWebServer (NSString).
+ *
+ *  The default value is "_http._tcp", the service type for HTTP web servers.
+ */
+extern NSString* const GCDWebServerOption_BonjourType;
+
+/**
+ *  The maximum number of incoming HTTP requests that can be queued waiting to
+ *  be handled before new ones are dropped (NSNumber / NSUInteger).
+ *
+ *  The default value is 16.
+ */
+extern NSString* const GCDWebServerOption_MaxPendingConnections;
+
+/**
+ *  The value for "Server" HTTP header used by the GCDWebServer (NSString).
+ *
+ *  The default value is the GCDWebServer class name.
+ */
+extern NSString* const GCDWebServerOption_ServerName;
+
+/**
+ *  The authentication method used by the GCDWebServer
+ *  (one of "GCDWebServerAuthenticationMethod_...").
+ *
+ *  The default value is nil i.e. authentication is disabled.
+ */
+extern NSString* const GCDWebServerOption_AuthenticationMethod;
+
+/**
+ *  The authentication realm used by the GCDWebServer (NSString).
+ *
+ *  The default value is the same as the GCDWebServerOption_ServerName option.
+ */
+extern NSString* const GCDWebServerOption_AuthenticationRealm;
+
+/**
+ *  The authentication accounts used by the GCDWebServer
+ *  (NSDictionary of username / password pairs).
+ *
+ *  The default value is nil i.e. no accounts.
+ */
+extern NSString* const GCDWebServerOption_AuthenticationAccounts;
+
+/**
+ *  The class used by the GCDWebServer when instantiating GCDWebServerConnection
+ *  (subclass of GCDWebServerConnection).
+ *
+ *  The default value is the GCDWebServerConnection class.
+ */
+extern NSString* const GCDWebServerOption_ConnectionClass;
+
+/**
+ *  Allow the GCDWebServer to pretend "HEAD" requests are actually "GET" ones
+ *  and automatically discard the HTTP body of the response (NSNumber / BOOL).
+ *
+ *  The default value is YES.
+ */
+extern NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET;
+
+/**
+ *  The interval expressed in seconds used by the GCDWebServer to decide how to
+ *  coalesce calls to -webServerDidConnect: and -webServerDidDisconnect:
+ *  (NSNumber / double). Coalescing will be disabled if the interval is <= 0.0.
+ *
+ *  The default value is 1.0 second.
+ */
+extern NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval;
+
+#if TARGET_OS_IPHONE
+
+/**
+ *  Enables the GCDWebServer to automatically suspend itself (as if -stop was
+ *  called) when the iOS app goes into the background and the last
+ *  GCDWebServerConnection is closed, then resume itself (as if -start was called)
+ *  when the iOS app comes back to the foreground (NSNumber / BOOL).
+ *
+ *  See the README.md file for more information about this option.
+ *
+ *  The default value is YES.
+ *
+ *  @warning The running property will be NO while the GCDWebServer is suspended.
+ */
+extern NSString* const GCDWebServerOption_AutomaticallySuspendInBackground;
+
+#endif
+
+/**
+ *  HTTP Basic Authentication scheme (see https://tools.ietf.org/html/rfc2617).
+ *
+ *  @warning Use of this authentication scheme is not recommended as the
+ *  passwords are sent in clear.
+ */
+extern NSString* const GCDWebServerAuthenticationMethod_Basic;
+
+/**
+ *  HTTP Digest Access Authentication scheme (see https://tools.ietf.org/html/rfc2617).
+ */
+extern NSString* const GCDWebServerAuthenticationMethod_DigestAccess;
+
+@class GCDWebServer;
+
+/**
+ *  Delegate methods for GCDWebServer.
+ *
+ *  @warning These methods are always called on the main thread in a serialized way.
+ */
+@protocol GCDWebServerDelegate <NSObject>
+@optional
+
+/**
+ *  This method is called after the server has successfully started.
+ */
+- (void)webServerDidStart:(GCDWebServer*)server;
+
+/**
+ *  This method is called after the Bonjour registration for the server has
+ *  successfully completed.
+ */
+- (void)webServerDidCompleteBonjourRegistration:(GCDWebServer*)server;
+
+/**
+ *  This method is called when the first GCDWebServerConnection is opened by the
+ *  server to serve a series of HTTP requests.
+ *
+ *  A series of HTTP requests is considered ongoing as long as new HTTP requests
+ *  keep coming (and new GCDWebServerConnection instances keep being opened),
+ *  until before the last HTTP request has been responded to (and the
+ *  corresponding last GCDWebServerConnection closed).
+ */
+- (void)webServerDidConnect:(GCDWebServer*)server;
+
+/**
+ *  This method is called when the last GCDWebServerConnection is closed after
+ *  the server has served a series of HTTP requests.
+ *
+ *  The GCDWebServerOption_ConnectedStateCoalescingInterval option can be used
+ *  to have the server wait some extra delay before considering that the series
+ *  of HTTP requests has ended (in case there some latency between consecutive
+ *  requests). This effectively coalesces the calls to -webServerDidConnect:
+ *  and -webServerDidDisconnect:.
+ */
+- (void)webServerDidDisconnect:(GCDWebServer*)server;
+
+/**
+ *  This method is called after the server has stopped.
+ */
+- (void)webServerDidStop:(GCDWebServer*)server;
+
+@end
+
+/**
+ *  The GCDWebServer class listens for incoming HTTP requests on a given port,
+ *  then passes each one to a "handler" capable of generating an HTTP response
+ *  for it, which is then sent back to the client.
+ *
+ *  GCDWebServer instances can be created and used from any thread but it's
+ *  recommended to have the main thread's runloop be running so internal callbacks
+ *  can be handled e.g. for Bonjour registration.
+ *
+ *  See the README.md file for more information about the architecture of GCDWebServer.
+ */
+@interface GCDWebServer : NSObject
+
+/**
+ *  Sets the delegate for the server.
+ */
+@property(nonatomic, assign) id<GCDWebServerDelegate> delegate;
+
+/**
+ *  Returns YES if the server is currently running.
+ */
+@property(nonatomic, readonly, getter=isRunning) BOOL running;
+
+/**
+ *  Returns the port used by the server.
+ *
+ *  @warning This property is only valid if the server is running.
+ */
+@property(nonatomic, readonly) NSUInteger port;
+
+/**
+ *  Returns the Bonjour name used by the server.
+ *
+ *  @warning This property is only valid if the server is running and Bonjour
+ *  registration has successfully completed, which can take up to a few seconds.
+ */
+@property(nonatomic, readonly) NSString* bonjourName;
+
+/**
+ *  Returns the Bonjour service type used by the server.
+ *
+ *  @warning This property is only valid if the server is running and Bonjour
+ *  registration has successfully completed, which can take up to a few seconds.
+ */
+@property(nonatomic, readonly) NSString* bonjourType;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)init;
+
+/**
+ *  Adds to the server a handler that generates responses synchronously when handling incoming HTTP requests.
+ *
+ *  Handlers are called in a LIFO queue, so if multiple handlers can potentially
+ *  respond to a given request, the latest added one wins.
+ *
+ *  @warning Addling handlers while the server is running is not allowed.
+ */
+- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock;
+
+/**
+ *  Adds to the server a handler that generates responses asynchronously when handling incoming HTTP requests.
+ *
+ *  Handlers are called in a LIFO queue, so if multiple handlers can potentially
+ *  respond to a given request, the latest added one wins.
+ *
+ *  @warning Addling handlers while the server is running is not allowed.
+ */
+- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock asyncProcessBlock:(GCDWebServerAsyncProcessBlock)processBlock;
+
+/**
+ *  Removes all handlers previously added to the server.
+ *
+ *  @warning Removing handlers while the server is running is not allowed.
+ */
+- (void)removeAllHandlers;
+
+/**
+ *  Starts the server with explicit options. This method is the designated way
+ *  to start the server.
+ *
+ *  Returns NO if the server failed to start and sets "error" argument if not NULL.
+ */
+- (BOOL)startWithOptions:(NSDictionary*)options error:(NSError**)error;
+
+/**
+ *  Stops the server and prevents it to accepts new HTTP requests.
+ *
+ *  @warning Stopping the server does not abort GCDWebServerConnection instances
+ *  currently handling already received HTTP requests. These connections will
+ *  continue to execute normally until completion.
+ */
+- (void)stop;
+
+@end
+
+@interface GCDWebServer (Extensions)
+
+/**
+ *  Returns the server's URL.
+ *
+ *  @warning This property is only valid if the server is running.
+ */
+@property(nonatomic, readonly) NSURL* serverURL;
+
+/**
+ *  Returns the server's Bonjour URL.
+ *
+ *  @warning This property is only valid if the server is running and Bonjour
+ *  registration has successfully completed, which can take up to a few seconds.
+ *  Also be aware this property will not automatically update if the Bonjour hostname
+ *  has been dynamically changed after the server started running (this should be rare).
+ */
+@property(nonatomic, readonly) NSURL* bonjourServerURL;
+
+/**
+ *  Starts the server on port 8080 (OS X & iOS Simulator) or port 80 (iOS)
+ *  using the default Bonjour name.
+ *
+ *  Returns NO if the server failed to start.
+ */
+- (BOOL)start;
+
+/**
+ *  Starts the server on a given port and with a specific Bonjour name.
+ *  Pass a nil Bonjour name to disable Bonjour entirely or an empty string to
+ *  use the default name.
+ *
+ *  Returns NO if the server failed to start.
+ */
+- (BOOL)startWithPort:(NSUInteger)port bonjourName:(NSString*)name;
+
+#if !TARGET_OS_IPHONE
+
+/**
+ *  Runs the server synchronously using -startWithPort:bonjourName: until a
+ *  SIGINT signal is received i.e. Ctrl-C. This method is intended to be used
+ *  by command line tools.
+ *
+ *  Returns NO if the server failed to start.
+ *
+ *  @warning This method must be used from the main thread only.
+ */
+- (BOOL)runWithPort:(NSUInteger)port bonjourName:(NSString*)name;
+
+/**
+ *  Runs the server synchronously using -startWithOptions: until a SIGTERM or
+ *  SIGINT signal is received i.e. Ctrl-C in Terminal. This method is intended to
+ *  be used by command line tools.
+ *
+ *  Returns NO if the server failed to start and sets "error" argument if not NULL.
+ *
+ *  @warning This method must be used from the main thread only.
+ */
+- (BOOL)runWithOptions:(NSDictionary*)options error:(NSError**)error;
+
+#endif
+
+@end
+
+@interface GCDWebServer (Handlers)
+
+/**
+ *  Adds a default handler to the server to handle all incoming HTTP requests
+ *  with a given HTTP method and generate responses synchronously.
+ */
+- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
+
+/**
+ *  Adds a default handler to the server to handle all incoming HTTP requests
+ *  with a given HTTP method and generate responses asynchronously.
+ */
+- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block;
+
+/**
+ *  Adds a handler to the server to handle incoming HTTP requests with a given
+ *  HTTP method and a specific case-insensitive path  and generate responses
+ *  synchronously.
+ */
+- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
+
+/**
+ *  Adds a handler to the server to handle incoming HTTP requests with a given
+ *  HTTP method and a specific case-insensitive path and generate responses
+ *  asynchronously.
+ */
+- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block;
+
+/**
+ *  Adds a handler to the server to handle incoming HTTP requests with a given
+ *  HTTP method and a path matching a case-insensitive regular expression and
+ *  generate responses synchronously.
+ */
+- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block;
+
+/**
+ *  Adds a handler to the server to handle incoming HTTP requests with a given
+ *  HTTP method and a path matching a case-insensitive regular expression and
+ *  generate responses asynchronously.
+ */
+- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block;
+
+@end
+
+@interface GCDWebServer (GETHandlers)
+
+/**
+ *  Adds a handler to the server to respond to incoming "GET" HTTP requests
+ *  with a specific case-insensitive path with in-memory data.
+ */
+- (void)addGETHandlerForPath:(NSString*)path staticData:(NSData*)staticData contentType:(NSString*)contentType cacheAge:(NSUInteger)cacheAge;
+
+/**
+ *  Adds a handler to the server to respond to incoming "GET" HTTP requests
+ *  with a specific case-insensitive path with a file.
+ */
+- (void)addGETHandlerForPath:(NSString*)path filePath:(NSString*)filePath isAttachment:(BOOL)isAttachment cacheAge:(NSUInteger)cacheAge allowRangeRequests:(BOOL)allowRangeRequests;
+
+/**
+ *  Adds a handler to the server to respond to incoming "GET" HTTP requests
+ *  with a case-insensitive path inside a base path with the corresponding file
+ *  inside a local directory. If no local file matches the request path, a 401
+ *  HTTP status code is returned to the client.
+ *
+ *  The "indexFilename" argument allows to specify an "index" file name to use
+ *  when the request path corresponds to a directory.
+ */
+- (void)addGETHandlerForBasePath:(NSString*)basePath directoryPath:(NSString*)directoryPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge allowRangeRequests:(BOOL)allowRangeRequests;
+
+@end
+
+/**
+ *  GCDWebServer provides its own built-in logging facility which is used by
+ *  default. It simply sends log messages to stderr assuming it is connected
+ *  to a terminal type device.
+ *
+ *  GCDWebServer is also compatible with a limited set of third-party logging
+ *  facilities. If one of them is available at compile time, GCDWebServer will
+ *  automatically use it in place of the built-in one.
+ *
+ *  Currently supported third-party logging facilities are:
+ *  - XLFacility (by the same author as GCDWebServer): https://github.com/swisspol/XLFacility
+ *  - CocoaLumberjack: https://github.com/CocoaLumberjack/CocoaLumberjack
+ *
+ *  For both the built-in logging facility and CocoaLumberjack, the default
+ *  logging level is INFO (or DEBUG if the preprocessor constant "DEBUG"
+ *  evaluates to non-zero at compile time).
+ *
+ *  It's possible to have GCDWebServer use a custom logging facility by defining
+ *  the "__GCDWEBSERVER_LOGGING_HEADER__" preprocessor constant in Xcode build
+ *  settings to the name of a custom header file (escaped like \"MyLogging.h\").
+ *  This header file must define the following set of macros:
+ *
+ *    GWS_LOG_DEBUG(...)
+ *    GWS_LOG_VERBOSE(...)
+ *    GWS_LOG_INFO(...)
+ *    GWS_LOG_WARNING(...)
+ *    GWS_LOG_ERROR(...)
+ *    GWS_LOG_EXCEPTION(__EXCEPTION__)
+ *
+ *  IMPORTANT: Except for GWS_LOG_EXCEPTION() which gets passed an NSException,
+ *  these macros must behave like NSLog(). Furthermore the GWS_LOG_DEBUG() macro
+ *  should not do anything unless the preprocessor constant "DEBUG" evaluates to
+ *  non-zero.
+ *
+ *  The logging methods below send log messages to the same logging facility
+ *  used by GCDWebServer. They can be used for consistency wherever you interact
+ *  with GCDWebServer in your code (e.g. in the implementation of handlers).
+ */
+@interface GCDWebServer (Logging)
+
+/**
+ *  Sets the log level of the logging facility below which log messages are discarded.
+ *
+ *  @warning The interpretation of the "level" argument depends on the logging
+ *  facility used at compile time.
+ */
++ (void)setLogLevel:(int)level;
+
+/**
+ *  Logs a message to the logging facility at the VERBOSE level.
+ */
+- (void)logVerbose:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+
+/**
+ *  Logs a message to the logging facility at the INFO level.
+ */
+- (void)logInfo:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+
+/**
+ *  Logs a message to the logging facility at the WARNING level.
+ */
+- (void)logWarning:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+
+/**
+ *  Logs a message to the logging facility at the ERROR level.
+ */
+- (void)logError:(NSString*)format, ... NS_FORMAT_FUNCTION(1,2);
+
+/**
+ *  Logs an exception to the logging facility at the EXCEPTION level.
+ */
+- (void)logException:(NSException*)exception;
+
+@end
+
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+
+@interface GCDWebServer (Testing)
+
+/**
+ *  Activates recording of HTTP requests and responses which create files in the
+ *  current directory containing the raw data for all requests and responses.
+ *
+ *  @warning The current directory must not contain any prior recording files.
+ */
+@property(nonatomic, getter=isRecordingEnabled) BOOL recordingEnabled;
+
+/**
+ *  Runs tests by playing back pre-recorded HTTP requests in the given directory
+ *  and comparing the generated responses with the pre-recorded ones.
+ *
+ *  Returns the number of failed tests or -1 if server failed to start.
+ */
+- (NSInteger)runTestsWithOptions:(NSDictionary*)options inDirectory:(NSString*)path;
+
+@end
+
+#endif
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.m
new file mode 100644
index 0000000..852a9db
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServer.m
@@ -0,0 +1,1214 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <TargetConditionals.h>
+#if TARGET_OS_IPHONE
+#import <UIKit/UIKit.h>
+#else
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+#import <AppKit/AppKit.h>
+#endif
+#endif
+#import <netinet/in.h>
+
+#import "GCDWebServerPrivate.h"
+
+#if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
+#define kDefaultPort 80
+#else
+#define kDefaultPort 8080
+#endif
+
+NSString* const GCDWebServerOption_Port = @"Port";
+NSString* const GCDWebServerOption_BonjourName = @"BonjourName";
+NSString* const GCDWebServerOption_BonjourType = @"BonjourType";
+NSString* const GCDWebServerOption_MaxPendingConnections = @"MaxPendingConnections";
+NSString* const GCDWebServerOption_ServerName = @"ServerName";
+NSString* const GCDWebServerOption_AuthenticationMethod = @"AuthenticationMethod";
+NSString* const GCDWebServerOption_AuthenticationRealm = @"AuthenticationRealm";
+NSString* const GCDWebServerOption_AuthenticationAccounts = @"AuthenticationAccounts";
+NSString* const GCDWebServerOption_ConnectionClass = @"ConnectionClass";
+NSString* const GCDWebServerOption_AutomaticallyMapHEADToGET = @"AutomaticallyMapHEADToGET";
+NSString* const GCDWebServerOption_ConnectedStateCoalescingInterval = @"ConnectedStateCoalescingInterval";
+#if TARGET_OS_IPHONE
+NSString* const GCDWebServerOption_AutomaticallySuspendInBackground = @"AutomaticallySuspendInBackground";
+#endif
+
+NSString* const GCDWebServerAuthenticationMethod_Basic = @"Basic";
+NSString* const GCDWebServerAuthenticationMethod_DigestAccess = @"DigestAccess";
+
+#if defined(__GCDWEBSERVER_LOGGING_FACILITY_BUILTIN__)
+#if DEBUG
+GCDWebServerLoggingLevel GCDWebServerLogLevel = kGCDWebServerLoggingLevel_Debug;
+#else
+GCDWebServerLoggingLevel GCDWebServerLogLevel = kGCDWebServerLoggingLevel_Info;
+#endif
+#elif defined(__GCDWEBSERVER_LOGGING_FACILITY_COCOALUMBERJACK__)
+#if DEBUG
+int GCDWebServerLogLevel = LOG_LEVEL_DEBUG;
+#else
+int GCDWebServerLogLevel = LOG_LEVEL_INFO;
+#endif
+#endif
+
+#if !TARGET_OS_IPHONE
+static BOOL _run;
+#endif
+
+#ifdef __GCDWEBSERVER_LOGGING_FACILITY_BUILTIN__
+
+void GCDWebServerLogMessage(GCDWebServerLoggingLevel level, NSString* format, ...) {
+  static const char* levelNames[] = {"DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR", "EXCEPTION"};
+  static int enableLogging = -1;
+  if (enableLogging < 0) {
+    enableLogging = (isatty(STDERR_FILENO) ? 1 : 0);
+  }
+  if (enableLogging) {
+    va_list arguments;
+    va_start(arguments, format);
+    NSString* message = [[NSString alloc] initWithFormat:format arguments:arguments];
+    va_end(arguments);
+    fprintf(stderr, "[%s] %s\n", levelNames[level], [message UTF8String]);
+  }
+}
+
+#endif
+
+#if !TARGET_OS_IPHONE
+
+static void _SignalHandler(int signal) {
+  _run = NO;
+  printf("\n");
+}
+
+#endif
+
+#if !TARGET_OS_IPHONE || defined(__GCDWEBSERVER_ENABLE_TESTING__)
+
+// This utility function is used to ensure scheduled callbacks on the main thread are called when running the server synchronously
+// https://developer.apple.com/library/mac/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html
+// The main queue works with the application’s run loop to interleave the execution of queued tasks with the execution of other event sources attached to the run loop
+// TODO: Ensure all scheduled blocks on the main queue are also executed
+static void _ExecuteMainThreadRunLoopSources() {
+  SInt32 result;
+  do {
+    result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.0, true);
+  } while (result == kCFRunLoopRunHandledSource);
+}
+
+#endif
+
+@interface GCDWebServerHandler () {
+@private
+  GCDWebServerMatchBlock _matchBlock;
+  GCDWebServerAsyncProcessBlock _asyncProcessBlock;
+}
+@end
+
+@implementation GCDWebServerHandler
+
+@synthesize matchBlock=_matchBlock, asyncProcessBlock=_asyncProcessBlock;
+
+- (id)initWithMatchBlock:(GCDWebServerMatchBlock)matchBlock asyncProcessBlock:(GCDWebServerAsyncProcessBlock)processBlock {
+  if ((self = [super init])) {
+    _matchBlock = [matchBlock copy];
+    _asyncProcessBlock = [processBlock copy];
+  }
+  return self;
+}
+
+@end
+
+@interface GCDWebServer () {
+@private
+  id<GCDWebServerDelegate> __unsafe_unretained _delegate;
+  dispatch_queue_t _syncQueue;
+  dispatch_group_t _sourceGroup;
+  NSMutableArray* _handlers;
+  NSInteger _activeConnections;  // Accessed through _syncQueue only
+  BOOL _connected;  // Accessed on main thread only
+  CFRunLoopTimerRef _disconnectTimer;  // Accessed on main thread only
+  
+  NSDictionary* _options;
+  NSString* _serverName;
+  NSString* _authenticationRealm;
+  NSMutableDictionary* _authenticationBasicAccounts;
+  NSMutableDictionary* _authenticationDigestAccounts;
+  Class _connectionClass;
+  BOOL _mapHEADToGET;
+  CFTimeInterval _disconnectDelay;
+  NSUInteger _port;
+  dispatch_source_t _source4;
+  dispatch_source_t _source6;
+  CFNetServiceRef _registrationService;
+  CFNetServiceRef _resolutionService;
+#if TARGET_OS_IPHONE
+  BOOL _suspendInBackground;
+  UIBackgroundTaskIdentifier _backgroundTask;
+#endif
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  BOOL _recording;
+#endif
+}
+@end
+
+@implementation GCDWebServer
+
+@synthesize delegate=_delegate, handlers=_handlers, port=_port, serverName=_serverName, authenticationRealm=_authenticationRealm,
+            authenticationBasicAccounts=_authenticationBasicAccounts, authenticationDigestAccounts=_authenticationDigestAccounts,
+            shouldAutomaticallyMapHEADToGET=_mapHEADToGET;
+
++ (void)initialize {
+  GCDWebServerInitializeFunctions();
+}
+
+- (instancetype)init {
+  if ((self = [super init])) {
+    _syncQueue = dispatch_queue_create([NSStringFromClass([self class]) UTF8String], DISPATCH_QUEUE_SERIAL);
+    _sourceGroup = dispatch_group_create();
+    _handlers = [[NSMutableArray alloc] init];
+#if TARGET_OS_IPHONE
+    _backgroundTask = UIBackgroundTaskInvalid;
+#endif
+  }
+  return self;
+}
+
+- (void)dealloc {
+  GWS_DCHECK(_connected == NO);
+  GWS_DCHECK(_activeConnections == 0);
+  GWS_DCHECK(_options == nil);  // The server can never be dealloc'ed while running because of the retain-cycle with the dispatch source
+  GWS_DCHECK(_disconnectTimer == NULL);  // The server can never be dealloc'ed while the disconnect timer is pending because of the retain-cycle
+  
+#if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+  dispatch_release(_sourceGroup);
+  dispatch_release(_syncQueue);
+#endif
+}
+
+#if TARGET_OS_IPHONE
+
+// Always called on main thread
+- (void)_startBackgroundTask {
+  GWS_DCHECK([NSThread isMainThread]);
+  if (_backgroundTask == UIBackgroundTaskInvalid) {
+    GWS_LOG_DEBUG(@"Did start background task");
+    _backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
+      
+      GWS_LOG_WARNING(@"Application is being suspended while %@ is still connected", [self class]);
+      [self _endBackgroundTask];
+      
+    }];
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+#endif
+
+// Always called on main thread
+- (void)_didConnect {
+  GWS_DCHECK([NSThread isMainThread]);
+  GWS_DCHECK(_connected == NO);
+  _connected = YES;
+  GWS_LOG_DEBUG(@"Did connect");
+  
+#if TARGET_OS_IPHONE
+  [self _startBackgroundTask];
+#endif
+  
+  if ([_delegate respondsToSelector:@selector(webServerDidConnect:)]) {
+    [_delegate webServerDidConnect:self];
+  }
+}
+
+- (void)willStartConnection:(GCDWebServerConnection*)connection {
+  dispatch_sync(_syncQueue, ^{
+    
+    GWS_DCHECK(_activeConnections >= 0);
+    if (_activeConnections == 0) {
+      dispatch_async(dispatch_get_main_queue(), ^{
+        if (_disconnectTimer) {
+          CFRunLoopTimerInvalidate(_disconnectTimer);
+          CFRelease(_disconnectTimer);
+          _disconnectTimer = NULL;
+        }
+        if (_connected == NO) {
+          [self _didConnect];
+        }
+      });
+    }
+    _activeConnections += 1;
+    
+  });
+}
+
+#if TARGET_OS_IPHONE
+
+// Always called on main thread
+- (void)_endBackgroundTask {
+  GWS_DCHECK([NSThread isMainThread]);
+  if (_backgroundTask != UIBackgroundTaskInvalid) {
+    if (_suspendInBackground && ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) && _source4) {
+      [self _stop];
+    }
+    [[UIApplication sharedApplication] endBackgroundTask:_backgroundTask];
+    _backgroundTask = UIBackgroundTaskInvalid;
+    GWS_LOG_DEBUG(@"Did end background task");
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+#endif
+
+// Always called on main thread
+- (void)_didDisconnect {
+  GWS_DCHECK([NSThread isMainThread]);
+  GWS_DCHECK(_connected == YES);
+  _connected = NO;
+  GWS_LOG_DEBUG(@"Did disconnect");
+  
+#if TARGET_OS_IPHONE
+  [self _endBackgroundTask];
+#endif
+  
+  if ([_delegate respondsToSelector:@selector(webServerDidDisconnect:)]) {
+    [_delegate webServerDidDisconnect:self];
+  }
+}
+
+- (void)didEndConnection:(GCDWebServerConnection*)connection {
+  dispatch_sync(_syncQueue, ^{
+    GWS_DCHECK(_activeConnections > 0);
+    _activeConnections -= 1;
+    if (_activeConnections == 0) {
+      dispatch_async(dispatch_get_main_queue(), ^{
+        if ((_disconnectDelay > 0.0) && (_source4 != NULL)) {
+          if (_disconnectTimer) {
+            CFRunLoopTimerInvalidate(_disconnectTimer);
+            CFRelease(_disconnectTimer);
+          }
+          _disconnectTimer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + _disconnectDelay, 0.0, 0, 0, ^(CFRunLoopTimerRef timer) {
+            GWS_DCHECK([NSThread isMainThread]);
+            [self _didDisconnect];
+            CFRelease(_disconnectTimer);
+            _disconnectTimer = NULL;
+          });
+          CFRunLoopAddTimer(CFRunLoopGetMain(), _disconnectTimer, kCFRunLoopCommonModes);
+        } else {
+          [self _didDisconnect];
+        }
+      });
+    }
+  });
+}
+
+- (NSString*)bonjourName {
+  CFStringRef name = _resolutionService ? CFNetServiceGetName(_resolutionService) : NULL;
+  return name && CFStringGetLength(name) ? CFBridgingRelease(CFStringCreateCopy(kCFAllocatorDefault, name)) : nil;
+}
+
+- (NSString*)bonjourType {
+  CFStringRef type = _resolutionService ? CFNetServiceGetType(_resolutionService) : NULL;
+  return type && CFStringGetLength(type) ? CFBridgingRelease(CFStringCreateCopy(kCFAllocatorDefault, type)) : nil;
+}
+
+- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock processBlock:(GCDWebServerProcessBlock)processBlock {
+  [self addHandlerWithMatchBlock:matchBlock asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+    completionBlock(processBlock(request));
+  }];
+}
+
+- (void)addHandlerWithMatchBlock:(GCDWebServerMatchBlock)matchBlock asyncProcessBlock:(GCDWebServerAsyncProcessBlock)processBlock {
+  GWS_DCHECK(_options == nil);
+  GCDWebServerHandler* handler = [[GCDWebServerHandler alloc] initWithMatchBlock:matchBlock asyncProcessBlock:processBlock];
+  [_handlers insertObject:handler atIndex:0];
+}
+
+- (void)removeAllHandlers {
+  GWS_DCHECK(_options == nil);
+  [_handlers removeAllObjects];
+}
+
+static void _NetServiceRegisterCallBack(CFNetServiceRef service, CFStreamError* error, void* info) {
+  GWS_DCHECK([NSThread isMainThread]);
+  @autoreleasepool {
+    if (error->error) {
+      GWS_LOG_ERROR(@"Bonjour registration error %i (domain %i)", (int)error->error, (int)error->domain);
+    } else {
+      GCDWebServer* server = (__bridge GCDWebServer*)info;
+      GWS_LOG_VERBOSE(@"Bonjour registration complete for %@", [server class]);
+      CFNetServiceResolveWithTimeout(server->_resolutionService, 1.0, NULL);
+    }
+  }
+}
+
+static void _NetServiceResolveCallBack(CFNetServiceRef service, CFStreamError* error, void* info) {
+  GWS_DCHECK([NSThread isMainThread]);
+  @autoreleasepool {
+    if (error->error) {
+      if ((error->domain != kCFStreamErrorDomainNetServices) && (error->error != kCFNetServicesErrorTimeout)) {
+        GWS_LOG_ERROR(@"Bonjour resolution error %i (domain %i)", (int)error->error, (int)error->domain);
+      }
+    } else {
+      GCDWebServer* server = (__bridge GCDWebServer*)info;
+      GWS_LOG_INFO(@"%@ now reachable at %@", [server class], server.bonjourServerURL);
+      if ([server.delegate respondsToSelector:@selector(webServerDidCompleteBonjourRegistration:)]) {
+        [server.delegate webServerDidCompleteBonjourRegistration:server];
+      }
+    }
+  }
+}
+
+static inline id _GetOption(NSDictionary* options, NSString* key, id defaultValue) {
+  id value = [options objectForKey:key];
+  return value ? value : defaultValue;
+}
+
+static inline NSString* _EncodeBase64(NSString* string) {
+  NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];
+#if (TARGET_OS_IPHONE && !(__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0)) || (!TARGET_OS_IPHONE && !(__MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9))
+  if (![data respondsToSelector:@selector(base64EncodedDataWithOptions:)]) {
+    return [data base64Encoding];
+  }
+#endif
+  return [[NSString alloc] initWithData:[data base64EncodedDataWithOptions:0] encoding:NSASCIIStringEncoding];
+}
+
+- (int)_createListeningSocket:(BOOL)useIPv6
+                 localAddress:(const void*)address
+                       length:(socklen_t)length
+        maxPendingConnections:(NSUInteger)maxPendingConnections
+                        error:(NSError**)error {
+  int listeningSocket = socket(useIPv6 ? PF_INET6 : PF_INET, SOCK_STREAM, IPPROTO_TCP);
+  if (listeningSocket > 0) {
+    int yes = 1;
+    setsockopt(listeningSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
+    
+    if (bind(listeningSocket, address, length) == 0) {
+      if (listen(listeningSocket, (int)maxPendingConnections) == 0) {
+        GWS_LOG_DEBUG(@"Did open %s listening socket %i", useIPv6 ? "IPv6" : "IPv4", listeningSocket);
+        return listeningSocket;
+      } else {
+        if (error) {
+          *error = GCDWebServerMakePosixError(errno);
+        }
+        GWS_LOG_ERROR(@"Failed starting %s listening socket: %s (%i)", useIPv6 ? "IPv6" : "IPv4", strerror(errno), errno);
+        close(listeningSocket);
+      }
+    } else {
+      if (error) {
+        *error = GCDWebServerMakePosixError(errno);
+      }
+      GWS_LOG_ERROR(@"Failed binding %s listening socket: %s (%i)", useIPv6 ? "IPv6" : "IPv4", strerror(errno), errno);
+      close(listeningSocket);
+    }
+    
+  } else {
+    if (error) {
+      *error = GCDWebServerMakePosixError(errno);
+    }
+    GWS_LOG_ERROR(@"Failed creating %s listening socket: %s (%i)", useIPv6 ? "IPv6" : "IPv4", strerror(errno), errno);
+  }
+  return -1;
+}
+
+- (dispatch_source_t)_createDispatchSourceWithListeningSocket:(int)listeningSocket isIPv6:(BOOL)isIPv6 {
+  dispatch_group_enter(_sourceGroup);
+  dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, listeningSocket, 0, kGCDWebServerGCDQueue);
+  dispatch_source_set_cancel_handler(source, ^{
+    
+    @autoreleasepool {
+      int result = close(listeningSocket);
+      if (result != 0) {
+        GWS_LOG_ERROR(@"Failed closing %s listening socket: %s (%i)", isIPv6 ? "IPv6" : "IPv4", strerror(errno), errno);
+      } else {
+        GWS_LOG_DEBUG(@"Did close %s listening socket %i", isIPv6 ? "IPv6" : "IPv4", listeningSocket);
+      }
+    }
+    dispatch_group_leave(_sourceGroup);
+    
+  });
+  dispatch_source_set_event_handler(source, ^{
+    
+    @autoreleasepool {
+      struct sockaddr remoteSockAddr;
+      socklen_t remoteAddrLen = sizeof(remoteSockAddr);
+      int socket = accept(listeningSocket, &remoteSockAddr, &remoteAddrLen);
+      if (socket > 0) {
+        NSData* remoteAddress = [NSData dataWithBytes:&remoteSockAddr length:remoteAddrLen];
+        
+        struct sockaddr localSockAddr;
+        socklen_t localAddrLen = sizeof(localSockAddr);
+        NSData* localAddress = nil;
+        if (getsockname(socket, &localSockAddr, &localAddrLen) == 0) {
+          localAddress = [NSData dataWithBytes:&localSockAddr length:localAddrLen];
+          GWS_DCHECK((!isIPv6 && localSockAddr.sa_family == AF_INET) || (isIPv6 && localSockAddr.sa_family == AF_INET6));
+        } else {
+          GWS_DNOT_REACHED();
+        }
+        
+        int noSigPipe = 1;
+        setsockopt(socket, SOL_SOCKET, SO_NOSIGPIPE, &noSigPipe, sizeof(noSigPipe));  // Make sure this socket cannot generate SIG_PIPE
+        
+        GCDWebServerConnection* connection = [[_connectionClass alloc] initWithServer:self localAddress:localAddress remoteAddress:remoteAddress socket:socket];  // Connection will automatically retain itself while opened
+        [connection self];  // Prevent compiler from complaining about unused variable / useless statement
+      } else {
+        GWS_LOG_ERROR(@"Failed accepting %s socket: %s (%i)", isIPv6 ? "IPv6" : "IPv4", strerror(errno), errno);
+      }
+    }
+    
+  });
+  return source;
+}
+
+- (BOOL)_start:(NSError**)error {
+  GWS_DCHECK(_source4 == NULL);
+  
+  NSUInteger port = [_GetOption(_options, GCDWebServerOption_Port, @0) unsignedIntegerValue];
+  NSUInteger maxPendingConnections = [_GetOption(_options, GCDWebServerOption_MaxPendingConnections, @16) unsignedIntegerValue];
+  
+  struct sockaddr_in addr4;
+  bzero(&addr4, sizeof(addr4));
+  addr4.sin_len = sizeof(addr4);
+  addr4.sin_family = AF_INET;
+  addr4.sin_port = htons(port);
+  addr4.sin_addr.s_addr = htonl(INADDR_ANY);
+  int listeningSocket4 = [self _createListeningSocket:NO localAddress:&addr4 length:sizeof(addr4) maxPendingConnections:maxPendingConnections error:error];
+  if (listeningSocket4 <= 0) {
+    return NO;
+  }
+  if (port == 0) {
+    struct sockaddr addr;
+    socklen_t addrlen = sizeof(addr);
+    if (getsockname(listeningSocket4, &addr, &addrlen) == 0) {
+      struct sockaddr_in* sockaddr = (struct sockaddr_in*)&addr;
+      port = ntohs(sockaddr->sin_port);
+    } else {
+      GWS_LOG_ERROR(@"Failed retrieving socket address: %s (%i)", strerror(errno), errno);
+    }
+  }
+  
+  struct sockaddr_in6 addr6;
+  bzero(&addr6, sizeof(addr6));
+  addr6.sin6_len = sizeof(addr6);
+  addr6.sin6_family = AF_INET6;
+  addr6.sin6_port = htons(port);
+  addr6.sin6_addr = in6addr_any;
+  int listeningSocket6 = [self _createListeningSocket:YES localAddress:&addr6 length:sizeof(addr6) maxPendingConnections:maxPendingConnections error:error];
+  if (listeningSocket6 <= 0) {
+    close(listeningSocket4);
+    return NO;
+  }
+  
+  _serverName = [_GetOption(_options, GCDWebServerOption_ServerName, NSStringFromClass([self class])) copy];
+  NSString* authenticationMethod = _GetOption(_options, GCDWebServerOption_AuthenticationMethod, nil);
+  if ([authenticationMethod isEqualToString:GCDWebServerAuthenticationMethod_Basic]) {
+    _authenticationRealm = [_GetOption(_options, GCDWebServerOption_AuthenticationRealm, _serverName) copy];
+    _authenticationBasicAccounts = [[NSMutableDictionary alloc] init];
+    NSDictionary* accounts = _GetOption(_options, GCDWebServerOption_AuthenticationAccounts, @{});
+    [accounts enumerateKeysAndObjectsUsingBlock:^(NSString* username, NSString* password, BOOL* stop) {
+      [_authenticationBasicAccounts setObject:_EncodeBase64([NSString stringWithFormat:@"%@:%@", username, password]) forKey:username];
+    }];
+  } else if ([authenticationMethod isEqualToString:GCDWebServerAuthenticationMethod_DigestAccess]) {
+    _authenticationRealm = [_GetOption(_options, GCDWebServerOption_AuthenticationRealm, _serverName) copy];
+    _authenticationDigestAccounts = [[NSMutableDictionary alloc] init];
+    NSDictionary* accounts = _GetOption(_options, GCDWebServerOption_AuthenticationAccounts, @{});
+    [accounts enumerateKeysAndObjectsUsingBlock:^(NSString* username, NSString* password, BOOL* stop) {
+      [_authenticationDigestAccounts setObject:GCDWebServerComputeMD5Digest(@"%@:%@:%@", username, _authenticationRealm, password) forKey:username];
+    }];
+  }
+  _connectionClass = _GetOption(_options, GCDWebServerOption_ConnectionClass, [GCDWebServerConnection class]);
+  _mapHEADToGET = [_GetOption(_options, GCDWebServerOption_AutomaticallyMapHEADToGET, @YES) boolValue];
+  _disconnectDelay = [_GetOption(_options, GCDWebServerOption_ConnectedStateCoalescingInterval, @1.0) doubleValue];
+  
+  _source4 = [self _createDispatchSourceWithListeningSocket:listeningSocket4 isIPv6:NO];
+  _source6 = [self _createDispatchSourceWithListeningSocket:listeningSocket6 isIPv6:YES];
+  _port = port;
+  
+  NSString* bonjourName = _GetOption(_options, GCDWebServerOption_BonjourName, @"");
+  NSString* bonjourType = _GetOption(_options, GCDWebServerOption_BonjourType, @"_http._tcp");
+  if (bonjourName) {
+    _registrationService = CFNetServiceCreate(kCFAllocatorDefault, CFSTR("local."), (__bridge CFStringRef)bonjourType, (__bridge CFStringRef)(bonjourName.length ? bonjourName : _serverName), (SInt32)_port);
+    if (_registrationService) {
+      CFNetServiceClientContext context = {0, (__bridge void*)self, NULL, NULL, NULL};
+      
+      CFNetServiceSetClient(_registrationService, _NetServiceRegisterCallBack, &context);
+      CFNetServiceScheduleWithRunLoop(_registrationService, CFRunLoopGetMain(), kCFRunLoopCommonModes);
+      CFStreamError streamError = {0};
+      CFNetServiceRegisterWithOptions(_registrationService, 0, &streamError);
+      
+      _resolutionService = CFNetServiceCreateCopy(kCFAllocatorDefault, _registrationService);
+      if (_resolutionService) {
+        CFNetServiceSetClient(_resolutionService, _NetServiceResolveCallBack, &context);
+        CFNetServiceScheduleWithRunLoop(_resolutionService, CFRunLoopGetMain(), kCFRunLoopCommonModes);
+      }
+    } else {
+      GWS_LOG_ERROR(@"Failed creating CFNetService");
+    }
+  }
+  
+  dispatch_resume(_source4);
+  dispatch_resume(_source6);
+  GWS_LOG_INFO(@"%@ started on port %i and reachable at %@", [self class], (int)_port, self.serverURL);
+  if ([_delegate respondsToSelector:@selector(webServerDidStart:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [_delegate webServerDidStart:self];
+    });
+  }
+  
+  return YES;
+}
+
+- (void)_stop {
+  GWS_DCHECK(_source4 != NULL);
+  
+  if (_registrationService) {
+    if (_resolutionService) {
+      CFNetServiceUnscheduleFromRunLoop(_resolutionService, CFRunLoopGetMain(), kCFRunLoopCommonModes);
+      CFNetServiceSetClient(_resolutionService, NULL, NULL);
+      CFNetServiceCancel(_resolutionService);
+      CFRelease(_resolutionService);
+      _resolutionService = NULL;
+    }
+    CFNetServiceUnscheduleFromRunLoop(_registrationService, CFRunLoopGetMain(), kCFRunLoopCommonModes);
+    CFNetServiceSetClient(_registrationService, NULL, NULL);
+    CFNetServiceCancel(_registrationService);
+    CFRelease(_registrationService);
+    _registrationService = NULL;
+  }
+  
+  dispatch_source_cancel(_source6);
+  dispatch_source_cancel(_source4);
+  dispatch_group_wait(_sourceGroup, DISPATCH_TIME_FOREVER);  // Wait until the cancellation handlers have been called which guarantees the listening sockets are closed
+#if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+  dispatch_release(_source6);
+#endif
+  _source6 = NULL;
+#if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+  dispatch_release(_source4);
+#endif
+  _source4 = NULL;
+  _port = 0;
+  
+  _serverName = nil;
+  _authenticationRealm = nil;
+  _authenticationBasicAccounts = nil;
+  _authenticationDigestAccounts = nil;
+  
+  dispatch_async(dispatch_get_main_queue(), ^{
+    if (_disconnectTimer) {
+      CFRunLoopTimerInvalidate(_disconnectTimer);
+      CFRelease(_disconnectTimer);
+      _disconnectTimer = NULL;
+      [self _didDisconnect];
+    }
+  });
+  
+  GWS_LOG_INFO(@"%@ stopped", [self class]);
+  if ([_delegate respondsToSelector:@selector(webServerDidStop:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [_delegate webServerDidStop:self];
+    });
+  }
+}
+
+#if TARGET_OS_IPHONE
+
+- (void)_didEnterBackground:(NSNotification*)notification {
+  GWS_DCHECK([NSThread isMainThread]);
+  GWS_LOG_DEBUG(@"Did enter background");
+  if ((_backgroundTask == UIBackgroundTaskInvalid) && _source4) {
+    [self _stop];
+  }
+}
+
+- (void)_willEnterForeground:(NSNotification*)notification {
+  GWS_DCHECK([NSThread isMainThread]);
+  GWS_LOG_DEBUG(@"Will enter foreground");
+  if (!_source4) {
+    [self _start:NULL];  // TODO: There's probably nothing we can do on failure
+  }
+}
+
+#endif
+
+- (BOOL)startWithOptions:(NSDictionary*)options error:(NSError**)error {
+  if (_options == nil) {
+    _options = [options copy];
+#if TARGET_OS_IPHONE
+    _suspendInBackground = [_GetOption(_options, GCDWebServerOption_AutomaticallySuspendInBackground, @YES) boolValue];
+    if (((_suspendInBackground == NO) || ([[UIApplication sharedApplication] applicationState] != UIApplicationStateBackground)) && ![self _start:error])
+#else
+    if (![self _start:error])
+#endif
+    {
+      _options = nil;
+      return NO;
+    }
+#if TARGET_OS_IPHONE
+    if (_suspendInBackground) {
+      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
+      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_willEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
+    }
+#endif
+    return YES;
+  } else {
+    GWS_DNOT_REACHED();
+  }
+  return NO;
+}
+
+- (BOOL)isRunning {
+  return (_options ? YES : NO);
+}
+
+- (void)stop {
+  if (_options) {
+#if TARGET_OS_IPHONE
+    if (_suspendInBackground) {
+      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
+      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil];
+    }
+#endif
+    if (_source4) {
+      [self _stop];
+    }
+    _options = nil;
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+@end
+
+@implementation GCDWebServer (Extensions)
+
+- (NSURL*)serverURL {
+  if (_source4) {
+    NSString* ipAddress = GCDWebServerGetPrimaryIPAddress(NO);  // We can't really use IPv6 anyway as it doesn't work great with HTTP URLs in practice
+    if (ipAddress) {
+      if (_port != 80) {
+        return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%i/", ipAddress, (int)_port]];
+      } else {
+        return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/", ipAddress]];
+      }
+    }
+  }
+  return nil;
+}
+
+- (NSURL*)bonjourServerURL {
+  if (_source4 && _resolutionService) {
+    NSString* name = (__bridge NSString*)CFNetServiceGetTargetHost(_resolutionService);
+    if (name.length) {
+      name = [name substringToIndex:(name.length - 1)];  // Strip trailing period at end of domain
+      if (_port != 80) {
+        return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%i/", name, (int)_port]];
+      } else {
+        return [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/", name]];
+      }
+    }
+  }
+  return nil;
+}
+
+- (BOOL)start {
+  return [self startWithPort:kDefaultPort bonjourName:@""];
+}
+
+- (BOOL)startWithPort:(NSUInteger)port bonjourName:(NSString*)name {
+  NSMutableDictionary* options = [NSMutableDictionary dictionary];
+  [options setObject:[NSNumber numberWithInteger:port] forKey:GCDWebServerOption_Port];
+  [options setValue:name forKey:GCDWebServerOption_BonjourName];
+  return [self startWithOptions:options error:NULL];
+}
+
+#if !TARGET_OS_IPHONE
+
+- (BOOL)runWithPort:(NSUInteger)port bonjourName:(NSString*)name {
+  NSMutableDictionary* options = [NSMutableDictionary dictionary];
+  [options setObject:[NSNumber numberWithInteger:port] forKey:GCDWebServerOption_Port];
+  [options setValue:name forKey:GCDWebServerOption_BonjourName];
+  return [self runWithOptions:options error:NULL];
+}
+
+- (BOOL)runWithOptions:(NSDictionary*)options error:(NSError**)error {
+  GWS_DCHECK([NSThread isMainThread]);
+  BOOL success = NO;
+  _run = YES;
+  void (*termHandler)(int) = signal(SIGTERM, _SignalHandler);
+  void (*intHandler)(int) = signal(SIGINT, _SignalHandler);
+  if ((termHandler != SIG_ERR) && (intHandler != SIG_ERR)) {
+    if ([self startWithOptions:options error:error]) {
+      while (_run) {
+        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0, true);
+      }
+      [self stop];
+      success = YES;
+    }
+    _ExecuteMainThreadRunLoopSources();
+    signal(SIGINT, intHandler);
+    signal(SIGTERM, termHandler);
+  }
+  return success;
+}
+
+#endif
+
+@end
+
+@implementation GCDWebServer (Handlers)
+
+- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block {
+  [self addDefaultHandlerForMethod:method requestClass:aClass asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+    completionBlock(block(request));
+  }];
+}
+
+- (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block {
+  [self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
+    
+    if (![requestMethod isEqualToString:method]) {
+      return nil;
+    }
+    return [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery];
+    
+  } asyncProcessBlock:block];
+}
+
+- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block {
+  [self addHandlerForMethod:method path:path requestClass:aClass asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+    completionBlock(block(request));
+  }];
+}
+
+- (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block {
+  if ([path hasPrefix:@"/"] && [aClass isSubclassOfClass:[GCDWebServerRequest class]]) {
+    [self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
+      
+      if (![requestMethod isEqualToString:method]) {
+        return nil;
+      }
+      if ([urlPath caseInsensitiveCompare:path] != NSOrderedSame) {
+        return nil;
+      }
+      return [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery];
+      
+    } asyncProcessBlock:block];
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass processBlock:(GCDWebServerProcessBlock)block {
+  [self addHandlerForMethod:method pathRegex:regex requestClass:aClass asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+    completionBlock(block(request));
+  }];
+}
+
+- (void)addHandlerForMethod:(NSString*)method pathRegex:(NSString*)regex requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block {
+  NSRegularExpression* expression = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:NULL];
+  if (expression && [aClass isSubclassOfClass:[GCDWebServerRequest class]]) {
+    [self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
+      
+      if (![requestMethod isEqualToString:method]) {
+        return nil;
+      }
+
+      NSArray* matches = [expression matchesInString:urlPath options:0 range:NSMakeRange(0, urlPath.length)];
+      if (matches.count == 0) {
+        return nil;
+      }
+
+      NSMutableArray* captures = [NSMutableArray array];
+      for (NSTextCheckingResult* result in matches) {
+        // Start at 1; index 0 is the whole string
+        for (NSUInteger i = 1; i < result.numberOfRanges; i++) {
+          [captures addObject:[urlPath substringWithRange:[result rangeAtIndex:i]]];
+        }
+      }
+
+      GCDWebServerRequest* request = [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery];
+      [request setAttribute:captures forKey:GCDWebServerRequestAttribute_RegexCaptures];
+      return request;
+      
+    } asyncProcessBlock:block];
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+@end
+
+@implementation GCDWebServer (GETHandlers)
+
+- (void)addGETHandlerForPath:(NSString*)path staticData:(NSData*)staticData contentType:(NSString*)contentType cacheAge:(NSUInteger)cacheAge {
+  [self addHandlerForMethod:@"GET" path:path requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+    GCDWebServerResponse* response = [GCDWebServerDataResponse responseWithData:staticData contentType:contentType];
+    response.cacheControlMaxAge = cacheAge;
+    return response;
+    
+  }];
+}
+
+- (void)addGETHandlerForPath:(NSString*)path filePath:(NSString*)filePath isAttachment:(BOOL)isAttachment cacheAge:(NSUInteger)cacheAge allowRangeRequests:(BOOL)allowRangeRequests {
+  [self addHandlerForMethod:@"GET" path:path requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+    GCDWebServerResponse* response = nil;
+    if (allowRangeRequests) {
+      response = [GCDWebServerFileResponse responseWithFile:filePath byteRange:request.byteRange isAttachment:isAttachment];
+      [response setValue:@"bytes" forAdditionalHeader:@"Accept-Ranges"];
+    } else {
+      response = [GCDWebServerFileResponse responseWithFile:filePath isAttachment:isAttachment];
+    }
+    response.cacheControlMaxAge = cacheAge;
+    return response;
+    
+  }];
+}
+
+- (GCDWebServerResponse*)_responseWithContentsOfDirectory:(NSString*)path {
+  NSDirectoryEnumerator* enumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
+  if (enumerator == nil) {
+    return nil;
+  }
+  NSMutableString* html = [NSMutableString string];
+  [html appendString:@"<!DOCTYPE html>\n"];
+  [html appendString:@"<html><head><meta charset=\"utf-8\"></head><body>\n"];
+  [html appendString:@"<ul>\n"];
+  for (NSString* file in enumerator) {
+    if (![file hasPrefix:@"."]) {
+      NSString* type = [[enumerator fileAttributes] objectForKey:NSFileType];
+      NSString* escapedFile = [file stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+      GWS_DCHECK(escapedFile);
+      if ([type isEqualToString:NSFileTypeRegular]) {
+        [html appendFormat:@"<li><a href=\"%@\">%@</a></li>\n", escapedFile, file];
+      } else if ([type isEqualToString:NSFileTypeDirectory]) {
+        [html appendFormat:@"<li><a href=\"%@/\">%@/</a></li>\n", escapedFile, file];
+      }
+    }
+    [enumerator skipDescendents];
+  }
+  [html appendString:@"</ul>\n"];
+  [html appendString:@"</body></html>\n"];
+  return [GCDWebServerDataResponse responseWithHTML:html];
+}
+
+- (void)addGETHandlerForBasePath:(NSString*)basePath directoryPath:(NSString*)directoryPath indexFilename:(NSString*)indexFilename cacheAge:(NSUInteger)cacheAge allowRangeRequests:(BOOL)allowRangeRequests {
+  if ([basePath hasPrefix:@"/"] && [basePath hasSuffix:@"/"]) {
+    GCDWebServer* __unsafe_unretained server = self;
+    [self addHandlerWithMatchBlock:^GCDWebServerRequest *(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) {
+      
+      if (![requestMethod isEqualToString:@"GET"]) {
+        return nil;
+      }
+      if (![urlPath hasPrefix:basePath]) {
+        return nil;
+      }
+      return [[GCDWebServerRequest alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery];
+      
+    } processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      
+      GCDWebServerResponse* response = nil;
+      NSString* filePath = [directoryPath stringByAppendingPathComponent:[request.path substringFromIndex:basePath.length]];
+      NSString* fileType = [[[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:NULL] fileType];
+      if (fileType) {
+        if ([fileType isEqualToString:NSFileTypeDirectory]) {
+          if (indexFilename) {
+            NSString* indexPath = [filePath stringByAppendingPathComponent:indexFilename];
+            NSString* indexType = [[[NSFileManager defaultManager] attributesOfItemAtPath:indexPath error:NULL] fileType];
+            if ([indexType isEqualToString:NSFileTypeRegular]) {
+              return [GCDWebServerFileResponse responseWithFile:indexPath];
+            }
+          }
+          response = [server _responseWithContentsOfDirectory:filePath];
+        } else if ([fileType isEqualToString:NSFileTypeRegular]) {
+          if (allowRangeRequests) {
+            response = [GCDWebServerFileResponse responseWithFile:filePath byteRange:request.byteRange];
+            [response setValue:@"bytes" forAdditionalHeader:@"Accept-Ranges"];
+          } else {
+            response = [GCDWebServerFileResponse responseWithFile:filePath];
+          }
+        }
+      }
+      if (response) {
+        response.cacheControlMaxAge = cacheAge;
+      } else {
+        response = [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_NotFound];
+      }
+      return response;
+      
+    }];
+  } else {
+    GWS_DNOT_REACHED();
+  }
+}
+
+@end
+
+@implementation GCDWebServer (Logging)
+
++ (void)setLogLevel:(int)level {
+#if defined(__GCDWEBSERVER_LOGGING_FACILITY_XLFACILITY__)
+  [XLSharedFacility setMinLogLevel:level];
+#elif defined(__GCDWEBSERVER_LOGGING_FACILITY_COCOALUMBERJACK__)
+  GCDWebServerLogLevel = level;
+#else
+  GCDWebServerLogLevel = level;
+#endif
+}
+
+- (void)logVerbose:(NSString*)format, ... {
+  va_list arguments;
+  va_start(arguments, format);
+  GWS_LOG_VERBOSE(@"%@", [[NSString alloc] initWithFormat:format arguments:arguments]);
+  va_end(arguments);
+}
+
+- (void)logInfo:(NSString*)format, ... {
+  va_list arguments;
+  va_start(arguments, format);
+  GWS_LOG_INFO(@"%@", [[NSString alloc] initWithFormat:format arguments:arguments]);
+  va_end(arguments);
+}
+
+- (void)logWarning:(NSString*)format, ... {
+  va_list arguments;
+  va_start(arguments, format);
+  GWS_LOG_WARNING(@"%@", [[NSString alloc] initWithFormat:format arguments:arguments]);
+  va_end(arguments);
+}
+
+- (void)logError:(NSString*)format, ... {
+  va_list arguments;
+  va_start(arguments, format);
+  GWS_LOG_ERROR(@"%@", [[NSString alloc] initWithFormat:format arguments:arguments]);
+  va_end(arguments);
+}
+
+- (void)logException:(NSException*)exception {
+  GWS_LOG_EXCEPTION(exception);
+}
+
+@end
+
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+
+@implementation GCDWebServer (Testing)
+
+- (void)setRecordingEnabled:(BOOL)flag {
+  _recording = flag;
+}
+
+- (BOOL)isRecordingEnabled {
+  return _recording;
+}
+
+static CFHTTPMessageRef _CreateHTTPMessageFromData(NSData* data, BOOL isRequest) {
+  CFHTTPMessageRef message = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, isRequest);
+  if (CFHTTPMessageAppendBytes(message, data.bytes, data.length)) {
+    return message;
+  }
+  CFRelease(message);
+  return NULL;
+}
+
+static CFHTTPMessageRef _CreateHTTPMessageFromPerformingRequest(NSData* inData, NSUInteger port) {
+  CFHTTPMessageRef response = NULL;
+  int httpSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
+  if (httpSocket > 0) {
+    struct sockaddr_in addr4;
+    bzero(&addr4, sizeof(addr4));
+    addr4.sin_len = sizeof(port);
+    addr4.sin_family = AF_INET;
+    addr4.sin_port = htons(8080);
+    addr4.sin_addr.s_addr = htonl(INADDR_ANY);
+    if (connect(httpSocket, (void*)&addr4, sizeof(addr4)) == 0) {
+      if (write(httpSocket, inData.bytes, inData.length) == (ssize_t)inData.length) {
+        NSMutableData* outData = [[NSMutableData alloc] initWithLength:(256 * 1024)];
+        NSUInteger length = 0;
+        while (1) {
+          ssize_t result = read(httpSocket, (char*)outData.mutableBytes + length, outData.length - length);
+          if (result < 0) {
+            length = NSUIntegerMax;
+            break;
+          } else if (result == 0) {
+            break;
+          }
+          length += result;
+          if (length >= outData.length) {
+            outData.length = 2 * outData.length;
+          }
+        }
+        if (length != NSUIntegerMax) {
+          outData.length = length;
+          response = _CreateHTTPMessageFromData(outData, NO);
+        } else {
+          GWS_DNOT_REACHED();
+        }
+      }
+    }
+    close(httpSocket);
+  }
+  return response;
+}
+
+static void _LogResult(NSString* format, ...) {
+  va_list arguments;
+  va_start(arguments, format);
+  NSString* message = [[NSString alloc] initWithFormat:format arguments:arguments];
+  va_end(arguments);
+  fprintf(stdout, "%s\n", [message UTF8String]);
+}
+
+- (NSInteger)runTestsWithOptions:(NSDictionary*)options inDirectory:(NSString*)path {
+  GWS_DCHECK([NSThread isMainThread]);
+  NSArray* ignoredHeaders = @[@"Date", @"Etag"];  // Dates are always different by definition and ETags depend on file system node IDs
+  NSInteger result = -1;
+  if ([self startWithOptions:options error:NULL]) {
+    _ExecuteMainThreadRunLoopSources();
+    
+    result = 0;
+    NSArray* files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
+    for (NSString* requestFile in files) {
+      if (![requestFile hasSuffix:@".request"]) {
+        continue;
+      }
+      @autoreleasepool {
+        NSString* index = [[requestFile componentsSeparatedByString:@"-"] firstObject];
+        BOOL success = NO;
+        NSData* requestData = [NSData dataWithContentsOfFile:[path stringByAppendingPathComponent:requestFile]];
+        if (requestData) {
+          CFHTTPMessageRef request = _CreateHTTPMessageFromData(requestData, YES);
+          if (request) {
+            NSString* requestMethod = CFBridgingRelease(CFHTTPMessageCopyRequestMethod(request));
+            NSURL* requestURL = CFBridgingRelease(CFHTTPMessageCopyRequestURL(request));
+            _LogResult(@"[%i] %@ %@", (int)[index integerValue], requestMethod, requestURL.path);
+            NSString* prefix = [index stringByAppendingString:@"-"];
+            for (NSString* responseFile in files) {
+              if ([responseFile hasPrefix:prefix] && [responseFile hasSuffix:@".response"]) {
+                NSData* responseData = [NSData dataWithContentsOfFile:[path stringByAppendingPathComponent:responseFile]];
+                if (responseData) {
+                CFHTTPMessageRef expectedResponse = _CreateHTTPMessageFromData(responseData, NO);
+                  if (expectedResponse) {
+                    CFHTTPMessageRef actualResponse = _CreateHTTPMessageFromPerformingRequest(requestData, self.port);
+                    if (actualResponse) {
+                      success = YES;
+                      
+                      CFIndex expectedStatusCode = CFHTTPMessageGetResponseStatusCode(expectedResponse);
+                      CFIndex actualStatusCode = CFHTTPMessageGetResponseStatusCode(actualResponse);
+                      if (actualStatusCode != expectedStatusCode) {
+                        _LogResult(@"  Status code not matching:\n    Expected: %i\n      Actual: %i", (int)expectedStatusCode, (int)actualStatusCode);
+                        success = NO;
+                      }
+                      
+                      NSDictionary* expectedHeaders = CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(expectedResponse));
+                      NSDictionary* actualHeaders = CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(actualResponse));
+                      for (NSString* expectedHeader in expectedHeaders) {
+                        if ([ignoredHeaders containsObject:expectedHeader]) {
+                          continue;
+                        }
+                        NSString* expectedValue = [expectedHeaders objectForKey:expectedHeader];
+                        NSString* actualValue = [actualHeaders objectForKey:expectedHeader];
+                        if (![actualValue isEqualToString:expectedValue]) {
+                          _LogResult(@"  Header '%@' not matching:\n    Expected: \"%@\"\n      Actual: \"%@\"", expectedHeader, expectedValue, actualValue);
+                          success = NO;
+                        }
+                      }
+                      for (NSString* actualHeader in actualHeaders) {
+                        if (![expectedHeaders objectForKey:actualHeader]) {
+                          _LogResult(@"  Header '%@' not matching:\n    Expected: \"%@\"\n      Actual: \"%@\"", actualHeader, nil, [actualHeaders objectForKey:actualHeader]);
+                          success = NO;
+                        }
+                      }
+                      
+                      NSString* expectedContentLength = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(expectedResponse, CFSTR("Content-Length")));
+                      NSData* expectedBody = CFBridgingRelease(CFHTTPMessageCopyBody(expectedResponse));
+                      NSString* actualContentLength = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(actualResponse, CFSTR("Content-Length")));
+                      NSData* actualBody = CFBridgingRelease(CFHTTPMessageCopyBody(actualResponse));
+                      if ([actualContentLength isEqualToString:expectedContentLength] && (actualBody.length > expectedBody.length)) {  // Handle web browser closing connection before retrieving entire body (e.g. when playing a video file)
+                        actualBody = [actualBody subdataWithRange:NSMakeRange(0, expectedBody.length)];
+                      }
+                      if (![actualBody isEqualToData:expectedBody]) {
+                        _LogResult(@"  Bodies not matching:\n    Expected: %lu bytes\n      Actual: %lu bytes", (unsigned long)expectedBody.length, (unsigned long)actualBody.length);
+                        success = NO;
+#if !TARGET_OS_IPHONE
+#if DEBUG
+                        if (GCDWebServerIsTextContentType([expectedHeaders objectForKey:@"Content-Type"])) {
+                          NSString* expectedPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[[NSProcessInfo processInfo] globallyUniqueString] stringByAppendingPathExtension:@"txt"]];
+                          NSString* actualPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[[NSProcessInfo processInfo] globallyUniqueString] stringByAppendingPathExtension:@"txt"]];
+                          if ([expectedBody writeToFile:expectedPath atomically:YES] && [actualBody writeToFile:actualPath atomically:YES]) {
+                            NSTask* task = [[NSTask alloc] init];
+                            [task setLaunchPath:@"/usr/bin/opendiff"];
+                            [task setArguments:@[expectedPath, actualPath]];
+                            [task launch];
+                          }
+                        }
+#endif
+#endif
+                      }
+                      
+                      CFRelease(actualResponse);
+                    }
+                    CFRelease(expectedResponse);
+                  }
+                } else {
+                  GWS_DNOT_REACHED();
+                }
+                break;
+              }
+            }
+            CFRelease(request);
+          }
+        } else {
+          GWS_DNOT_REACHED();
+        }
+        _LogResult(@"");
+        if (!success) {
+          ++result;
+        }
+      }
+      _ExecuteMainThreadRunLoopSources();
+    }
+    
+    [self stop];
+    
+    _ExecuteMainThreadRunLoopSources();
+  }
+  return result;
+}
+
+@end
+
+#endif
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.h
new file mode 100644
index 0000000..8e4aaf5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.h
@@ -0,0 +1,179 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServer.h"
+
+@class GCDWebServerHandler;
+
+/**
+ *  The GCDWebServerConnection class is instantiated by GCDWebServer to handle
+ *  each new HTTP connection. Each instance stays alive until the connection is
+ *  closed.
+ *
+ *  You cannot use this class directly, but it is made public so you can
+ *  subclass it to override some hooks. Use the GCDWebServerOption_ConnectionClass
+ *  option for GCDWebServer to install your custom subclass.
+ *
+ *  @warning The GCDWebServerConnection retains the GCDWebServer until the
+ *  connection is closed.
+ */
+@interface GCDWebServerConnection : NSObject
+
+/**
+ *  Returns the GCDWebServer that owns the connection.
+ */
+@property(nonatomic, readonly) GCDWebServer* server;
+
+/**
+ *  Returns YES if the connection is using IPv6.
+ */
+@property(nonatomic, readonly, getter=isUsingIPv6) BOOL usingIPv6;
+
+/**
+ *  Returns the address of the local peer (i.e. server) of the connection
+ *  as a raw "struct sockaddr".
+ */
+@property(nonatomic, readonly) NSData* localAddressData;
+
+/**
+ *  Returns the address of the local peer (i.e. server) of the connection
+ *  as a string.
+ */
+@property(nonatomic, readonly) NSString* localAddressString;
+
+/**
+ *  Returns the address of the remote peer (i.e. client) of the connection
+ *  as a raw "struct sockaddr".
+ */
+@property(nonatomic, readonly) NSData* remoteAddressData;
+
+/**
+ *  Returns the address of the remote peer (i.e. client) of the connection
+ *  as a string.
+ */
+@property(nonatomic, readonly) NSString* remoteAddressString;
+
+/**
+ *  Returns the total number of bytes received from the remote peer (i.e. client)
+ *  so far.
+ */
+@property(nonatomic, readonly) NSUInteger totalBytesRead;
+
+/**
+ *  Returns the total number of bytes sent to the remote peer (i.e. client) so far.
+ */
+@property(nonatomic, readonly) NSUInteger totalBytesWritten;
+
+@end
+
+/**
+ *  Hooks to customize the behavior of GCDWebServer HTTP connections.
+ *
+ *  @warning These methods can be called on any GCD thread.
+ *  Be sure to also call "super" when overriding them.
+ */
+@interface GCDWebServerConnection (Subclassing)
+
+/**
+ *  This method is called when the connection is opened.
+ *
+ *  Return NO to reject the connection e.g. after validating the local
+ *  or remote address.
+ */
+- (BOOL)open;
+
+/**
+ *  This method is called whenever data has been received
+ *  from the remote peer (i.e. client).
+ *
+ *  @warning Do not attempt to modify this data.
+ */
+- (void)didReadBytes:(const void*)bytes length:(NSUInteger)length;
+
+/**
+ *  This method is called whenever data has been sent
+ *  to the remote peer (i.e. client).
+ *
+ *  @warning Do not attempt to modify this data.
+ */
+- (void)didWriteBytes:(const void*)bytes length:(NSUInteger)length;
+
+/**
+ *  This method is called after the HTTP headers have been received to
+ *  allow replacing the request URL by another one.
+ *
+ *  The default implementation returns the original URL.
+ */
+- (NSURL*)rewriteRequestURL:(NSURL*)url withMethod:(NSString*)method headers:(NSDictionary*)headers;
+
+/**
+ *  Assuming a valid HTTP request was received, this method is called before
+ *  the request is processed.
+ *
+ *  Return a non-nil GCDWebServerResponse to bypass the request processing entirely.
+ *
+ *  The default implementation checks for HTTP authentication if applicable
+ *  and returns a barebone 401 status code response if authentication failed.
+ */
+- (GCDWebServerResponse*)preflightRequest:(GCDWebServerRequest*)request;
+
+/**
+ *  Assuming a valid HTTP request was received and -preflightRequest: returned nil,
+ *  this method is called to process the request by executing the handler's
+ *  process block.
+ */
+- (void)processRequest:(GCDWebServerRequest*)request completion:(GCDWebServerCompletionBlock)completion;
+
+/**
+ *  Assuming a valid HTTP request was received and either -preflightRequest:
+ *  or -processRequest:completion: returned a non-nil GCDWebServerResponse,
+ *  this method is called to override the response.
+ *
+ *  You can either modify the current response and return it, or return a
+ *  completely new one.
+ *
+ *  The default implementation replaces any response matching the "ETag" or
+ *  "Last-Modified-Date" header of the request by a barebone "Not-Modified" (304)
+ *  one.
+ */
+- (GCDWebServerResponse*)overrideResponse:(GCDWebServerResponse*)response forRequest:(GCDWebServerRequest*)request;
+
+/**
+ *  This method is called if any error happens while validing or processing
+ *  the request or if no GCDWebServerResponse was generated during processing.
+ *
+ *  @warning If the request was invalid (e.g. the HTTP headers were malformed),
+ *  the "request" argument will be nil.
+ */
+- (void)abortRequest:(GCDWebServerRequest*)request withStatusCode:(NSInteger)statusCode;
+
+/**
+ *  Called when the connection is closed.
+ */
+- (void)close;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.m
new file mode 100644
index 0000000..d4e3f39
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerConnection.m
@@ -0,0 +1,845 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <TargetConditionals.h>
+#import <netdb.h>
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+#import <libkern/OSAtomic.h>
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+#define kHeadersReadCapacity (1 * 1024)
+#define kBodyReadCapacity (256 * 1024)
+
+typedef void (^ReadDataCompletionBlock)(BOOL success);
+typedef void (^ReadHeadersCompletionBlock)(NSData* extraData);
+typedef void (^ReadBodyCompletionBlock)(BOOL success);
+
+typedef void (^WriteDataCompletionBlock)(BOOL success);
+typedef void (^WriteHeadersCompletionBlock)(BOOL success);
+typedef void (^WriteBodyCompletionBlock)(BOOL success);
+
+static NSData* _CRLFData = nil;
+static NSData* _CRLFCRLFData = nil;
+static NSData* _continueData = nil;
+static NSData* _lastChunkData = nil;
+static NSString* _digestAuthenticationNonce = nil;
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+static int32_t _connectionCounter = 0;
+#endif
+
+@interface GCDWebServerConnection () {
+@private
+  GCDWebServer* _server;
+  NSData* _localAddress;
+  NSData* _remoteAddress;
+  CFSocketNativeHandle _socket;
+  NSUInteger _bytesRead;
+  NSUInteger _bytesWritten;
+  BOOL _virtualHEAD;
+  
+  CFHTTPMessageRef _requestMessage;
+  GCDWebServerRequest* _request;
+  GCDWebServerHandler* _handler;
+  CFHTTPMessageRef _responseMessage;
+  GCDWebServerResponse* _response;
+  NSInteger _statusCode;
+  
+  BOOL _opened;
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  NSUInteger _connectionIndex;
+  NSString* _requestPath;
+  int _requestFD;
+  NSString* _responsePath;
+  int _responseFD;
+#endif
+}
+@end
+
+@implementation GCDWebServerConnection (Read)
+
+- (void)_readData:(NSMutableData*)data withLength:(NSUInteger)length completionBlock:(ReadDataCompletionBlock)block {
+  dispatch_read(_socket, length, kGCDWebServerGCDQueue, ^(dispatch_data_t buffer, int error) {
+    
+    @autoreleasepool {
+      if (error == 0) {
+        size_t size = dispatch_data_get_size(buffer);
+        if (size > 0) {
+          NSUInteger originalLength = data.length;
+          dispatch_data_apply(buffer, ^bool(dispatch_data_t region, size_t chunkOffset, const void* chunkBytes, size_t chunkSize) {
+            [data appendBytes:chunkBytes length:chunkSize];
+            return true;
+          });
+          [self didReadBytes:((char*)data.bytes + originalLength) length:(data.length - originalLength)];
+          block(YES);
+        } else {
+          if (_bytesRead > 0) {
+            GWS_LOG_ERROR(@"No more data available on socket %i", _socket);
+          } else {
+            GWS_LOG_WARNING(@"No data received from socket %i", _socket);
+          }
+          block(NO);
+        }
+      } else {
+        GWS_LOG_ERROR(@"Error while reading from socket %i: %s (%i)", _socket, strerror(error), error);
+        block(NO);
+      }
+    }
+    
+  });
+}
+
+- (void)_readHeaders:(NSMutableData*)headersData withCompletionBlock:(ReadHeadersCompletionBlock)block {
+  GWS_DCHECK(_requestMessage);
+  [self _readData:headersData withLength:NSUIntegerMax completionBlock:^(BOOL success) {
+    
+    if (success) {
+      NSRange range = [headersData rangeOfData:_CRLFCRLFData options:0 range:NSMakeRange(0, headersData.length)];
+      if (range.location == NSNotFound) {
+        [self _readHeaders:headersData withCompletionBlock:block];
+      } else {
+        NSUInteger length = range.location + range.length;
+        if (CFHTTPMessageAppendBytes(_requestMessage, headersData.bytes, length)) {
+          if (CFHTTPMessageIsHeaderComplete(_requestMessage)) {
+            block([headersData subdataWithRange:NSMakeRange(length, headersData.length - length)]);
+          } else {
+            GWS_LOG_ERROR(@"Failed parsing request headers from socket %i", _socket);
+            block(nil);
+          }
+        } else {
+          GWS_LOG_ERROR(@"Failed appending request headers data from socket %i", _socket);
+          block(nil);
+        }
+      }
+    } else {
+      block(nil);
+    }
+    
+  }];
+}
+
+- (void)_readBodyWithRemainingLength:(NSUInteger)length completionBlock:(ReadBodyCompletionBlock)block {
+  GWS_DCHECK([_request hasBody] && ![_request usesChunkedTransferEncoding]);
+  NSMutableData* bodyData = [[NSMutableData alloc] initWithCapacity:kBodyReadCapacity];
+  [self _readData:bodyData withLength:length completionBlock:^(BOOL success) {
+    
+    if (success) {
+      if (bodyData.length <= length) {
+        NSError* error = nil;
+        if ([_request performWriteData:bodyData error:&error]) {
+          NSUInteger remainingLength = length - bodyData.length;
+          if (remainingLength) {
+            [self _readBodyWithRemainingLength:remainingLength completionBlock:block];
+          } else {
+            block(YES);
+          }
+        } else {
+          GWS_LOG_ERROR(@"Failed writing request body on socket %i: %@", _socket, error);
+          block(NO);
+        }
+      } else {
+        GWS_LOG_ERROR(@"Unexpected extra content reading request body on socket %i", _socket);
+        block(NO);
+        GWS_DNOT_REACHED();
+      }
+    } else {
+      block(NO);
+    }
+    
+  }];
+}
+
+static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) {
+  char buffer[size + 1];
+  bcopy(bytes, buffer, size);
+  buffer[size] = 0;
+  char* end = NULL;
+  long result = strtol(buffer, &end, 16);
+  return ((end != NULL) && (*end == 0) && (result >= 0) ? result : NSNotFound);
+}
+
+- (void)_readNextBodyChunk:(NSMutableData*)chunkData completionBlock:(ReadBodyCompletionBlock)block {
+  GWS_DCHECK([_request hasBody] && [_request usesChunkedTransferEncoding]);
+  
+  while (1) {
+    NSRange range = [chunkData rangeOfData:_CRLFData options:0 range:NSMakeRange(0, chunkData.length)];
+    if (range.location == NSNotFound) {
+      break;
+    }
+    NSRange extensionRange = [chunkData rangeOfData:[NSData dataWithBytes:";" length:1] options:0 range:NSMakeRange(0, range.location)];  // Ignore chunk extensions
+    NSUInteger length = _ScanHexNumber((char*)chunkData.bytes, extensionRange.location != NSNotFound ? extensionRange.location : range.location);
+    if (length != NSNotFound) {
+      if (length) {
+        if (chunkData.length < range.location + range.length + length + 2) {
+          break;
+        }
+        const char* ptr = (char*)chunkData.bytes + range.location + range.length + length;
+        if ((*ptr == '\r') && (*(ptr + 1) == '\n')) {
+          NSError* error = nil;
+          if ([_request performWriteData:[chunkData subdataWithRange:NSMakeRange(range.location + range.length, length)] error:&error]) {
+            [chunkData replaceBytesInRange:NSMakeRange(0, range.location + range.length + length + 2) withBytes:NULL length:0];
+          } else {
+            GWS_LOG_ERROR(@"Failed writing request body on socket %i: %@", _socket, error);
+            block(NO);
+            return;
+          }
+        } else {
+          GWS_LOG_ERROR(@"Missing terminating CRLF sequence for chunk reading request body on socket %i", _socket);
+          block(NO);
+          return;
+        }
+      } else {
+        NSRange trailerRange = [chunkData rangeOfData:_CRLFCRLFData options:0 range:NSMakeRange(range.location, chunkData.length - range.location)];  // Ignore trailers
+        if (trailerRange.location != NSNotFound) {
+          block(YES);
+          return;
+        }
+      }
+    } else {
+      GWS_LOG_ERROR(@"Invalid chunk length reading request body on socket %i", _socket);
+      block(NO);
+      return;
+    }
+  }
+  
+  [self _readData:chunkData withLength:NSUIntegerMax completionBlock:^(BOOL success) {
+    
+    if (success) {
+      [self _readNextBodyChunk:chunkData completionBlock:block];
+    } else {
+      block(NO);
+    }
+    
+  }];
+}
+
+@end
+
+@implementation GCDWebServerConnection (Write)
+
+- (void)_writeData:(NSData*)data withCompletionBlock:(WriteDataCompletionBlock)block {
+  dispatch_data_t buffer = dispatch_data_create(data.bytes, data.length, kGCDWebServerGCDQueue, ^{
+    [data self];  // Keeps ARC from releasing data too early
+  });
+  dispatch_write(_socket, buffer, kGCDWebServerGCDQueue, ^(dispatch_data_t remainingData, int error) {
+    
+    @autoreleasepool {
+      if (error == 0) {
+        GWS_DCHECK(remainingData == NULL);
+        [self didWriteBytes:data.bytes length:data.length];
+        block(YES);
+      } else {
+        GWS_LOG_ERROR(@"Error while writing to socket %i: %s (%i)", _socket, strerror(error), error);
+        block(NO);
+      }
+    }
+    
+  });
+#if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+  dispatch_release(buffer);
+#endif
+}
+
+- (void)_writeHeadersWithCompletionBlock:(WriteHeadersCompletionBlock)block {
+  GWS_DCHECK(_responseMessage);
+  CFDataRef data = CFHTTPMessageCopySerializedMessage(_responseMessage);
+  [self _writeData:(__bridge NSData*)data withCompletionBlock:block];
+  CFRelease(data);
+}
+
+- (void)_writeBodyWithCompletionBlock:(WriteBodyCompletionBlock)block {
+  GWS_DCHECK([_response hasBody]);
+  [_response performReadDataWithCompletion:^(NSData* data, NSError* error) {
+    
+    if (data) {
+      if (data.length) {
+        if (_response.usesChunkedTransferEncoding) {
+          const char* hexString = [[NSString stringWithFormat:@"%lx", (unsigned long)data.length] UTF8String];
+          size_t hexLength = strlen(hexString);
+          NSData* chunk = [NSMutableData dataWithLength:(hexLength + 2 + data.length + 2)];
+          if (chunk == nil) {
+            GWS_LOG_ERROR(@"Failed allocating memory for response body chunk for socket %i: %@", _socket, error);
+            block(NO);
+            return;
+          }
+          char* ptr = (char*)[(NSMutableData*)chunk mutableBytes];
+          bcopy(hexString, ptr, hexLength);
+          ptr += hexLength;
+          *ptr++ = '\r';
+          *ptr++ = '\n';
+          bcopy(data.bytes, ptr, data.length);
+          ptr += data.length;
+          *ptr++ = '\r';
+          *ptr = '\n';
+          data = chunk;
+        }
+        [self _writeData:data withCompletionBlock:^(BOOL success) {
+          
+          if (success) {
+            [self _writeBodyWithCompletionBlock:block];
+          } else {
+            block(NO);
+          }
+          
+        }];
+      } else {
+        if (_response.usesChunkedTransferEncoding) {
+          [self _writeData:_lastChunkData withCompletionBlock:^(BOOL success) {
+            
+            block(success);
+            
+          }];
+        } else {
+          block(YES);
+        }
+      }
+    } else {
+      GWS_LOG_ERROR(@"Failed reading response body for socket %i: %@", _socket, error);
+      block(NO);
+    }
+    
+  }];
+}
+
+@end
+
+@implementation GCDWebServerConnection
+
+@synthesize server=_server, localAddressData=_localAddress, remoteAddressData=_remoteAddress, totalBytesRead=_bytesRead, totalBytesWritten=_bytesWritten;
+
++ (void)initialize {
+  if (_CRLFData == nil) {
+    _CRLFData = [[NSData alloc] initWithBytes:"\r\n" length:2];
+    GWS_DCHECK(_CRLFData);
+  }
+  if (_CRLFCRLFData == nil) {
+    _CRLFCRLFData = [[NSData alloc] initWithBytes:"\r\n\r\n" length:4];
+    GWS_DCHECK(_CRLFCRLFData);
+  }
+  if (_continueData == nil) {
+    CFHTTPMessageRef message = CFHTTPMessageCreateResponse(kCFAllocatorDefault, 100, NULL, kCFHTTPVersion1_1);
+    _continueData = CFBridgingRelease(CFHTTPMessageCopySerializedMessage(message));
+    CFRelease(message);
+    GWS_DCHECK(_continueData);
+  }
+  if (_lastChunkData == nil) {
+    _lastChunkData = [[NSData alloc] initWithBytes:"0\r\n\r\n" length:5];
+  }
+  if (_digestAuthenticationNonce == nil) {
+    CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
+    _digestAuthenticationNonce = GCDWebServerComputeMD5Digest(@"%@", CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, uuid)));
+    CFRelease(uuid);
+  }
+}
+
+- (BOOL)isUsingIPv6 {
+  const struct sockaddr* localSockAddr = _localAddress.bytes;
+  return (localSockAddr->sa_family == AF_INET6);
+}
+
+- (void)_initializeResponseHeadersWithStatusCode:(NSInteger)statusCode {
+  _statusCode = statusCode;
+  _responseMessage = CFHTTPMessageCreateResponse(kCFAllocatorDefault, statusCode, NULL, kCFHTTPVersion1_1);
+  CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Connection"), CFSTR("Close"));
+  CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Server"), (__bridge CFStringRef)_server.serverName);
+  CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Date"), (__bridge CFStringRef)GCDWebServerFormatRFC822([NSDate date]));
+}
+
+- (void)_startProcessingRequest {
+  GWS_DCHECK(_responseMessage == NULL);
+  
+  GCDWebServerResponse* preflightResponse = [self preflightRequest:_request];
+  if (preflightResponse) {
+    [self _finishProcessingRequest:preflightResponse];
+  } else {
+    [self processRequest:_request completion:^(GCDWebServerResponse* processResponse) {
+      [self _finishProcessingRequest:processResponse];
+    }];
+  }
+}
+
+// http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+- (void)_finishProcessingRequest:(GCDWebServerResponse*)response {
+  GWS_DCHECK(_responseMessage == NULL);
+  BOOL hasBody = NO;
+  
+  if (response) {
+    response = [self overrideResponse:response forRequest:_request];
+  }
+  if (response) {
+    if ([response hasBody]) {
+      [response prepareForReading];
+      hasBody = !_virtualHEAD;
+    }
+    NSError* error = nil;
+    if (hasBody && ![response performOpen:&error]) {
+      GWS_LOG_ERROR(@"Failed opening response body for socket %i: %@", _socket, error);
+    } else {
+      _response = response;
+    }
+  }
+  
+  if (_response) {
+    [self _initializeResponseHeadersWithStatusCode:_response.statusCode];
+    if (_response.lastModifiedDate) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Last-Modified"), (__bridge CFStringRef)GCDWebServerFormatRFC822(_response.lastModifiedDate));
+    }
+    if (_response.eTag) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("ETag"), (__bridge CFStringRef)_response.eTag);
+    }
+    if ((_response.statusCode >= 200) && (_response.statusCode < 300)) {
+      if (_response.cacheControlMaxAge > 0) {
+        CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Cache-Control"), (__bridge CFStringRef)[NSString stringWithFormat:@"max-age=%i, public", (int)_response.cacheControlMaxAge]);
+      } else {
+        CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Cache-Control"), CFSTR("no-cache"));
+      }
+    }
+    if (_response.contentType != nil) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Content-Type"), (__bridge CFStringRef)GCDWebServerNormalizeHeaderValue(_response.contentType));
+    }
+    if (_response.contentLength != NSUIntegerMax) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Content-Length"), (__bridge CFStringRef)[NSString stringWithFormat:@"%lu", (unsigned long)_response.contentLength]);
+    }
+    if (_response.usesChunkedTransferEncoding) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, CFSTR("Transfer-Encoding"), CFSTR("chunked"));
+    }
+    [_response.additionalHeaders enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL* stop) {
+      CFHTTPMessageSetHeaderFieldValue(_responseMessage, (__bridge CFStringRef)key, (__bridge CFStringRef)obj);
+    }];
+    [self _writeHeadersWithCompletionBlock:^(BOOL success) {
+      
+      if (success) {
+        if (hasBody) {
+          [self _writeBodyWithCompletionBlock:^(BOOL successInner) {
+            
+            [_response performClose];  // TODO: There's nothing we can do on failure as headers have already been sent
+            
+          }];
+        }
+      } else if (hasBody) {
+        [_response performClose];
+      }
+      
+    }];
+  } else {
+    [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+  }
+  
+}
+
+- (void)_readBodyWithLength:(NSUInteger)length initialData:(NSData*)initialData {
+  NSError* error = nil;
+  if (![_request performOpen:&error]) {
+    GWS_LOG_ERROR(@"Failed opening request body for socket %i: %@", _socket, error);
+    [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+    return;
+  }
+  
+  if (initialData.length) {
+    if (![_request performWriteData:initialData error:&error]) {
+      GWS_LOG_ERROR(@"Failed writing request body on socket %i: %@", _socket, error);
+      if (![_request performClose:&error]) {
+        GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error);
+      }
+      [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+      return;
+    }
+    length -= initialData.length;
+  }
+  
+  if (length) {
+    [self _readBodyWithRemainingLength:length completionBlock:^(BOOL success) {
+      
+      NSError* localError = nil;
+      if ([_request performClose:&localError]) {
+        [self _startProcessingRequest];
+      } else {
+        GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error);
+        [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+      }
+      
+    }];
+  } else {
+    if ([_request performClose:&error]) {
+      [self _startProcessingRequest];
+    } else {
+      GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error);
+      [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+    }
+  }
+}
+
+- (void)_readChunkedBodyWithInitialData:(NSData*)initialData {
+  NSError* error = nil;
+  if (![_request performOpen:&error]) {
+    GWS_LOG_ERROR(@"Failed opening request body for socket %i: %@", _socket, error);
+    [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+    return;
+  }
+  
+  NSMutableData* chunkData = [[NSMutableData alloc] initWithData:initialData];
+  [self _readNextBodyChunk:chunkData completionBlock:^(BOOL success) {
+  
+    NSError* localError = nil;
+    if ([_request performClose:&localError]) {
+      [self _startProcessingRequest];
+    } else {
+      GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error);
+      [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+    }
+    
+  }];
+}
+
+- (void)_readRequestHeaders {
+  _requestMessage = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, true);
+  NSMutableData* headersData = [[NSMutableData alloc] initWithCapacity:kHeadersReadCapacity];
+  [self _readHeaders:headersData withCompletionBlock:^(NSData* extraData) {
+    
+    if (extraData) {
+      NSString* requestMethod = CFBridgingRelease(CFHTTPMessageCopyRequestMethod(_requestMessage));  // Method verbs are case-sensitive and uppercase
+      if (_server.shouldAutomaticallyMapHEADToGET && [requestMethod isEqualToString:@"HEAD"]) {
+        requestMethod = @"GET";
+        _virtualHEAD = YES;
+      }
+      NSDictionary* requestHeaders = CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(_requestMessage));  // Header names are case-insensitive but CFHTTPMessageCopyAllHeaderFields() will standardize the common ones
+      NSURL* requestURL = CFBridgingRelease(CFHTTPMessageCopyRequestURL(_requestMessage));
+      if (requestURL) {
+        requestURL = [self rewriteRequestURL:requestURL withMethod:requestMethod headers:requestHeaders];
+        GWS_DCHECK(requestURL);
+      }
+      NSString* requestPath = requestURL ? GCDWebServerUnescapeURLString(CFBridgingRelease(CFURLCopyPath((CFURLRef)requestURL))) : nil;  // Don't use -[NSURL path] which strips the ending slash
+      NSString* queryString = requestURL ? CFBridgingRelease(CFURLCopyQueryString((CFURLRef)requestURL, NULL)) : nil;  // Don't use -[NSURL query] to make sure query is not unescaped;
+      NSDictionary* requestQuery = queryString ? GCDWebServerParseURLEncodedForm(queryString) : @{};
+      if (requestMethod && requestURL && requestHeaders && requestPath && requestQuery) {
+        for (_handler in _server.handlers) {
+          _request = _handler.matchBlock(requestMethod, requestURL, requestHeaders, requestPath, requestQuery);
+          if (_request) {
+            break;
+          }
+        }
+        if (_request) {
+          if ([_request hasBody]) {
+            [_request prepareForWriting];
+            if (_request.usesChunkedTransferEncoding || (extraData.length <= _request.contentLength)) {
+              NSString* expectHeader = [requestHeaders objectForKey:@"Expect"];
+              if (expectHeader) {
+                if ([expectHeader caseInsensitiveCompare:@"100-continue"] == NSOrderedSame) {  // TODO: Actually validate request before continuing
+                  [self _writeData:_continueData withCompletionBlock:^(BOOL success) {
+                    
+                    if (success) {
+                      if (_request.usesChunkedTransferEncoding) {
+                        [self _readChunkedBodyWithInitialData:extraData];
+                      } else {
+                        [self _readBodyWithLength:_request.contentLength initialData:extraData];
+                      }
+                    }
+                    
+                  }];
+                } else {
+                  GWS_LOG_ERROR(@"Unsupported 'Expect' / 'Content-Length' header combination on socket %i", _socket);
+                  [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_ExpectationFailed];
+                }
+              } else {
+                if (_request.usesChunkedTransferEncoding) {
+                  [self _readChunkedBodyWithInitialData:extraData];
+                } else {
+                  [self _readBodyWithLength:_request.contentLength initialData:extraData];
+                }
+              }
+            } else {
+              GWS_LOG_ERROR(@"Unexpected 'Content-Length' header value on socket %i", _socket);
+              [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_BadRequest];
+            }
+          } else {
+            [self _startProcessingRequest];
+          }
+        } else {
+          _request = [[GCDWebServerRequest alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:requestPath query:requestQuery];
+          GWS_DCHECK(_request);
+          [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_MethodNotAllowed];
+        }
+      } else {
+        [self abortRequest:nil withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+        GWS_DNOT_REACHED();
+      }
+    } else {
+      [self abortRequest:nil withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError];
+    }
+    
+  }];
+}
+
+- (id)initWithServer:(GCDWebServer*)server localAddress:(NSData*)localAddress remoteAddress:(NSData*)remoteAddress socket:(CFSocketNativeHandle)socket {
+  if ((self = [super init])) {
+    _server = server;
+    _localAddress = localAddress;
+    _remoteAddress = remoteAddress;
+    _socket = socket;
+    GWS_LOG_DEBUG(@"Did open connection on socket %i", _socket);
+    
+    [_server willStartConnection:self];
+    
+    if (![self open]) {
+      close(_socket);
+      return nil;
+    }
+    _opened = YES;
+    
+    [self _readRequestHeaders];
+  }
+  return self;
+}
+
+- (NSString*)localAddressString {
+  return GCDWebServerStringFromSockAddr(_localAddress.bytes, YES);
+}
+
+- (NSString*)remoteAddressString {
+  return GCDWebServerStringFromSockAddr(_remoteAddress.bytes, YES);
+}
+
+- (void)dealloc {
+  int result = close(_socket);
+  if (result != 0) {
+    GWS_LOG_ERROR(@"Failed closing socket %i for connection: %s (%i)", _socket, strerror(errno), errno);
+  } else {
+    GWS_LOG_DEBUG(@"Did close connection on socket %i", _socket);
+  }
+  
+  if (_opened) {
+    [self close];
+  }
+  
+  [_server didEndConnection:self];
+  
+  if (_requestMessage) {
+    CFRelease(_requestMessage);
+  }
+  
+  if (_responseMessage) {
+    CFRelease(_responseMessage);
+  }
+}
+
+@end
+
+@implementation GCDWebServerConnection (Subclassing)
+
+- (BOOL)open {
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  if (_server.recordingEnabled) {
+    _connectionIndex = OSAtomicIncrement32(&_connectionCounter);
+    
+    _requestPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]];
+    _requestFD = open([_requestPath fileSystemRepresentation], O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+    GWS_DCHECK(_requestFD > 0);
+    
+    _responsePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]];
+    _responseFD = open([_responsePath fileSystemRepresentation], O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+    GWS_DCHECK(_responseFD > 0);
+  }
+#endif
+  
+  return YES;
+}
+
+- (void)didReadBytes:(const void*)bytes length:(NSUInteger)length {
+  GWS_LOG_DEBUG(@"Connection received %lu bytes on socket %i", (unsigned long)length, _socket);
+  _bytesRead += length;
+  
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  if ((_requestFD > 0) && (write(_requestFD, bytes, length) != (ssize_t)length)) {
+    GWS_LOG_ERROR(@"Failed recording request data: %s (%i)", strerror(errno), errno);
+    close(_requestFD);
+    _requestFD = 0;
+  }
+#endif
+}
+
+- (void)didWriteBytes:(const void*)bytes length:(NSUInteger)length {
+  GWS_LOG_DEBUG(@"Connection sent %lu bytes on socket %i", (unsigned long)length, _socket);
+  _bytesWritten += length;
+  
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  if ((_responseFD > 0) && (write(_responseFD, bytes, length) != (ssize_t)length)) {
+    GWS_LOG_ERROR(@"Failed recording response data: %s (%i)", strerror(errno), errno);
+    close(_responseFD);
+    _responseFD = 0;
+  }
+#endif
+}
+
+- (NSURL*)rewriteRequestURL:(NSURL*)url withMethod:(NSString*)method headers:(NSDictionary*)headers {
+  return url;
+}
+
+// https://tools.ietf.org/html/rfc2617
+- (GCDWebServerResponse*)preflightRequest:(GCDWebServerRequest*)request {
+  GWS_LOG_DEBUG(@"Connection on socket %i preflighting request \"%@ %@\" with %lu bytes body", _socket, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead);
+  GCDWebServerResponse* response = nil;
+  if (_server.authenticationBasicAccounts) {
+    __block BOOL authenticated = NO;
+    NSString* authorizationHeader = [request.headers objectForKey:@"Authorization"];
+    if ([authorizationHeader hasPrefix:@"Basic "]) {
+      NSString* basicAccount = [authorizationHeader substringFromIndex:6];
+      [_server.authenticationBasicAccounts enumerateKeysAndObjectsUsingBlock:^(NSString* username, NSString* digest, BOOL* stop) {
+        if ([basicAccount isEqualToString:digest]) {
+          authenticated = YES;
+          *stop = YES;
+        }
+      }];
+    }
+    if (!authenticated) {
+      response = [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_Unauthorized];
+      [response setValue:[NSString stringWithFormat:@"Basic realm=\"%@\"", _server.authenticationRealm] forAdditionalHeader:@"WWW-Authenticate"];
+    }
+  } else if (_server.authenticationDigestAccounts) {
+    BOOL authenticated = NO;
+    BOOL isStaled = NO;
+    NSString* authorizationHeader = [request.headers objectForKey:@"Authorization"];
+    if ([authorizationHeader hasPrefix:@"Digest "]) {
+      NSString* realm = GCDWebServerExtractHeaderValueParameter(authorizationHeader, @"realm");
+      if ([realm isEqualToString:_server.authenticationRealm]) {
+        NSString* nonce = GCDWebServerExtractHeaderValueParameter(authorizationHeader, @"nonce");
+        if ([nonce isEqualToString:_digestAuthenticationNonce]) {
+          NSString* username = GCDWebServerExtractHeaderValueParameter(authorizationHeader, @"username");
+          NSString* uri = GCDWebServerExtractHeaderValueParameter(authorizationHeader, @"uri");
+          NSString* actualResponse = GCDWebServerExtractHeaderValueParameter(authorizationHeader, @"response");
+          NSString* ha1 = [_server.authenticationDigestAccounts objectForKey:username];
+          NSString* ha2 = GCDWebServerComputeMD5Digest(@"%@:%@", request.method, uri);  // We cannot use "request.path" as the query string is required
+          NSString* expectedResponse = GCDWebServerComputeMD5Digest(@"%@:%@:%@", ha1, _digestAuthenticationNonce, ha2);
+          if ([actualResponse isEqualToString:expectedResponse]) {
+            authenticated = YES;
+          }
+        } else if (nonce.length) {
+          isStaled = YES;
+        }
+      }
+    }
+    if (!authenticated) {
+      response = [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_Unauthorized];
+      [response setValue:[NSString stringWithFormat:@"Digest realm=\"%@\", nonce=\"%@\"%@", _server.authenticationRealm, _digestAuthenticationNonce, isStaled ? @", stale=TRUE" : @""] forAdditionalHeader:@"WWW-Authenticate"];  // TODO: Support Quality of Protection ("qop")
+    }
+  }
+  return response;
+}
+
+- (void)processRequest:(GCDWebServerRequest*)request completion:(GCDWebServerCompletionBlock)completion {
+  GWS_LOG_DEBUG(@"Connection on socket %i processing request \"%@ %@\" with %lu bytes body", _socket, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead);
+  @try {
+    _handler.asyncProcessBlock(request, completion);
+  }
+  @catch (NSException* exception) {
+    GWS_LOG_EXCEPTION(exception);
+  }
+}
+
+// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26
+static inline BOOL _CompareResources(NSString* responseETag, NSString* requestETag, NSDate* responseLastModified, NSDate* requestLastModified) {
+  if ([requestETag isEqualToString:@"*"] && (!responseLastModified || !requestLastModified || ([responseLastModified compare:requestLastModified] != NSOrderedDescending))) {
+    return YES;
+  } else {
+    if ([responseETag isEqualToString:requestETag]) {
+      return YES;
+    }
+    if (responseLastModified && requestLastModified && ([responseLastModified compare:requestLastModified] != NSOrderedDescending)) {
+      return YES;
+    }
+  }
+  return NO;
+}
+
+- (GCDWebServerResponse*)overrideResponse:(GCDWebServerResponse*)response forRequest:(GCDWebServerRequest*)request {
+  if ((response.statusCode >= 200) && (response.statusCode < 300) && _CompareResources(response.eTag, request.ifNoneMatch, response.lastModifiedDate, request.ifModifiedSince)) {
+    NSInteger code = [request.method isEqualToString:@"HEAD"] || [request.method isEqualToString:@"GET"] ? kGCDWebServerHTTPStatusCode_NotModified : kGCDWebServerHTTPStatusCode_PreconditionFailed;
+    GCDWebServerResponse* newResponse = [GCDWebServerResponse responseWithStatusCode:code];
+    newResponse.cacheControlMaxAge = response.cacheControlMaxAge;
+    newResponse.lastModifiedDate = response.lastModifiedDate;
+    newResponse.eTag = response.eTag;
+    GWS_DCHECK(newResponse);
+    return newResponse;
+  }
+  return response;
+}
+
+- (void)abortRequest:(GCDWebServerRequest*)request withStatusCode:(NSInteger)statusCode {
+  GWS_DCHECK(_responseMessage == NULL);
+  GWS_DCHECK((statusCode >= 400) && (statusCode < 600));
+  [self _initializeResponseHeadersWithStatusCode:statusCode];
+  [self _writeHeadersWithCompletionBlock:^(BOOL success) {
+    ;  // Nothing more to do
+  }];
+  GWS_LOG_DEBUG(@"Connection aborted with status code %i on socket %i", (int)statusCode, _socket);
+}
+
+- (void)close {
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  if (_requestPath) {
+    BOOL success = NO;
+    NSError* error = nil;
+    if (_requestFD > 0) {
+      close(_requestFD);
+      NSString* name = [NSString stringWithFormat:@"%03lu-%@.request", (unsigned long)_connectionIndex, _virtualHEAD ? @"HEAD" : _request.method];
+      success = [[NSFileManager defaultManager] moveItemAtPath:_requestPath toPath:[[[NSFileManager defaultManager] currentDirectoryPath] stringByAppendingPathComponent:name] error:&error];
+    }
+    if (!success) {
+      GWS_LOG_ERROR(@"Failed saving recorded request: %@", error);
+      GWS_DNOT_REACHED();
+    }
+    unlink([_requestPath fileSystemRepresentation]);
+  }
+  
+  if (_responsePath) {
+    BOOL success = NO;
+    NSError* error = nil;
+    if (_responseFD > 0) {
+      close(_responseFD);
+      NSString* name = [NSString stringWithFormat:@"%03lu-%i.response", (unsigned long)_connectionIndex, (int)_statusCode];
+      success = [[NSFileManager defaultManager] moveItemAtPath:_responsePath toPath:[[[NSFileManager defaultManager] currentDirectoryPath] stringByAppendingPathComponent:name] error:&error];
+    }
+    if (!success) {
+      GWS_LOG_ERROR(@"Failed saving recorded response: %@", error);
+      GWS_DNOT_REACHED();
+    }
+    unlink([_responsePath fileSystemRepresentation]);
+  }
+#endif
+  
+  if (_request) {
+    GWS_LOG_VERBOSE(@"[%@] %@ %i \"%@ %@\" (%lu | %lu)", self.localAddressString, self.remoteAddressString, (int)_statusCode, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead, (unsigned long)_bytesWritten);
+  } else {
+    GWS_LOG_VERBOSE(@"[%@] %@ %i \"(invalid request)\" (%lu | %lu)", self.localAddressString, self.remoteAddressString, (int)_statusCode, (unsigned long)_bytesRead, (unsigned long)_bytesWritten);
+  }
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.h
new file mode 100644
index 0000000..a8b2857
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.h
@@ -0,0 +1,101 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ *  Converts a file extension to the corresponding MIME type.
+ *  If there is no match, "application/octet-stream" is returned.
+ */
+NSString* GCDWebServerGetMimeTypeForExtension(NSString* extension);
+
+/**
+ *  Add percent-escapes to a string so it can be used in a URL.
+ *  The legal characters ":@/?&=+" are also escaped to ensure compatibility
+ *  with URL encoded forms and URL queries.
+ */
+NSString* GCDWebServerEscapeURLString(NSString* string);
+
+/**
+ *  Unescapes a URL percent-encoded string.
+ */
+NSString* GCDWebServerUnescapeURLString(NSString* string);
+
+/**
+ *  Extracts the unescaped names and values from an
+ *  "application/x-www-form-urlencoded" form.
+ *  http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
+ */
+NSDictionary* GCDWebServerParseURLEncodedForm(NSString* form);
+
+/**
+ *  On OS X, returns the IPv4 or IPv6 address as a string of the primary
+ *  connected service or nil if not available.
+ *  
+ *  On iOS, returns the IPv4 or IPv6 address as a string of the WiFi
+ *  interface if connected or nil otherwise.
+ */
+NSString* GCDWebServerGetPrimaryIPAddress(BOOL useIPv6);
+
+/**
+ *  Converts a date into a string using RFC822 formatting.
+ *  https://tools.ietf.org/html/rfc822#section-5
+ *  https://tools.ietf.org/html/rfc1123#section-5.2.14
+ */
+NSString* GCDWebServerFormatRFC822(NSDate* date);
+
+/**
+ *  Converts a RFC822 formatted string into a date.
+ *  https://tools.ietf.org/html/rfc822#section-5
+ *  https://tools.ietf.org/html/rfc1123#section-5.2.14
+ *
+ *  @warning Timezones other than GMT are not supported by this function.
+ */
+NSDate* GCDWebServerParseRFC822(NSString* string);
+
+/**
+ *  Converts a date into a string using IOS 8601 formatting.
+ *  http://tools.ietf.org/html/rfc3339#section-5.6
+ */
+NSString* GCDWebServerFormatISO8601(NSDate* date);
+
+/**
+ *  Converts a ISO 8601 formatted string into a date.
+ *  http://tools.ietf.org/html/rfc3339#section-5.6
+ *
+ *  @warning Only "calendar" variant is supported at this time and timezones
+ *  other than GMT are not supported either.
+ */
+NSDate* GCDWebServerParseISO8601(NSString* string);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.m
new file mode 100644
index 0000000..d81af0b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerFunctions.m
@@ -0,0 +1,299 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <TargetConditionals.h>
+#if TARGET_OS_IPHONE
+#import <MobileCoreServices/MobileCoreServices.h>
+#else
+#import <SystemConfiguration/SystemConfiguration.h>
+#endif
+#import <CommonCrypto/CommonDigest.h>
+
+#import <ifaddrs.h>
+#import <net/if.h>
+#import <netdb.h>
+
+#import "GCDWebServerPrivate.h"
+
+static NSDateFormatter* _dateFormatterRFC822 = nil;
+static NSDateFormatter* _dateFormatterISO8601 = nil;
+static dispatch_queue_t _dateFormatterQueue = NULL;
+
+// TODO: Handle RFC 850 and ANSI C's asctime() format
+void GCDWebServerInitializeFunctions() {
+  GWS_DCHECK([NSThread isMainThread]);  // NSDateFormatter should be initialized on main thread
+  if (_dateFormatterRFC822 == nil) {
+    _dateFormatterRFC822 = [[NSDateFormatter alloc] init];
+    _dateFormatterRFC822.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
+    _dateFormatterRFC822.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
+    _dateFormatterRFC822.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
+    GWS_DCHECK(_dateFormatterRFC822);
+  }
+  if (_dateFormatterISO8601 == nil) {
+    _dateFormatterISO8601 = [[NSDateFormatter alloc] init];
+    _dateFormatterISO8601.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
+    _dateFormatterISO8601.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss'+00:00'";
+    _dateFormatterISO8601.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
+    GWS_DCHECK(_dateFormatterISO8601);
+  }
+  if (_dateFormatterQueue == NULL) {
+    _dateFormatterQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL);
+    GWS_DCHECK(_dateFormatterQueue);
+  }
+}
+
+NSString* GCDWebServerNormalizeHeaderValue(NSString* value) {
+  if (value) {
+    NSRange range = [value rangeOfString:@";"];  // Assume part before ";" separator is case-insensitive
+    if (range.location != NSNotFound) {
+      value = [[[value substringToIndex:range.location] lowercaseString] stringByAppendingString:[value substringFromIndex:range.location]];
+    } else {
+      value = [value lowercaseString];
+    }
+  }
+  return value;
+}
+
+NSString* GCDWebServerTruncateHeaderValue(NSString* value) {
+  NSRange range = [value rangeOfString:@";"];
+  return range.location != NSNotFound ? [value substringToIndex:range.location] : value;
+}
+
+NSString* GCDWebServerExtractHeaderValueParameter(NSString* value, NSString* name) {
+  NSString* parameter = nil;
+  NSScanner* scanner = [[NSScanner alloc] initWithString:value];
+  [scanner setCaseSensitive:NO];  // Assume parameter names are case-insensitive
+  NSString* string = [NSString stringWithFormat:@"%@=", name];
+  if ([scanner scanUpToString:string intoString:NULL]) {
+    [scanner scanString:string intoString:NULL];
+    if ([scanner scanString:@"\"" intoString:NULL]) {
+      [scanner scanUpToString:@"\"" intoString:&parameter];
+    } else {
+      [scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceCharacterSet] intoString:&parameter];
+    }
+  }
+  return parameter;
+}
+
+// http://www.w3schools.com/tags/ref_charactersets.asp
+NSStringEncoding GCDWebServerStringEncodingFromCharset(NSString* charset) {
+  NSStringEncoding encoding = kCFStringEncodingInvalidId;
+  if (charset) {
+    encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((CFStringRef)charset));
+  }
+  return (encoding != kCFStringEncodingInvalidId ? encoding : NSUTF8StringEncoding);
+}
+
+NSString* GCDWebServerFormatRFC822(NSDate* date) {
+  __block NSString* string;
+  dispatch_sync(_dateFormatterQueue, ^{
+    string = [_dateFormatterRFC822 stringFromDate:date];
+  });
+  return string;
+}
+
+NSDate* GCDWebServerParseRFC822(NSString* string) {
+  __block NSDate* date;
+  dispatch_sync(_dateFormatterQueue, ^{
+    date = [_dateFormatterRFC822 dateFromString:string];
+  });
+  return date;
+}
+
+NSString* GCDWebServerFormatISO8601(NSDate* date) {
+  __block NSString* string;
+  dispatch_sync(_dateFormatterQueue, ^{
+    string = [_dateFormatterISO8601 stringFromDate:date];
+  });
+  return string;
+}
+
+NSDate* GCDWebServerParseISO8601(NSString* string) {
+  __block NSDate* date;
+  dispatch_sync(_dateFormatterQueue, ^{
+    date = [_dateFormatterISO8601 dateFromString:string];
+  });
+  return date;
+}
+
+BOOL GCDWebServerIsTextContentType(NSString* type) {
+  return ([type hasPrefix:@"text/"] || [type hasPrefix:@"application/json"] || [type hasPrefix:@"application/xml"]);
+}
+
+NSString* GCDWebServerDescribeData(NSData* data, NSString* type) {
+  if (GCDWebServerIsTextContentType(type)) {
+    NSString* charset = GCDWebServerExtractHeaderValueParameter(type, @"charset");
+    NSString* string = [[NSString alloc] initWithData:data encoding:GCDWebServerStringEncodingFromCharset(charset)];
+    if (string) {
+      return string;
+    }
+  }
+  return [NSString stringWithFormat:@"<%lu bytes>", (unsigned long)data.length];
+}
+
+NSString* GCDWebServerGetMimeTypeForExtension(NSString* extension) {
+  static NSDictionary* _overrides = nil;
+  if (_overrides == nil) {
+    _overrides = [[NSDictionary alloc] initWithObjectsAndKeys:
+                  @"text/css", @"css",
+                  nil];
+  }
+  NSString* mimeType = nil;
+  extension = [extension lowercaseString];
+  if (extension.length) {
+    mimeType = [_overrides objectForKey:extension];
+    if (mimeType == nil) {
+      CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, NULL);
+      if (uti) {
+        mimeType = CFBridgingRelease(UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType));
+        CFRelease(uti);
+      }
+    }
+  }
+  return mimeType ? mimeType : kGCDWebServerDefaultMimeType;
+}
+
+NSString* GCDWebServerEscapeURLString(NSString* string) {
+  return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":@/?&=+"), kCFStringEncodingUTF8));
+}
+
+NSString* GCDWebServerUnescapeURLString(NSString* string) {
+  return CFBridgingRelease(CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, (CFStringRef)string, CFSTR(""), kCFStringEncodingUTF8));
+}
+
+NSDictionary* GCDWebServerParseURLEncodedForm(NSString* form) {
+  NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
+  NSScanner* scanner = [[NSScanner alloc] initWithString:form];
+  [scanner setCharactersToBeSkipped:nil];
+  while (1) {
+    NSString* key = nil;
+    if (![scanner scanUpToString:@"=" intoString:&key] || [scanner isAtEnd]) {
+      break;
+    }
+    [scanner setScanLocation:([scanner scanLocation] + 1)];
+    
+    NSString* value = nil;
+    [scanner scanUpToString:@"&" intoString:&value];
+    if (value == nil) {
+      value = @"";
+    }
+    
+    key = [key stringByReplacingOccurrencesOfString:@"+" withString:@" "];
+    NSString* unescapedKey = key ? GCDWebServerUnescapeURLString(key) : nil;
+    value = [value stringByReplacingOccurrencesOfString:@"+" withString:@" "];
+    NSString* unescapedValue = value ? GCDWebServerUnescapeURLString(value) : nil;
+    if (unescapedKey && unescapedValue) {
+      [parameters setObject:unescapedValue forKey:unescapedKey];
+    } else {
+      GWS_LOG_WARNING(@"Failed parsing URL encoded form for key \"%@\" and value \"%@\"", key, value);
+      GWS_DNOT_REACHED();
+    }
+    
+    if ([scanner isAtEnd]) {
+      break;
+    }
+    [scanner setScanLocation:([scanner scanLocation] + 1)];
+  }
+  return parameters;
+}
+
+NSString* GCDWebServerStringFromSockAddr(const struct sockaddr* addr, BOOL includeService) {
+  NSString* string = nil;
+  char hostBuffer[NI_MAXHOST];
+  char serviceBuffer[NI_MAXSERV];
+  if (getnameinfo(addr, addr->sa_len, hostBuffer, sizeof(hostBuffer), serviceBuffer, sizeof(serviceBuffer), NI_NUMERICHOST | NI_NUMERICSERV | NI_NOFQDN) >= 0) {
+    string = includeService ? [NSString stringWithFormat:@"%s:%s", hostBuffer, serviceBuffer] : [NSString stringWithUTF8String:hostBuffer];
+  } else {
+    GWS_DNOT_REACHED();
+  }
+  return string;
+}
+
+NSString* GCDWebServerGetPrimaryIPAddress(BOOL useIPv6) {
+  NSString* address = nil;
+#if TARGET_OS_IPHONE
+#if !TARGET_IPHONE_SIMULATOR
+  const char* primaryInterface = "en0";  // WiFi interface on iOS
+#endif
+#else
+  const char* primaryInterface = NULL;
+  SCDynamicStoreRef store = SCDynamicStoreCreate(kCFAllocatorDefault, CFSTR("GCDWebServer"), NULL, NULL);
+  if (store) {
+    CFPropertyListRef info = SCDynamicStoreCopyValue(store, CFSTR("State:/Network/Global/IPv4"));  // There is no equivalent for IPv6 but the primary interface should be the same
+    if (info) {
+      primaryInterface = [[NSString stringWithString:[(__bridge NSDictionary*)info objectForKey:@"PrimaryInterface"]] UTF8String];
+      CFRelease(info);
+    }
+    CFRelease(store);
+  }
+  if (primaryInterface == NULL) {
+    primaryInterface = "lo0";
+  }
+#endif
+  struct ifaddrs* list;
+  if (getifaddrs(&list) >= 0) {
+    for (struct ifaddrs* ifap = list; ifap; ifap = ifap->ifa_next) {
+#if TARGET_IPHONE_SIMULATOR
+      if (strcmp(ifap->ifa_name, "en0") && strcmp(ifap->ifa_name, "en1"))  // Assume en0 is Ethernet and en1 is WiFi since there is no way to use SystemConfiguration framework in iOS Simulator
+#else
+      if (strcmp(ifap->ifa_name, primaryInterface))
+#endif
+      {
+        continue;
+      }
+      if ((ifap->ifa_flags & IFF_UP) && ((!useIPv6 && (ifap->ifa_addr->sa_family == AF_INET)) || (useIPv6 && (ifap->ifa_addr->sa_family == AF_INET6)))) {
+        address = GCDWebServerStringFromSockAddr(ifap->ifa_addr, NO);
+        break;
+      }
+    }
+    freeifaddrs(list);
+  }
+  return address;
+}
+
+NSString* GCDWebServerComputeMD5Digest(NSString* format, ...) {
+  va_list arguments;
+  va_start(arguments, format);
+  const char* string = [[[NSString alloc] initWithFormat:format arguments:arguments] UTF8String];
+  va_end(arguments);
+  unsigned char md5[CC_MD5_DIGEST_LENGTH];
+  CC_MD5(string, (CC_LONG)strlen(string), md5);
+  char buffer[2 * CC_MD5_DIGEST_LENGTH + 1];
+  for (int i = 0; i < CC_MD5_DIGEST_LENGTH; ++i) {
+    unsigned char byte = md5[i];
+    unsigned char byteHi = (byte & 0xF0) >> 4;
+    buffer[2 * i + 0] = byteHi >= 10 ? 'a' + byteHi - 10 : '0' + byteHi;
+    unsigned char byteLo = byte & 0x0F;
+    buffer[2 * i + 1] = byteLo >= 10 ? 'a' + byteLo - 10 : '0' + byteLo;
+  }
+  buffer[2 * CC_MD5_DIGEST_LENGTH] = 0;
+  return [NSString stringWithUTF8String:buffer];
+}
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerHTTPStatusCodes.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerHTTPStatusCodes.h
new file mode 100644
index 0000000..7af51a2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerHTTPStatusCodes.h
@@ -0,0 +1,116 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+// http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
+
+#import <Foundation/Foundation.h>
+
+/**
+ *  Convenience constants for "informational" HTTP status codes.
+ */
+typedef NS_ENUM(NSInteger, GCDWebServerInformationalHTTPStatusCode) {
+  kGCDWebServerHTTPStatusCode_Continue = 100,
+  kGCDWebServerHTTPStatusCode_SwitchingProtocols = 101,
+  kGCDWebServerHTTPStatusCode_Processing = 102
+};
+
+/**
+ *  Convenience constants for "successful" HTTP status codes.
+ */
+typedef NS_ENUM(NSInteger, GCDWebServerSuccessfulHTTPStatusCode) {
+  kGCDWebServerHTTPStatusCode_OK = 200,
+  kGCDWebServerHTTPStatusCode_Created = 201,
+  kGCDWebServerHTTPStatusCode_Accepted = 202,
+  kGCDWebServerHTTPStatusCode_NonAuthoritativeInformation = 203,
+  kGCDWebServerHTTPStatusCode_NoContent = 204,
+  kGCDWebServerHTTPStatusCode_ResetContent = 205,
+  kGCDWebServerHTTPStatusCode_PartialContent = 206,
+  kGCDWebServerHTTPStatusCode_MultiStatus = 207,
+  kGCDWebServerHTTPStatusCode_AlreadyReported = 208
+};
+
+/**
+ *  Convenience constants for "redirection" HTTP status codes.
+ */
+typedef NS_ENUM(NSInteger, GCDWebServerRedirectionHTTPStatusCode) {
+  kGCDWebServerHTTPStatusCode_MultipleChoices = 300,
+  kGCDWebServerHTTPStatusCode_MovedPermanently = 301,
+  kGCDWebServerHTTPStatusCode_Found = 302,
+  kGCDWebServerHTTPStatusCode_SeeOther = 303,
+  kGCDWebServerHTTPStatusCode_NotModified = 304,
+  kGCDWebServerHTTPStatusCode_UseProxy = 305,
+  kGCDWebServerHTTPStatusCode_TemporaryRedirect = 307,
+  kGCDWebServerHTTPStatusCode_PermanentRedirect = 308
+};
+
+/**
+ *  Convenience constants for "client error" HTTP status codes.
+ */
+typedef NS_ENUM(NSInteger, GCDWebServerClientErrorHTTPStatusCode) {
+  kGCDWebServerHTTPStatusCode_BadRequest = 400,
+  kGCDWebServerHTTPStatusCode_Unauthorized = 401,
+  kGCDWebServerHTTPStatusCode_PaymentRequired = 402,
+  kGCDWebServerHTTPStatusCode_Forbidden = 403,
+  kGCDWebServerHTTPStatusCode_NotFound = 404,
+  kGCDWebServerHTTPStatusCode_MethodNotAllowed = 405,
+  kGCDWebServerHTTPStatusCode_NotAcceptable = 406,
+  kGCDWebServerHTTPStatusCode_ProxyAuthenticationRequired = 407,
+  kGCDWebServerHTTPStatusCode_RequestTimeout = 408,
+  kGCDWebServerHTTPStatusCode_Conflict = 409,
+  kGCDWebServerHTTPStatusCode_Gone = 410,
+  kGCDWebServerHTTPStatusCode_LengthRequired = 411,
+  kGCDWebServerHTTPStatusCode_PreconditionFailed = 412,
+  kGCDWebServerHTTPStatusCode_RequestEntityTooLarge = 413,
+  kGCDWebServerHTTPStatusCode_RequestURITooLong = 414,
+  kGCDWebServerHTTPStatusCode_UnsupportedMediaType = 415,
+  kGCDWebServerHTTPStatusCode_RequestedRangeNotSatisfiable = 416,
+  kGCDWebServerHTTPStatusCode_ExpectationFailed = 417,
+  kGCDWebServerHTTPStatusCode_UnprocessableEntity = 422,
+  kGCDWebServerHTTPStatusCode_Locked = 423,
+  kGCDWebServerHTTPStatusCode_FailedDependency = 424,
+  kGCDWebServerHTTPStatusCode_UpgradeRequired = 426,
+  kGCDWebServerHTTPStatusCode_PreconditionRequired = 428,
+  kGCDWebServerHTTPStatusCode_TooManyRequests = 429,
+  kGCDWebServerHTTPStatusCode_RequestHeaderFieldsTooLarge = 431
+};
+
+/**
+ *  Convenience constants for "server error" HTTP status codes.
+ */
+typedef NS_ENUM(NSInteger, GCDWebServerServerErrorHTTPStatusCode) {
+  kGCDWebServerHTTPStatusCode_InternalServerError = 500,
+  kGCDWebServerHTTPStatusCode_NotImplemented = 501,
+  kGCDWebServerHTTPStatusCode_BadGateway = 502,
+  kGCDWebServerHTTPStatusCode_ServiceUnavailable = 503,
+  kGCDWebServerHTTPStatusCode_GatewayTimeout = 504,
+  kGCDWebServerHTTPStatusCode_HTTPVersionNotSupported = 505,
+  kGCDWebServerHTTPStatusCode_InsufficientStorage = 507,
+  kGCDWebServerHTTPStatusCode_LoopDetected = 508,
+  kGCDWebServerHTTPStatusCode_NotExtended = 510,
+  kGCDWebServerHTTPStatusCode_NetworkAuthenticationRequired = 511
+};
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerPrivate.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerPrivate.h
new file mode 100644
index 0000000..1ed54e8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerPrivate.h
@@ -0,0 +1,228 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <os/object.h>
+#import <sys/socket.h>
+
+/**
+ *  All GCDWebServer headers.
+ */
+
+#import "GCDWebServerHTTPStatusCodes.h"
+#import "GCDWebServerFunctions.h"
+
+#import "GCDWebServer.h"
+#import "GCDWebServerConnection.h"
+
+#import "GCDWebServerDataRequest.h"
+#import "GCDWebServerFileRequest.h"
+#import "GCDWebServerMultiPartFormRequest.h"
+#import "GCDWebServerURLEncodedFormRequest.h"
+
+#import "GCDWebServerDataResponse.h"
+#import "GCDWebServerErrorResponse.h"
+#import "GCDWebServerFileResponse.h"
+#import "GCDWebServerStreamedResponse.h"
+
+/**
+ *  Automatically detect if XLFacility is available and if so use it as a
+ *  logging facility.
+ */
+
+#if defined(__has_include) && __has_include("XLFacilityMacros.h")
+
+#define __GCDWEBSERVER_LOGGING_FACILITY_XLFACILITY__
+
+#undef XLOG_TAG
+#define XLOG_TAG @"gcdwebserver.internal"
+
+#import "XLFacilityMacros.h"
+
+#define GWS_LOG_DEBUG(...) XLOG_DEBUG(__VA_ARGS__)
+#define GWS_LOG_VERBOSE(...) XLOG_VERBOSE(__VA_ARGS__)
+#define GWS_LOG_INFO(...) XLOG_INFO(__VA_ARGS__)
+#define GWS_LOG_WARNING(...) XLOG_WARNING(__VA_ARGS__)
+#define GWS_LOG_ERROR(...) XLOG_ERROR(__VA_ARGS__)
+#define GWS_LOG_EXCEPTION(__EXCEPTION__) XLOG_EXCEPTION(__EXCEPTION__)
+
+#define GWS_DCHECK(__CONDITION__) XLOG_DEBUG_CHECK(__CONDITION__)
+#define GWS_DNOT_REACHED() XLOG_DEBUG_UNREACHABLE()
+
+/**
+ *  Automatically detect if CocoaLumberJack is available and if so use
+ *  it as a logging facility.
+ */
+
+#elif defined(__has_include) && __has_include("DDLogMacros.h")
+
+#import "DDLogMacros.h"
+
+#define __GCDWEBSERVER_LOGGING_FACILITY_COCOALUMBERJACK__
+
+#undef LOG_LEVEL_DEF
+#define LOG_LEVEL_DEF GCDWebServerLogLevel
+extern int GCDWebServerLogLevel;
+
+#define GWS_LOG_DEBUG(...) DDLogDebug(__VA_ARGS__)
+#define GWS_LOG_VERBOSE(...) DDLogVerbose(__VA_ARGS__)
+#define GWS_LOG_INFO(...) DDLogInfo(__VA_ARGS__)
+#define GWS_LOG_WARNING(...) DDLogWarn(__VA_ARGS__)
+#define GWS_LOG_ERROR(...) DDLogError(__VA_ARGS__)
+#define GWS_LOG_EXCEPTION(__EXCEPTION__) DDLogError(@"%@", __EXCEPTION__)
+
+/**
+ *  Check if a custom logging facility should be used instead.
+ */
+
+#elif defined(__GCDWEBSERVER_LOGGING_HEADER__)
+
+#define __GCDWEBSERVER_LOGGING_FACILITY_CUSTOM__
+
+#import __GCDWEBSERVER_LOGGING_HEADER__
+
+/**
+ *  If all of the above fail, then use GCDWebServer built-in
+ *  logging facility.
+ */
+
+#else
+
+#define __GCDWEBSERVER_LOGGING_FACILITY_BUILTIN__
+
+typedef NS_ENUM(int, GCDWebServerLoggingLevel) {
+  kGCDWebServerLoggingLevel_Debug = 0,
+  kGCDWebServerLoggingLevel_Verbose,
+  kGCDWebServerLoggingLevel_Info,
+  kGCDWebServerLoggingLevel_Warning,
+  kGCDWebServerLoggingLevel_Error,
+  kGCDWebServerLoggingLevel_Exception,
+};
+
+extern GCDWebServerLoggingLevel GCDWebServerLogLevel;
+extern void GCDWebServerLogMessage(GCDWebServerLoggingLevel level, NSString* format, ...) NS_FORMAT_FUNCTION(2, 3);
+
+#if DEBUG
+#define GWS_LOG_DEBUG(...) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Debug) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Debug, __VA_ARGS__); } while (0)
+#else
+#define GWS_LOG_DEBUG(...)
+#endif
+#define GWS_LOG_VERBOSE(...) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Verbose) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Verbose, __VA_ARGS__); } while (0)
+#define GWS_LOG_INFO(...) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Info) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Info, __VA_ARGS__); } while (0)
+#define GWS_LOG_WARNING(...) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Warning) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Warning, __VA_ARGS__); } while (0)
+#define GWS_LOG_ERROR(...) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Error) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Error, __VA_ARGS__); } while (0)
+#define GWS_LOG_EXCEPTION(__EXCEPTION__) do { if (GCDWebServerLogLevel <= kGCDWebServerLoggingLevel_Exception) GCDWebServerLogMessage(kGCDWebServerLoggingLevel_Exception, @"%@", __EXCEPTION__); } while (0)
+
+#endif
+
+/**
+ *  Consistency check macros used when building Debug only.
+ */
+
+#if !defined(GWS_DCHECK) || !defined(GWS_DNOT_REACHED)
+
+#if DEBUG
+
+#define GWS_DCHECK(__CONDITION__) \
+  do { \
+    if (!(__CONDITION__)) { \
+      abort(); \
+    } \
+  } while (0)
+#define GWS_DNOT_REACHED() abort()
+
+#else
+
+#define GWS_DCHECK(__CONDITION__)
+#define GWS_DNOT_REACHED()
+
+#endif
+
+#endif
+
+/**
+ *  GCDWebServer internal constants and APIs.
+ */
+
+#define kGCDWebServerDefaultMimeType @"application/octet-stream"
+#define kGCDWebServerGCDQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
+#define kGCDWebServerErrorDomain @"GCDWebServerErrorDomain"
+
+static inline BOOL GCDWebServerIsValidByteRange(NSRange range) {
+  return ((range.location != NSUIntegerMax) || (range.length > 0));
+}
+
+static inline NSError* GCDWebServerMakePosixError(int code) {
+  return [NSError errorWithDomain:NSPOSIXErrorDomain code:code userInfo:@{NSLocalizedDescriptionKey: [NSString stringWithUTF8String:strerror(code)]}];
+}
+
+extern void GCDWebServerInitializeFunctions();
+extern NSString* GCDWebServerNormalizeHeaderValue(NSString* value);
+extern NSString* GCDWebServerTruncateHeaderValue(NSString* value);
+extern NSString* GCDWebServerExtractHeaderValueParameter(NSString* header, NSString* attribute);
+extern NSStringEncoding GCDWebServerStringEncodingFromCharset(NSString* charset);
+extern BOOL GCDWebServerIsTextContentType(NSString* type);
+extern NSString* GCDWebServerDescribeData(NSData* data, NSString* contentType);
+extern NSString* GCDWebServerComputeMD5Digest(NSString* format, ...) NS_FORMAT_FUNCTION(1,2);
+extern NSString* GCDWebServerStringFromSockAddr(const struct sockaddr* addr, BOOL includeService);
+
+@interface GCDWebServerConnection ()
+- (id)initWithServer:(GCDWebServer*)server localAddress:(NSData*)localAddress remoteAddress:(NSData*)remoteAddress socket:(CFSocketNativeHandle)socket;
+@end
+
+@interface GCDWebServer ()
+@property(nonatomic, readonly) NSArray* handlers;
+@property(nonatomic, readonly) NSString* serverName;
+@property(nonatomic, readonly) NSString* authenticationRealm;
+@property(nonatomic, readonly) NSDictionary* authenticationBasicAccounts;
+@property(nonatomic, readonly) NSDictionary* authenticationDigestAccounts;
+@property(nonatomic, readonly) BOOL shouldAutomaticallyMapHEADToGET;
+- (void)willStartConnection:(GCDWebServerConnection*)connection;
+- (void)didEndConnection:(GCDWebServerConnection*)connection;
+@end
+
+@interface GCDWebServerHandler : NSObject
+@property(nonatomic, readonly) GCDWebServerMatchBlock matchBlock;
+@property(nonatomic, readonly) GCDWebServerAsyncProcessBlock asyncProcessBlock;
+@end
+
+@interface GCDWebServerRequest ()
+@property(nonatomic, readonly) BOOL usesChunkedTransferEncoding;
+- (void)prepareForWriting;
+- (BOOL)performOpen:(NSError**)error;
+- (BOOL)performWriteData:(NSData*)data error:(NSError**)error;
+- (BOOL)performClose:(NSError**)error;
+- (void)setAttribute:(id)attribute forKey:(NSString*)key;
+@end
+
+@interface GCDWebServerResponse ()
+@property(nonatomic, readonly) NSDictionary* additionalHeaders;
+@property(nonatomic, readonly) BOOL usesChunkedTransferEncoding;
+- (void)prepareForReading;
+- (BOOL)performOpen:(NSError**)error;
+- (void)performReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block;
+- (void)performClose;
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.h
new file mode 100644
index 0000000..3b517b6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.h
@@ -0,0 +1,182 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+
+/**
+ *  Attribute key to retrieve an NSArray containing NSStrings from a GCDWebServerRequest
+ *  with the contents of any regular expression captures done on the request path.
+ *
+ *  @warning This attribute will only be set on the request if adding a handler using 
+ *  -addHandlerForMethod:pathRegex:requestClass:processBlock:.
+ */
+extern NSString* const GCDWebServerRequestAttribute_RegexCaptures;
+
+/**
+ *  This protocol is used by the GCDWebServerConnection to communicate with
+ *  the GCDWebServerRequest and write the received HTTP body data.
+ *
+ *  Note that multiple GCDWebServerBodyWriter objects can be chained together
+ *  internally e.g. to automatically decode gzip encoded content before
+ *  passing it on to the GCDWebServerRequest.
+ *
+ *  @warning These methods can be called on any GCD thread.
+ */
+@protocol GCDWebServerBodyWriter <NSObject>
+
+/**
+ *  This method is called before any body data is received.
+ *
+ *  It should return YES on success or NO on failure and set the "error" argument
+ *  which is guaranteed to be non-NULL.
+ */
+- (BOOL)open:(NSError**)error;
+
+/**
+ *  This method is called whenever body data has been received.
+ *
+ *  It should return YES on success or NO on failure and set the "error" argument
+ *  which is guaranteed to be non-NULL.
+ */
+- (BOOL)writeData:(NSData*)data error:(NSError**)error;
+
+/**
+ *  This method is called after all body data has been received.
+ *
+ *  It should return YES on success or NO on failure and set the "error" argument
+ *  which is guaranteed to be non-NULL.
+ */
+- (BOOL)close:(NSError**)error;
+
+@end
+
+/**
+ *  The GCDWebServerRequest class is instantiated by the GCDWebServerConnection
+ *  after the HTTP headers have been received. Each instance wraps a single HTTP
+ *  request. If a body is present, the methods from the GCDWebServerBodyWriter
+ *  protocol will be called by the GCDWebServerConnection to receive it.
+ *
+ *  The default implementation of the GCDWebServerBodyWriter protocol on the class
+ *  simply ignores the body data.
+ *
+ *  @warning GCDWebServerRequest instances can be created and used on any GCD thread.
+ */
+@interface GCDWebServerRequest : NSObject <GCDWebServerBodyWriter>
+
+/**
+ *  Returns the HTTP method for the request.
+ */
+@property(nonatomic, readonly) NSString* method;
+
+/**
+ *  Returns the URL for the request.
+ */
+@property(nonatomic, readonly) NSURL* URL;
+
+/**
+ *  Returns the HTTP headers for the request.
+ */
+@property(nonatomic, readonly) NSDictionary* headers;
+
+/**
+ *  Returns the path component of the URL for the request.
+ */
+@property(nonatomic, readonly) NSString* path;
+
+/**
+ *  Returns the parsed and unescaped query component of the URL for the request.
+ *
+ *  @warning This property will be nil if there is no query in the URL.
+ */
+@property(nonatomic, readonly) NSDictionary* query;
+
+/**
+ *  Returns the content type for the body of the request parsed from the
+ *  "Content-Type" header.
+ *
+ *  This property will be nil if the request has no body or set to
+ *  "application/octet-stream" if a body is present but there was no
+ *  "Content-Type" header.
+ */
+@property(nonatomic, readonly) NSString* contentType;
+
+/**
+ *  Returns the content length for the body of the request parsed from the
+ *  "Content-Length" header.
+ *
+ *  This property will be set to "NSUIntegerMax" if the request has no body or
+ *  if there is a body but no "Content-Length" header, typically because
+ *  chunked transfer encoding is used.
+ */
+@property(nonatomic, readonly) NSUInteger contentLength;
+
+/**
+ *  Returns the parsed "If-Modified-Since" header or nil if absent or malformed.
+ */
+@property(nonatomic, readonly) NSDate* ifModifiedSince;
+
+/**
+ *  Returns the parsed "If-None-Match" header or nil if absent or malformed.
+ */
+@property(nonatomic, readonly) NSString* ifNoneMatch;
+
+/**
+ *  Returns the parsed "Range" header or (NSUIntegerMax, 0) if absent or malformed.
+ *  The range will be set to (offset, length) if expressed from the beginning
+ *  of the entity body, or (NSUIntegerMax, length) if expressed from its end.
+ */
+@property(nonatomic, readonly) NSRange byteRange;
+
+/**
+ *  Returns YES if the client supports gzip content encoding according to the
+ *  "Accept-Encoding" header.
+ */
+@property(nonatomic, readonly) BOOL acceptsGzipContentEncoding;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query;
+
+/**
+ *  Convenience method that checks if the contentType property is defined.
+ */
+- (BOOL)hasBody;
+
+/**
+ *  Convenience method that checks if the byteRange property is defined.
+ */
+- (BOOL)hasByteRange;
+
+/**
+ *  Retrieves an attribute associated with this request using the given key.
+ *
+ *  @return The attribute value for the key.
+ */
+- (id)attributeForKey:(NSString*)key;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.m
new file mode 100644
index 0000000..cc14993
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerRequest.m
@@ -0,0 +1,319 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <zlib.h>
+
+#import "GCDWebServerPrivate.h"
+
+NSString* const GCDWebServerRequestAttribute_RegexCaptures = @"GCDWebServerRequestAttribute_RegexCaptures";
+
+#define kZlibErrorDomain @"ZlibErrorDomain"
+#define kGZipInitialBufferSize (256 * 1024)
+
+@interface GCDWebServerBodyDecoder : NSObject <GCDWebServerBodyWriter>
+- (id)initWithRequest:(GCDWebServerRequest*)request writer:(id<GCDWebServerBodyWriter>)writer;
+@end
+
+@interface GCDWebServerGZipDecoder : GCDWebServerBodyDecoder
+@end
+
+@interface GCDWebServerBodyDecoder () {
+@private
+  GCDWebServerRequest* __unsafe_unretained _request;
+  id<GCDWebServerBodyWriter> __unsafe_unretained _writer;
+}
+@end
+
+@implementation GCDWebServerBodyDecoder
+
+- (id)initWithRequest:(GCDWebServerRequest*)request writer:(id<GCDWebServerBodyWriter>)writer {
+  if ((self = [super init])) {
+    _request = request;
+    _writer = writer;
+  }
+  return self;
+}
+
+- (BOOL)open:(NSError**)error {
+  return [_writer open:error];
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  return [_writer writeData:data error:error];
+}
+
+- (BOOL)close:(NSError**)error {
+  return [_writer close:error];
+}
+
+@end
+
+@interface GCDWebServerGZipDecoder () {
+@private
+  z_stream _stream;
+  BOOL _finished;
+}
+@end
+
+@implementation GCDWebServerGZipDecoder
+
+- (BOOL)open:(NSError**)error {
+  int result = inflateInit2(&_stream, 15 + 16);
+  if (result != Z_OK) {
+    *error = [NSError errorWithDomain:kZlibErrorDomain code:result userInfo:nil];
+    return NO;
+  }
+  if (![super open:error]) {
+    deflateEnd(&_stream);
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  GWS_DCHECK(!_finished);
+  _stream.next_in = (Bytef*)data.bytes;
+  _stream.avail_in = (uInt)data.length;
+  NSMutableData* decodedData = [[NSMutableData alloc] initWithLength:kGZipInitialBufferSize];
+  if (decodedData == nil) {
+    GWS_DNOT_REACHED();
+    return NO;
+  }
+  NSUInteger length = 0;
+  while (1) {
+    NSUInteger maxLength = decodedData.length - length;
+    _stream.next_out = (Bytef*)((char*)decodedData.mutableBytes + length);
+    _stream.avail_out = (uInt)maxLength;
+    int result = inflate(&_stream, Z_NO_FLUSH);
+    if ((result != Z_OK) && (result != Z_STREAM_END)) {
+      *error = [NSError errorWithDomain:kZlibErrorDomain code:result userInfo:nil];
+      return NO;
+    }
+    length += maxLength - _stream.avail_out;
+    if (_stream.avail_out > 0) {
+      if (result == Z_STREAM_END) {
+        _finished = YES;
+      }
+      break;
+    }
+    decodedData.length = 2 * decodedData.length;  // zlib has used all the output buffer so resize it and try again in case more data is available
+  }
+  decodedData.length = length;
+  BOOL success = length ? [super writeData:decodedData error:error] : YES;  // No need to call writer if we have no data yet
+  return success;
+}
+
+- (BOOL)close:(NSError**)error {
+  GWS_DCHECK(_finished);
+  inflateEnd(&_stream);
+  return [super close:error];
+}
+
+@end
+
+@interface GCDWebServerRequest () {
+@private
+  NSString* _method;
+  NSURL* _url;
+  NSDictionary* _headers;
+  NSString* _path;
+  NSDictionary* _query;
+  NSString* _type;
+  BOOL _chunked;
+  NSUInteger _length;
+  NSDate* _modifiedSince;
+  NSString* _noneMatch;
+  NSRange _range;
+  BOOL _gzipAccepted;
+  
+  BOOL _opened;
+  NSMutableArray* _decoders;
+  NSMutableDictionary* _attributes;
+  id<GCDWebServerBodyWriter> __unsafe_unretained _writer;
+}
+@end
+
+@implementation GCDWebServerRequest : NSObject
+
+@synthesize method=_method, URL=_url, headers=_headers, path=_path, query=_query, contentType=_type, contentLength=_length, ifModifiedSince=_modifiedSince, ifNoneMatch=_noneMatch,
+            byteRange=_range, acceptsGzipContentEncoding=_gzipAccepted, usesChunkedTransferEncoding=_chunked;
+
+- (instancetype)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
+  if ((self = [super init])) {
+    _method = [method copy];
+    _url = url;
+    _headers = headers;
+    _path = [path copy];
+    _query = query;
+    
+    _type = GCDWebServerNormalizeHeaderValue([_headers objectForKey:@"Content-Type"]);
+    _chunked = [GCDWebServerNormalizeHeaderValue([_headers objectForKey:@"Transfer-Encoding"]) isEqualToString:@"chunked"];
+    NSString* lengthHeader = [_headers objectForKey:@"Content-Length"];
+    if (lengthHeader) {
+      NSInteger length = [lengthHeader integerValue];
+      if (_chunked || (length < 0)) {
+        GWS_DNOT_REACHED();
+        return nil;
+      }
+      _length = length;
+      if (_type == nil) {
+        _type = kGCDWebServerDefaultMimeType;
+      }
+    } else if (_chunked) {
+      if (_type == nil) {
+        _type = kGCDWebServerDefaultMimeType;
+      }
+      _length = NSUIntegerMax;
+    } else {
+      if (_type) {
+        GWS_DNOT_REACHED();
+        return nil;
+      }
+      _length = NSUIntegerMax;
+    }
+    
+    NSString* modifiedHeader = [_headers objectForKey:@"If-Modified-Since"];
+    if (modifiedHeader) {
+      _modifiedSince = [GCDWebServerParseRFC822(modifiedHeader) copy];
+    }
+    _noneMatch = [_headers objectForKey:@"If-None-Match"];
+    
+    _range = NSMakeRange(NSUIntegerMax, 0);
+    NSString* rangeHeader = GCDWebServerNormalizeHeaderValue([_headers objectForKey:@"Range"]);
+    if (rangeHeader) {
+      if ([rangeHeader hasPrefix:@"bytes="]) {
+        NSArray* components = [[rangeHeader substringFromIndex:6] componentsSeparatedByString:@","];
+        if (components.count == 1) {
+          components = [[components firstObject] componentsSeparatedByString:@"-"];
+          if (components.count == 2) {
+            NSString* startString = [components objectAtIndex:0];
+            NSInteger startValue = [startString integerValue];
+            NSString* endString = [components objectAtIndex:1];
+            NSInteger endValue = [endString integerValue];
+            if (startString.length && (startValue >= 0) && endString.length && (endValue >= startValue)) {  // The second 500 bytes: "500-999"
+              _range.location = startValue;
+              _range.length = endValue - startValue + 1;
+            } else if (startString.length && (startValue >= 0)) {  // The bytes after 9500 bytes: "9500-"
+              _range.location = startValue;
+              _range.length = NSUIntegerMax;
+            } else if (endString.length && (endValue > 0)) {  // The final 500 bytes: "-500"
+              _range.location = NSUIntegerMax;
+              _range.length = endValue;
+            }
+          }
+        }
+      }
+      if ((_range.location == NSUIntegerMax) && (_range.length == 0)) {  // Ignore "Range" header if syntactically invalid
+        GWS_LOG_WARNING(@"Failed to parse 'Range' header \"%@\" for url: %@", rangeHeader, url);
+      }
+    }
+    
+    if ([[_headers objectForKey:@"Accept-Encoding"] rangeOfString:@"gzip"].location != NSNotFound) {
+      _gzipAccepted = YES;
+    }
+    
+    _decoders = [[NSMutableArray alloc] init];
+    _attributes = [[NSMutableDictionary alloc] init];
+  }
+  return self;
+}
+
+- (BOOL)hasBody {
+  return _type ? YES : NO;
+}
+
+- (BOOL)hasByteRange {
+  return GCDWebServerIsValidByteRange(_range);
+}
+
+- (id)attributeForKey:(NSString*)key {
+  return [_attributes objectForKey:key];
+}
+
+- (BOOL)open:(NSError**)error {
+  return YES;
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  return YES;
+}
+
+- (BOOL)close:(NSError**)error {
+  return YES;
+}
+
+- (void)prepareForWriting {
+  _writer = self;
+  if ([GCDWebServerNormalizeHeaderValue([self.headers objectForKey:@"Content-Encoding"]) isEqualToString:@"gzip"]) {
+    GCDWebServerGZipDecoder* decoder = [[GCDWebServerGZipDecoder alloc] initWithRequest:self writer:_writer];
+    [_decoders addObject:decoder];
+    _writer = decoder;
+  }
+}
+
+- (BOOL)performOpen:(NSError**)error {
+  GWS_DCHECK(_type);
+  GWS_DCHECK(_writer);
+  if (_opened) {
+    GWS_DNOT_REACHED();
+    return NO;
+  }
+  _opened = YES;
+  return [_writer open:error];
+}
+
+- (BOOL)performWriteData:(NSData*)data error:(NSError**)error {
+  GWS_DCHECK(_opened);
+  return [_writer writeData:data error:error];
+}
+
+- (BOOL)performClose:(NSError**)error {
+  GWS_DCHECK(_opened);
+  return [_writer close:error];
+}
+
+- (void)setAttribute:(id)attribute forKey:(NSString*)key {
+  [_attributes setValue:attribute forKey:key];
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithFormat:@"%@ %@", _method, _path];
+  for (NSString* argument in [[_query allKeys] sortedArrayUsingSelector:@selector(compare:)]) {
+    [description appendFormat:@"\n  %@ = %@", argument, [_query objectForKey:argument]];
+  }
+  [description appendString:@"\n"];
+  for (NSString* header in [[_headers allKeys] sortedArrayUsingSelector:@selector(compare:)]) {
+    [description appendFormat:@"\n%@: %@", header, [_headers objectForKey:header]];
+  }
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.h
new file mode 100644
index 0000000..01ef2ab
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.h
@@ -0,0 +1,208 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+
+/**
+ *  The GCDWebServerBodyReaderCompletionBlock is passed by GCDWebServer to the
+ *  GCDWebServerBodyReader object when reading data from it asynchronously.
+ */
+typedef void (^GCDWebServerBodyReaderCompletionBlock)(NSData* data, NSError* error);
+
+/**
+ *  This protocol is used by the GCDWebServerConnection to communicate with
+ *  the GCDWebServerResponse and read the HTTP body data to send.
+ *
+ *  Note that multiple GCDWebServerBodyReader objects can be chained together
+ *  internally e.g. to automatically apply gzip encoding to the content before
+ *  passing it on to the GCDWebServerResponse.
+ *
+ *  @warning These methods can be called on any GCD thread.
+ */
+@protocol GCDWebServerBodyReader <NSObject>
+
+@required
+
+/**
+ *  This method is called before any body data is sent.
+ *
+ *  It should return YES on success or NO on failure and set the "error" argument
+ *  which is guaranteed to be non-NULL.
+ */
+- (BOOL)open:(NSError**)error;
+
+/**
+ *  This method is called whenever body data is sent.
+ *
+ *  It should return a non-empty NSData if there is body data available,
+ *  or an empty NSData there is no more body data, or nil on error and set
+ *  the "error" argument which is guaranteed to be non-NULL.
+ */
+- (NSData*)readData:(NSError**)error;
+
+/**
+ *  This method is called after all body data has been sent.
+ */
+- (void)close;
+
+@optional
+
+/**
+ *  If this method is implemented, it will be preferred over -readData:.
+ *
+ *  It must call the passed block when data is available, passing a non-empty
+ *  NSData if there is body data available, or an empty NSData there is no more
+ *  body data, or nil on error and pass an NSError along.
+ */
+- (void)asyncReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block;
+
+@end
+
+/**
+ *  The GCDWebServerResponse class is used to wrap a single HTTP response.
+ *  It is instantiated by the handler of the GCDWebServer that handled the request.
+ *  If a body is present, the methods from the GCDWebServerBodyReader protocol
+ *  will be called by the GCDWebServerConnection to send it.
+ *
+ *  The default implementation of the GCDWebServerBodyReader protocol
+ *  on the class simply returns an empty body.
+ *
+ *  @warning GCDWebServerResponse instances can be created and used on any GCD thread.
+ */
+@interface GCDWebServerResponse : NSObject <GCDWebServerBodyReader>
+
+/**
+ *  Sets the content type for the body of the response.
+ *
+ *  The default value is nil i.e. the response has no body.
+ *
+ *  @warning This property must be set if a body is present.
+ */
+@property(nonatomic, copy) NSString* contentType;
+
+/**
+ *  Sets the content length for the body of the response. If a body is present
+ *  but this property is set to "NSUIntegerMax", this means the length of the body
+ *  cannot be known ahead of time. Chunked transfer encoding will be
+ *  automatically enabled by the GCDWebServerConnection to comply with HTTP/1.1
+ *  specifications.
+ *
+ *  The default value is "NSUIntegerMax" i.e. the response has no body or its length
+ *  is undefined.
+ */
+@property(nonatomic) NSUInteger contentLength;
+
+/**
+ *  Sets the HTTP status code for the response.
+ *
+ *  The default value is 200 i.e. "OK".
+ */
+@property(nonatomic) NSInteger statusCode;
+
+/**
+ *  Sets the caching hint for the response using the "Cache-Control" header.
+ *  This value is expressed in seconds.
+ *
+ *  The default value is 0 i.e. "no-cache".
+ */
+@property(nonatomic) NSUInteger cacheControlMaxAge;
+
+/**
+ *  Sets the last modified date for the response using the "Last-Modified" header.
+ *
+ *  The default value is nil.
+ */
+@property(nonatomic, retain) NSDate* lastModifiedDate;
+
+/**
+ *  Sets the ETag for the response using the "ETag" header.
+ *
+ *  The default value is nil.
+ */
+@property(nonatomic, copy) NSString* eTag;
+
+/**
+ *  Enables gzip encoding for the response body.
+ *
+ *  The default value is NO.
+ *
+ *  @warning Enabling gzip encoding will remove any "Content-Length" header
+ *  since the length of the body is not known anymore. The client will still
+ *  be able to determine the body length when connection is closed per
+ *  HTTP/1.1 specifications.
+ */
+@property(nonatomic, getter=isGZipContentEncodingEnabled) BOOL gzipContentEncodingEnabled;
+
+/**
+ *  Creates an empty response.
+ */
++ (instancetype)response;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)init;
+
+/**
+ *  Sets an additional HTTP header on the response.
+ *  Pass a nil value to remove an additional header.
+ *
+ *  @warning Do not attempt to override the primary headers used
+ *  by GCDWebServerResponse like "Content-Type", "ETag", etc...
+ */
+- (void)setValue:(NSString*)value forAdditionalHeader:(NSString*)header;
+
+/**
+ *  Convenience method that checks if the contentType property is defined.
+ */
+- (BOOL)hasBody;
+
+@end
+
+@interface GCDWebServerResponse (Extensions)
+
+/**
+ *  Creates a empty response with a specific HTTP status code.
+ */
++ (instancetype)responseWithStatusCode:(NSInteger)statusCode;
+
+/**
+ *  Creates an HTTP redirect response to a new URL.
+ */
++ (instancetype)responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
+
+/**
+ *  Initializes an empty response with a specific HTTP status code.
+ */
+- (instancetype)initWithStatusCode:(NSInteger)statusCode;
+
+/**
+ *  Initializes an HTTP redirect response to a new URL.
+ */
+- (instancetype)initWithRedirect:(NSURL*)location permanent:(BOOL)permanent;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.m
new file mode 100644
index 0000000..b0a220b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Core/GCDWebServerResponse.m
@@ -0,0 +1,305 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <zlib.h>
+
+#import "GCDWebServerPrivate.h"
+
+#define kZlibErrorDomain @"ZlibErrorDomain"
+#define kGZipInitialBufferSize (256 * 1024)
+
+@interface GCDWebServerBodyEncoder : NSObject <GCDWebServerBodyReader>
+- (id)initWithResponse:(GCDWebServerResponse*)response reader:(id<GCDWebServerBodyReader>)reader;
+@end
+
+@interface GCDWebServerGZipEncoder : GCDWebServerBodyEncoder
+@end
+
+@interface GCDWebServerBodyEncoder () {
+@private
+  GCDWebServerResponse* __unsafe_unretained _response;
+  id<GCDWebServerBodyReader> __unsafe_unretained _reader;
+}
+@end
+
+@implementation GCDWebServerBodyEncoder
+
+- (id)initWithResponse:(GCDWebServerResponse*)response reader:(id<GCDWebServerBodyReader>)reader {
+  if ((self = [super init])) {
+    _response = response;
+    _reader = reader;
+  }
+  return self;
+}
+
+- (BOOL)open:(NSError**)error {
+  return [_reader open:error];
+}
+
+- (NSData*)readData:(NSError**)error {
+  return [_reader readData:error];
+}
+
+- (void)close {
+  [_reader close];
+}
+
+@end
+
+@interface GCDWebServerGZipEncoder () {
+@private
+  z_stream _stream;
+  BOOL _finished;
+}
+@end
+
+@implementation GCDWebServerGZipEncoder
+
+- (id)initWithResponse:(GCDWebServerResponse*)response reader:(id<GCDWebServerBodyReader>)reader {
+  if ((self = [super initWithResponse:response reader:reader])) {
+    response.contentLength = NSUIntegerMax;  // Make sure "Content-Length" header is not set since we don't know it
+    [response setValue:@"gzip" forAdditionalHeader:@"Content-Encoding"];
+  }
+  return self;
+}
+
+- (BOOL)open:(NSError**)error {
+  int result = deflateInit2(&_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 + 16, 8, Z_DEFAULT_STRATEGY);
+  if (result != Z_OK) {
+    *error = [NSError errorWithDomain:kZlibErrorDomain code:result userInfo:nil];
+    return NO;
+  }
+  if (![super open:error]) {
+    deflateEnd(&_stream);
+    return NO;
+  }
+  return YES;
+}
+
+- (NSData*)readData:(NSError**)error {
+  NSMutableData* encodedData;
+  if (_finished) {
+    encodedData = [[NSMutableData alloc] init];
+  } else {
+    encodedData = [[NSMutableData alloc] initWithLength:kGZipInitialBufferSize];
+    if (encodedData == nil) {
+      GWS_DNOT_REACHED();
+      return nil;
+    }
+    NSUInteger length = 0;
+    do {
+      NSData* data = [super readData:error];
+      if (data == nil) {
+        return nil;
+      }
+      _stream.next_in = (Bytef*)data.bytes;
+      _stream.avail_in = (uInt)data.length;
+      while (1) {
+        NSUInteger maxLength = encodedData.length - length;
+        _stream.next_out = (Bytef*)((char*)encodedData.mutableBytes + length);
+        _stream.avail_out = (uInt)maxLength;
+        int result = deflate(&_stream, data.length ? Z_NO_FLUSH : Z_FINISH);
+        if (result == Z_STREAM_END) {
+          _finished = YES;
+        } else if (result != Z_OK) {
+          *error = [NSError errorWithDomain:kZlibErrorDomain code:result userInfo:nil];
+          return nil;
+        }
+        length += maxLength - _stream.avail_out;
+        if (_stream.avail_out > 0) {
+          break;
+        }
+        encodedData.length = 2 * encodedData.length;  // zlib has used all the output buffer so resize it and try again in case more data is available
+      }
+      GWS_DCHECK(_stream.avail_in == 0);
+    } while (length == 0);  // Make sure we don't return an empty NSData if not in finished state
+    encodedData.length = length;
+  }
+  return encodedData;
+}
+
+- (void)close {
+  deflateEnd(&_stream);
+  [super close];
+}
+
+@end
+
+@interface GCDWebServerResponse () {
+@private
+  NSString* _type;
+  NSUInteger _length;
+  NSInteger _status;
+  NSUInteger _maxAge;
+  NSDate* _lastModified;
+  NSString* _eTag;
+  NSMutableDictionary* _headers;
+  BOOL _chunked;
+  BOOL _gzipped;
+  
+  BOOL _opened;
+  NSMutableArray* _encoders;
+  id<GCDWebServerBodyReader> __unsafe_unretained _reader;
+}
+@end
+
+@implementation GCDWebServerResponse
+
+@synthesize contentType=_type, contentLength=_length, statusCode=_status, cacheControlMaxAge=_maxAge, lastModifiedDate=_lastModified, eTag=_eTag,
+            gzipContentEncodingEnabled=_gzipped, additionalHeaders=_headers;
+
++ (instancetype)response {
+  return [[[self class] alloc] init];
+}
+
+- (instancetype)init {
+  if ((self = [super init])) {
+    _type = nil;
+    _length = NSUIntegerMax;
+    _status = kGCDWebServerHTTPStatusCode_OK;
+    _maxAge = 0;
+    _headers = [[NSMutableDictionary alloc] init];
+    _encoders = [[NSMutableArray alloc] init];
+  }
+  return self;
+}
+
+- (void)setValue:(NSString*)value forAdditionalHeader:(NSString*)header {
+  [_headers setValue:value forKey:header];
+}
+
+- (BOOL)hasBody {
+  return _type ? YES : NO;
+}
+
+- (BOOL)usesChunkedTransferEncoding {
+  return (_type != nil) && (_length == NSUIntegerMax);
+}
+
+- (BOOL)open:(NSError**)error {
+  return YES;
+}
+
+- (NSData*)readData:(NSError**)error {
+  return [NSData data];
+}
+
+- (void)close {
+  ;
+}
+
+- (void)prepareForReading {
+  _reader = self;
+  if (_gzipped) {
+    GCDWebServerGZipEncoder* encoder = [[GCDWebServerGZipEncoder alloc] initWithResponse:self reader:_reader];
+    [_encoders addObject:encoder];
+    _reader = encoder;
+  }
+}
+
+- (BOOL)performOpen:(NSError**)error {
+  GWS_DCHECK(_type);
+  GWS_DCHECK(_reader);
+  if (_opened) {
+    GWS_DNOT_REACHED();
+    return NO;
+  }
+  _opened = YES;
+  return [_reader open:error];
+}
+
+- (void)performReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block {
+  if ([_reader respondsToSelector:@selector(asyncReadDataWithCompletion:)]) {
+    [_reader asyncReadDataWithCompletion:block];
+  } else {
+    NSError* error = nil;
+    NSData* data = [_reader readData:&error];
+    block(data, error);
+  }
+}
+
+- (void)performClose {
+  GWS_DCHECK(_opened);
+  [_reader close];
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithFormat:@"Status Code = %i", (int)_status];
+  if (_type) {
+    [description appendFormat:@"\nContent Type = %@", _type];
+  }
+  if (_length != NSUIntegerMax) {
+    [description appendFormat:@"\nContent Length = %lu", (unsigned long)_length];
+  }
+  [description appendFormat:@"\nCache Control Max Age = %lu", (unsigned long)_maxAge];
+  if (_lastModified) {
+    [description appendFormat:@"\nLast Modified Date = %@", _lastModified];
+  }
+  if (_eTag) {
+    [description appendFormat:@"\nETag = %@", _eTag];
+  }
+  if (_headers.count) {
+    [description appendString:@"\n"];
+    for (NSString* header in [[_headers allKeys] sortedArrayUsingSelector:@selector(compare:)]) {
+      [description appendFormat:@"\n%@: %@", header, [_headers objectForKey:header]];
+    }
+  }
+  return description;
+}
+
+@end
+
+@implementation GCDWebServerResponse (Extensions)
+
++ (instancetype)responseWithStatusCode:(NSInteger)statusCode {
+  return [[self alloc] initWithStatusCode:statusCode];
+}
+
++ (instancetype)responseWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
+  return [[self alloc] initWithRedirect:location permanent:permanent];
+}
+
+- (instancetype)initWithStatusCode:(NSInteger)statusCode {
+  if ((self = [self init])) {
+    self.statusCode = statusCode;
+  }
+  return self;
+}
+
+- (instancetype)initWithRedirect:(NSURL*)location permanent:(BOOL)permanent {
+  if ((self = [self init])) {
+    self.statusCode = permanent ? kGCDWebServerHTTPStatusCode_MovedPermanently : kGCDWebServerHTTPStatusCode_TemporaryRedirect;
+    [self setValue:[location absoluteString] forAdditionalHeader:@"Location"];
+  }
+  return self;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.h
new file mode 100644
index 0000000..ef94b97
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.h
@@ -0,0 +1,60 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerRequest.h"
+
+/**
+ *  The GCDWebServerDataRequest subclass of GCDWebServerRequest stores the body
+ *  of the HTTP request in memory.
+ */
+@interface GCDWebServerDataRequest : GCDWebServerRequest
+
+/**
+ *  Returns the data for the request body.
+ */
+@property(nonatomic, readonly) NSData* data;
+
+@end
+
+@interface GCDWebServerDataRequest (Extensions)
+
+/**
+ *  Returns the data for the request body interpreted as text. If the content
+ *  type of the body is not a text one, or if an error occurs, nil is returned.
+ *
+ *  The text encoding used to interpret the data is extracted from the
+ *  "Content-Type" header or defaults to UTF-8.
+ */
+@property(nonatomic, readonly) NSString* text;
+
+/**
+ *  Returns the data for the request body interpreted as a JSON object. If the
+ *  content type of the body is not JSON, or if an error occurs, nil is returned.
+ */
+@property(nonatomic, readonly) id jsonObject;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.m
new file mode 100644
index 0000000..4f0ed75
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerDataRequest.m
@@ -0,0 +1,106 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerDataRequest () {
+@private
+  NSMutableData* _data;
+  
+  NSString* _text;
+  id _jsonObject;
+}
+@end
+
+@implementation GCDWebServerDataRequest
+
+@synthesize data=_data;
+
+- (BOOL)open:(NSError**)error {
+  if (self.contentLength != NSUIntegerMax) {
+    _data = [[NSMutableData alloc] initWithCapacity:self.contentLength];
+  } else {
+    _data = [[NSMutableData alloc] init];
+  }
+  if (_data == nil) {
+    *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Failed allocating memory"}];
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  [_data appendData:data];
+  return YES;
+}
+
+- (BOOL)close:(NSError**)error {
+  return YES;
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  if (_data) {
+    [description appendString:@"\n\n"];
+    [description appendString:GCDWebServerDescribeData(_data, self.contentType)];
+  }
+  return description;
+}
+
+@end
+
+@implementation GCDWebServerDataRequest (Extensions)
+
+- (NSString*)text {
+  if (_text == nil) {
+    if ([self.contentType hasPrefix:@"text/"]) {
+      NSString* charset = GCDWebServerExtractHeaderValueParameter(self.contentType, @"charset");
+      _text = [[NSString alloc] initWithData:self.data encoding:GCDWebServerStringEncodingFromCharset(charset)];
+    } else {
+      GWS_DNOT_REACHED();
+    }
+  }
+  return _text;
+}
+
+- (id)jsonObject {
+  if (_jsonObject == nil) {
+    NSString* mimeType = GCDWebServerTruncateHeaderValue(self.contentType);
+    if ([mimeType isEqualToString:@"application/json"] || [mimeType isEqualToString:@"text/json"] || [mimeType isEqualToString:@"text/javascript"]) {
+      _jsonObject = [NSJSONSerialization JSONObjectWithData:_data options:0 error:NULL];
+    } else {
+      GWS_DNOT_REACHED();
+    }
+  }
+  return _jsonObject;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.h
new file mode 100644
index 0000000..427a800
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.h
@@ -0,0 +1,45 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerRequest.h"
+
+/**
+ *  The GCDWebServerFileRequest subclass of GCDWebServerRequest stores the body
+ *  of the HTTP request to a file on disk.
+ */
+@interface GCDWebServerFileRequest : GCDWebServerRequest
+
+/**
+ *  Returns the path to the temporary file containing the request body.
+ *
+ *  @warning This temporary file will be automatically deleted when the
+ *  GCDWebServerFileRequest is deallocated. If you want to preserve this file,
+ *  you must move it to a different location beforehand.
+ */
+@property(nonatomic, readonly) NSString* temporaryPath;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.m
new file mode 100644
index 0000000..d0c2118
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerFileRequest.m
@@ -0,0 +1,103 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerFileRequest () {
+@private
+  NSString* _temporaryPath;
+  int _file;
+}
+@end
+
+@implementation GCDWebServerFileRequest
+
+@synthesize temporaryPath=_temporaryPath;
+
+- (instancetype)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
+  if ((self = [super initWithMethod:method url:url headers:headers path:path query:query])) {
+    _temporaryPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]];
+  }
+  return self;
+}
+
+- (void)dealloc {
+  unlink([_temporaryPath fileSystemRepresentation]);
+}
+
+- (BOOL)open:(NSError**)error {
+  _file = open([_temporaryPath fileSystemRepresentation], O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+  if (_file <= 0) {
+    *error = GCDWebServerMakePosixError(errno);
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  if (write(_file, data.bytes, data.length) != (ssize_t)data.length) {
+    *error = GCDWebServerMakePosixError(errno);
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)close:(NSError**)error {
+  if (close(_file) < 0) {
+    *error = GCDWebServerMakePosixError(errno);
+    return NO;
+  }
+#ifdef __GCDWEBSERVER_ENABLE_TESTING__
+  NSString* creationDateHeader = [self.headers objectForKey:@"X-GCDWebServer-CreationDate"];
+  if (creationDateHeader) {
+    NSDate* date = GCDWebServerParseISO8601(creationDateHeader);
+    if (!date || ![[NSFileManager defaultManager] setAttributes:@{NSFileCreationDate: date} ofItemAtPath:_temporaryPath error:error]) {
+      return NO;
+    }
+  }
+  NSString* modifiedDateHeader = [self.headers objectForKey:@"X-GCDWebServer-ModifiedDate"];
+  if (modifiedDateHeader) {
+    NSDate* date = GCDWebServerParseRFC822(modifiedDateHeader);
+    if (!date || ![[NSFileManager defaultManager] setAttributes:@{NSFileModificationDate: date} ofItemAtPath:_temporaryPath error:error]) {
+      return NO;
+    }
+  }
+#endif
+  return YES;
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  [description appendFormat:@"\n\n{%@}", _temporaryPath];
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.h
new file mode 100644
index 0000000..2463ca2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.h
@@ -0,0 +1,132 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerRequest.h"
+
+/**
+ *  The GCDWebServerMultiPart class is an abstract class that wraps the content
+ *  of a part.
+ */
+@interface GCDWebServerMultiPart : NSObject
+
+/**
+ *  Returns the control name retrieved from the part headers.
+ */
+@property(nonatomic, readonly) NSString* controlName;
+
+/**
+ *  Returns the content type retrieved from the part headers or "text/plain"
+ *  if not available (per HTTP specifications).
+ */
+@property(nonatomic, readonly) NSString* contentType;
+
+/**
+ *  Returns the MIME type component of the content type for the part.
+ */
+@property(nonatomic, readonly) NSString* mimeType;
+
+@end
+
+/**
+ *  The GCDWebServerMultiPartArgument subclass of GCDWebServerMultiPart wraps
+ *  the content of a part as data in memory.
+ */
+@interface GCDWebServerMultiPartArgument : GCDWebServerMultiPart
+
+/**
+ *  Returns the data for the part.
+ */
+@property(nonatomic, readonly) NSData* data;
+
+/**
+ *  Returns the data for the part interpreted as text. If the content
+ *  type of the part is not a text one, or if an error occurs, nil is returned.
+ *
+ *  The text encoding used to interpret the data is extracted from the
+ *  "Content-Type" header or defaults to UTF-8.
+ */
+@property(nonatomic, readonly) NSString* string;
+
+@end
+
+/**
+ *  The GCDWebServerMultiPartFile subclass of GCDWebServerMultiPart wraps
+ *  the content of a part as a file on disk.
+ */
+@interface GCDWebServerMultiPartFile : GCDWebServerMultiPart
+
+/**
+ *  Returns the file name retrieved from the part headers.
+ */
+@property(nonatomic, readonly) NSString* fileName;
+
+/**
+ *  Returns the path to the temporary file containing the part data.
+ *
+ *  @warning This temporary file will be automatically deleted when the
+ *  GCDWebServerMultiPartFile is deallocated. If you want to preserve this file,
+ *  you must move it to a different location beforehand.
+ */
+@property(nonatomic, readonly) NSString* temporaryPath;
+
+@end
+
+/**
+ *  The GCDWebServerMultiPartFormRequest subclass of GCDWebServerRequest
+ *  parses the body of the HTTP request as a multipart encoded form.
+ */
+@interface GCDWebServerMultiPartFormRequest : GCDWebServerRequest
+
+/**
+ *  Returns the argument parts from the multipart encoded form as
+ *  name / GCDWebServerMultiPartArgument pairs.
+ */
+@property(nonatomic, readonly) NSArray* arguments;
+
+/**
+ *  Returns the files parts from the multipart encoded form as
+ *  name / GCDWebServerMultiPartFile pairs.
+ */
+@property(nonatomic, readonly) NSArray* files;
+
+/**
+ *  Returns the MIME type for multipart encoded forms
+ *  i.e. "multipart/form-data".
+ */
++ (NSString*)mimeType;
+
+/**
+ *  Returns the first argument for a given control name or nil if not found.
+ */
+- (GCDWebServerMultiPartArgument*)firstArgumentForControlName:(NSString*)name;
+
+/**
+ *  Returns the first file for a given control name or nil if not found.
+ */
+- (GCDWebServerMultiPartFile*)firstFileForControlName:(NSString*)name;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m
new file mode 100644
index 0000000..e1c0015
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m
@@ -0,0 +1,439 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+#define kMultiPartBufferSize (256 * 1024)
+
+typedef enum {
+  kParserState_Undefined = 0,
+  kParserState_Start,
+  kParserState_Headers,
+  kParserState_Content,
+  kParserState_End
+} ParserState;
+
+@interface GCDWebServerMIMEStreamParser : NSObject
+- (id)initWithBoundary:(NSString*)boundary defaultControlName:(NSString*)name arguments:(NSMutableArray*)arguments files:(NSMutableArray*)files;
+- (BOOL)appendBytes:(const void*)bytes length:(NSUInteger)length;
+- (BOOL)isAtEnd;
+@end
+
+static NSData* _newlineData = nil;
+static NSData* _newlinesData = nil;
+static NSData* _dashNewlineData = nil;
+
+@interface GCDWebServerMultiPart () {
+@private
+  NSString* _controlName;
+  NSString* _contentType;
+  NSString* _mimeType;
+}
+@end
+
+@implementation GCDWebServerMultiPart
+
+@synthesize controlName=_controlName, contentType=_contentType, mimeType=_mimeType;
+
+- (id)initWithControlName:(NSString*)name contentType:(NSString*)type {
+  if ((self = [super init])) {
+    _controlName = [name copy];
+    _contentType = [type copy];
+    _mimeType = GCDWebServerTruncateHeaderValue(_contentType);
+  }
+  return self;
+}
+
+@end
+
+@interface GCDWebServerMultiPartArgument () {
+@private
+  NSData* _data;
+  NSString* _string;
+}
+@end
+
+@implementation GCDWebServerMultiPartArgument
+
+@synthesize data=_data, string=_string;
+
+- (id)initWithControlName:(NSString*)name contentType:(NSString*)type data:(NSData*)data {
+  if ((self = [super initWithControlName:name contentType:type])) {
+    _data = data;
+    
+    if ([self.contentType hasPrefix:@"text/"]) {
+      NSString* charset = GCDWebServerExtractHeaderValueParameter(self.contentType, @"charset");
+      _string = [[NSString alloc] initWithData:_data encoding:GCDWebServerStringEncodingFromCharset(charset)];
+    }
+  }
+  return self;
+}
+
+- (NSString*)description {
+  return [NSString stringWithFormat:@"<%@ | '%@' | %lu bytes>", [self class], self.mimeType, (unsigned long)_data.length];
+}
+
+@end
+
+@interface GCDWebServerMultiPartFile () {
+@private
+  NSString* _fileName;
+  NSString* _temporaryPath;
+}
+@end
+
+@implementation GCDWebServerMultiPartFile
+
+@synthesize fileName=_fileName, temporaryPath=_temporaryPath;
+
+- (id)initWithControlName:(NSString*)name contentType:(NSString*)type fileName:(NSString*)fileName temporaryPath:(NSString*)temporaryPath {
+  if ((self = [super initWithControlName:name contentType:type])) {
+    _fileName = [fileName copy];
+    _temporaryPath = [temporaryPath copy];
+  }
+  return self;
+}
+
+- (void)dealloc {
+  unlink([_temporaryPath fileSystemRepresentation]);
+}
+
+- (NSString*)description {
+  return [NSString stringWithFormat:@"<%@ | '%@' | '%@>'", [self class], self.mimeType, _fileName];
+}
+
+@end
+
+@interface GCDWebServerMIMEStreamParser () {
+@private
+  NSData* _boundary;
+  NSString* _defaultcontrolName;
+  ParserState _state;
+  NSMutableData* _data;
+  NSMutableArray* _arguments;
+  NSMutableArray* _files;
+  
+  NSString* _controlName;
+  NSString* _fileName;
+  NSString* _contentType;
+  NSString* _tmpPath;
+  int _tmpFile;
+  GCDWebServerMIMEStreamParser* _subParser;
+}
+@end
+
+@implementation GCDWebServerMIMEStreamParser
+
++ (void)initialize {
+  if (_newlineData == nil) {
+    _newlineData = [[NSData alloc] initWithBytes:"\r\n" length:2];
+    GWS_DCHECK(_newlineData);
+  }
+  if (_newlinesData == nil) {
+    _newlinesData = [[NSData alloc] initWithBytes:"\r\n\r\n" length:4];
+    GWS_DCHECK(_newlinesData);
+  }
+  if (_dashNewlineData == nil) {
+    _dashNewlineData = [[NSData alloc] initWithBytes:"--\r\n" length:4];
+    GWS_DCHECK(_dashNewlineData);
+  }
+}
+
+- (id)initWithBoundary:(NSString*)boundary defaultControlName:(NSString*)name arguments:(NSMutableArray*)arguments files:(NSMutableArray*)files {
+  NSData* data = boundary.length ? [[NSString stringWithFormat:@"--%@", boundary] dataUsingEncoding:NSASCIIStringEncoding] : nil;
+  if (data == nil) {
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+  if ((self = [super init])) {
+    _boundary = data;
+    _defaultcontrolName = name;
+    _arguments = arguments;
+    _files = files;
+    _data = [[NSMutableData alloc] initWithCapacity:kMultiPartBufferSize];
+    _state = kParserState_Start;
+  }
+  return self;
+}
+
+- (void)dealloc {
+  if (_tmpFile > 0) {
+    close(_tmpFile);
+    unlink([_tmpPath fileSystemRepresentation]);
+  }
+}
+
+// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
+- (BOOL)_parseData {
+  BOOL success = YES;
+  
+  if (_state == kParserState_Headers) {
+    NSRange range = [_data rangeOfData:_newlinesData options:0 range:NSMakeRange(0, _data.length)];
+    if (range.location != NSNotFound) {
+      
+      _controlName = nil;
+      _fileName = nil;
+      _contentType = nil;
+      _tmpPath = nil;
+      _subParser = nil;
+      NSString* headers = [[NSString alloc] initWithData:[_data subdataWithRange:NSMakeRange(0, range.location)] encoding:NSUTF8StringEncoding];
+      if (headers) {
+        for (NSString* header in [headers componentsSeparatedByString:@"\r\n"]) {
+          NSRange subRange = [header rangeOfString:@":"];
+          if (subRange.location != NSNotFound) {
+            NSString* name = [header substringToIndex:subRange.location];
+            NSString* value = [[header substringFromIndex:(subRange.location + subRange.length)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
+            if ([name caseInsensitiveCompare:@"Content-Type"] == NSOrderedSame) {
+              _contentType = GCDWebServerNormalizeHeaderValue(value);
+            } else if ([name caseInsensitiveCompare:@"Content-Disposition"] == NSOrderedSame) {
+              NSString* contentDisposition = GCDWebServerNormalizeHeaderValue(value);
+              if ([GCDWebServerTruncateHeaderValue(contentDisposition) isEqualToString:@"form-data"]) {
+                _controlName = GCDWebServerExtractHeaderValueParameter(contentDisposition, @"name");
+                _fileName = GCDWebServerExtractHeaderValueParameter(contentDisposition, @"filename");
+              } else if ([GCDWebServerTruncateHeaderValue(contentDisposition) isEqualToString:@"file"]) {
+                _controlName = _defaultcontrolName;
+                _fileName = GCDWebServerExtractHeaderValueParameter(contentDisposition, @"filename");
+              }
+            }
+          } else {
+            GWS_DNOT_REACHED();
+          }
+        }
+        if (_contentType == nil) {
+          _contentType = @"text/plain";
+        }
+      } else {
+        GWS_LOG_ERROR(@"Failed decoding headers in part of 'multipart/form-data'");
+        GWS_DNOT_REACHED();
+      }
+      if (_controlName) {
+        if ([GCDWebServerTruncateHeaderValue(_contentType) isEqualToString:@"multipart/mixed"]) {
+          NSString* boundary = GCDWebServerExtractHeaderValueParameter(_contentType, @"boundary");
+          _subParser = [[GCDWebServerMIMEStreamParser alloc] initWithBoundary:boundary defaultControlName:_controlName arguments:_arguments files:_files];
+          if (_subParser == nil) {
+            GWS_DNOT_REACHED();
+            success = NO;
+          }
+        } else if (_fileName) {
+          NSString* path = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSProcessInfo processInfo] globallyUniqueString]];
+          _tmpFile = open([path fileSystemRepresentation], O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+          if (_tmpFile > 0) {
+            _tmpPath = [path copy];
+          } else {
+            GWS_DNOT_REACHED();
+            success = NO;
+          }
+        }
+      } else {
+        GWS_DNOT_REACHED();
+        success = NO;
+      }
+      
+      [_data replaceBytesInRange:NSMakeRange(0, range.location + range.length) withBytes:NULL length:0];
+      _state = kParserState_Content;
+    }
+  }
+  
+  if ((_state == kParserState_Start) || (_state == kParserState_Content)) {
+    NSRange range = [_data rangeOfData:_boundary options:0 range:NSMakeRange(0, _data.length)];
+    if (range.location != NSNotFound) {
+      NSRange subRange = NSMakeRange(range.location + range.length, _data.length - range.location - range.length);
+      NSRange subRange1 = [_data rangeOfData:_newlineData options:NSDataSearchAnchored range:subRange];
+      NSRange subRange2 = [_data rangeOfData:_dashNewlineData options:NSDataSearchAnchored range:subRange];
+      if ((subRange1.location != NSNotFound) || (subRange2.location != NSNotFound)) {
+        
+        if (_state == kParserState_Content) {
+          const void* dataBytes = _data.bytes;
+          NSUInteger dataLength = range.location - 2;
+          if (_subParser) {
+            if (![_subParser appendBytes:dataBytes length:(dataLength + 2)] || ![_subParser isAtEnd]) {
+              GWS_DNOT_REACHED();
+              success = NO;
+            }
+            _subParser = nil;
+          } else if (_tmpPath) {
+            ssize_t result = write(_tmpFile, dataBytes, dataLength);
+            if (result == (ssize_t)dataLength) {
+              if (close(_tmpFile) == 0) {
+                _tmpFile = 0;
+                GCDWebServerMultiPartFile* file = [[GCDWebServerMultiPartFile alloc] initWithControlName:_controlName contentType:_contentType fileName:_fileName temporaryPath:_tmpPath];
+                [_files addObject:file];
+              } else {
+                GWS_DNOT_REACHED();
+                success = NO;
+              }
+            } else {
+              GWS_DNOT_REACHED();
+              success = NO;
+            }
+            _tmpPath = nil;
+          } else {
+            NSData* data = [[NSData alloc] initWithBytes:(void*)dataBytes length:dataLength];
+            GCDWebServerMultiPartArgument* argument = [[GCDWebServerMultiPartArgument alloc] initWithControlName:_controlName contentType:_contentType data:data];
+            [_arguments addObject:argument];
+          }
+        }
+        
+        if (subRange1.location != NSNotFound) {
+          [_data replaceBytesInRange:NSMakeRange(0, subRange1.location + subRange1.length) withBytes:NULL length:0];
+          _state = kParserState_Headers;
+          success = [self _parseData];
+        } else {
+          _state = kParserState_End;
+        }
+      }
+    } else {
+      NSUInteger margin = 2 * _boundary.length;
+      if (_data.length > margin) {
+        NSUInteger length = _data.length - margin;
+        if (_subParser) {
+          if ([_subParser appendBytes:_data.bytes length:length]) {
+            [_data replaceBytesInRange:NSMakeRange(0, length) withBytes:NULL length:0];
+          } else {
+            GWS_DNOT_REACHED();
+            success = NO;
+          }
+        } else if (_tmpPath) {
+          ssize_t result = write(_tmpFile, _data.bytes, length);
+          if (result == (ssize_t)length) {
+            [_data replaceBytesInRange:NSMakeRange(0, length) withBytes:NULL length:0];
+          } else {
+            GWS_DNOT_REACHED();
+            success = NO;
+          }
+        }
+      }
+    }
+  }
+  
+  return success;
+}
+
+- (BOOL)appendBytes:(const void*)bytes length:(NSUInteger)length {
+  [_data appendBytes:bytes length:length];
+  return [self _parseData];
+}
+
+- (BOOL)isAtEnd {
+  return (_state == kParserState_End);
+}
+
+@end
+
+@interface GCDWebServerMultiPartFormRequest () {
+@private
+  GCDWebServerMIMEStreamParser* _parser;
+  NSMutableArray* _arguments;
+  NSMutableArray* _files;
+}
+@end
+
+@implementation GCDWebServerMultiPartFormRequest
+
+@synthesize arguments=_arguments, files=_files;
+
++ (NSString*)mimeType {
+  return @"multipart/form-data";
+}
+
+- (instancetype)initWithMethod:(NSString*)method url:(NSURL*)url headers:(NSDictionary*)headers path:(NSString*)path query:(NSDictionary*)query {
+  if ((self = [super initWithMethod:method url:url headers:headers path:path query:query])) {
+    _arguments = [[NSMutableArray alloc] init];
+    _files = [[NSMutableArray alloc] init];
+  }
+  return self;
+}
+
+- (BOOL)open:(NSError**)error {
+  NSString* boundary = GCDWebServerExtractHeaderValueParameter(self.contentType, @"boundary");
+  _parser = [[GCDWebServerMIMEStreamParser alloc] initWithBoundary:boundary defaultControlName:nil arguments:_arguments files:_files];
+  if (_parser == nil) {
+    *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Failed starting to parse multipart form data"}];
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)writeData:(NSData*)data error:(NSError**)error {
+  if (![_parser appendBytes:data.bytes length:data.length]) {
+    *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Failed continuing to parse multipart form data"}];
+    return NO;
+  }
+  return YES;
+}
+
+- (BOOL)close:(NSError**)error {
+  BOOL atEnd = [_parser isAtEnd];
+  _parser = nil;
+  if (!atEnd) {
+    *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey: @"Failed finishing to parse multipart form data"}];
+    return NO;
+  }
+  return YES;
+}
+
+- (GCDWebServerMultiPartArgument*)firstArgumentForControlName:(NSString*)name {
+  for (GCDWebServerMultiPartArgument* argument in _arguments) {
+    if ([argument.controlName isEqualToString:name]) {
+      return argument;
+    }
+  }
+  return nil;
+}
+
+- (GCDWebServerMultiPartFile*)firstFileForControlName:(NSString*)name {
+  for (GCDWebServerMultiPartFile* file in _files) {
+    if ([file.controlName isEqualToString:name]) {
+      return file;
+    }
+  }
+  return nil;
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  if (_arguments.count) {
+    [description appendString:@"\n"];
+    for (GCDWebServerMultiPartArgument* argument in _arguments) {
+      [description appendFormat:@"\n%@ (%@)\n", argument.controlName, argument.contentType];
+      [description appendString:GCDWebServerDescribeData(argument.data, argument.contentType)];
+    }
+  }
+  if (_files.count) {
+    [description appendString:@"\n"];
+    for (GCDWebServerMultiPartFile* file in _files) {
+      [description appendFormat:@"\n%@ (%@): %@\n{%@}", file.controlName, file.contentType, file.fileName, file.temporaryPath];
+    }
+  }
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.h
new file mode 100644
index 0000000..e36eac3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.h
@@ -0,0 +1,51 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerDataRequest.h"
+
+/**
+ *  The GCDWebServerURLEncodedFormRequest subclass of GCDWebServerRequest
+ *  parses the body of the HTTP request as a URL encoded form using
+ *  GCDWebServerParseURLEncodedForm().
+ */
+@interface GCDWebServerURLEncodedFormRequest : GCDWebServerDataRequest
+
+/**
+ *  Returns the unescaped control names and values for the URL encoded form.
+ *
+ *  The text encoding used to interpret the data is extracted from the
+ *  "Content-Type" header or defaults to UTF-8.
+ */
+@property(nonatomic, readonly) NSDictionary* arguments;
+
+/**
+ *  Returns the MIME type for URL encoded forms
+ *  i.e. "application/x-www-form-urlencoded".
+ */
++ (NSString*)mimeType;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.m
new file mode 100644
index 0000000..f210fa0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Requests/GCDWebServerURLEncodedFormRequest.m
@@ -0,0 +1,70 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerURLEncodedFormRequest () {
+@private
+  NSDictionary* _arguments;
+}
+@end
+
+@implementation GCDWebServerURLEncodedFormRequest
+
+@synthesize arguments=_arguments;
+
++ (NSString*)mimeType {
+  return @"application/x-www-form-urlencoded";
+}
+
+- (BOOL)close:(NSError**)error {
+  if (![super close:error]) {
+    return NO;
+  }
+  
+  NSString* charset = GCDWebServerExtractHeaderValueParameter(self.contentType, @"charset");
+  NSString* string = [[NSString alloc] initWithData:self.data encoding:GCDWebServerStringEncodingFromCharset(charset)];
+  _arguments = GCDWebServerParseURLEncodedForm(string);
+  GWS_DCHECK(_arguments);
+  
+  return YES;
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  [description appendString:@"\n"];
+  for (NSString* argument in [[_arguments allKeys] sortedArrayUsingSelector:@selector(compare:)]) {
+    [description appendFormat:@"\n%@ = %@", argument, [_arguments objectForKey:argument]];
+  }
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.h
new file mode 100644
index 0000000..b0c6493
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.h
@@ -0,0 +1,108 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerResponse.h"
+
+/**
+ *  The GCDWebServerDataResponse subclass of GCDWebServerResponse reads the body
+ *  of the HTTP response from memory.
+ */
+@interface GCDWebServerDataResponse : GCDWebServerResponse
+
+/**
+ *  Creates a response with data in memory and a given content type.
+ */
++ (instancetype)responseWithData:(NSData*)data contentType:(NSString*)type;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithData:(NSData*)data contentType:(NSString*)type;
+
+@end
+
+@interface GCDWebServerDataResponse (Extensions)
+
+/**
+ *  Creates a data response from text encoded using UTF-8.
+ */
++ (instancetype)responseWithText:(NSString*)text;
+
+/**
+ *  Creates a data response from HTML encoded using UTF-8.
+ */
++ (instancetype)responseWithHTML:(NSString*)html;
+
+/**
+ *  Creates a data response from an HTML template encoded using UTF-8.
+ *  See -initWithHTMLTemplate:variables: for details.
+ */
++ (instancetype)responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables;
+
+/**
+ *  Creates a data response from a serialized JSON object and the default
+ *  "application/json" content type.
+ */
++ (instancetype)responseWithJSONObject:(id)object;
+
+/**
+ *  Creates a data response from a serialized JSON object and a custom
+ *  content type.
+ */
++ (instancetype)responseWithJSONObject:(id)object contentType:(NSString*)type;
+
+/**
+ *  Initializes a data response from text encoded using UTF-8.
+ */
+- (instancetype)initWithText:(NSString*)text;
+
+/**
+ *  Initializes a data response from HTML encoded using UTF-8.
+ */
+- (instancetype)initWithHTML:(NSString*)html;
+
+/**
+ *  Initializes a data response from an HTML template encoded using UTF-8.
+ *
+ *  All occurences of "%variable%" within the HTML template are replaced with
+ *  their corresponding values.
+ */
+- (instancetype)initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables;
+
+/**
+ *  Initializes a data response from a serialized JSON object and the default
+ *  "application/json" content type.
+ */
+- (instancetype)initWithJSONObject:(id)object;
+
+/**
+ *  Initializes a data response from a serialized JSON object and a custom
+ *  content type.
+ */
+- (instancetype)initWithJSONObject:(id)object contentType:(NSString*)type;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.m
new file mode 100644
index 0000000..ea02799
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerDataResponse.m
@@ -0,0 +1,143 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerDataResponse () {
+@private
+  NSData* _data;
+  BOOL _done;
+}
+@end
+
+@implementation GCDWebServerDataResponse
+
++ (instancetype)responseWithData:(NSData*)data contentType:(NSString*)type {
+  return [[[self class] alloc] initWithData:data contentType:type];
+}
+
+- (instancetype)initWithData:(NSData*)data contentType:(NSString*)type {
+  if (data == nil) {
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+  
+  if ((self = [super init])) {
+    _data = data;
+    
+    self.contentType = type;
+    self.contentLength = data.length;
+  }
+  return self;
+}
+
+- (NSData*)readData:(NSError**)error {
+  NSData* data;
+  if (_done) {
+    data = [NSData data];
+  } else {
+    data = _data;
+    _done = YES;
+  }
+  return data;
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  [description appendString:@"\n\n"];
+  [description appendString:GCDWebServerDescribeData(_data, self.contentType)];
+  return description;
+}
+
+@end
+
+@implementation GCDWebServerDataResponse (Extensions)
+
++ (instancetype)responseWithText:(NSString*)text {
+  return [[self alloc] initWithText:text];
+}
+
++ (instancetype)responseWithHTML:(NSString*)html {
+  return [[self alloc] initWithHTML:html];
+}
+
++ (instancetype)responseWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
+  return [[self alloc] initWithHTMLTemplate:path variables:variables];
+}
+
++ (instancetype)responseWithJSONObject:(id)object {
+  return [[self alloc] initWithJSONObject:object];
+}
+
++ (instancetype)responseWithJSONObject:(id)object contentType:(NSString*)type {
+  return [[self alloc] initWithJSONObject:object contentType:type];
+}
+
+- (instancetype)initWithText:(NSString*)text {
+  NSData* data = [text dataUsingEncoding:NSUTF8StringEncoding];
+  if (data == nil) {
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+  return [self initWithData:data contentType:@"text/plain; charset=utf-8"];
+}
+
+- (instancetype)initWithHTML:(NSString*)html {
+  NSData* data = [html dataUsingEncoding:NSUTF8StringEncoding];
+  if (data == nil) {
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+  return [self initWithData:data contentType:@"text/html; charset=utf-8"];
+}
+
+- (instancetype)initWithHTMLTemplate:(NSString*)path variables:(NSDictionary*)variables {
+  NSMutableString* html = [[NSMutableString alloc] initWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
+  [variables enumerateKeysAndObjectsUsingBlock:^(NSString* key, NSString* value, BOOL* stop) {
+    [html replaceOccurrencesOfString:[NSString stringWithFormat:@"%%%@%%", key] withString:value options:0 range:NSMakeRange(0, html.length)];
+  }];
+  id response = [self initWithHTML:html];
+  return response;
+}
+
+- (instancetype)initWithJSONObject:(id)object {
+  return [self initWithJSONObject:object contentType:@"application/json"];
+}
+
+- (instancetype)initWithJSONObject:(id)object contentType:(NSString*)type {
+  NSData* data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL];
+  if (data == nil) {
+    return nil;
+  }
+  return [self initWithData:data contentType:type];
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.h
new file mode 100644
index 0000000..381b122
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.h
@@ -0,0 +1,81 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerDataResponse.h"
+#import "GCDWebServerHTTPStatusCodes.h"
+
+/**
+ *  The GCDWebServerDataResponse subclass of GCDWebServerDataResponse generates
+ *  an HTML body from an HTTP status code and an error message.
+ */
+@interface GCDWebServerErrorResponse : GCDWebServerDataResponse
+
+/**
+ *  Creates a client error response with the corresponding HTTP status code.
+ */
++ (instancetype)responseWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode message:(NSString*)format, ... NS_FORMAT_FUNCTION(2,3);
+
+/**
+ *  Creates a server error response with the corresponding HTTP status code.
+ */
++ (instancetype)responseWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode message:(NSString*)format, ... NS_FORMAT_FUNCTION(2,3);
+
+/**
+ *  Creates a client error response with the corresponding HTTP status code
+ *  and an underlying NSError.
+ */
++ (instancetype)responseWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... NS_FORMAT_FUNCTION(3,4);
+
+/**
+ *  Creates a server error response with the corresponding HTTP status code
+ *  and an underlying NSError.
+ */
++ (instancetype)responseWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... NS_FORMAT_FUNCTION(3,4);
+
+/**
+ *  Initializes a client error response with the corresponding HTTP status code.
+ */
+- (instancetype)initWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode message:(NSString*)format, ... NS_FORMAT_FUNCTION(2,3);
+
+/**
+ *  Initializes a server error response with the corresponding HTTP status code.
+ */
+- (instancetype)initWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode message:(NSString*)format, ... NS_FORMAT_FUNCTION(2,3);
+
+/**
+ *  Initializes a client error response with the corresponding HTTP status code
+ *  and an underlying NSError.
+ */
+- (instancetype)initWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... NS_FORMAT_FUNCTION(3,4);
+
+/**
+ *  Initializes a server error response with the corresponding HTTP status code
+ *  and an underlying NSError.
+ */
+- (instancetype)initWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... NS_FORMAT_FUNCTION(3,4);
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.m
new file mode 100644
index 0000000..c2e4422
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerErrorResponse.m
@@ -0,0 +1,128 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerErrorResponse ()
+- (instancetype)initWithStatusCode:(NSInteger)statusCode underlyingError:(NSError*)underlyingError messageFormat:(NSString*)format arguments:(va_list)arguments;
+@end
+
+@implementation GCDWebServerErrorResponse
+
++ (instancetype)responseWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 400) && ((NSInteger)errorCode < 500));
+  va_list arguments;
+  va_start(arguments, format);
+  GCDWebServerErrorResponse* response = [[self alloc] initWithStatusCode:errorCode underlyingError:nil messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return response;
+}
+
++ (instancetype)responseWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 500) && ((NSInteger)errorCode < 600));
+  va_list arguments;
+  va_start(arguments, format);
+  GCDWebServerErrorResponse* response = [[self alloc] initWithStatusCode:errorCode underlyingError:nil messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return response;
+}
+
++ (instancetype)responseWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 400) && ((NSInteger)errorCode < 500));
+  va_list arguments;
+  va_start(arguments, format);
+  GCDWebServerErrorResponse* response = [[self alloc] initWithStatusCode:errorCode underlyingError:underlyingError messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return response;
+}
+
++ (instancetype)responseWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 500) && ((NSInteger)errorCode < 600));
+  va_list arguments;
+  va_start(arguments, format);
+  GCDWebServerErrorResponse* response = [[self alloc] initWithStatusCode:errorCode underlyingError:underlyingError messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return response;
+}
+
+static inline NSString* _EscapeHTMLString(NSString* string) {
+  return [string stringByReplacingOccurrencesOfString:@"\"" withString:@"&quot;"];
+}
+
+- (instancetype)initWithStatusCode:(NSInteger)statusCode underlyingError:(NSError*)underlyingError messageFormat:(NSString*)format arguments:(va_list)arguments {
+  NSString* message = [[NSString alloc] initWithFormat:format arguments:arguments];
+  NSString* title = [NSString stringWithFormat:@"HTTP Error %i", (int)statusCode];
+  NSString* error = underlyingError ? [NSString stringWithFormat:@"[%@] %@ (%li)", underlyingError.domain, _EscapeHTMLString(underlyingError.localizedDescription), (long)underlyingError.code] : @"";
+  NSString* html = [NSString stringWithFormat:@"<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"utf-8\"><title>%@</title></head><body><h1>%@: %@</h1><h3>%@</h3></body></html>",
+                                              title, title, _EscapeHTMLString(message), error];
+  if ((self = [self initWithHTML:html])) {
+    self.statusCode = statusCode;
+  }
+  return self;
+}
+
+- (instancetype)initWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 400) && ((NSInteger)errorCode < 500));
+  va_list arguments;
+  va_start(arguments, format);
+  self = [self initWithStatusCode:errorCode underlyingError:nil messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return self;
+}
+
+- (instancetype)initWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 500) && ((NSInteger)errorCode < 600));
+  va_list arguments;
+  va_start(arguments, format);
+  self = [self initWithStatusCode:errorCode underlyingError:nil messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return self;
+}
+
+- (instancetype)initWithClientError:(GCDWebServerClientErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 400) && ((NSInteger)errorCode < 500));
+  va_list arguments;
+  va_start(arguments, format);
+  self = [self initWithStatusCode:errorCode underlyingError:underlyingError messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return self;
+}
+
+- (instancetype)initWithServerError:(GCDWebServerServerErrorHTTPStatusCode)errorCode underlyingError:(NSError*)underlyingError message:(NSString*)format, ... {
+  GWS_DCHECK(((NSInteger)errorCode >= 500) && ((NSInteger)errorCode < 600));
+  va_list arguments;
+  va_start(arguments, format);
+  self = [self initWithStatusCode:errorCode underlyingError:underlyingError messageFormat:format arguments:arguments];
+  va_end(arguments);
+  return self;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.h
new file mode 100644
index 0000000..19d284d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.h
@@ -0,0 +1,96 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerResponse.h"
+
+/**
+ *  The GCDWebServerFileResponse subclass of GCDWebServerResponse reads the body
+ *  of the HTTP response from a file on disk.
+ *
+ *  It will automatically set the contentType, lastModifiedDate and eTag
+ *  properties of the GCDWebServerResponse according to the file extension and
+ *  metadata.
+ */
+@interface GCDWebServerFileResponse : GCDWebServerResponse
+
+/**
+ *  Creates a response with the contents of a file.
+ */
++ (instancetype)responseWithFile:(NSString*)path;
+
+/**
+ *  Creates a response like +responseWithFile: and sets the "Content-Disposition"
+ *  HTTP header for a download if the "attachment" argument is YES.
+ */
++ (instancetype)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment;
+
+/**
+ *  Creates a response like +responseWithFile: but restricts the file contents
+ *  to a specific byte range.
+ *
+ *  See -initWithFile:byteRange: for details.
+ */
++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range;
+
+/**
+ *  Creates a response like +responseWithFile:byteRange: and sets the
+ *  "Content-Disposition" HTTP header for a download if the "attachment"
+ *  argument is YES.
+ */
++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment;
+
+/**
+ *  Initializes a response with the contents of a file.
+ */
+- (instancetype)initWithFile:(NSString*)path;
+
+/**
+ *  Initializes a response like +responseWithFile: and sets the
+ *  "Content-Disposition" HTTP header for a download if the "attachment"
+ *  argument is YES.
+ */
+- (instancetype)initWithFile:(NSString*)path isAttachment:(BOOL)attachment;
+
+/**
+ *  Initializes a response like -initWithFile: but restricts the file contents
+ *  to a specific byte range. This range should be set to (NSUIntegerMax, 0) for
+ *  the full file, (offset, length) if expressed from the beginning of the file,
+ *  or (NSUIntegerMax, length) if expressed from the end of the file. The "offset"
+ *  and "length" values will be automatically adjusted to be compatible with the
+ *  actual size of the file.
+ *
+ *  This argument would typically be set to the value of the byteRange property
+ *  of the current GCDWebServerRequest.
+ */
+- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m
new file mode 100644
index 0000000..2004327
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerFileResponse.m
@@ -0,0 +1,181 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import <sys/stat.h>
+
+#import "GCDWebServerPrivate.h"
+
+#define kFileReadBufferSize (32 * 1024)
+
+@interface GCDWebServerFileResponse () {
+@private
+  NSString* _path;
+  NSUInteger _offset;
+  NSUInteger _size;
+  int _file;
+}
+@end
+
+@implementation GCDWebServerFileResponse
+
++ (instancetype)responseWithFile:(NSString*)path {
+  return [[[self class] alloc] initWithFile:path];
+}
+
++ (instancetype)responseWithFile:(NSString*)path isAttachment:(BOOL)attachment {
+  return [[[self class] alloc] initWithFile:path isAttachment:attachment];
+}
+
++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range {
+  return [[[self class] alloc] initWithFile:path byteRange:range];
+}
+
++ (instancetype)responseWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment {
+  return [[[self class] alloc] initWithFile:path byteRange:range isAttachment:attachment];
+}
+
+- (instancetype)initWithFile:(NSString*)path {
+  return [self initWithFile:path byteRange:NSMakeRange(NSUIntegerMax, 0) isAttachment:NO];
+}
+
+- (instancetype)initWithFile:(NSString*)path isAttachment:(BOOL)attachment {
+  return [self initWithFile:path byteRange:NSMakeRange(NSUIntegerMax, 0) isAttachment:attachment];
+}
+
+- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range {
+  return [self initWithFile:path byteRange:range isAttachment:NO];
+}
+
+static inline NSDate* _NSDateFromTimeSpec(const struct timespec* t) {
+  return [NSDate dateWithTimeIntervalSince1970:((NSTimeInterval)t->tv_sec + (NSTimeInterval)t->tv_nsec / 1000000000.0)];
+}
+
+- (instancetype)initWithFile:(NSString*)path byteRange:(NSRange)range isAttachment:(BOOL)attachment {
+  struct stat info;
+  if (lstat([path fileSystemRepresentation], &info) || !(info.st_mode & S_IFREG)) {
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+#ifndef __LP64__
+  if (info.st_size >= (off_t)4294967295) {  // In 32 bit mode, we can't handle files greater than 4 GiBs (don't use "NSUIntegerMax" here to avoid potential unsigned to signed conversion issues)
+    GWS_DNOT_REACHED();
+    return nil;
+  }
+#endif
+  NSUInteger fileSize = (NSUInteger)info.st_size;
+  
+  BOOL hasByteRange = GCDWebServerIsValidByteRange(range);
+  if (hasByteRange) {
+    if (range.location != NSUIntegerMax) {
+      range.location = MIN(range.location, fileSize);
+      range.length = MIN(range.length, fileSize - range.location);
+    } else {
+      range.length = MIN(range.length, fileSize);
+      range.location = fileSize - range.length;
+    }
+    if (range.length == 0) {
+      return nil;  // TODO: Return 416 status code and "Content-Range: bytes */{file length}" header
+    }
+  } else {
+    range.location = 0;
+    range.length = fileSize;
+  }
+  
+  if ((self = [super init])) {
+    _path = [path copy];
+    _offset = range.location;
+    _size = range.length;
+    if (hasByteRange) {
+      [self setStatusCode:kGCDWebServerHTTPStatusCode_PartialContent];
+      [self setValue:[NSString stringWithFormat:@"bytes %lu-%lu/%lu", (unsigned long)_offset, (unsigned long)(_offset + _size - 1), (unsigned long)fileSize] forAdditionalHeader:@"Content-Range"];
+      GWS_LOG_DEBUG(@"Using content bytes range [%lu-%lu] for file \"%@\"", (unsigned long)_offset, (unsigned long)(_offset + _size - 1), path);
+    }
+    
+    if (attachment) {
+      NSString* fileName = [path lastPathComponent];
+      NSData* data = [[fileName stringByReplacingOccurrencesOfString:@"\"" withString:@""] dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:YES];
+      NSString* lossyFileName = data ? [[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] : nil;
+      if (lossyFileName) {
+        NSString* value = [NSString stringWithFormat:@"attachment; filename=\"%@\"; filename*=UTF-8''%@", lossyFileName, GCDWebServerEscapeURLString(fileName)];
+        [self setValue:value forAdditionalHeader:@"Content-Disposition"];
+      } else {
+        GWS_DNOT_REACHED();
+      }
+    }
+    
+    self.contentType = GCDWebServerGetMimeTypeForExtension([_path pathExtension]);
+    self.contentLength = _size;
+    self.lastModifiedDate = _NSDateFromTimeSpec(&info.st_mtimespec);
+    self.eTag = [NSString stringWithFormat:@"%llu/%li/%li", info.st_ino, info.st_mtimespec.tv_sec, info.st_mtimespec.tv_nsec];
+  }
+  return self;
+}
+
+- (BOOL)open:(NSError**)error {
+  _file = open([_path fileSystemRepresentation], O_NOFOLLOW | O_RDONLY);
+  if (_file <= 0) {
+    *error = GCDWebServerMakePosixError(errno);
+    return NO;
+  }
+  if (lseek(_file, _offset, SEEK_SET) != (off_t)_offset) {
+    *error = GCDWebServerMakePosixError(errno);
+    close(_file);
+    return NO;
+  }
+  return YES;
+}
+
+- (NSData*)readData:(NSError**)error {
+  size_t length = MIN((NSUInteger)kFileReadBufferSize, _size);
+  NSMutableData* data = [[NSMutableData alloc] initWithLength:length];
+  ssize_t result = read(_file, data.mutableBytes, length);
+  if (result < 0) {
+    *error = GCDWebServerMakePosixError(errno);
+    return nil;
+  }
+  if (result > 0) {
+    [data setLength:result];
+    _size -= result;
+  }
+  return data;
+}
+
+- (void)close {
+  close(_file);
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  [description appendFormat:@"\n\n{%@}", _path];
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h
new file mode 100644
index 0000000..4f39625
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.h
@@ -0,0 +1,78 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServerResponse.h"
+
+/**
+ *  The GCDWebServerStreamBlock is called to stream the data for the HTTP body.
+ *  The block must return empty NSData when done or nil on error and set the
+ *  "error" argument which is guaranteed to be non-NULL.
+ */
+typedef NSData* (^GCDWebServerStreamBlock)(NSError** error);
+
+/**
+ *  The GCDWebServerAsyncStreamBlock works like the GCDWebServerStreamBlock
+ *  except the streamed data can be returned at a later time allowing for
+ *  truly asynchronous generation of the data.
+ *
+ *  The block must return empty NSData when done or nil on error and set the
+ *  "error" argument which is guaranteed to be non-NULL.
+ *
+ *  The block must regularly call "completionBlock" passing new streamed data.
+ *  Eventually it must call "completionBlock" passing an empty NSData indicating
+ *  the end of the stream has been reached, or pass nil and an NSError in case of
+ *  error.
+ */
+typedef void (^GCDWebServerAsyncStreamBlock)(GCDWebServerBodyReaderCompletionBlock completionBlock);
+
+/**
+ *  The GCDWebServerStreamedResponse subclass of GCDWebServerResponse streams
+ *  the body of the HTTP response using a GCD block.
+ */
+@interface GCDWebServerStreamedResponse : GCDWebServerResponse
+
+/**
+ *  Creates a response with streamed data and a given content type.
+ */
++ (instancetype)responseWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block;
+
+/**
+ *  Creates a response with async streamed data and a given content type.
+ */
++ (instancetype)responseWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block;
+
+/**
+ *  Initializes a response with streamed data and a given content type.
+ */
+- (instancetype)initWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m
new file mode 100644
index 0000000..7f96943
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebServer/Responses/GCDWebServerStreamedResponse.m
@@ -0,0 +1,79 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebServer requires ARC
+#endif
+
+#import "GCDWebServerPrivate.h"
+
+@interface GCDWebServerStreamedResponse () {
+@private
+  GCDWebServerAsyncStreamBlock _block;
+}
+@end
+
+@implementation GCDWebServerStreamedResponse
+
++ (instancetype)responseWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block {
+  return [[[self class] alloc] initWithContentType:type streamBlock:block];
+}
+
++ (instancetype)responseWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block {
+  return [[[self class] alloc] initWithContentType:type asyncStreamBlock:block];
+}
+
+- (instancetype)initWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block {
+  return [self initWithContentType:type asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) {
+    
+    NSError* error = nil;
+    NSData* data = block(&error);
+    completionBlock(data, error);
+    
+  }];
+}
+
+- (instancetype)initWithContentType:(NSString*)type asyncStreamBlock:(GCDWebServerAsyncStreamBlock)block {
+  if ((self = [super init])) {
+    _block = [block copy];
+    
+    self.contentType = type;
+  }
+  return self;
+}
+
+- (void)asyncReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block {
+  _block(block);
+}
+
+- (NSString*)description {
+  NSMutableString* description = [NSMutableString stringWithString:[super description]];
+  [description appendString:@"\n\n<STREAM>"];
+  return description;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/Info.plist b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/Info.plist
new file mode 100644
index 0000000..e25dc75
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/Info.plist
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css
new file mode 100644
index 0000000..a406992
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap-theme.css
@@ -0,0 +1,347 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+}
+.btn-default {
+  text-shadow: 0 1px 0 #fff;
+  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #dbdbdb;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+  background-color: #e0e0e0;
+  background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+  background-color: #e0e0e0;
+  border-color: #dbdbdb;
+}
+.btn-primary {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #2b669a;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+  background-color: #2d6ca2;
+  background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+  background-color: #2d6ca2;
+  border-color: #2b669a;
+}
+.btn-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+  background-color: #419641;
+  background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+  background-color: #419641;
+  border-color: #3e8f3e;
+}
+.btn-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+  background-color: #2aabd2;
+  background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+  background-color: #2aabd2;
+  border-color: #28a4c9;
+}
+.btn-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+  background-color: #eb9316;
+  background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+  background-color: #eb9316;
+  border-color: #e38d13;
+}
+.btn-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+  background-color: #c12e2a;
+  background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+  background-color: #c12e2a;
+  border-color: #b92c28;
+}
+.thumbnail,
+.img-thumbnail {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  background-color: #e8e8e8;
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  background-color: #357ebd;
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+  background-repeat: repeat-x;
+}
+.navbar-default {
+  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+  background-repeat: repeat-x;
+}
+.navbar-inverse .navbar-nav > .active > a {
+  background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%);
+  background-image:         linear-gradient(to bottom, #222 0%, #282828 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);
+  background-repeat: repeat-x;
+  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+.alert {
+  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #b2dba1;
+}
+.alert-info {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #9acfea;
+}
+.alert-warning {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #f5e79e;
+}
+.alert-danger {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dca7a7;
+}
+.progress {
+  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #3071a9 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-success {
+  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-info {
+  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-warning {
+  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+  background-repeat: repeat-x;
+}
+.progress-bar-danger {
+  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+  background-repeat: repeat-x;
+}
+.list-group {
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 #3071a9;
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #3278b3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #3278b3;
+}
+.panel {
+  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%);
+  background-image:         linear-gradient(to bottom, #428bca 0%, #357ebd 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+  background-repeat: repeat-x;
+}
+.well {
+  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+  background-repeat: repeat-x;
+  border-color: #dcdcdc;
+  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap.css b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap.css
new file mode 100644
index 0000000..7f36651
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/bootstrap.css
@@ -0,0 +1,5785 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
+html {
+  font-family: sans-serif;
+  -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+}
+body {
+  margin: 0;
+}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+  display: block;
+}
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline;
+}
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+[hidden],
+template {
+  display: none;
+}
+a {
+  background: transparent;
+}
+a:active,
+a:hover {
+  outline: 0;
+}
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+b,
+strong {
+  font-weight: bold;
+}
+dfn {
+  font-style: italic;
+}
+h1 {
+  margin: .67em 0;
+  font-size: 2em;
+}
+mark {
+  color: #000;
+  background: #ff0;
+}
+small {
+  font-size: 80%;
+}
+sub,
+sup {
+  position: relative;
+  font-size: 75%;
+  line-height: 0;
+  vertical-align: baseline;
+}
+sup {
+  top: -.5em;
+}
+sub {
+  bottom: -.25em;
+}
+img {
+  border: 0;
+}
+svg:not(:root) {
+  overflow: hidden;
+}
+figure {
+  margin: 1em 40px;
+}
+hr {
+  height: 0;
+  -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+pre {
+  overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+  margin: 0;
+  font: inherit;
+  color: inherit;
+}
+button {
+  overflow: visible;
+}
+button,
+select {
+  text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button;
+  cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+input {
+  line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-box-sizing: content-box;
+     -moz-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+fieldset {
+  padding: .35em .625em .75em;
+  margin: 0 2px;
+  border: 1px solid #c0c0c0;
+}
+legend {
+  padding: 0;
+  border: 0;
+}
+textarea {
+  overflow: auto;
+}
+optgroup {
+  font-weight: bold;
+}
+table {
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+td,
+th {
+  padding: 0;
+}
+@media print {
+  * {
+    color: #000 !important;
+    text-shadow: none !important;
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+  pre,
+  blockquote {
+    border: 1px solid #999;
+
+    page-break-inside: avoid;
+  }
+  thead {
+    display: table-header-group;
+  }
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+  img {
+    max-width: 100% !important;
+  }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+  select {
+    background: #fff !important;
+  }
+  .navbar {
+    display: none;
+  }
+  .table td,
+  .table th {
+    background-color: #fff !important;
+  }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important;
+  }
+  .label {
+    border: 1px solid #000;
+  }
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important;
+  }
+}
+* {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+html {
+  font-size: 62.5%;
+
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #333;
+  background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+a {
+  color: #428bca;
+  text-decoration: none;
+}
+a:hover,
+a:focus {
+  color: #2a6496;
+  text-decoration: underline;
+}
+a:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+figure {
+  margin: 0;
+}
+img {
+  vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+}
+.img-rounded {
+  border-radius: 6px;
+}
+.img-thumbnail {
+  display: inline-block;
+  max-width: 100%;
+  height: auto;
+  padding: 4px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.img-circle {
+  border-radius: 50%;
+}
+hr {
+  margin-top: 20px;
+  margin-bottom: 20px;
+  border: 0;
+  border-top: 1px solid #eee;
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: inherit;
+  font-weight: 500;
+  line-height: 1.1;
+  color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #999;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+  margin-top: 20px;
+  margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+  font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+  font-size: 75%;
+}
+h1,
+.h1 {
+  font-size: 36px;
+}
+h2,
+.h2 {
+  font-size: 30px;
+}
+h3,
+.h3 {
+  font-size: 24px;
+}
+h4,
+.h4 {
+  font-size: 18px;
+}
+h5,
+.h5 {
+  font-size: 14px;
+}
+h6,
+.h6 {
+  font-size: 12px;
+}
+p {
+  margin: 0 0 10px;
+}
+.lead {
+  margin-bottom: 20px;
+  font-size: 16px;
+  font-weight: 200;
+  line-height: 1.4;
+}
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px;
+  }
+}
+small,
+.small {
+  font-size: 85%;
+}
+cite {
+  font-style: normal;
+}
+.text-left {
+  text-align: left;
+}
+.text-right {
+  text-align: right;
+}
+.text-center {
+  text-align: center;
+}
+.text-justify {
+  text-align: justify;
+}
+.text-muted {
+  color: #999;
+}
+.text-primary {
+  color: #428bca;
+}
+a.text-primary:hover {
+  color: #3071a9;
+}
+.text-success {
+  color: #3c763d;
+}
+a.text-success:hover {
+  color: #2b542c;
+}
+.text-info {
+  color: #31708f;
+}
+a.text-info:hover {
+  color: #245269;
+}
+.text-warning {
+  color: #8a6d3b;
+}
+a.text-warning:hover {
+  color: #66512c;
+}
+.text-danger {
+  color: #a94442;
+}
+a.text-danger:hover {
+  color: #843534;
+}
+.bg-primary {
+  color: #fff;
+  background-color: #428bca;
+}
+a.bg-primary:hover {
+  background-color: #3071a9;
+}
+.bg-success {
+  background-color: #dff0d8;
+}
+a.bg-success:hover {
+  background-color: #c1e2b3;
+}
+.bg-info {
+  background-color: #d9edf7;
+}
+a.bg-info:hover {
+  background-color: #afd9ee;
+}
+.bg-warning {
+  background-color: #fcf8e3;
+}
+a.bg-warning:hover {
+  background-color: #f7ecb5;
+}
+.bg-danger {
+  background-color: #f2dede;
+}
+a.bg-danger:hover {
+  background-color: #e4b9b9;
+}
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+  margin-bottom: 0;
+}
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+.list-inline {
+  padding-left: 0;
+  margin-left: -5px;
+  list-style: none;
+}
+.list-inline > li {
+  display: inline-block;
+  padding-right: 5px;
+  padding-left: 5px;
+}
+dl {
+  margin-top: 0;
+  margin-bottom: 20px;
+}
+dt,
+dd {
+  line-height: 1.42857143;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .dl-horizontal dt {
+    float: left;
+    width: 160px;
+    overflow: hidden;
+    clear: left;
+    text-align: right;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .dl-horizontal dd {
+    margin-left: 180px;
+  }
+}
+abbr[title],
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted #999;
+}
+.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+  margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+  display: block;
+  font-size: 80%;
+  line-height: 1.42857143;
+  color: #999;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+  content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+  padding-right: 15px;
+  padding-left: 0;
+  text-align: right;
+  border-right: 5px solid #eee;
+  border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+  content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014';
+}
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  white-space: nowrap;
+  background-color: #f9f2f4;
+  border-radius: 4px;
+}
+kbd {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #fff;
+  background-color: #333;
+  border-radius: 3px;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857143;
+  color: #333;
+  word-break: break-all;
+  word-wrap: break-word;
+  background-color: #f5f5f5;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+pre code {
+  padding: 0;
+  font-size: inherit;
+  color: inherit;
+  white-space: pre-wrap;
+  background-color: transparent;
+  border-radius: 0;
+}
+.pre-scrollable {
+  max-height: 340px;
+  overflow-y: scroll;
+}
+.container {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+@media (min-width: 768px) {
+  .container {
+    width: 750px;
+  }
+}
+@media (min-width: 992px) {
+  .container {
+    width: 970px;
+  }
+}
+@media (min-width: 1200px) {
+  .container {
+    width: 1170px;
+  }
+}
+.container-fluid {
+  padding-right: 15px;
+  padding-left: 15px;
+  margin-right: auto;
+  margin-left: auto;
+}
+.row {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+  position: relative;
+  min-height: 1px;
+  padding-right: 15px;
+  padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+  float: left;
+}
+.col-xs-12 {
+  width: 100%;
+}
+.col-xs-11 {
+  width: 91.66666667%;
+}
+.col-xs-10 {
+  width: 83.33333333%;
+}
+.col-xs-9 {
+  width: 75%;
+}
+.col-xs-8 {
+  width: 66.66666667%;
+}
+.col-xs-7 {
+  width: 58.33333333%;
+}
+.col-xs-6 {
+  width: 50%;
+}
+.col-xs-5 {
+  width: 41.66666667%;
+}
+.col-xs-4 {
+  width: 33.33333333%;
+}
+.col-xs-3 {
+  width: 25%;
+}
+.col-xs-2 {
+  width: 16.66666667%;
+}
+.col-xs-1 {
+  width: 8.33333333%;
+}
+.col-xs-pull-12 {
+  right: 100%;
+}
+.col-xs-pull-11 {
+  right: 91.66666667%;
+}
+.col-xs-pull-10 {
+  right: 83.33333333%;
+}
+.col-xs-pull-9 {
+  right: 75%;
+}
+.col-xs-pull-8 {
+  right: 66.66666667%;
+}
+.col-xs-pull-7 {
+  right: 58.33333333%;
+}
+.col-xs-pull-6 {
+  right: 50%;
+}
+.col-xs-pull-5 {
+  right: 41.66666667%;
+}
+.col-xs-pull-4 {
+  right: 33.33333333%;
+}
+.col-xs-pull-3 {
+  right: 25%;
+}
+.col-xs-pull-2 {
+  right: 16.66666667%;
+}
+.col-xs-pull-1 {
+  right: 8.33333333%;
+}
+.col-xs-pull-0 {
+  right: 0;
+}
+.col-xs-push-12 {
+  left: 100%;
+}
+.col-xs-push-11 {
+  left: 91.66666667%;
+}
+.col-xs-push-10 {
+  left: 83.33333333%;
+}
+.col-xs-push-9 {
+  left: 75%;
+}
+.col-xs-push-8 {
+  left: 66.66666667%;
+}
+.col-xs-push-7 {
+  left: 58.33333333%;
+}
+.col-xs-push-6 {
+  left: 50%;
+}
+.col-xs-push-5 {
+  left: 41.66666667%;
+}
+.col-xs-push-4 {
+  left: 33.33333333%;
+}
+.col-xs-push-3 {
+  left: 25%;
+}
+.col-xs-push-2 {
+  left: 16.66666667%;
+}
+.col-xs-push-1 {
+  left: 8.33333333%;
+}
+.col-xs-push-0 {
+  left: 0;
+}
+.col-xs-offset-12 {
+  margin-left: 100%;
+}
+.col-xs-offset-11 {
+  margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+  margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+  margin-left: 75%;
+}
+.col-xs-offset-8 {
+  margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+  margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+  margin-left: 50%;
+}
+.col-xs-offset-5 {
+  margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+  margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+  margin-left: 25%;
+}
+.col-xs-offset-2 {
+  margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+  margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+    float: left;
+  }
+  .col-sm-12 {
+    width: 100%;
+  }
+  .col-sm-11 {
+    width: 91.66666667%;
+  }
+  .col-sm-10 {
+    width: 83.33333333%;
+  }
+  .col-sm-9 {
+    width: 75%;
+  }
+  .col-sm-8 {
+    width: 66.66666667%;
+  }
+  .col-sm-7 {
+    width: 58.33333333%;
+  }
+  .col-sm-6 {
+    width: 50%;
+  }
+  .col-sm-5 {
+    width: 41.66666667%;
+  }
+  .col-sm-4 {
+    width: 33.33333333%;
+  }
+  .col-sm-3 {
+    width: 25%;
+  }
+  .col-sm-2 {
+    width: 16.66666667%;
+  }
+  .col-sm-1 {
+    width: 8.33333333%;
+  }
+  .col-sm-pull-12 {
+    right: 100%;
+  }
+  .col-sm-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-sm-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-sm-pull-9 {
+    right: 75%;
+  }
+  .col-sm-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-sm-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-sm-pull-6 {
+    right: 50%;
+  }
+  .col-sm-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-sm-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-sm-pull-3 {
+    right: 25%;
+  }
+  .col-sm-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-sm-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-sm-pull-0 {
+    right: 0;
+  }
+  .col-sm-push-12 {
+    left: 100%;
+  }
+  .col-sm-push-11 {
+    left: 91.66666667%;
+  }
+  .col-sm-push-10 {
+    left: 83.33333333%;
+  }
+  .col-sm-push-9 {
+    left: 75%;
+  }
+  .col-sm-push-8 {
+    left: 66.66666667%;
+  }
+  .col-sm-push-7 {
+    left: 58.33333333%;
+  }
+  .col-sm-push-6 {
+    left: 50%;
+  }
+  .col-sm-push-5 {
+    left: 41.66666667%;
+  }
+  .col-sm-push-4 {
+    left: 33.33333333%;
+  }
+  .col-sm-push-3 {
+    left: 25%;
+  }
+  .col-sm-push-2 {
+    left: 16.66666667%;
+  }
+  .col-sm-push-1 {
+    left: 8.33333333%;
+  }
+  .col-sm-push-0 {
+    left: 0;
+  }
+  .col-sm-offset-12 {
+    margin-left: 100%;
+  }
+  .col-sm-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-sm-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-sm-offset-9 {
+    margin-left: 75%;
+  }
+  .col-sm-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-sm-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-sm-offset-6 {
+    margin-left: 50%;
+  }
+  .col-sm-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-sm-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-sm-offset-3 {
+    margin-left: 25%;
+  }
+  .col-sm-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-sm-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-sm-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 992px) {
+  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+    float: left;
+  }
+  .col-md-12 {
+    width: 100%;
+  }
+  .col-md-11 {
+    width: 91.66666667%;
+  }
+  .col-md-10 {
+    width: 83.33333333%;
+  }
+  .col-md-9 {
+    width: 75%;
+  }
+  .col-md-8 {
+    width: 66.66666667%;
+  }
+  .col-md-7 {
+    width: 58.33333333%;
+  }
+  .col-md-6 {
+    width: 50%;
+  }
+  .col-md-5 {
+    width: 41.66666667%;
+  }
+  .col-md-4 {
+    width: 33.33333333%;
+  }
+  .col-md-3 {
+    width: 25%;
+  }
+  .col-md-2 {
+    width: 16.66666667%;
+  }
+  .col-md-1 {
+    width: 8.33333333%;
+  }
+  .col-md-pull-12 {
+    right: 100%;
+  }
+  .col-md-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-md-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-md-pull-9 {
+    right: 75%;
+  }
+  .col-md-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-md-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-md-pull-6 {
+    right: 50%;
+  }
+  .col-md-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-md-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-md-pull-3 {
+    right: 25%;
+  }
+  .col-md-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-md-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-md-pull-0 {
+    right: 0;
+  }
+  .col-md-push-12 {
+    left: 100%;
+  }
+  .col-md-push-11 {
+    left: 91.66666667%;
+  }
+  .col-md-push-10 {
+    left: 83.33333333%;
+  }
+  .col-md-push-9 {
+    left: 75%;
+  }
+  .col-md-push-8 {
+    left: 66.66666667%;
+  }
+  .col-md-push-7 {
+    left: 58.33333333%;
+  }
+  .col-md-push-6 {
+    left: 50%;
+  }
+  .col-md-push-5 {
+    left: 41.66666667%;
+  }
+  .col-md-push-4 {
+    left: 33.33333333%;
+  }
+  .col-md-push-3 {
+    left: 25%;
+  }
+  .col-md-push-2 {
+    left: 16.66666667%;
+  }
+  .col-md-push-1 {
+    left: 8.33333333%;
+  }
+  .col-md-push-0 {
+    left: 0;
+  }
+  .col-md-offset-12 {
+    margin-left: 100%;
+  }
+  .col-md-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-md-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-md-offset-9 {
+    margin-left: 75%;
+  }
+  .col-md-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-md-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-md-offset-6 {
+    margin-left: 50%;
+  }
+  .col-md-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-md-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-md-offset-3 {
+    margin-left: 25%;
+  }
+  .col-md-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-md-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-md-offset-0 {
+    margin-left: 0;
+  }
+}
+@media (min-width: 1200px) {
+  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+    float: left;
+  }
+  .col-lg-12 {
+    width: 100%;
+  }
+  .col-lg-11 {
+    width: 91.66666667%;
+  }
+  .col-lg-10 {
+    width: 83.33333333%;
+  }
+  .col-lg-9 {
+    width: 75%;
+  }
+  .col-lg-8 {
+    width: 66.66666667%;
+  }
+  .col-lg-7 {
+    width: 58.33333333%;
+  }
+  .col-lg-6 {
+    width: 50%;
+  }
+  .col-lg-5 {
+    width: 41.66666667%;
+  }
+  .col-lg-4 {
+    width: 33.33333333%;
+  }
+  .col-lg-3 {
+    width: 25%;
+  }
+  .col-lg-2 {
+    width: 16.66666667%;
+  }
+  .col-lg-1 {
+    width: 8.33333333%;
+  }
+  .col-lg-pull-12 {
+    right: 100%;
+  }
+  .col-lg-pull-11 {
+    right: 91.66666667%;
+  }
+  .col-lg-pull-10 {
+    right: 83.33333333%;
+  }
+  .col-lg-pull-9 {
+    right: 75%;
+  }
+  .col-lg-pull-8 {
+    right: 66.66666667%;
+  }
+  .col-lg-pull-7 {
+    right: 58.33333333%;
+  }
+  .col-lg-pull-6 {
+    right: 50%;
+  }
+  .col-lg-pull-5 {
+    right: 41.66666667%;
+  }
+  .col-lg-pull-4 {
+    right: 33.33333333%;
+  }
+  .col-lg-pull-3 {
+    right: 25%;
+  }
+  .col-lg-pull-2 {
+    right: 16.66666667%;
+  }
+  .col-lg-pull-1 {
+    right: 8.33333333%;
+  }
+  .col-lg-pull-0 {
+    right: 0;
+  }
+  .col-lg-push-12 {
+    left: 100%;
+  }
+  .col-lg-push-11 {
+    left: 91.66666667%;
+  }
+  .col-lg-push-10 {
+    left: 83.33333333%;
+  }
+  .col-lg-push-9 {
+    left: 75%;
+  }
+  .col-lg-push-8 {
+    left: 66.66666667%;
+  }
+  .col-lg-push-7 {
+    left: 58.33333333%;
+  }
+  .col-lg-push-6 {
+    left: 50%;
+  }
+  .col-lg-push-5 {
+    left: 41.66666667%;
+  }
+  .col-lg-push-4 {
+    left: 33.33333333%;
+  }
+  .col-lg-push-3 {
+    left: 25%;
+  }
+  .col-lg-push-2 {
+    left: 16.66666667%;
+  }
+  .col-lg-push-1 {
+    left: 8.33333333%;
+  }
+  .col-lg-push-0 {
+    left: 0;
+  }
+  .col-lg-offset-12 {
+    margin-left: 100%;
+  }
+  .col-lg-offset-11 {
+    margin-left: 91.66666667%;
+  }
+  .col-lg-offset-10 {
+    margin-left: 83.33333333%;
+  }
+  .col-lg-offset-9 {
+    margin-left: 75%;
+  }
+  .col-lg-offset-8 {
+    margin-left: 66.66666667%;
+  }
+  .col-lg-offset-7 {
+    margin-left: 58.33333333%;
+  }
+  .col-lg-offset-6 {
+    margin-left: 50%;
+  }
+  .col-lg-offset-5 {
+    margin-left: 41.66666667%;
+  }
+  .col-lg-offset-4 {
+    margin-left: 33.33333333%;
+  }
+  .col-lg-offset-3 {
+    margin-left: 25%;
+  }
+  .col-lg-offset-2 {
+    margin-left: 16.66666667%;
+  }
+  .col-lg-offset-1 {
+    margin-left: 8.33333333%;
+  }
+  .col-lg-offset-0 {
+    margin-left: 0;
+  }
+}
+table {
+  max-width: 100%;
+  background-color: transparent;
+}
+th {
+  text-align: left;
+}
+.table {
+  width: 100%;
+  margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857143;
+  vertical-align: top;
+  border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+  vertical-align: bottom;
+  border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+  border-top: 0;
+}
+.table > tbody + tbody {
+  border-top: 2px solid #ddd;
+}
+.table .table {
+  background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+  padding: 5px;
+}
+.table-bordered {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+  border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+  border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-child(odd) > td,
+.table-striped > tbody > tr:nth-child(odd) > th {
+  background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+  background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+  position: static;
+  display: table-column;
+  float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+  position: static;
+  display: table-cell;
+  float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+  background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+  background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+  background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+  background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+  background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc;
+}
+@media (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-x: scroll;
+    overflow-y: hidden;
+    -webkit-overflow-scrolling: touch;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd;
+  }
+  .table-responsive > .table {
+    margin-bottom: 0;
+  }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tfoot > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > td {
+    white-space: nowrap;
+  }
+  .table-responsive > .table-bordered {
+    border: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+  .table-responsive > .table-bordered > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+    border-left: 0;
+  }
+  .table-responsive > .table-bordered > thead > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+  .table-responsive > .table-bordered > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+    border-right: 0;
+  }
+  .table-responsive > .table-bordered > tbody > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0;
+  }
+}
+fieldset {
+  min-width: 0;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5;
+}
+label {
+  display: inline-block;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+input[type="search"] {
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9;
+  /* IE8-9 */
+  line-height: normal;
+}
+input[type="file"] {
+  display: block;
+}
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+select[multiple],
+select[size] {
+  height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+}
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857143;
+  color: #555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+  color: #999;
+}
+.form-control::-webkit-input-placeholder {
+  color: #999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  cursor: not-allowed;
+  background-color: #eee;
+  opacity: 1;
+}
+textarea.form-control {
+  height: auto;
+}
+input[type="search"] {
+  -webkit-appearance: none;
+}
+input[type="date"] {
+  line-height: 34px;
+}
+.form-group {
+  margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+  display: block;
+  min-height: 20px;
+  padding-left: 20px;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+  display: inline;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  float: left;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  vertical-align: middle;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+.radio[disabled],
+.radio-inline[disabled],
+.checkbox[disabled],
+.checkbox-inline[disabled],
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"],
+fieldset[disabled] .radio,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox,
+fieldset[disabled] .checkbox-inline {
+  cursor: not-allowed;
+}
+.input-sm {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-sm {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+  height: auto;
+}
+.input-lg {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.input-lg {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+  height: auto;
+}
+.has-feedback {
+  position: relative;
+}
+.has-feedback .form-control {
+  padding-right: 42.5px;
+}
+.has-feedback .form-control-feedback {
+  position: absolute;
+  top: 25px;
+  right: 0;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline {
+  color: #3c763d;
+}
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+  color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline {
+  color: #8a6d3b;
+}
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+  color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline {
+  color: #a94442;
+}
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #a94442;
+}
+.has-error .form-control-feedback {
+  color: #a94442;
+}
+.form-control-static {
+  margin-bottom: 0;
+}
+.help-block {
+  display: block;
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: #737373;
+}
+@media (min-width: 768px) {
+  .form-inline .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .form-inline .input-group > .form-control {
+    width: 100%;
+  }
+  .form-inline .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio,
+  .form-inline .checkbox {
+    display: inline-block;
+    padding-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+.form-horizontal .control-label,
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+  padding-top: 7px;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+  min-height: 27px;
+}
+.form-horizontal .form-group {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+.form-horizontal .form-control-static {
+  padding-top: 7px;
+}
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    text-align: right;
+  }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+  top: 0;
+  right: 15px;
+}
+.btn {
+  display: inline-block;
+  padding: 6px 12px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.42857143;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus {
+  color: #333;
+  text-decoration: none;
+}
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  pointer-events: none;
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  opacity: .65;
+}
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  color: #333;
+  background-color: #ebebeb;
+  border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  background-color: #fff;
+  border-color: #ccc;
+}
+.btn-default .badge {
+  color: #fff;
+  background-color: #333;
+}
+.btn-primary {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  color: #fff;
+  background-color: #3276b1;
+  border-color: #285e8e;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  background-color: #428bca;
+  border-color: #357ebd;
+}
+.btn-primary .badge {
+  color: #428bca;
+  background-color: #fff;
+}
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  color: #fff;
+  background-color: #47a447;
+  border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  background-color: #5cb85c;
+  border-color: #4cae4c;
+}
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  color: #fff;
+  background-color: #39b3d7;
+  border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  background-color: #5bc0de;
+  border-color: #46b8da;
+}
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  color: #fff;
+  background-color: #ed9c28;
+  border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  background-color: #f0ad4e;
+  border-color: #eea236;
+}
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+.btn-danger {
+  color: #fff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  color: #fff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+.btn-link {
+  font-weight: normal;
+  color: #428bca;
+  cursor: pointer;
+  border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+  border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+  color: #2a6496;
+  text-decoration: underline;
+  background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+  color: #999;
+  text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-right: 0;
+  padding-left: 0;
+}
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+  width: 100%;
+}
+.fade {
+  opacity: 0;
+  -webkit-transition: opacity .15s linear;
+          transition: opacity .15s linear;
+}
+.fade.in {
+  opacity: 1;
+}
+.collapse {
+  display: none;
+}
+.collapse.in {
+  display: block;
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition: height .35s ease;
+          transition: height .35s ease;
+}
+@font-face {
+  font-family: 'Glyphicons Halflings';
+
+  src: url('../fonts/glyphicons-halflings-regular.eot');
+  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+  content: "\2a";
+}
+.glyphicon-plus:before {
+  content: "\2b";
+}
+.glyphicon-euro:before {
+  content: "\20ac";
+}
+.glyphicon-minus:before {
+  content: "\2212";
+}
+.glyphicon-cloud:before {
+  content: "\2601";
+}
+.glyphicon-envelope:before {
+  content: "\2709";
+}
+.glyphicon-pencil:before {
+  content: "\270f";
+}
+.glyphicon-glass:before {
+  content: "\e001";
+}
+.glyphicon-music:before {
+  content: "\e002";
+}
+.glyphicon-search:before {
+  content: "\e003";
+}
+.glyphicon-heart:before {
+  content: "\e005";
+}
+.glyphicon-star:before {
+  content: "\e006";
+}
+.glyphicon-star-empty:before {
+  content: "\e007";
+}
+.glyphicon-user:before {
+  content: "\e008";
+}
+.glyphicon-film:before {
+  content: "\e009";
+}
+.glyphicon-th-large:before {
+  content: "\e010";
+}
+.glyphicon-th:before {
+  content: "\e011";
+}
+.glyphicon-th-list:before {
+  content: "\e012";
+}
+.glyphicon-ok:before {
+  content: "\e013";
+}
+.glyphicon-remove:before {
+  content: "\e014";
+}
+.glyphicon-zoom-in:before {
+  content: "\e015";
+}
+.glyphicon-zoom-out:before {
+  content: "\e016";
+}
+.glyphicon-off:before {
+  content: "\e017";
+}
+.glyphicon-signal:before {
+  content: "\e018";
+}
+.glyphicon-cog:before {
+  content: "\e019";
+}
+.glyphicon-trash:before {
+  content: "\e020";
+}
+.glyphicon-home:before {
+  content: "\e021";
+}
+.glyphicon-file:before {
+  content: "\e022";
+}
+.glyphicon-time:before {
+  content: "\e023";
+}
+.glyphicon-road:before {
+  content: "\e024";
+}
+.glyphicon-download-alt:before {
+  content: "\e025";
+}
+.glyphicon-download:before {
+  content: "\e026";
+}
+.glyphicon-upload:before {
+  content: "\e027";
+}
+.glyphicon-inbox:before {
+  content: "\e028";
+}
+.glyphicon-play-circle:before {
+  content: "\e029";
+}
+.glyphicon-repeat:before {
+  content: "\e030";
+}
+.glyphicon-refresh:before {
+  content: "\e031";
+}
+.glyphicon-list-alt:before {
+  content: "\e032";
+}
+.glyphicon-lock:before {
+  content: "\e033";
+}
+.glyphicon-flag:before {
+  content: "\e034";
+}
+.glyphicon-headphones:before {
+  content: "\e035";
+}
+.glyphicon-volume-off:before {
+  content: "\e036";
+}
+.glyphicon-volume-down:before {
+  content: "\e037";
+}
+.glyphicon-volume-up:before {
+  content: "\e038";
+}
+.glyphicon-qrcode:before {
+  content: "\e039";
+}
+.glyphicon-barcode:before {
+  content: "\e040";
+}
+.glyphicon-tag:before {
+  content: "\e041";
+}
+.glyphicon-tags:before {
+  content: "\e042";
+}
+.glyphicon-book:before {
+  content: "\e043";
+}
+.glyphicon-bookmark:before {
+  content: "\e044";
+}
+.glyphicon-print:before {
+  content: "\e045";
+}
+.glyphicon-camera:before {
+  content: "\e046";
+}
+.glyphicon-font:before {
+  content: "\e047";
+}
+.glyphicon-bold:before {
+  content: "\e048";
+}
+.glyphicon-italic:before {
+  content: "\e049";
+}
+.glyphicon-text-height:before {
+  content: "\e050";
+}
+.glyphicon-text-width:before {
+  content: "\e051";
+}
+.glyphicon-align-left:before {
+  content: "\e052";
+}
+.glyphicon-align-center:before {
+  content: "\e053";
+}
+.glyphicon-align-right:before {
+  content: "\e054";
+}
+.glyphicon-align-justify:before {
+  content: "\e055";
+}
+.glyphicon-list:before {
+  content: "\e056";
+}
+.glyphicon-indent-left:before {
+  content: "\e057";
+}
+.glyphicon-indent-right:before {
+  content: "\e058";
+}
+.glyphicon-facetime-video:before {
+  content: "\e059";
+}
+.glyphicon-picture:before {
+  content: "\e060";
+}
+.glyphicon-map-marker:before {
+  content: "\e062";
+}
+.glyphicon-adjust:before {
+  content: "\e063";
+}
+.glyphicon-tint:before {
+  content: "\e064";
+}
+.glyphicon-edit:before {
+  content: "\e065";
+}
+.glyphicon-share:before {
+  content: "\e066";
+}
+.glyphicon-check:before {
+  content: "\e067";
+}
+.glyphicon-move:before {
+  content: "\e068";
+}
+.glyphicon-step-backward:before {
+  content: "\e069";
+}
+.glyphicon-fast-backward:before {
+  content: "\e070";
+}
+.glyphicon-backward:before {
+  content: "\e071";
+}
+.glyphicon-play:before {
+  content: "\e072";
+}
+.glyphicon-pause:before {
+  content: "\e073";
+}
+.glyphicon-stop:before {
+  content: "\e074";
+}
+.glyphicon-forward:before {
+  content: "\e075";
+}
+.glyphicon-fast-forward:before {
+  content: "\e076";
+}
+.glyphicon-step-forward:before {
+  content: "\e077";
+}
+.glyphicon-eject:before {
+  content: "\e078";
+}
+.glyphicon-chevron-left:before {
+  content: "\e079";
+}
+.glyphicon-chevron-right:before {
+  content: "\e080";
+}
+.glyphicon-plus-sign:before {
+  content: "\e081";
+}
+.glyphicon-minus-sign:before {
+  content: "\e082";
+}
+.glyphicon-remove-sign:before {
+  content: "\e083";
+}
+.glyphicon-ok-sign:before {
+  content: "\e084";
+}
+.glyphicon-question-sign:before {
+  content: "\e085";
+}
+.glyphicon-info-sign:before {
+  content: "\e086";
+}
+.glyphicon-screenshot:before {
+  content: "\e087";
+}
+.glyphicon-remove-circle:before {
+  content: "\e088";
+}
+.glyphicon-ok-circle:before {
+  content: "\e089";
+}
+.glyphicon-ban-circle:before {
+  content: "\e090";
+}
+.glyphicon-arrow-left:before {
+  content: "\e091";
+}
+.glyphicon-arrow-right:before {
+  content: "\e092";
+}
+.glyphicon-arrow-up:before {
+  content: "\e093";
+}
+.glyphicon-arrow-down:before {
+  content: "\e094";
+}
+.glyphicon-share-alt:before {
+  content: "\e095";
+}
+.glyphicon-resize-full:before {
+  content: "\e096";
+}
+.glyphicon-resize-small:before {
+  content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+  content: "\e101";
+}
+.glyphicon-gift:before {
+  content: "\e102";
+}
+.glyphicon-leaf:before {
+  content: "\e103";
+}
+.glyphicon-fire:before {
+  content: "\e104";
+}
+.glyphicon-eye-open:before {
+  content: "\e105";
+}
+.glyphicon-eye-close:before {
+  content: "\e106";
+}
+.glyphicon-warning-sign:before {
+  content: "\e107";
+}
+.glyphicon-plane:before {
+  content: "\e108";
+}
+.glyphicon-calendar:before {
+  content: "\e109";
+}
+.glyphicon-random:before {
+  content: "\e110";
+}
+.glyphicon-comment:before {
+  content: "\e111";
+}
+.glyphicon-magnet:before {
+  content: "\e112";
+}
+.glyphicon-chevron-up:before {
+  content: "\e113";
+}
+.glyphicon-chevron-down:before {
+  content: "\e114";
+}
+.glyphicon-retweet:before {
+  content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+  content: "\e116";
+}
+.glyphicon-folder-close:before {
+  content: "\e117";
+}
+.glyphicon-folder-open:before {
+  content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+  content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+  content: "\e120";
+}
+.glyphicon-hdd:before {
+  content: "\e121";
+}
+.glyphicon-bullhorn:before {
+  content: "\e122";
+}
+.glyphicon-bell:before {
+  content: "\e123";
+}
+.glyphicon-certificate:before {
+  content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+  content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+  content: "\e126";
+}
+.glyphicon-hand-right:before {
+  content: "\e127";
+}
+.glyphicon-hand-left:before {
+  content: "\e128";
+}
+.glyphicon-hand-up:before {
+  content: "\e129";
+}
+.glyphicon-hand-down:before {
+  content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+  content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+  content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+  content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+  content: "\e134";
+}
+.glyphicon-globe:before {
+  content: "\e135";
+}
+.glyphicon-wrench:before {
+  content: "\e136";
+}
+.glyphicon-tasks:before {
+  content: "\e137";
+}
+.glyphicon-filter:before {
+  content: "\e138";
+}
+.glyphicon-briefcase:before {
+  content: "\e139";
+}
+.glyphicon-fullscreen:before {
+  content: "\e140";
+}
+.glyphicon-dashboard:before {
+  content: "\e141";
+}
+.glyphicon-paperclip:before {
+  content: "\e142";
+}
+.glyphicon-heart-empty:before {
+  content: "\e143";
+}
+.glyphicon-link:before {
+  content: "\e144";
+}
+.glyphicon-phone:before {
+  content: "\e145";
+}
+.glyphicon-pushpin:before {
+  content: "\e146";
+}
+.glyphicon-usd:before {
+  content: "\e148";
+}
+.glyphicon-gbp:before {
+  content: "\e149";
+}
+.glyphicon-sort:before {
+  content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+  content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+  content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+  content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+  content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+  content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+  content: "\e156";
+}
+.glyphicon-unchecked:before {
+  content: "\e157";
+}
+.glyphicon-expand:before {
+  content: "\e158";
+}
+.glyphicon-collapse-down:before {
+  content: "\e159";
+}
+.glyphicon-collapse-up:before {
+  content: "\e160";
+}
+.glyphicon-log-in:before {
+  content: "\e161";
+}
+.glyphicon-flash:before {
+  content: "\e162";
+}
+.glyphicon-log-out:before {
+  content: "\e163";
+}
+.glyphicon-new-window:before {
+  content: "\e164";
+}
+.glyphicon-record:before {
+  content: "\e165";
+}
+.glyphicon-save:before {
+  content: "\e166";
+}
+.glyphicon-open:before {
+  content: "\e167";
+}
+.glyphicon-saved:before {
+  content: "\e168";
+}
+.glyphicon-import:before {
+  content: "\e169";
+}
+.glyphicon-export:before {
+  content: "\e170";
+}
+.glyphicon-send:before {
+  content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+  content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+  content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+  content: "\e174";
+}
+.glyphicon-floppy-save:before {
+  content: "\e175";
+}
+.glyphicon-floppy-open:before {
+  content: "\e176";
+}
+.glyphicon-credit-card:before {
+  content: "\e177";
+}
+.glyphicon-transfer:before {
+  content: "\e178";
+}
+.glyphicon-cutlery:before {
+  content: "\e179";
+}
+.glyphicon-header:before {
+  content: "\e180";
+}
+.glyphicon-compressed:before {
+  content: "\e181";
+}
+.glyphicon-earphone:before {
+  content: "\e182";
+}
+.glyphicon-phone-alt:before {
+  content: "\e183";
+}
+.glyphicon-tower:before {
+  content: "\e184";
+}
+.glyphicon-stats:before {
+  content: "\e185";
+}
+.glyphicon-sd-video:before {
+  content: "\e186";
+}
+.glyphicon-hd-video:before {
+  content: "\e187";
+}
+.glyphicon-subtitles:before {
+  content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+  content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+  content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+  content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+  content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+  content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+  content: "\e194";
+}
+.glyphicon-registration-mark:before {
+  content: "\e195";
+}
+.glyphicon-cloud-download:before {
+  content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+  content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+  content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+  content: "\e200";
+}
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px solid;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent;
+}
+.dropdown {
+  position: relative;
+}
+.dropdown-toggle:focus {
+  outline: 0;
+}
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: 1000;
+  display: none;
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0;
+  font-size: 14px;
+  list-style: none;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu .divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+  display: block;
+  padding: 3px 20px;
+  clear: both;
+  font-weight: normal;
+  line-height: 1.42857143;
+  color: #333;
+  white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+  color: #262626;
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  color: #fff;
+  text-decoration: none;
+  background-color: #428bca;
+  outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  color: #999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+  background-image: none;
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+  display: block;
+}
+.open > a {
+  outline: 0;
+}
+.dropdown-menu-right {
+  right: 0;
+  left: auto;
+}
+.dropdown-menu-left {
+  right: auto;
+  left: 0;
+}
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: 12px;
+  line-height: 1.42857143;
+  color: #999;
+}
+.dropdown-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 990;
+}
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+  content: "";
+  border-top: 0;
+  border-bottom: 4px solid;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 1px;
+}
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+}
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+  position: relative;
+  float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+  z-index: 2;
+}
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus {
+  outline: none;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+  margin-left: -1px;
+}
+.btn-toolbar {
+  margin-left: -5px;
+}
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+  float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+  margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+.btn-group > .btn:first-child {
+  margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child > .btn:last-child,
+.btn-group > .btn-group:first-child > .dropdown-toggle {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+  padding-right: 8px;
+  padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+.btn .caret {
+  margin-left: 0;
+}
+.btn-lg .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+  border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+  display: block;
+  float: none;
+  width: 100%;
+  max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+  float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+  margin-top: -1px;
+  margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+  border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+  display: table-cell;
+  float: none;
+  width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+  width: 100%;
+}
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: none;
+}
+.input-group {
+  position: relative;
+  display: table;
+  border-collapse: separate;
+}
+.input-group[class*="col-"] {
+  float: none;
+  padding-right: 0;
+  padding-left: 0;
+}
+.input-group .form-control {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33;
+  border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+  height: 46px;
+  line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+  height: 30px;
+  line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+  height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+  border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle;
+}
+.input-group-addon {
+  padding: 6px 12px;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1;
+  color: #555;
+  text-align: center;
+  background-color: #eee;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+.input-group-addon.input-sm {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px;
+}
+.input-group-addon.input-lg {
+  padding: 10px 16px;
+  font-size: 18px;
+  border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+  margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+  border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+.input-group-btn {
+  position: relative;
+  font-size: 0;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+}
+.input-group-btn > .btn + .btn {
+  margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+  z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+  margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+  margin-left: -1px;
+}
+.nav {
+  padding-left: 0;
+  margin-bottom: 0;
+  list-style: none;
+}
+.nav > li {
+  position: relative;
+  display: block;
+}
+.nav > li > a {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.nav > li.disabled > a {
+  color: #999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+  color: #999;
+  text-decoration: none;
+  cursor: not-allowed;
+  background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+  background-color: #eee;
+  border-color: #428bca;
+}
+.nav .nav-divider {
+  height: 1px;
+  margin: 9px 0;
+  overflow: hidden;
+  background-color: #e5e5e5;
+}
+.nav > li > a > img {
+  max-width: none;
+}
+.nav-tabs {
+  border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+  float: left;
+  margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+  margin-right: 2px;
+  line-height: 1.42857143;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+  border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+  color: #555;
+  cursor: default;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+  width: 100%;
+  border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+  float: none;
+}
+.nav-tabs.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs.nav-justified > .active > a,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.nav-pills > li {
+  float: left;
+}
+.nav-pills > li > a {
+  border-radius: 4px;
+}
+.nav-pills > li + li {
+  margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+  color: #fff;
+  background-color: #428bca;
+}
+.nav-stacked > li {
+  float: none;
+}
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0;
+}
+.nav-justified {
+  width: 100%;
+}
+.nav-justified > li {
+  float: none;
+}
+.nav-justified > li > a {
+  margin-bottom: 5px;
+  text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+  top: auto;
+  left: auto;
+}
+@media (min-width: 768px) {
+  .nav-justified > li {
+    display: table-cell;
+    width: 1%;
+  }
+  .nav-justified > li > a {
+    margin-bottom: 0;
+  }
+}
+.nav-tabs-justified {
+  border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+  border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0;
+  }
+  .nav-tabs-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus {
+    border-bottom-color: #fff;
+  }
+}
+.tab-content > .tab-pane {
+  display: none;
+}
+.tab-content > .active {
+  display: block;
+}
+.nav-tabs .dropdown-menu {
+  margin-top: -1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar {
+  position: relative;
+  min-height: 50px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left;
+  }
+}
+.navbar-collapse {
+  max-height: 340px;
+  padding-right: 15px;
+  padding-left: 15px;
+  overflow-x: visible;
+  -webkit-overflow-scrolling: touch;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+  overflow-y: auto;
+}
+@media (min-width: 768px) {
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px;
+}
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+}
+.navbar-static-top {
+  z-index: 1000;
+  border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+  .navbar-static-top {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  z-index: 1030;
+}
+@media (min-width: 768px) {
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  top: 0;
+  border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0;
+  border-width: 1px 0 0;
+}
+.navbar-brand {
+  float: left;
+  height: 50px;
+  padding: 15px 15px;
+  font-size: 18px;
+  line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+  text-decoration: none;
+}
+@media (min-width: 768px) {
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+}
+.navbar-toggle {
+  position: relative;
+  float: right;
+  padding: 9px 10px;
+  margin-top: 8px;
+  margin-right: 15px;
+  margin-bottom: 8px;
+  background-color: transparent;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.navbar-toggle:focus {
+  outline: none;
+}
+.navbar-toggle .icon-bar {
+  display: block;
+  width: 22px;
+  height: 2px;
+  border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+  margin-top: 4px;
+}
+@media (min-width: 768px) {
+  .navbar-toggle {
+    display: none;
+  }
+}
+.navbar-nav {
+  margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+  padding-top: 10px;
+  padding-bottom: 10px;
+  line-height: 20px;
+}
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: static;
+    float: none;
+    width: auto;
+    margin-top: 0;
+    background-color: transparent;
+    border: 0;
+    box-shadow: none;
+  }
+  .navbar-nav .open .dropdown-menu > li > a,
+  .navbar-nav .open .dropdown-menu .dropdown-header {
+    padding: 5px 15px 5px 25px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a {
+    line-height: 20px;
+  }
+  .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-nav .open .dropdown-menu > li > a:focus {
+    background-image: none;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+  .navbar-nav.navbar-right:last-child {
+    margin-right: -15px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+  }
+}
+.navbar-form {
+  padding: 10px 15px;
+  margin-top: 8px;
+  margin-right: -15px;
+  margin-bottom: 8px;
+  margin-left: -15px;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    padding-left: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    float: none;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+}
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px;
+  }
+}
+@media (min-width: 768px) {
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+            box-shadow: none;
+  }
+  .navbar-form.navbar-right:last-child {
+    margin-right: -15px;
+  }
+}
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+  margin-top: 14px;
+  margin-bottom: 14px;
+}
+.navbar-text {
+  margin-top: 15px;
+  margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+  .navbar-text.navbar-right:last-child {
+    margin-right: 0;
+  }
+}
+.navbar-default {
+  background-color: #f8f8f8;
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+  color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+  color: #5e5e5e;
+  background-color: transparent;
+}
+.navbar-default .navbar-text {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+  color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+  color: #333;
+  background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+  color: #ccc;
+  background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+  border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+  background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+  background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+  border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+  color: #555;
+  background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+    color: #777;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #333;
+    background-color: transparent;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #555;
+    background-color: #e7e7e7;
+  }
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #ccc;
+    background-color: transparent;
+  }
+}
+.navbar-default .navbar-link {
+  color: #777;
+}
+.navbar-default .navbar-link:hover {
+  color: #333;
+}
+.navbar-inverse {
+  background-color: #222;
+  border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+  color: #999;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+  color: #999;
+}
+.navbar-inverse .navbar-nav > li > a {
+  color: #999;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+  color: #fff;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+  color: #444;
+  background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+  border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+  background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+  background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+  border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+  color: #fff;
+  background-color: #080808;
+}
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #999;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+    color: #fff;
+    background-color: transparent;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+    color: #fff;
+    background-color: #080808;
+  }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+    color: #444;
+    background-color: transparent;
+  }
+}
+.navbar-inverse .navbar-link {
+  color: #999;
+}
+.navbar-inverse .navbar-link:hover {
+  color: #fff;
+}
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: 20px;
+  list-style: none;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+}
+.breadcrumb > li {
+  display: inline-block;
+}
+.breadcrumb > li + li:before {
+  padding: 0 5px;
+  color: #ccc;
+  content: "/\00a0";
+}
+.breadcrumb > .active {
+  color: #999;
+}
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: 20px 0;
+  border-radius: 4px;
+}
+.pagination > li {
+  display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+  position: relative;
+  float: left;
+  padding: 6px 12px;
+  margin-left: -1px;
+  line-height: 1.42857143;
+  color: #428bca;
+  text-decoration: none;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+  margin-left: 0;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+  color: #2a6496;
+  background-color: #eee;
+  border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+  z-index: 2;
+  color: #fff;
+  cursor: default;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+  color: #999;
+  cursor: not-allowed;
+  background-color: #fff;
+  border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+  padding: 5px 10px;
+  font-size: 12px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+  border-top-right-radius: 3px;
+  border-bottom-right-radius: 3px;
+}
+.pager {
+  padding-left: 0;
+  margin: 20px 0;
+  text-align: center;
+  list-style: none;
+}
+.pager li {
+  display: inline;
+}
+.pager li > a,
+.pager li > span {
+  display: inline-block;
+  padding: 5px 14px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+  text-decoration: none;
+  background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+  float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+  float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+  color: #999;
+  cursor: not-allowed;
+  background-color: #fff;
+}
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+}
+.label[href]:hover,
+.label[href]:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+.label:empty {
+  display: none;
+}
+.btn .label {
+  position: relative;
+  top: -1px;
+}
+.label-default {
+  background-color: #999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+  background-color: #808080;
+}
+.label-primary {
+  background-color: #428bca;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+  background-color: #3071a9;
+}
+.label-success {
+  background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+  background-color: #449d44;
+}
+.label-info {
+  background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+  background-color: #31b0d5;
+}
+.label-warning {
+  background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+  background-color: #ec971f;
+}
+.label-danger {
+  background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+  background-color: #c9302c;
+}
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: 12px;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  background-color: #999;
+  border-radius: 10px;
+}
+.badge:empty {
+  display: none;
+}
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+.btn-xs .badge {
+  top: 0;
+  padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer;
+}
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #428bca;
+  background-color: #fff;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
+.jumbotron {
+  padding: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit;
+}
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200;
+}
+.container .jumbotron {
+  border-radius: 6px;
+}
+.jumbotron .container {
+  max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px;
+  }
+  .container .jumbotron {
+    padding-right: 60px;
+    padding-left: 60px;
+  }
+  .jumbotron h1,
+  .jumbotron .h1 {
+    font-size: 63px;
+  }
+}
+.thumbnail {
+  display: block;
+  padding: 4px;
+  margin-bottom: 20px;
+  line-height: 1.42857143;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all .2s ease-in-out;
+          transition: all .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+  margin-right: auto;
+  margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #428bca;
+}
+.thumbnail .caption {
+  padding: 9px;
+  color: #333;
+}
+.alert {
+  padding: 15px;
+  margin-bottom: 20px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+}
+.alert h4 {
+  margin-top: 0;
+  color: inherit;
+}
+.alert .alert-link {
+  font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+  margin-bottom: 0;
+}
+.alert > p + p {
+  margin-top: 5px;
+}
+.alert-dismissable {
+  padding-right: 35px;
+}
+.alert-dismissable .close {
+  position: relative;
+  top: -2px;
+  right: -21px;
+  color: inherit;
+}
+.alert-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.alert-success hr {
+  border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+  color: #2b542c;
+}
+.alert-info {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.alert-info hr {
+  border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+  color: #245269;
+}
+.alert-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.alert-warning hr {
+  border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+  color: #66512c;
+}
+.alert-danger {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.alert-danger hr {
+  border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+  color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+@keyframes progress-bar-stripes {
+  from {
+    background-position: 40px 0;
+  }
+  to {
+    background-position: 0 0;
+  }
+}
+.progress {
+  height: 20px;
+  margin-bottom: 20px;
+  overflow: hidden;
+  background-color: #f5f5f5;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+  float: left;
+  width: 0;
+  height: 100%;
+  font-size: 12px;
+  line-height: 20px;
+  color: #fff;
+  text-align: center;
+  background-color: #428bca;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+  -webkit-transition: width .6s ease;
+          transition: width .6s ease;
+}
+.progress-striped .progress-bar {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-size: 40px 40px;
+}
+.progress.active .progress-bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+  background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+  background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+  background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+  background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+.media,
+.media .media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+.media-object {
+  display: block;
+}
+.media-heading {
+  margin: 0 0 5px;
+}
+.media > .pull-left {
+  margin-right: 10px;
+}
+.media > .pull-right {
+  margin-left: 10px;
+}
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
+.list-group {
+  padding-left: 0;
+  margin-bottom: 20px;
+}
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  margin-bottom: -1px;
+  background-color: #fff;
+  border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+  border-top-left-radius: 4px;
+  border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+  margin-bottom: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.list-group-item > .badge {
+  float: right;
+}
+.list-group-item > .badge + .badge {
+  margin-right: 5px;
+}
+a.list-group-item {
+  color: #555;
+}
+a.list-group-item .list-group-item-heading {
+  color: #333;
+}
+a.list-group-item:hover,
+a.list-group-item:focus {
+  text-decoration: none;
+  background-color: #f5f5f5;
+}
+a.list-group-item.active,
+a.list-group-item.active:hover,
+a.list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+a.list-group-item.active .list-group-item-heading,
+a.list-group-item.active:hover .list-group-item-heading,
+a.list-group-item.active:focus .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item.active .list-group-item-text,
+a.list-group-item.active:hover .list-group-item-text,
+a.list-group-item.active:focus .list-group-item-text {
+  color: #e1edf7;
+}
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8;
+}
+a.list-group-item-success {
+  color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-success:hover,
+a.list-group-item-success:focus {
+  color: #3c763d;
+  background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d;
+}
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7;
+}
+a.list-group-item-info {
+  color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-info:hover,
+a.list-group-item-info:focus {
+  color: #31708f;
+  background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f;
+}
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+}
+a.list-group-item-warning {
+  color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-warning:hover,
+a.list-group-item-warning:focus {
+  color: #8a6d3b;
+  background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus {
+  color: #fff;
+  background-color: #8a6d3b;
+  border-color: #8a6d3b;
+}
+.list-group-item-danger {
+  color: #a94442;
+  background-color: #f2dede;
+}
+a.list-group-item-danger {
+  color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading {
+  color: inherit;
+}
+a.list-group-item-danger:hover,
+a.list-group-item-danger:focus {
+  color: #a94442;
+  background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442;
+}
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
+.panel {
+  margin-bottom: 20px;
+  background-color: #fff;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+  padding: 15px;
+}
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+  color: inherit;
+}
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: 16px;
+  color: inherit;
+}
+.panel-title > a {
+  color: inherit;
+}
+.panel-footer {
+  padding: 10px 15px;
+  background-color: #f5f5f5;
+  border-top: 1px solid #ddd;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .list-group {
+  margin-bottom: 0;
+}
+.panel > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table {
+  margin-bottom: 0;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive {
+  border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+  border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+  border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+  border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0;
+}
+.panel > .table-responsive {
+  margin-bottom: 0;
+  border: 0;
+}
+.panel-group {
+  margin-bottom: 20px;
+}
+.panel-group .panel {
+  margin-bottom: 0;
+  overflow: hidden;
+  border-radius: 4px;
+}
+.panel-group .panel + .panel {
+  margin-top: 5px;
+}
+.panel-group .panel-heading {
+  border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+  border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+  border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+  border-bottom: 1px solid #ddd;
+}
+.panel-default {
+  border-color: #ddd;
+}
+.panel-default > .panel-heading {
+  color: #333;
+  background-color: #f5f5f5;
+  border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #ddd;
+}
+.panel-default > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #ddd;
+}
+.panel-primary {
+  border-color: #428bca;
+}
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #428bca;
+  border-color: #428bca;
+}
+.panel-primary > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #428bca;
+}
+.panel-primary > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #428bca;
+}
+.panel-success {
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+  color: #3c763d;
+  background-color: #dff0d8;
+  border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #d6e9c6;
+}
+.panel-success > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #d6e9c6;
+}
+.panel-info {
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+  color: #31708f;
+  background-color: #d9edf7;
+  border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #bce8f1;
+}
+.panel-info > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #bce8f1;
+}
+.panel-warning {
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+  color: #8a6d3b;
+  background-color: #fcf8e3;
+  border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #faebcc;
+}
+.panel-warning > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #faebcc;
+}
+.panel-danger {
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+  color: #a94442;
+  background-color: #f2dede;
+  border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse .panel-body {
+  border-top-color: #ebccd1;
+}
+.panel-danger > .panel-footer + .panel-collapse .panel-body {
+  border-bottom-color: #ebccd1;
+}
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: #f5f5f5;
+  border: 1px solid #e3e3e3;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+  padding: 24px;
+  border-radius: 6px;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: 3px;
+}
+.close {
+  float: right;
+  font-size: 21px;
+  font-weight: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  filter: alpha(opacity=20);
+  opacity: .2;
+}
+.close:hover,
+.close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+button.close {
+  -webkit-appearance: none;
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+}
+.modal-open {
+  overflow: hidden;
+}
+.modal {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1050;
+  display: none;
+  overflow: auto;
+  overflow-y: scroll;
+  -webkit-overflow-scrolling: touch;
+  outline: 0;
+}
+.modal.fade .modal-dialog {
+  -webkit-transition: -webkit-transform .3s ease-out;
+     -moz-transition:    -moz-transform .3s ease-out;
+       -o-transition:      -o-transform .3s ease-out;
+          transition:         transform .3s ease-out;
+  -webkit-transform: translate(0, -25%);
+      -ms-transform: translate(0, -25%);
+          transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+      -ms-transform: translate(0, 0);
+          transform: translate(0, 0);
+}
+.modal-dialog {
+  position: relative;
+  width: auto;
+  margin: 10px;
+}
+.modal-content {
+  position: relative;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #999;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  outline: none;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 1040;
+  background-color: #000;
+}
+.modal-backdrop.fade {
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.modal-backdrop.in {
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.modal-header {
+  min-height: 16.42857143px;
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+  margin-top: -2px;
+}
+.modal-title {
+  margin: 0;
+  line-height: 1.42857143;
+}
+.modal-body {
+  position: relative;
+  padding: 20px;
+}
+.modal-footer {
+  padding: 19px 20px 20px;
+  margin-top: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+  margin-bottom: 0;
+  margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+  margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+  margin-left: 0;
+}
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto;
+  }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+  }
+  .modal-sm {
+    width: 300px;
+  }
+}
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px;
+  }
+}
+.tooltip {
+  position: absolute;
+  z-index: 1030;
+  display: block;
+  font-size: 12px;
+  line-height: 1.4;
+  visibility: visible;
+  filter: alpha(opacity=0);
+  opacity: 0;
+}
+.tooltip.in {
+  filter: alpha(opacity=90);
+  opacity: .9;
+}
+.tooltip.top {
+  padding: 5px 0;
+  margin-top: -3px;
+}
+.tooltip.right {
+  padding: 0 5px;
+  margin-left: 3px;
+}
+.tooltip.bottom {
+  padding: 5px 0;
+  margin-top: 3px;
+}
+.tooltip.left {
+  padding: 0 5px;
+  margin-left: -3px;
+}
+.tooltip-inner {
+  max-width: 200px;
+  padding: 3px 8px;
+  color: #fff;
+  text-align: center;
+  text-decoration: none;
+  background-color: #000;
+  border-radius: 4px;
+}
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+  bottom: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+  right: 5px;
+  bottom: 0;
+  border-width: 5px 5px 0;
+  border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+  top: 50%;
+  left: 0;
+  margin-top: -5px;
+  border-width: 5px 5px 5px 0;
+  border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+  top: 50%;
+  right: 0;
+  margin-top: -5px;
+  border-width: 5px 0 5px 5px;
+  border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+  top: 0;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  right: 5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000;
+}
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1010;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  text-align: left;
+  white-space: normal;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, .2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+}
+.popover.top {
+  margin-top: -10px;
+}
+.popover.right {
+  margin-left: 10px;
+}
+.popover.bottom {
+  margin-top: 10px;
+}
+.popover.left {
+  margin-left: -10px;
+}
+.popover-title {
+  padding: 8px 14px;
+  margin: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: #f7f7f7;
+  border-bottom: 1px solid #ebebeb;
+  border-radius: 5px 5px 0 0;
+}
+.popover-content {
+  padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+  position: absolute;
+  display: block;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.popover > .arrow {
+  border-width: 11px;
+}
+.popover > .arrow:after {
+  content: "";
+  border-width: 10px;
+}
+.popover.top > .arrow {
+  bottom: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-color: #999;
+  border-top-color: rgba(0, 0, 0, .25);
+  border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+  bottom: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-color: #fff;
+  border-bottom-width: 0;
+}
+.popover.right > .arrow {
+  top: 50%;
+  left: -11px;
+  margin-top: -11px;
+  border-right-color: #999;
+  border-right-color: rgba(0, 0, 0, .25);
+  border-left-width: 0;
+}
+.popover.right > .arrow:after {
+  bottom: -10px;
+  left: 1px;
+  content: " ";
+  border-right-color: #fff;
+  border-left-width: 0;
+}
+.popover.bottom > .arrow {
+  top: -11px;
+  left: 50%;
+  margin-left: -11px;
+  border-top-width: 0;
+  border-bottom-color: #999;
+  border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+  top: 1px;
+  margin-left: -10px;
+  content: " ";
+  border-top-width: 0;
+  border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+  top: 50%;
+  right: -11px;
+  margin-top: -11px;
+  border-right-width: 0;
+  border-left-color: #999;
+  border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+  right: 1px;
+  bottom: -10px;
+  content: " ";
+  border-right-width: 0;
+  border-left-color: #fff;
+}
+.carousel {
+  position: relative;
+}
+.carousel-inner {
+  position: relative;
+  width: 100%;
+  overflow: hidden;
+}
+.carousel-inner > .item {
+  position: relative;
+  display: none;
+  -webkit-transition: .6s ease-in-out left;
+          transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  line-height: 1;
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  display: block;
+}
+.carousel-inner > .active {
+  left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+.carousel-inner > .next {
+  left: 100%;
+}
+.carousel-inner > .prev {
+  left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+  left: 0;
+}
+.carousel-inner > .active.left {
+  left: -100%;
+}
+.carousel-inner > .active.right {
+  left: 100%;
+}
+.carousel-control {
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  width: 15%;
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+  filter: alpha(opacity=50);
+  opacity: .5;
+}
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control.right {
+  right: 0;
+  left: auto;
+  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%));
+  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+  background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+  color: #fff;
+  text-decoration: none;
+  filter: alpha(opacity=90);
+  outline: none;
+  opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+  position: absolute;
+  top: 50%;
+  z-index: 5;
+  display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  margin-top: -10px;
+  margin-left: -10px;
+  font-family: serif;
+}
+.carousel-control .icon-prev:before {
+  content: '\2039';
+}
+.carousel-control .icon-next:before {
+  content: '\203a';
+}
+.carousel-indicators {
+  position: absolute;
+  bottom: 10px;
+  left: 50%;
+  z-index: 15;
+  width: 60%;
+  padding-left: 0;
+  margin-left: -30%;
+  text-align: center;
+  list-style: none;
+}
+.carousel-indicators li {
+  display: inline-block;
+  width: 10px;
+  height: 10px;
+  margin: 1px;
+  text-indent: -999px;
+  cursor: pointer;
+  background-color: #000 \9;
+  background-color: rgba(0, 0, 0, 0);
+  border: 1px solid #fff;
+  border-radius: 10px;
+}
+.carousel-indicators .active {
+  width: 12px;
+  height: 12px;
+  margin: 0;
+  background-color: #fff;
+}
+.carousel-caption {
+  position: absolute;
+  right: 15%;
+  bottom: 20px;
+  left: 15%;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+  text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    margin-left: -15px;
+    font-size: 30px;
+  }
+  .carousel-caption {
+    right: 20%;
+    left: 20%;
+    padding-bottom: 30px;
+  }
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
+.clearfix:before,
+.clearfix:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-footer:before,
+.modal-footer:after {
+  display: table;
+  content: " ";
+}
+.clearfix:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-footer:after {
+  clear: both;
+}
+.center-block {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  font: 0/0 a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+.hidden {
+  display: none !important;
+  visibility: hidden !important;
+}
+.affix {
+  position: fixed;
+}
+@-ms-viewport {
+  width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+  display: none !important;
+}
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important;
+  }
+  table.visible-xs {
+    display: table;
+  }
+  tr.visible-xs {
+    display: table-row !important;
+  }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important;
+  }
+  table.visible-sm {
+    display: table;
+  }
+  tr.visible-sm {
+    display: table-row !important;
+  }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important;
+  }
+  table.visible-md {
+    display: table;
+  }
+  tr.visible-md {
+    display: table-row !important;
+  }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important;
+  }
+}
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important;
+  }
+  table.visible-lg {
+    display: table;
+  }
+  tr.visible-lg {
+    display: table-row !important;
+  }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important;
+  }
+}
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important;
+  }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important;
+  }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important;
+  }
+}
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important;
+  }
+}
+.visible-print {
+  display: none !important;
+}
+@media print {
+  .visible-print {
+    display: block !important;
+  }
+  table.visible-print {
+    display: table;
+  }
+  tr.visible-print {
+    display: table-row !important;
+  }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important;
+  }
+}
+@media print {
+  .hidden-print {
+    display: none !important;
+  }
+}
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/index.css b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/index.css
new file mode 100644
index 0000000..aed15e4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/index.css
@@ -0,0 +1,130 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+.row-file {
+  height: 40px;
+}
+
+.column-icon {
+  width: 40px;
+  text-align: center;
+}
+
+.column-name {
+}
+
+.column-size {
+  width: 100px;
+  text-align: right;
+}
+
+.column-move {
+  width: 40px;
+  text-align: center;
+}
+
+.column-delete {
+  width: 40px;
+  text-align: center;
+}
+
+.column-path {  
+}
+
+.column-progress {
+  width: 200px;
+}
+
+.footer {
+  color: #999;
+  text-align: center;
+  font-size: 0.9em;
+}
+
+#reload {
+  float: right;
+}
+
+#create-input {
+  width: 50%;
+  height: 20px;
+}
+
+#move-input {
+  width: 80%;
+  height: 20px;
+}
+
+/* Bootstrap overrides */
+
+.btn:focus {
+  outline: none;  /* FIXME: Work around for Chrome only but still draws focus ring while button pressed */
+}
+
+.btn-toolbar {
+  margin-top: 30px;
+  margin-bottom: 20px;
+}
+
+.table .progress {
+  margin-top: 0px;
+  margin-bottom: 0px;
+  height: 16px;
+}
+
+.panel-default > .panel-heading {
+  color: #555;
+}
+
+.breadcrumb {
+  background-color: transparent;
+  border-radius: 0px;
+  margin-bottom: 0px;
+  padding: 0px;
+}
+
+.breadcrumb > .active {
+  color: #555;
+}
+
+.breadcrumb > li + li:before {
+  color: #999;
+}
+
+.table > tbody > tr > td {
+  vertical-align: middle;
+}
+
+.table > tbody > tr > td > p {
+  margin: 0px;
+}
+
+/* Initial state */
+
+.uploading {
+  display: none;
+}
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/jquery.fileupload.css b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/jquery.fileupload.css
new file mode 100644
index 0000000..fb6044d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/css/jquery.fileupload.css
@@ -0,0 +1,36 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload Plugin CSS 1.3.0
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2013, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileinput-button {
+  position: relative;
+  overflow: hidden;
+}
+.fileinput-button input {
+  position: absolute;
+  top: 0;
+  right: 0;
+  margin: 0;
+  opacity: 0;
+  -ms-filter: 'alpha(opacity=0)';
+  font-size: 200px;
+  direction: ltr;
+  cursor: pointer;
+}
+
+/* Fixes for IE < 8 */
+@media screen\9 {
+  .fileinput-button input {
+    filter: alpha(opacity=0);
+    font-size: 100%;
+    height: 100%;
+  }
+}
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/en.lproj/Localizable.strings b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/en.lproj/Localizable.strings
new file mode 100644
index 0000000..2f4b4a2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/en.lproj/Localizable.strings
@@ -0,0 +1,3 @@
+"PROLOGUE" = "<p>Drag &amp; drop files on this window or use the \"Upload Files&hellip;\" button to upload new files.</p>";
+"EPILOGUE" = "";
+"FOOTER_FORMAT" = "%@ %@";
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.eot b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..4a4ca86
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.svg b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..e3e2dc7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode="&#xd;" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
+<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
+<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
+<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
+<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
+<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
+<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
+<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
+<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
+<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
+<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
+<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
+<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
+<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
+<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
+<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
+<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
+<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
+<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
+<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
+<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
+<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
+<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
+<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
+<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
+<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
+<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
+<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
+<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
+<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
+<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
+<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
+<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
+<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
+<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
+<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
+<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
+<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
+<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
+<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
+<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
+<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
+<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
+<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
+<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
+<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
+<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
+<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
+<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
+<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
+<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
+<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
+<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
+<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
+<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
+<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
+<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
+<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
+<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
+<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
+<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
+<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
+<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
+<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
+<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
+<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
+<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
+<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
+<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
+<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
+<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
+<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
+<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
+<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
+<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
+<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
+<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
+<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
+<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
+<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
+<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
+<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
+<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
+<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
+<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
+<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
+<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
+<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
+<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
+<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
+<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
+<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
+<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
+<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
+<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
+<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
+<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
+<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
+<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
+<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
+<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
+<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
+<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
+<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
+<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
+<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
+<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
+<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
+<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
+<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
+<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
+<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
+<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
+<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
+<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
+<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
+<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
+<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
+<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
+<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
+<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
+<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
+<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
+<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
+<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
+<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
+<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
+<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
+<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
+<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
+<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
+<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
+<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
+<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
+<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
+<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
+<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
+<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
+<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
+<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
+<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
+<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
+<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
+<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
+<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
+<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
+<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
+<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
+<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
+<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
+<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
+<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
+<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
+<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
+<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
+<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
+<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
+<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
+<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
+<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.ttf b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..67fa00b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.woff b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..8c54182
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/index.html b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/index.html
new file mode 100644
index 0000000..28d371c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/index.html
@@ -0,0 +1,196 @@
+<!--
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>%title%</title>
+    <link rel="stylesheet" href="css/bootstrap.css">
+    <link rel="stylesheet" href="css/bootstrap-theme.css">
+    <link rel="stylesheet" href="css/jquery.fileupload.css">
+    <link rel="stylesheet" href="css/index.css">
+    <!--[if lt IE 9]>
+      <script type="text/javascript" src="js/html5shiv.min.js"></script>
+      <script type="text/javascript" src="js/respond.min.js"></script>
+    <![endif]-->
+    <script type="text/javascript" src="js/jquery.min.js"></script>
+    <script type="text/javascript" src="js/jquery.ui.widget.js"></script>
+    <script type="text/javascript" src="js/jquery.jeditable.js"></script>
+    <script type="text/javascript" src="js/jquery.fileupload.js"></script>
+    <script type="text/javascript" src="js/jquery.iframe-transport.js"></script>
+    <script type="text/javascript" src="js/bootstrap.min.js"></script>
+    <script type="text/javascript" src="js/tmpl.min.js"></script>
+    <script type="text/javascript">
+      var _device = "%device%";
+    </script>
+    <script type="text/javascript" src="js/index.js"></script>
+  </head>
+  <body>
+    
+    <div class="container">
+      
+      <div class="page-header">
+        <h1>%header%</h1>
+      </div>
+      
+      %prologue%
+      
+      <div id="alerts"></div>
+      
+      <div class="btn-toolbar">
+        <button type="button" class="btn btn-primary fileinput-button">
+          <span class="glyphicon glyphicon-upload"></span> Upload Files&hellip;
+          <input id="fileupload" type="file" name="files[]" multiple>
+        </button>
+        <button type="button" class="btn btn-success" id="create-folder">
+          <span class="glyphicon glyphicon-folder-close"></span> Create Folder&hellip;
+        </button>
+        <button type="button" class="btn btn-default" id="reload">
+          <span class="glyphicon glyphicon-refresh"></span> Refresh
+        </button>
+      </div>
+      
+      <div class="panel panel-default uploading">
+        <div class="panel-heading">File Uploads in Progress</div>
+        <table class="table table-striped"><tbody id="uploads"></tbody></table>
+      </div>
+      
+      <div class="panel panel-default">
+        <div class="panel-heading">
+          <ol class="breadcrumb" id="path"></ol>
+        </div>
+        <table class="table table-striped"><tbody id="listing"></tbody></table>
+      </div>
+      
+      %epilogue%
+      
+      <p class="footer">%footer%</p>
+      
+    </div>
+    
+    <div class="modal fade" id="create-modal" tabindex="-1">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal">&times;</button>
+            <h4 class="modal-title">Create Folder</h4>
+          </div>
+          <div class="modal-body">
+            <p>Please enter the name of the folder to be created:</p>
+            <form onsubmit="return false">
+              <input type="text" autocomplete="off" id="create-input">
+            </form>
+          </div>
+          <div class="modal-footer">
+            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+            <button type="button" class="btn btn-primary" id="create-confirm">Create Folder</button>
+          </div>
+        </div>
+      </div>
+    </div>
+    
+    <div class="modal fade" id="move-modal" tabindex="-1">
+      <div class="modal-dialog">
+        <div class="modal-content">
+          <div class="modal-header">
+            <button type="button" class="close" data-dismiss="modal">&times;</button>
+            <h4 class="modal-title">Move Item</h4>
+          </div>
+          <div class="modal-body">
+            <p>Please enter the new location for this item:</p>
+            <form onsubmit="return false">
+              <input type="text" autocomplete="off" id="move-input">
+            </form>
+          </div>
+          <div class="modal-footer">
+            <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
+            <button type="button" class="btn btn-primary" id="move-confirm">Move Item</button>
+          </div>
+        </div>
+      </div>
+    </div>
+    
+    <script type="text/x-tmpl" id="template-listing">
+      <tr class="row-file">
+        <td class="column-icon">
+          {% if (o.size != null) { %}
+            <button type="button" class="btn btn-default btn-xs button-download">
+              <span class="glyphicon glyphicon-download-alt"></span>
+            </button>
+          {% } else { %}
+            <button type="button" class="btn btn-default btn-xs button-open">
+              <span class="glyphicon glyphicon-folder-open"></span>
+            </button>
+          {% } %}
+        </td>
+        <td class="column-name"><p class="edit">{%=o.name%}</p></td>
+        <td class="column-size">
+          {% if (o.size != null) { %}
+            <p>{%=formatFileSize(o.size)%}</p>
+          {% } %}
+        </td>
+        <td class="column-move">
+          <button type="button" class="btn btn-default btn-xs button-move">
+            <span class="glyphicon glyphicon glyphicon-share-alt"></span>
+          </button>
+        </td>
+        <td class="column-delete">
+          <button type="button" class="btn btn-danger btn-xs button-delete">
+            <span class="glyphicon glyphicon-trash"></span>
+          </button>
+        </td>
+      </tr>
+    </script>
+    
+    <script type="text/x-tmpl" id="template-uploads">
+      <tr class="row-file">
+        <td class="column-icon">
+          <button type="button" class="btn btn-warning btn-xs button-cancel">
+            <span class="glyphicon glyphicon-ban-circle"></span>
+          </button>
+        </td>
+        <td class="column-path"><p>{%=o.path%}</p></td>
+        <td class="column-progress">
+          <div class="progress">
+            <div class="progress-bar" id="progress-bar"></div>
+          </div>
+        </ts>
+      </tr>
+    </script>
+    
+    <script type="text/x-tmpl" id="template-alert">
+      <div class="alert alert-{%=o.level%} alert-dismissable">
+        <button type="button" class="close" data-dismiss="alert">&times;</button>
+        <strong>{%=o.title%}</strong>{%=o.description%}
+      </div>
+    </script>
+    
+  </body>
+</html>
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/bootstrap.min.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/bootstrap.min.js
new file mode 100644
index 0000000..b04a0e8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown",h),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=" li:not(.divider):visible a",i=f.find("[role=menu]"+h+", [role=listbox]"+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu], [role=listbox]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e="function"==typeof this.options.placement?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n="body"==this.options.container?window.innerWidth:k.outerWidth(),o="body"==this.options.container?window.innerHeight:k.outerHeight(),p="body"==this.options.container?0:k.offset().left;e="bottom"==e&&h.top+h.height+j-m>o?"top":"top"==e&&h.top-m-j<0?"bottom":"right"==e&&h.right+i>n?"left":"left"==e&&h.left-i<p?"right":e,d.removeClass(l).addClass(e)}var q=this.getCalculatedOffset(e,h,i,j);this.applyPlacement(q,e),this.hoverState=null;var r=function(){c.$element.trigger("shown.bs."+c.type)};a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,r).emulateTransitionEnd(150):r()}},b.prototype.applyPlacement=function(b,c){var d,e=this.tip(),f=e[0].offsetWidth,g=e[0].offsetHeight,h=parseInt(e.css("margin-top"),10),i=parseInt(e.css("margin-left"),10);isNaN(h)&&(h=0),isNaN(i)&&(i=0),b.top=b.top+h,b.left=b.left+i,a.offset.setOffset(e[0],a.extend({using:function(a){e.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),e.addClass("in");var j=e[0].offsetWidth,k=e[0].offsetHeight;if("top"==c&&k!=g&&(d=!0,b.top=b.top+g-k),/bottom|top/.test(c)){var l=0;b.left<0&&(l=-2*b.left,b.left=0,e.offset(b),j=e[0].offsetWidth,k=e[0].offsetHeight),this.replaceArrow(l-f+j,j,"left")}else this.replaceArrow(k-g,k,"top");d&&e.offset(b)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/html5shiv.min.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/html5shiv.min.js
new file mode 100755
index 0000000..448cebd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/html5shiv.min.js
@@ -0,0 +1,8 @@
+/*
+ HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
+"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
+if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/index.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/index.js
new file mode 100644
index 0000000..5bd9218
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/index.js
@@ -0,0 +1,305 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+var ENTER_KEYCODE = 13;
+
+var _path = null;
+var _pendingReloads = [];
+var _reloadingDisabled = 0;
+
+function formatFileSize(bytes) {
+  if (bytes >= 1000000000) {
+    return (bytes / 1000000000).toFixed(2) + ' GB';
+  }
+  if (bytes >= 1000000) {
+    return (bytes / 1000000).toFixed(2) + ' MB';
+  }
+  return (bytes / 1000).toFixed(2) + ' KB';
+}
+
+function _showError(message, textStatus, errorThrown) {
+  $("#alerts").prepend(tmpl("template-alert", {
+    level: "danger",
+    title: (errorThrown != "" ? errorThrown : textStatus) + ": ",
+    description: message
+  }));
+}
+
+function _disableReloads() {
+  _reloadingDisabled += 1;
+}
+
+function _enableReloads() {
+  _reloadingDisabled -= 1;
+  
+  if (_pendingReloads.length > 0) {
+    _reload(_pendingReloads.shift());
+  }
+}
+
+function _reload(path) {
+  if (_reloadingDisabled) {
+    if ($.inArray(path, _pendingReloads) < 0) {
+      _pendingReloads.push(path);
+    }
+    return;
+  }
+  
+  _disableReloads();
+  $.ajax({
+    url: 'list',
+    type: 'GET',
+    data: {path: path},
+    dataType: 'json'
+  }).fail(function(jqXHR, textStatus, errorThrown) {
+    _showError("Failed retrieving contents of \"" + path + "\"", textStatus, errorThrown);
+  }).done(function(data, textStatus, jqXHR) {
+    var scrollPosition = $(document).scrollTop();
+    
+    if (path != _path) {
+      $("#path").empty();
+      if (path == "/") {
+        $("#path").append('<li class="active">' + _device + '</li>');
+      } else {
+        $("#path").append('<li data-path="/"><a>' + _device + '</a></li>');
+        var components = path.split("/").slice(1, -1);
+        for (var i = 0; i < components.length - 1; ++i) {
+          var subpath = "/" + components.slice(0, i + 1).join("/") + "/";
+          $("#path").append('<li data-path="' + subpath + '"><a>' + components[i] + '</a></li>');
+        }
+        $("#path > li").click(function(event) {
+          _reload($(this).data("path"));
+          event.preventDefault();
+        });
+        $("#path").append('<li class="active">' + components[components.length - 1] + '</li>');
+      }
+      _path = path;
+    }
+    
+    $("#listing").empty();
+    for (var i = 0, file; file = data[i]; ++i) {
+      $(tmpl("template-listing", file)).data(file).appendTo("#listing");
+    }
+    
+    $(".edit").editable(function(value, settings) { 
+      var name = $(this).parent().parent().data("name");
+      if (value != name) {
+        var path = $(this).parent().parent().data("path");
+        $.ajax({
+          url: 'move',
+          type: 'POST',
+          data: {oldPath: path, newPath: _path + value},
+          dataType: 'json'
+        }).fail(function(jqXHR, textStatus, errorThrown) {
+          _showError("Failed moving \"" + path + "\" to \"" + _path + value + "\"", textStatus, errorThrown);
+        }).always(function() {
+          _reload(_path);
+        });
+      }
+      return value;
+    }, {
+      onedit: function(settings, original) {
+        _disableReloads();
+      },
+      onsubmit: function(settings, original) {
+        _enableReloads();
+      },
+      onreset: function(settings, original) {
+        _enableReloads();
+      },
+      tooltip: 'Click to rename...'
+    });
+    
+    $(".button-download").click(function(event) {
+      var path = $(this).parent().parent().data("path");
+      setTimeout(function() {
+        window.location = "download?path=" + encodeURIComponent(path);
+      }, 0);
+    });
+    
+    $(".button-open").click(function(event) {
+      var path = $(this).parent().parent().data("path");
+      _reload(path);
+    });
+    
+    $(".button-move").click(function(event) {
+      var path = $(this).parent().parent().data("path");
+      if (path[path.length - 1] == "/") {
+        path = path.slice(0, path.length - 1);
+      }
+      $("#move-input").data("path", path);
+      $("#move-input").val(path);
+      $("#move-modal").modal("show");
+    });
+    
+    $(".button-delete").click(function(event) {
+      var path = $(this).parent().parent().data("path");
+      $.ajax({
+        url: 'delete',
+        type: 'POST',
+        data: {path: path},
+        dataType: 'json'
+      }).fail(function(jqXHR, textStatus, errorThrown) {
+        _showError("Failed deleting \"" + path + "\"", textStatus, errorThrown);
+      }).always(function() {
+        _reload(_path);
+      });
+    });
+    
+    $(document).scrollTop(scrollPosition);
+  }).always(function() {
+    _enableReloads();
+  });
+}
+
+$(document).ready(function() {
+  
+  $("#fileupload").fileupload({
+    dropZone: $(document),
+    pasteZone: null,
+    autoUpload: true,
+    sequentialUploads: true,
+    // limitConcurrentUploads: 2,
+    // forceIframeTransport: true,
+    
+    url: 'upload',
+    type: 'POST',
+    dataType: 'json',
+    
+    start: function(e) {
+      $(".uploading").show();
+    },
+    
+    stop: function(e) {
+      $(".uploading").hide();
+    },
+    
+    add: function(e, data) {
+      var file = data.files[0];
+      data.formData = {
+        path: _path
+      };
+      data.context = $(tmpl("template-uploads", {
+        path: _path + file.name
+      })).appendTo("#uploads");
+      var jqXHR = data.submit();
+      data.context.find("button").click(function(event) {
+        jqXHR.abort();
+      });
+    },
+    
+    progress: function(e, data) {
+      var progress = parseInt(data.loaded / data.total * 100, 10);
+      data.context.find(".progress-bar").css("width", progress + "%");
+    },
+    
+    done: function(e, data) {
+      _reload(_path);
+    },
+    
+    fail: function(e, data) {
+      var file = data.files[0];
+      if (data.errorThrown != "abort") {
+        _showError("Failed uploading \"" + file.name + "\" to \"" + _path + "\"", data.textStatus, data.errorThrown);
+      }
+    },
+    
+    always: function(e, data) {
+      data.context.remove();
+    },
+    
+  });
+  
+  $("#create-input").keypress(function(event) {
+    if (event.keyCode == ENTER_KEYCODE) {
+      $("#create-confirm").click();
+    };
+  });
+  
+  $("#create-modal").on("shown.bs.modal", function(event) {
+    $("#create-input").focus();
+    $("#create-input").select();
+  });
+  
+  $("#create-folder").click(function(event) {
+    $("#create-input").val("Untitled folder");
+    $("#create-modal").modal("show");
+  });
+  
+  $("#create-confirm").click(function(event) {
+    $("#create-modal").modal("hide");
+    var name = $("#create-input").val();
+    if (name != "") {
+      $.ajax({
+        url: 'create',
+        type: 'POST',
+        data: {path: _path + name},
+        dataType: 'json'
+      }).fail(function(jqXHR, textStatus, errorThrown) {
+        _showError("Failed creating folder \"" + name + "\" in \"" + _path + "\"", textStatus, errorThrown);
+      }).always(function() {
+        _reload(_path);
+      });
+    }
+  });
+  
+  $("#move-input").keypress(function(event) {
+    if (event.keyCode == ENTER_KEYCODE) {
+      $("#move-confirm").click();
+    };
+  });
+  
+  $("#move-modal").on("shown.bs.modal", function(event) {
+    $("#move-input").focus();
+    $("#move-input").select();
+  })
+  
+  $("#move-confirm").click(function(event) {
+    $("#move-modal").modal("hide");
+    var oldPath = $("#move-input").data("path");
+    var newPath = $("#move-input").val();
+    if ((newPath != "") && (newPath[0] == "/") && (newPath != oldPath)) {
+      $.ajax({
+        url: 'move',
+        type: 'POST',
+        data: {oldPath: oldPath, newPath: newPath},
+        dataType: 'json'
+      }).fail(function(jqXHR, textStatus, errorThrown) {
+        _showError("Failed moving \"" + oldPath + "\" to \"" + newPath + "\"", textStatus, errorThrown);
+      }).always(function() {
+        _reload(_path);
+      });
+    }
+  });
+  
+  $("#reload").click(function(event) {
+    _reload(_path);
+  });
+  
+  _reload("/");
+  
+});
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.fileupload.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.fileupload.js
new file mode 100644
index 0000000..0803592
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.fileupload.js
@@ -0,0 +1,1426 @@
+/*
+ * jQuery File Upload Plugin 5.40.1
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* jshint nomen:false */
+/* global define, window, document, location, Blob, FormData */
+
+(function (factory) {
+    'use strict';
+    if (typeof define === 'function' && define.amd) {
+        // Register as an anonymous AMD module:
+        define([
+            'jquery',
+            'jquery.ui.widget'
+        ], factory);
+    } else {
+        // Browser globals:
+        factory(window.jQuery);
+    }
+}(function ($) {
+    'use strict';
+
+    // Detect file input support, based on
+    // http://viljamis.com/blog/2012/file-upload-support-on-mobile/
+    $.support.fileInput = !(new RegExp(
+        // Handle devices which give false positives for the feature detection:
+        '(Android (1\\.[0156]|2\\.[01]))' +
+            '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' +
+            '|(w(eb)?OSBrowser)|(webOS)' +
+            '|(Kindle/(1\\.0|2\\.[05]|3\\.0))'
+    ).test(window.navigator.userAgent) ||
+        // Feature detection for all other devices:
+        $('<input type="file">').prop('disabled'));
+
+    // The FileReader API is not actually used, but works as feature detection,
+    // as some Safari versions (5?) support XHR file uploads via the FormData API,
+    // but not non-multipart XHR file uploads.
+    // window.XMLHttpRequestUpload is not available on IE10, so we check for
+    // window.ProgressEvent instead to detect XHR2 file upload capability:
+    $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);
+    $.support.xhrFormDataFileUpload = !!window.FormData;
+
+    // Detect support for Blob slicing (required for chunked uploads):
+    $.support.blobSlice = window.Blob && (Blob.prototype.slice ||
+        Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
+
+    // The fileupload widget listens for change events on file input fields defined
+    // via fileInput setting and paste or drop events of the given dropZone.
+    // In addition to the default jQuery Widget methods, the fileupload widget
+    // exposes the "add" and "send" methods, to add or directly send files using
+    // the fileupload API.
+    // By default, files added via file input selection, paste, drag & drop or
+    // "add" method are uploaded immediately, but it is possible to override
+    // the "add" callback option to queue file uploads.
+    $.widget('blueimp.fileupload', {
+
+        options: {
+            // The drop target element(s), by the default the complete document.
+            // Set to null to disable drag & drop support:
+            dropZone: $(document),
+            // The paste target element(s), by the default the complete document.
+            // Set to null to disable paste support:
+            pasteZone: $(document),
+            // The file input field(s), that are listened to for change events.
+            // If undefined, it is set to the file input fields inside
+            // of the widget element on plugin initialization.
+            // Set to null to disable the change listener.
+            fileInput: undefined,
+            // By default, the file input field is replaced with a clone after
+            // each input field change event. This is required for iframe transport
+            // queues and allows change events to be fired for the same file
+            // selection, but can be disabled by setting the following option to false:
+            replaceFileInput: true,
+            // The parameter name for the file form data (the request argument name).
+            // If undefined or empty, the name property of the file input field is
+            // used, or "files[]" if the file input name property is also empty,
+            // can be a string or an array of strings:
+            paramName: undefined,
+            // By default, each file of a selection is uploaded using an individual
+            // request for XHR type uploads. Set to false to upload file
+            // selections in one request each:
+            singleFileUploads: true,
+            // To limit the number of files uploaded with one XHR request,
+            // set the following option to an integer greater than 0:
+            limitMultiFileUploads: undefined,
+            // The following option limits the number of files uploaded with one
+            // XHR request to keep the request size under or equal to the defined
+            // limit in bytes:
+            limitMultiFileUploadSize: undefined,
+            // Multipart file uploads add a number of bytes to each uploaded file,
+            // therefore the following option adds an overhead for each file used
+            // in the limitMultiFileUploadSize configuration:
+            limitMultiFileUploadSizeOverhead: 512,
+            // Set the following option to true to issue all file upload requests
+            // in a sequential order:
+            sequentialUploads: false,
+            // To limit the number of concurrent uploads,
+            // set the following option to an integer greater than 0:
+            limitConcurrentUploads: undefined,
+            // Set the following option to true to force iframe transport uploads:
+            forceIframeTransport: false,
+            // Set the following option to the location of a redirect url on the
+            // origin server, for cross-domain iframe transport uploads:
+            redirect: undefined,
+            // The parameter name for the redirect url, sent as part of the form
+            // data and set to 'redirect' if this option is empty:
+            redirectParamName: undefined,
+            // Set the following option to the location of a postMessage window,
+            // to enable postMessage transport uploads:
+            postMessage: undefined,
+            // By default, XHR file uploads are sent as multipart/form-data.
+            // The iframe transport is always using multipart/form-data.
+            // Set to false to enable non-multipart XHR uploads:
+            multipart: true,
+            // To upload large files in smaller chunks, set the following option
+            // to a preferred maximum chunk size. If set to 0, null or undefined,
+            // or the browser does not support the required Blob API, files will
+            // be uploaded as a whole.
+            maxChunkSize: undefined,
+            // When a non-multipart upload or a chunked multipart upload has been
+            // aborted, this option can be used to resume the upload by setting
+            // it to the size of the already uploaded bytes. This option is most
+            // useful when modifying the options object inside of the "add" or
+            // "send" callbacks, as the options are cloned for each file upload.
+            uploadedBytes: undefined,
+            // By default, failed (abort or error) file uploads are removed from the
+            // global progress calculation. Set the following option to false to
+            // prevent recalculating the global progress data:
+            recalculateProgress: true,
+            // Interval in milliseconds to calculate and trigger progress events:
+            progressInterval: 100,
+            // Interval in milliseconds to calculate progress bitrate:
+            bitrateInterval: 500,
+            // By default, uploads are started automatically when adding files:
+            autoUpload: true,
+
+            // Error and info messages:
+            messages: {
+                uploadedBytes: 'Uploaded bytes exceed file size'
+            },
+
+            // Translation function, gets the message key to be translated
+            // and an object with context specific data as arguments:
+            i18n: function (message, context) {
+                message = this.messages[message] || message.toString();
+                if (context) {
+                    $.each(context, function (key, value) {
+                        message = message.replace('{' + key + '}', value);
+                    });
+                }
+                return message;
+            },
+
+            // Additional form data to be sent along with the file uploads can be set
+            // using this option, which accepts an array of objects with name and
+            // value properties, a function returning such an array, a FormData
+            // object (for XHR file uploads), or a simple object.
+            // The form of the first fileInput is given as parameter to the function:
+            formData: function (form) {
+                return form.serializeArray();
+            },
+
+            // The add callback is invoked as soon as files are added to the fileupload
+            // widget (via file input selection, drag & drop, paste or add API call).
+            // If the singleFileUploads option is enabled, this callback will be
+            // called once for each file in the selection for XHR file uploads, else
+            // once for each file selection.
+            //
+            // The upload starts when the submit method is invoked on the data parameter.
+            // The data object contains a files property holding the added files
+            // and allows you to override plugin options as well as define ajax settings.
+            //
+            // Listeners for this callback can also be bound the following way:
+            // .bind('fileuploadadd', func);
+            //
+            // data.submit() returns a Promise object and allows to attach additional
+            // handlers using jQuery's Deferred callbacks:
+            // data.submit().done(func).fail(func).always(func);
+            add: function (e, data) {
+                if (e.isDefaultPrevented()) {
+                    return false;
+                }
+                if (data.autoUpload || (data.autoUpload !== false &&
+                        $(this).fileupload('option', 'autoUpload'))) {
+                    data.process().done(function () {
+                        data.submit();
+                    });
+                }
+            },
+
+            // Other callbacks:
+
+            // Callback for the submit event of each file upload:
+            // submit: function (e, data) {}, // .bind('fileuploadsubmit', func);
+
+            // Callback for the start of each file upload request:
+            // send: function (e, data) {}, // .bind('fileuploadsend', func);
+
+            // Callback for successful uploads:
+            // done: function (e, data) {}, // .bind('fileuploaddone', func);
+
+            // Callback for failed (abort or error) uploads:
+            // fail: function (e, data) {}, // .bind('fileuploadfail', func);
+
+            // Callback for completed (success, abort or error) requests:
+            // always: function (e, data) {}, // .bind('fileuploadalways', func);
+
+            // Callback for upload progress events:
+            // progress: function (e, data) {}, // .bind('fileuploadprogress', func);
+
+            // Callback for global upload progress events:
+            // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);
+
+            // Callback for uploads start, equivalent to the global ajaxStart event:
+            // start: function (e) {}, // .bind('fileuploadstart', func);
+
+            // Callback for uploads stop, equivalent to the global ajaxStop event:
+            // stop: function (e) {}, // .bind('fileuploadstop', func);
+
+            // Callback for change events of the fileInput(s):
+            // change: function (e, data) {}, // .bind('fileuploadchange', func);
+
+            // Callback for paste events to the pasteZone(s):
+            // paste: function (e, data) {}, // .bind('fileuploadpaste', func);
+
+            // Callback for drop events of the dropZone(s):
+            // drop: function (e, data) {}, // .bind('fileuploaddrop', func);
+
+            // Callback for dragover events of the dropZone(s):
+            // dragover: function (e) {}, // .bind('fileuploaddragover', func);
+
+            // Callback for the start of each chunk upload request:
+            // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func);
+
+            // Callback for successful chunk uploads:
+            // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func);
+
+            // Callback for failed (abort or error) chunk uploads:
+            // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func);
+
+            // Callback for completed (success, abort or error) chunk upload requests:
+            // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func);
+
+            // The plugin options are used as settings object for the ajax calls.
+            // The following are jQuery ajax settings required for the file uploads:
+            processData: false,
+            contentType: false,
+            cache: false
+        },
+
+        // A list of options that require reinitializing event listeners and/or
+        // special initialization code:
+        _specialOptions: [
+            'fileInput',
+            'dropZone',
+            'pasteZone',
+            'multipart',
+            'forceIframeTransport'
+        ],
+
+        _blobSlice: $.support.blobSlice && function () {
+            var slice = this.slice || this.webkitSlice || this.mozSlice;
+            return slice.apply(this, arguments);
+        },
+
+        _BitrateTimer: function () {
+            this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime());
+            this.loaded = 0;
+            this.bitrate = 0;
+            this.getBitrate = function (now, loaded, interval) {
+                var timeDiff = now - this.timestamp;
+                if (!this.bitrate || !interval || timeDiff > interval) {
+                    this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;
+                    this.loaded = loaded;
+                    this.timestamp = now;
+                }
+                return this.bitrate;
+            };
+        },
+
+        _isXHRUpload: function (options) {
+            return !options.forceIframeTransport &&
+                ((!options.multipart && $.support.xhrFileUpload) ||
+                $.support.xhrFormDataFileUpload);
+        },
+
+        _getFormData: function (options) {
+            var formData;
+            if ($.type(options.formData) === 'function') {
+                return options.formData(options.form);
+            }
+            if ($.isArray(options.formData)) {
+                return options.formData;
+            }
+            if ($.type(options.formData) === 'object') {
+                formData = [];
+                $.each(options.formData, function (name, value) {
+                    formData.push({name: name, value: value});
+                });
+                return formData;
+            }
+            return [];
+        },
+
+        _getTotal: function (files) {
+            var total = 0;
+            $.each(files, function (index, file) {
+                total += file.size || 1;
+            });
+            return total;
+        },
+
+        _initProgressObject: function (obj) {
+            var progress = {
+                loaded: 0,
+                total: 0,
+                bitrate: 0
+            };
+            if (obj._progress) {
+                $.extend(obj._progress, progress);
+            } else {
+                obj._progress = progress;
+            }
+        },
+
+        _initResponseObject: function (obj) {
+            var prop;
+            if (obj._response) {
+                for (prop in obj._response) {
+                    if (obj._response.hasOwnProperty(prop)) {
+                        delete obj._response[prop];
+                    }
+                }
+            } else {
+                obj._response = {};
+            }
+        },
+
+        _onProgress: function (e, data) {
+            if (e.lengthComputable) {
+                var now = ((Date.now) ? Date.now() : (new Date()).getTime()),
+                    loaded;
+                if (data._time && data.progressInterval &&
+                        (now - data._time < data.progressInterval) &&
+                        e.loaded !== e.total) {
+                    return;
+                }
+                data._time = now;
+                loaded = Math.floor(
+                    e.loaded / e.total * (data.chunkSize || data._progress.total)
+                ) + (data.uploadedBytes || 0);
+                // Add the difference from the previously loaded state
+                // to the global loaded counter:
+                this._progress.loaded += (loaded - data._progress.loaded);
+                this._progress.bitrate = this._bitrateTimer.getBitrate(
+                    now,
+                    this._progress.loaded,
+                    data.bitrateInterval
+                );
+                data._progress.loaded = data.loaded = loaded;
+                data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate(
+                    now,
+                    loaded,
+                    data.bitrateInterval
+                );
+                // Trigger a custom progress event with a total data property set
+                // to the file size(s) of the current upload and a loaded data
+                // property calculated accordingly:
+                this._trigger(
+                    'progress',
+                    $.Event('progress', {delegatedEvent: e}),
+                    data
+                );
+                // Trigger a global progress event for all current file uploads,
+                // including ajax calls queued for sequential file uploads:
+                this._trigger(
+                    'progressall',
+                    $.Event('progressall', {delegatedEvent: e}),
+                    this._progress
+                );
+            }
+        },
+
+        _initProgressListener: function (options) {
+            var that = this,
+                xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();
+            // Accesss to the native XHR object is required to add event listeners
+            // for the upload progress event:
+            if (xhr.upload) {
+                $(xhr.upload).bind('progress', function (e) {
+                    var oe = e.originalEvent;
+                    // Make sure the progress event properties get copied over:
+                    e.lengthComputable = oe.lengthComputable;
+                    e.loaded = oe.loaded;
+                    e.total = oe.total;
+                    that._onProgress(e, options);
+                });
+                options.xhr = function () {
+                    return xhr;
+                };
+            }
+        },
+
+        _isInstanceOf: function (type, obj) {
+            // Cross-frame instanceof check
+            return Object.prototype.toString.call(obj) === '[object ' + type + ']';
+        },
+
+        _initXHRData: function (options) {
+            var that = this,
+                formData,
+                file = options.files[0],
+                // Ignore non-multipart setting if not supported:
+                multipart = options.multipart || !$.support.xhrFileUpload,
+                paramName = $.type(options.paramName) === 'array' ?
+                    options.paramName[0] : options.paramName;
+            options.headers = $.extend({}, options.headers);
+            if (options.contentRange) {
+                options.headers['Content-Range'] = options.contentRange;
+            }
+            if (!multipart || options.blob || !this._isInstanceOf('File', file)) {
+                options.headers['Content-Disposition'] = 'attachment; filename="' +
+                    encodeURI(file.name) + '"';
+            }
+            if (!multipart) {
+                options.contentType = file.type || 'application/octet-stream';
+                options.data = options.blob || file;
+            } else if ($.support.xhrFormDataFileUpload) {
+                if (options.postMessage) {
+                    // window.postMessage does not allow sending FormData
+                    // objects, so we just add the File/Blob objects to
+                    // the formData array and let the postMessage window
+                    // create the FormData object out of this array:
+                    formData = this._getFormData(options);
+                    if (options.blob) {
+                        formData.push({
+                            name: paramName,
+                            value: options.blob
+                        });
+                    } else {
+                        $.each(options.files, function (index, file) {
+                            formData.push({
+                                name: ($.type(options.paramName) === 'array' &&
+                                    options.paramName[index]) || paramName,
+                                value: file
+                            });
+                        });
+                    }
+                } else {
+                    if (that._isInstanceOf('FormData', options.formData)) {
+                        formData = options.formData;
+                    } else {
+                        formData = new FormData();
+                        $.each(this._getFormData(options), function (index, field) {
+                            formData.append(field.name, field.value);
+                        });
+                    }
+                    if (options.blob) {
+                        formData.append(paramName, options.blob, file.name);
+                    } else {
+                        $.each(options.files, function (index, file) {
+                            // This check allows the tests to run with
+                            // dummy objects:
+                            if (that._isInstanceOf('File', file) ||
+                                    that._isInstanceOf('Blob', file)) {
+                                formData.append(
+                                    ($.type(options.paramName) === 'array' &&
+                                        options.paramName[index]) || paramName,
+                                    file,
+                                    file.uploadName || file.name
+                                );
+                            }
+                        });
+                    }
+                }
+                options.data = formData;
+            }
+            // Blob reference is not needed anymore, free memory:
+            options.blob = null;
+        },
+
+        _initIframeSettings: function (options) {
+            var targetHost = $('<a></a>').prop('href', options.url).prop('host');
+            // Setting the dataType to iframe enables the iframe transport:
+            options.dataType = 'iframe ' + (options.dataType || '');
+            // The iframe transport accepts a serialized array as form data:
+            options.formData = this._getFormData(options);
+            // Add redirect url to form data on cross-domain uploads:
+            if (options.redirect && targetHost && targetHost !== location.host) {
+                options.formData.push({
+                    name: options.redirectParamName || 'redirect',
+                    value: options.redirect
+                });
+            }
+        },
+
+        _initDataSettings: function (options) {
+            if (this._isXHRUpload(options)) {
+                if (!this._chunkedUpload(options, true)) {
+                    if (!options.data) {
+                        this._initXHRData(options);
+                    }
+                    this._initProgressListener(options);
+                }
+                if (options.postMessage) {
+                    // Setting the dataType to postmessage enables the
+                    // postMessage transport:
+                    options.dataType = 'postmessage ' + (options.dataType || '');
+                }
+            } else {
+                this._initIframeSettings(options);
+            }
+        },
+
+        _getParamName: function (options) {
+            var fileInput = $(options.fileInput),
+                paramName = options.paramName;
+            if (!paramName) {
+                paramName = [];
+                fileInput.each(function () {
+                    var input = $(this),
+                        name = input.prop('name') || 'files[]',
+                        i = (input.prop('files') || [1]).length;
+                    while (i) {
+                        paramName.push(name);
+                        i -= 1;
+                    }
+                });
+                if (!paramName.length) {
+                    paramName = [fileInput.prop('name') || 'files[]'];
+                }
+            } else if (!$.isArray(paramName)) {
+                paramName = [paramName];
+            }
+            return paramName;
+        },
+
+        _initFormSettings: function (options) {
+            // Retrieve missing options from the input field and the
+            // associated form, if available:
+            if (!options.form || !options.form.length) {
+                options.form = $(options.fileInput.prop('form'));
+                // If the given file input doesn't have an associated form,
+                // use the default widget file input's form:
+                if (!options.form.length) {
+                    options.form = $(this.options.fileInput.prop('form'));
+                }
+            }
+            options.paramName = this._getParamName(options);
+            if (!options.url) {
+                options.url = options.form.prop('action') || location.href;
+            }
+            // The HTTP request method must be "POST" or "PUT":
+            options.type = (options.type ||
+                ($.type(options.form.prop('method')) === 'string' &&
+                    options.form.prop('method')) || ''
+                ).toUpperCase();
+            if (options.type !== 'POST' && options.type !== 'PUT' &&
+                    options.type !== 'PATCH') {
+                options.type = 'POST';
+            }
+            if (!options.formAcceptCharset) {
+                options.formAcceptCharset = options.form.attr('accept-charset');
+            }
+        },
+
+        _getAJAXSettings: function (data) {
+            var options = $.extend({}, this.options, data);
+            this._initFormSettings(options);
+            this._initDataSettings(options);
+            return options;
+        },
+
+        // jQuery 1.6 doesn't provide .state(),
+        // while jQuery 1.8+ removed .isRejected() and .isResolved():
+        _getDeferredState: function (deferred) {
+            if (deferred.state) {
+                return deferred.state();
+            }
+            if (deferred.isResolved()) {
+                return 'resolved';
+            }
+            if (deferred.isRejected()) {
+                return 'rejected';
+            }
+            return 'pending';
+        },
+
+        // Maps jqXHR callbacks to the equivalent
+        // methods of the given Promise object:
+        _enhancePromise: function (promise) {
+            promise.success = promise.done;
+            promise.error = promise.fail;
+            promise.complete = promise.always;
+            return promise;
+        },
+
+        // Creates and returns a Promise object enhanced with
+        // the jqXHR methods abort, success, error and complete:
+        _getXHRPromise: function (resolveOrReject, context, args) {
+            var dfd = $.Deferred(),
+                promise = dfd.promise();
+            context = context || this.options.context || promise;
+            if (resolveOrReject === true) {
+                dfd.resolveWith(context, args);
+            } else if (resolveOrReject === false) {
+                dfd.rejectWith(context, args);
+            }
+            promise.abort = dfd.promise;
+            return this._enhancePromise(promise);
+        },
+
+        // Adds convenience methods to the data callback argument:
+        _addConvenienceMethods: function (e, data) {
+            var that = this,
+                getPromise = function (args) {
+                    return $.Deferred().resolveWith(that, args).promise();
+                };
+            data.process = function (resolveFunc, rejectFunc) {
+                if (resolveFunc || rejectFunc) {
+                    data._processQueue = this._processQueue =
+                        (this._processQueue || getPromise([this])).pipe(
+                            function () {
+                                if (data.errorThrown) {
+                                    return $.Deferred()
+                                        .rejectWith(that, [data]).promise();
+                                }
+                                return getPromise(arguments);
+                            }
+                        ).pipe(resolveFunc, rejectFunc);
+                }
+                return this._processQueue || getPromise([this]);
+            };
+            data.submit = function () {
+                if (this.state() !== 'pending') {
+                    data.jqXHR = this.jqXHR =
+                        (that._trigger(
+                            'submit',
+                            $.Event('submit', {delegatedEvent: e}),
+                            this
+                        ) !== false) && that._onSend(e, this);
+                }
+                return this.jqXHR || that._getXHRPromise();
+            };
+            data.abort = function () {
+                if (this.jqXHR) {
+                    return this.jqXHR.abort();
+                }
+                this.errorThrown = 'abort';
+                that._trigger('fail', null, this);
+                return that._getXHRPromise(false);
+            };
+            data.state = function () {
+                if (this.jqXHR) {
+                    return that._getDeferredState(this.jqXHR);
+                }
+                if (this._processQueue) {
+                    return that._getDeferredState(this._processQueue);
+                }
+            };
+            data.processing = function () {
+                return !this.jqXHR && this._processQueue && that
+                    ._getDeferredState(this._processQueue) === 'pending';
+            };
+            data.progress = function () {
+                return this._progress;
+            };
+            data.response = function () {
+                return this._response;
+            };
+        },
+
+        // Parses the Range header from the server response
+        // and returns the uploaded bytes:
+        _getUploadedBytes: function (jqXHR) {
+            var range = jqXHR.getResponseHeader('Range'),
+                parts = range && range.split('-'),
+                upperBytesPos = parts && parts.length > 1 &&
+                    parseInt(parts[1], 10);
+            return upperBytesPos && upperBytesPos + 1;
+        },
+
+        // Uploads a file in multiple, sequential requests
+        // by splitting the file up in multiple blob chunks.
+        // If the second parameter is true, only tests if the file
+        // should be uploaded in chunks, but does not invoke any
+        // upload requests:
+        _chunkedUpload: function (options, testOnly) {
+            options.uploadedBytes = options.uploadedBytes || 0;
+            var that = this,
+                file = options.files[0],
+                fs = file.size,
+                ub = options.uploadedBytes,
+                mcs = options.maxChunkSize || fs,
+                slice = this._blobSlice,
+                dfd = $.Deferred(),
+                promise = dfd.promise(),
+                jqXHR,
+                upload;
+            if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) ||
+                    options.data) {
+                return false;
+            }
+            if (testOnly) {
+                return true;
+            }
+            if (ub >= fs) {
+                file.error = options.i18n('uploadedBytes');
+                return this._getXHRPromise(
+                    false,
+                    options.context,
+                    [null, 'error', file.error]
+                );
+            }
+            // The chunk upload method:
+            upload = function () {
+                // Clone the options object for each chunk upload:
+                var o = $.extend({}, options),
+                    currentLoaded = o._progress.loaded;
+                o.blob = slice.call(
+                    file,
+                    ub,
+                    ub + mcs,
+                    file.type
+                );
+                // Store the current chunk size, as the blob itself
+                // will be dereferenced after data processing:
+                o.chunkSize = o.blob.size;
+                // Expose the chunk bytes position range:
+                o.contentRange = 'bytes ' + ub + '-' +
+                    (ub + o.chunkSize - 1) + '/' + fs;
+                // Process the upload data (the blob and potential form data):
+                that._initXHRData(o);
+                // Add progress listeners for this chunk upload:
+                that._initProgressListener(o);
+                jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) ||
+                        that._getXHRPromise(false, o.context))
+                    .done(function (result, textStatus, jqXHR) {
+                        ub = that._getUploadedBytes(jqXHR) ||
+                            (ub + o.chunkSize);
+                        // Create a progress event if no final progress event
+                        // with loaded equaling total has been triggered
+                        // for this chunk:
+                        if (currentLoaded + o.chunkSize - o._progress.loaded) {
+                            that._onProgress($.Event('progress', {
+                                lengthComputable: true,
+                                loaded: ub - o.uploadedBytes,
+                                total: ub - o.uploadedBytes
+                            }), o);
+                        }
+                        options.uploadedBytes = o.uploadedBytes = ub;
+                        o.result = result;
+                        o.textStatus = textStatus;
+                        o.jqXHR = jqXHR;
+                        that._trigger('chunkdone', null, o);
+                        that._trigger('chunkalways', null, o);
+                        if (ub < fs) {
+                            // File upload not yet complete,
+                            // continue with the next chunk:
+                            upload();
+                        } else {
+                            dfd.resolveWith(
+                                o.context,
+                                [result, textStatus, jqXHR]
+                            );
+                        }
+                    })
+                    .fail(function (jqXHR, textStatus, errorThrown) {
+                        o.jqXHR = jqXHR;
+                        o.textStatus = textStatus;
+                        o.errorThrown = errorThrown;
+                        that._trigger('chunkfail', null, o);
+                        that._trigger('chunkalways', null, o);
+                        dfd.rejectWith(
+                            o.context,
+                            [jqXHR, textStatus, errorThrown]
+                        );
+                    });
+            };
+            this._enhancePromise(promise);
+            promise.abort = function () {
+                return jqXHR.abort();
+            };
+            upload();
+            return promise;
+        },
+
+        _beforeSend: function (e, data) {
+            if (this._active === 0) {
+                // the start callback is triggered when an upload starts
+                // and no other uploads are currently running,
+                // equivalent to the global ajaxStart event:
+                this._trigger('start');
+                // Set timer for global bitrate progress calculation:
+                this._bitrateTimer = new this._BitrateTimer();
+                // Reset the global progress values:
+                this._progress.loaded = this._progress.total = 0;
+                this._progress.bitrate = 0;
+            }
+            // Make sure the container objects for the .response() and
+            // .progress() methods on the data object are available
+            // and reset to their initial state:
+            this._initResponseObject(data);
+            this._initProgressObject(data);
+            data._progress.loaded = data.loaded = data.uploadedBytes || 0;
+            data._progress.total = data.total = this._getTotal(data.files) || 1;
+            data._progress.bitrate = data.bitrate = 0;
+            this._active += 1;
+            // Initialize the global progress values:
+            this._progress.loaded += data.loaded;
+            this._progress.total += data.total;
+        },
+
+        _onDone: function (result, textStatus, jqXHR, options) {
+            var total = options._progress.total,
+                response = options._response;
+            if (options._progress.loaded < total) {
+                // Create a progress event if no final progress event
+                // with loaded equaling total has been triggered:
+                this._onProgress($.Event('progress', {
+                    lengthComputable: true,
+                    loaded: total,
+                    total: total
+                }), options);
+            }
+            response.result = options.result = result;
+            response.textStatus = options.textStatus = textStatus;
+            response.jqXHR = options.jqXHR = jqXHR;
+            this._trigger('done', null, options);
+        },
+
+        _onFail: function (jqXHR, textStatus, errorThrown, options) {
+            var response = options._response;
+            if (options.recalculateProgress) {
+                // Remove the failed (error or abort) file upload from
+                // the global progress calculation:
+                this._progress.loaded -= options._progress.loaded;
+                this._progress.total -= options._progress.total;
+            }
+            response.jqXHR = options.jqXHR = jqXHR;
+            response.textStatus = options.textStatus = textStatus;
+            response.errorThrown = options.errorThrown = errorThrown;
+            this._trigger('fail', null, options);
+        },
+
+        _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {
+            // jqXHRorResult, textStatus and jqXHRorError are added to the
+            // options object via done and fail callbacks
+            this._trigger('always', null, options);
+        },
+
+        _onSend: function (e, data) {
+            if (!data.submit) {
+                this._addConvenienceMethods(e, data);
+            }
+            var that = this,
+                jqXHR,
+                aborted,
+                slot,
+                pipe,
+                options = that._getAJAXSettings(data),
+                send = function () {
+                    that._sending += 1;
+                    // Set timer for bitrate progress calculation:
+                    options._bitrateTimer = new that._BitrateTimer();
+                    jqXHR = jqXHR || (
+                        ((aborted || that._trigger(
+                            'send',
+                            $.Event('send', {delegatedEvent: e}),
+                            options
+                        ) === false) &&
+                        that._getXHRPromise(false, options.context, aborted)) ||
+                        that._chunkedUpload(options) || $.ajax(options)
+                    ).done(function (result, textStatus, jqXHR) {
+                        that._onDone(result, textStatus, jqXHR, options);
+                    }).fail(function (jqXHR, textStatus, errorThrown) {
+                        that._onFail(jqXHR, textStatus, errorThrown, options);
+                    }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
+                        that._onAlways(
+                            jqXHRorResult,
+                            textStatus,
+                            jqXHRorError,
+                            options
+                        );
+                        that._sending -= 1;
+                        that._active -= 1;
+                        if (options.limitConcurrentUploads &&
+                                options.limitConcurrentUploads > that._sending) {
+                            // Start the next queued upload,
+                            // that has not been aborted:
+                            var nextSlot = that._slots.shift();
+                            while (nextSlot) {
+                                if (that._getDeferredState(nextSlot) === 'pending') {
+                                    nextSlot.resolve();
+                                    break;
+                                }
+                                nextSlot = that._slots.shift();
+                            }
+                        }
+                        if (that._active === 0) {
+                            // The stop callback is triggered when all uploads have
+                            // been completed, equivalent to the global ajaxStop event:
+                            that._trigger('stop');
+                        }
+                    });
+                    return jqXHR;
+                };
+            this._beforeSend(e, options);
+            if (this.options.sequentialUploads ||
+                    (this.options.limitConcurrentUploads &&
+                    this.options.limitConcurrentUploads <= this._sending)) {
+                if (this.options.limitConcurrentUploads > 1) {
+                    slot = $.Deferred();
+                    this._slots.push(slot);
+                    pipe = slot.pipe(send);
+                } else {
+                    this._sequence = this._sequence.pipe(send, send);
+                    pipe = this._sequence;
+                }
+                // Return the piped Promise object, enhanced with an abort method,
+                // which is delegated to the jqXHR object of the current upload,
+                // and jqXHR callbacks mapped to the equivalent Promise methods:
+                pipe.abort = function () {
+                    aborted = [undefined, 'abort', 'abort'];
+                    if (!jqXHR) {
+                        if (slot) {
+                            slot.rejectWith(options.context, aborted);
+                        }
+                        return send();
+                    }
+                    return jqXHR.abort();
+                };
+                return this._enhancePromise(pipe);
+            }
+            return send();
+        },
+
+        _onAdd: function (e, data) {
+            var that = this,
+                result = true,
+                options = $.extend({}, this.options, data),
+                files = data.files,
+                filesLength = files.length,
+                limit = options.limitMultiFileUploads,
+                limitSize = options.limitMultiFileUploadSize,
+                overhead = options.limitMultiFileUploadSizeOverhead,
+                batchSize = 0,
+                paramName = this._getParamName(options),
+                paramNameSet,
+                paramNameSlice,
+                fileSet,
+                i,
+                j = 0;
+            if (limitSize && (!filesLength || files[0].size === undefined)) {
+                limitSize = undefined;
+            }
+            if (!(options.singleFileUploads || limit || limitSize) ||
+                    !this._isXHRUpload(options)) {
+                fileSet = [files];
+                paramNameSet = [paramName];
+            } else if (!(options.singleFileUploads || limitSize) && limit) {
+                fileSet = [];
+                paramNameSet = [];
+                for (i = 0; i < filesLength; i += limit) {
+                    fileSet.push(files.slice(i, i + limit));
+                    paramNameSlice = paramName.slice(i, i + limit);
+                    if (!paramNameSlice.length) {
+                        paramNameSlice = paramName;
+                    }
+                    paramNameSet.push(paramNameSlice);
+                }
+            } else if (!options.singleFileUploads && limitSize) {
+                fileSet = [];
+                paramNameSet = [];
+                for (i = 0; i < filesLength; i = i + 1) {
+                    batchSize += files[i].size + overhead;
+                    if (i + 1 === filesLength ||
+                            ((batchSize + files[i + 1].size + overhead) > limitSize) ||
+                            (limit && i + 1 - j >= limit)) {
+                        fileSet.push(files.slice(j, i + 1));
+                        paramNameSlice = paramName.slice(j, i + 1);
+                        if (!paramNameSlice.length) {
+                            paramNameSlice = paramName;
+                        }
+                        paramNameSet.push(paramNameSlice);
+                        j = i + 1;
+                        batchSize = 0;
+                    }
+                }
+            } else {
+                paramNameSet = paramName;
+            }
+            data.originalFiles = files;
+            $.each(fileSet || files, function (index, element) {
+                var newData = $.extend({}, data);
+                newData.files = fileSet ? element : [element];
+                newData.paramName = paramNameSet[index];
+                that._initResponseObject(newData);
+                that._initProgressObject(newData);
+                that._addConvenienceMethods(e, newData);
+                result = that._trigger(
+                    'add',
+                    $.Event('add', {delegatedEvent: e}),
+                    newData
+                );
+                return result;
+            });
+            return result;
+        },
+
+        _replaceFileInput: function (input) {
+            var inputClone = input.clone(true);
+            $('<form></form>').append(inputClone)[0].reset();
+            // Detaching allows to insert the fileInput on another form
+            // without loosing the file input value:
+            input.after(inputClone).detach();
+            // Avoid memory leaks with the detached file input:
+            $.cleanData(input.unbind('remove'));
+            // Replace the original file input element in the fileInput
+            // elements set with the clone, which has been copied including
+            // event handlers:
+            this.options.fileInput = this.options.fileInput.map(function (i, el) {
+                if (el === input[0]) {
+                    return inputClone[0];
+                }
+                return el;
+            });
+            // If the widget has been initialized on the file input itself,
+            // override this.element with the file input clone:
+            if (input[0] === this.element[0]) {
+                this.element = inputClone;
+            }
+        },
+
+        _handleFileTreeEntry: function (entry, path) {
+            var that = this,
+                dfd = $.Deferred(),
+                errorHandler = function (e) {
+                    if (e && !e.entry) {
+                        e.entry = entry;
+                    }
+                    // Since $.when returns immediately if one
+                    // Deferred is rejected, we use resolve instead.
+                    // This allows valid files and invalid items
+                    // to be returned together in one set:
+                    dfd.resolve([e]);
+                },
+                dirReader;
+            path = path || '';
+            if (entry.isFile) {
+                if (entry._file) {
+                    // Workaround for Chrome bug #149735
+                    entry._file.relativePath = path;
+                    dfd.resolve(entry._file);
+                } else {
+                    entry.file(function (file) {
+                        file.relativePath = path;
+                        dfd.resolve(file);
+                    }, errorHandler);
+                }
+            } else if (entry.isDirectory) {
+                dirReader = entry.createReader();
+                dirReader.readEntries(function (entries) {
+                    that._handleFileTreeEntries(
+                        entries,
+                        path + entry.name + '/'
+                    ).done(function (files) {
+                        dfd.resolve(files);
+                    }).fail(errorHandler);
+                }, errorHandler);
+            } else {
+                // Return an empy list for file system items
+                // other than files or directories:
+                dfd.resolve([]);
+            }
+            return dfd.promise();
+        },
+
+        _handleFileTreeEntries: function (entries, path) {
+            var that = this;
+            return $.when.apply(
+                $,
+                $.map(entries, function (entry) {
+                    return that._handleFileTreeEntry(entry, path);
+                })
+            ).pipe(function () {
+                return Array.prototype.concat.apply(
+                    [],
+                    arguments
+                );
+            });
+        },
+
+        _getDroppedFiles: function (dataTransfer) {
+            dataTransfer = dataTransfer || {};
+            var items = dataTransfer.items;
+            if (items && items.length && (items[0].webkitGetAsEntry ||
+                    items[0].getAsEntry)) {
+                return this._handleFileTreeEntries(
+                    $.map(items, function (item) {
+                        var entry;
+                        if (item.webkitGetAsEntry) {
+                            entry = item.webkitGetAsEntry();
+                            if (entry) {
+                                // Workaround for Chrome bug #149735:
+                                entry._file = item.getAsFile();
+                            }
+                            return entry;
+                        }
+                        return item.getAsEntry();
+                    })
+                );
+            }
+            return $.Deferred().resolve(
+                $.makeArray(dataTransfer.files)
+            ).promise();
+        },
+
+        _getSingleFileInputFiles: function (fileInput) {
+            fileInput = $(fileInput);
+            var entries = fileInput.prop('webkitEntries') ||
+                    fileInput.prop('entries'),
+                files,
+                value;
+            if (entries && entries.length) {
+                return this._handleFileTreeEntries(entries);
+            }
+            files = $.makeArray(fileInput.prop('files'));
+            if (!files.length) {
+                value = fileInput.prop('value');
+                if (!value) {
+                    return $.Deferred().resolve([]).promise();
+                }
+                // If the files property is not available, the browser does not
+                // support the File API and we add a pseudo File object with
+                // the input value as name with path information removed:
+                files = [{name: value.replace(/^.*\\/, '')}];
+            } else if (files[0].name === undefined && files[0].fileName) {
+                // File normalization for Safari 4 and Firefox 3:
+                $.each(files, function (index, file) {
+                    file.name = file.fileName;
+                    file.size = file.fileSize;
+                });
+            }
+            return $.Deferred().resolve(files).promise();
+        },
+
+        _getFileInputFiles: function (fileInput) {
+            if (!(fileInput instanceof $) || fileInput.length === 1) {
+                return this._getSingleFileInputFiles(fileInput);
+            }
+            return $.when.apply(
+                $,
+                $.map(fileInput, this._getSingleFileInputFiles)
+            ).pipe(function () {
+                return Array.prototype.concat.apply(
+                    [],
+                    arguments
+                );
+            });
+        },
+
+        _onChange: function (e) {
+            var that = this,
+                data = {
+                    fileInput: $(e.target),
+                    form: $(e.target.form)
+                };
+            this._getFileInputFiles(data.fileInput).always(function (files) {
+                data.files = files;
+                if (that.options.replaceFileInput) {
+                    that._replaceFileInput(data.fileInput);
+                }
+                if (that._trigger(
+                        'change',
+                        $.Event('change', {delegatedEvent: e}),
+                        data
+                    ) !== false) {
+                    that._onAdd(e, data);
+                }
+            });
+        },
+
+        _onPaste: function (e) {
+            var items = e.originalEvent && e.originalEvent.clipboardData &&
+                    e.originalEvent.clipboardData.items,
+                data = {files: []};
+            if (items && items.length) {
+                $.each(items, function (index, item) {
+                    var file = item.getAsFile && item.getAsFile();
+                    if (file) {
+                        data.files.push(file);
+                    }
+                });
+                if (this._trigger(
+                        'paste',
+                        $.Event('paste', {delegatedEvent: e}),
+                        data
+                    ) !== false) {
+                    this._onAdd(e, data);
+                }
+            }
+        },
+
+        _onDrop: function (e) {
+            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
+            var that = this,
+                dataTransfer = e.dataTransfer,
+                data = {};
+            if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {
+                e.preventDefault();
+                this._getDroppedFiles(dataTransfer).always(function (files) {
+                    data.files = files;
+                    if (that._trigger(
+                            'drop',
+                            $.Event('drop', {delegatedEvent: e}),
+                            data
+                        ) !== false) {
+                        that._onAdd(e, data);
+                    }
+                });
+            }
+        },
+
+        _onDragOver: function (e) {
+            e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;
+            var dataTransfer = e.dataTransfer;
+            if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 &&
+                    this._trigger(
+                        'dragover',
+                        $.Event('dragover', {delegatedEvent: e})
+                    ) !== false) {
+                e.preventDefault();
+                dataTransfer.dropEffect = 'copy';
+            }
+        },
+
+        _initEventHandlers: function () {
+            if (this._isXHRUpload(this.options)) {
+                this._on(this.options.dropZone, {
+                    dragover: this._onDragOver,
+                    drop: this._onDrop
+                });
+                this._on(this.options.pasteZone, {
+                    paste: this._onPaste
+                });
+            }
+            if ($.support.fileInput) {
+                this._on(this.options.fileInput, {
+                    change: this._onChange
+                });
+            }
+        },
+
+        _destroyEventHandlers: function () {
+            this._off(this.options.dropZone, 'dragover drop');
+            this._off(this.options.pasteZone, 'paste');
+            this._off(this.options.fileInput, 'change');
+        },
+
+        _setOption: function (key, value) {
+            var reinit = $.inArray(key, this._specialOptions) !== -1;
+            if (reinit) {
+                this._destroyEventHandlers();
+            }
+            this._super(key, value);
+            if (reinit) {
+                this._initSpecialOptions();
+                this._initEventHandlers();
+            }
+        },
+
+        _initSpecialOptions: function () {
+            var options = this.options;
+            if (options.fileInput === undefined) {
+                options.fileInput = this.element.is('input[type="file"]') ?
+                        this.element : this.element.find('input[type="file"]');
+            } else if (!(options.fileInput instanceof $)) {
+                options.fileInput = $(options.fileInput);
+            }
+            if (!(options.dropZone instanceof $)) {
+                options.dropZone = $(options.dropZone);
+            }
+            if (!(options.pasteZone instanceof $)) {
+                options.pasteZone = $(options.pasteZone);
+            }
+        },
+
+        _getRegExp: function (str) {
+            var parts = str.split('/'),
+                modifiers = parts.pop();
+            parts.shift();
+            return new RegExp(parts.join('/'), modifiers);
+        },
+
+        _isRegExpOption: function (key, value) {
+            return key !== 'url' && $.type(value) === 'string' &&
+                /^\/.*\/[igm]{0,3}$/.test(value);
+        },
+
+        _initDataAttributes: function () {
+            var that = this,
+                options = this.options,
+                clone = $(this.element[0].cloneNode(false));
+            // Initialize options set via HTML5 data-attributes:
+            $.each(
+                clone.data(),
+                function (key, value) {
+                    var dataAttributeName = 'data-' +
+                        // Convert camelCase to hyphen-ated key:
+                        key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
+                    if (clone.attr(dataAttributeName)) {
+                        if (that._isRegExpOption(key, value)) {
+                            value = that._getRegExp(value);
+                        }
+                        options[key] = value;
+                    }
+                }
+            );
+        },
+
+        _create: function () {
+            this._initDataAttributes();
+            this._initSpecialOptions();
+            this._slots = [];
+            this._sequence = this._getXHRPromise(true);
+            this._sending = this._active = 0;
+            this._initProgressObject(this);
+            this._initEventHandlers();
+        },
+
+        // This method is exposed to the widget API and allows to query
+        // the number of active uploads:
+        active: function () {
+            return this._active;
+        },
+
+        // This method is exposed to the widget API and allows to query
+        // the widget upload progress.
+        // It returns an object with loaded, total and bitrate properties
+        // for the running uploads:
+        progress: function () {
+            return this._progress;
+        },
+
+        // This method is exposed to the widget API and allows adding files
+        // using the fileupload API. The data parameter accepts an object which
+        // must have a files property and can contain additional options:
+        // .fileupload('add', {files: filesList});
+        add: function (data) {
+            var that = this;
+            if (!data || this.options.disabled) {
+                return;
+            }
+            if (data.fileInput && !data.files) {
+                this._getFileInputFiles(data.fileInput).always(function (files) {
+                    data.files = files;
+                    that._onAdd(null, data);
+                });
+            } else {
+                data.files = $.makeArray(data.files);
+                this._onAdd(null, data);
+            }
+        },
+
+        // This method is exposed to the widget API and allows sending files
+        // using the fileupload API. The data parameter accepts an object which
+        // must have a files or fileInput property and can contain additional options:
+        // .fileupload('send', {files: filesList});
+        // The method returns a Promise object for the file upload call.
+        send: function (data) {
+            if (data && !this.options.disabled) {
+                if (data.fileInput && !data.files) {
+                    var that = this,
+                        dfd = $.Deferred(),
+                        promise = dfd.promise(),
+                        jqXHR,
+                        aborted;
+                    promise.abort = function () {
+                        aborted = true;
+                        if (jqXHR) {
+                            return jqXHR.abort();
+                        }
+                        dfd.reject(null, 'abort', 'abort');
+                        return promise;
+                    };
+                    this._getFileInputFiles(data.fileInput).always(
+                        function (files) {
+                            if (aborted) {
+                                return;
+                            }
+                            if (!files.length) {
+                                dfd.reject();
+                                return;
+                            }
+                            data.files = files;
+                            jqXHR = that._onSend(null, data).then(
+                                function (result, textStatus, jqXHR) {
+                                    dfd.resolve(result, textStatus, jqXHR);
+                                },
+                                function (jqXHR, textStatus, errorThrown) {
+                                    dfd.reject(jqXHR, textStatus, errorThrown);
+                                }
+                            );
+                        }
+                    );
+                    return this._enhancePromise(promise);
+                }
+                data.files = $.makeArray(data.files);
+                if (data.files.length) {
+                    return this._onSend(null, data);
+                }
+            }
+            return this._getXHRPromise(false, data && data.context);
+        }
+
+    });
+
+}));
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.iframe-transport.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.iframe-transport.js
new file mode 100644
index 0000000..8d64b59
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.iframe-transport.js
@@ -0,0 +1,214 @@
+/*
+ * jQuery Iframe Transport Plugin 1.8.2
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+/* global define, window, document */
+
+(function (factory) {
+    'use strict';
+    if (typeof define === 'function' && define.amd) {
+        // Register as an anonymous AMD module:
+        define(['jquery'], factory);
+    } else {
+        // Browser globals:
+        factory(window.jQuery);
+    }
+}(function ($) {
+    'use strict';
+
+    // Helper variable to create unique names for the transport iframes:
+    var counter = 0;
+
+    // The iframe transport accepts four additional options:
+    // options.fileInput: a jQuery collection of file input fields
+    // options.paramName: the parameter name for the file form data,
+    //  overrides the name property of the file input field(s),
+    //  can be a string or an array of strings.
+    // options.formData: an array of objects with name and value properties,
+    //  equivalent to the return data of .serializeArray(), e.g.:
+    //  [{name: 'a', value: 1}, {name: 'b', value: 2}]
+    // options.initialIframeSrc: the URL of the initial iframe src,
+    //  by default set to "javascript:false;"
+    $.ajaxTransport('iframe', function (options) {
+        if (options.async) {
+            // javascript:false as initial iframe src
+            // prevents warning popups on HTTPS in IE6:
+            /*jshint scripturl: true */
+            var initialIframeSrc = options.initialIframeSrc || 'javascript:false;',
+            /*jshint scripturl: false */
+                form,
+                iframe,
+                addParamChar;
+            return {
+                send: function (_, completeCallback) {
+                    form = $('<form style="display:none;"></form>');
+                    form.attr('accept-charset', options.formAcceptCharset);
+                    addParamChar = /\?/.test(options.url) ? '&' : '?';
+                    // XDomainRequest only supports GET and POST:
+                    if (options.type === 'DELETE') {
+                        options.url = options.url + addParamChar + '_method=DELETE';
+                        options.type = 'POST';
+                    } else if (options.type === 'PUT') {
+                        options.url = options.url + addParamChar + '_method=PUT';
+                        options.type = 'POST';
+                    } else if (options.type === 'PATCH') {
+                        options.url = options.url + addParamChar + '_method=PATCH';
+                        options.type = 'POST';
+                    }
+                    // IE versions below IE8 cannot set the name property of
+                    // elements that have already been added to the DOM,
+                    // so we set the name along with the iframe HTML markup:
+                    counter += 1;
+                    iframe = $(
+                        '<iframe src="' + initialIframeSrc +
+                            '" name="iframe-transport-' + counter + '"></iframe>'
+                    ).bind('load', function () {
+                        var fileInputClones,
+                            paramNames = $.isArray(options.paramName) ?
+                                    options.paramName : [options.paramName];
+                        iframe
+                            .unbind('load')
+                            .bind('load', function () {
+                                var response;
+                                // Wrap in a try/catch block to catch exceptions thrown
+                                // when trying to access cross-domain iframe contents:
+                                try {
+                                    response = iframe.contents();
+                                    // Google Chrome and Firefox do not throw an
+                                    // exception when calling iframe.contents() on
+                                    // cross-domain requests, so we unify the response:
+                                    if (!response.length || !response[0].firstChild) {
+                                        throw new Error();
+                                    }
+                                } catch (e) {
+                                    response = undefined;
+                                }
+                                // The complete callback returns the
+                                // iframe content document as response object:
+                                completeCallback(
+                                    200,
+                                    'success',
+                                    {'iframe': response}
+                                );
+                                // Fix for IE endless progress bar activity bug
+                                // (happens on form submits to iframe targets):
+                                $('<iframe src="' + initialIframeSrc + '"></iframe>')
+                                    .appendTo(form);
+                                window.setTimeout(function () {
+                                    // Removing the form in a setTimeout call
+                                    // allows Chrome's developer tools to display
+                                    // the response result
+                                    form.remove();
+                                }, 0);
+                            });
+                        form
+                            .prop('target', iframe.prop('name'))
+                            .prop('action', options.url)
+                            .prop('method', options.type);
+                        if (options.formData) {
+                            $.each(options.formData, function (index, field) {
+                                $('<input type="hidden"/>')
+                                    .prop('name', field.name)
+                                    .val(field.value)
+                                    .appendTo(form);
+                            });
+                        }
+                        if (options.fileInput && options.fileInput.length &&
+                                options.type === 'POST') {
+                            fileInputClones = options.fileInput.clone();
+                            // Insert a clone for each file input field:
+                            options.fileInput.after(function (index) {
+                                return fileInputClones[index];
+                            });
+                            if (options.paramName) {
+                                options.fileInput.each(function (index) {
+                                    $(this).prop(
+                                        'name',
+                                        paramNames[index] || options.paramName
+                                    );
+                                });
+                            }
+                            // Appending the file input fields to the hidden form
+                            // removes them from their original location:
+                            form
+                                .append(options.fileInput)
+                                .prop('enctype', 'multipart/form-data')
+                                // enctype must be set as encoding for IE:
+                                .prop('encoding', 'multipart/form-data');
+                            // Remove the HTML5 form attribute from the input(s):
+                            options.fileInput.removeAttr('form');
+                        }
+                        form.submit();
+                        // Insert the file input fields at their original location
+                        // by replacing the clones with the originals:
+                        if (fileInputClones && fileInputClones.length) {
+                            options.fileInput.each(function (index, input) {
+                                var clone = $(fileInputClones[index]);
+                                // Restore the original name and form properties:
+                                $(input)
+                                    .prop('name', clone.prop('name'))
+                                    .attr('form', clone.attr('form'));
+                                clone.replaceWith(input);
+                            });
+                        }
+                    });
+                    form.append(iframe).appendTo(document.body);
+                },
+                abort: function () {
+                    if (iframe) {
+                        // javascript:false as iframe src aborts the request
+                        // and prevents warning popups on HTTPS in IE6.
+                        // concat is used to avoid the "Script URL" JSLint error:
+                        iframe
+                            .unbind('load')
+                            .prop('src', initialIframeSrc);
+                    }
+                    if (form) {
+                        form.remove();
+                    }
+                }
+            };
+        }
+    });
+
+    // The iframe transport returns the iframe content document as response.
+    // The following adds converters from iframe to text, json, html, xml
+    // and script.
+    // Please note that the Content-Type for JSON responses has to be text/plain
+    // or text/html, if the browser doesn't include application/json in the
+    // Accept header, else IE will show a download dialog.
+    // The Content-Type for XML responses on the other hand has to be always
+    // application/xml or text/xml, so IE properly parses the XML response.
+    // See also
+    // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation
+    $.ajaxSetup({
+        converters: {
+            'iframe text': function (iframe) {
+                return iframe && $(iframe[0].body).text();
+            },
+            'iframe json': function (iframe) {
+                return iframe && $.parseJSON($(iframe[0].body).text());
+            },
+            'iframe html': function (iframe) {
+                return iframe && $(iframe[0].body).html();
+            },
+            'iframe xml': function (iframe) {
+                var xmlDoc = iframe && iframe[0];
+                return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc :
+                        $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) ||
+                            $(xmlDoc.body).html());
+            },
+            'iframe script': function (iframe) {
+                return iframe && $.globalEval($(iframe[0].body).text());
+            }
+        }
+    });
+
+}));
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.jeditable.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.jeditable.js
new file mode 100755
index 0000000..49b2612
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.jeditable.js
@@ -0,0 +1,546 @@
+/*
+ * Jeditable - jQuery in place edit plugin
+ *
+ * Copyright (c) 2006-2013 Mika Tuupola, Dylan Verheul
+ *
+ * Licensed under the MIT license:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *
+ * Project home:
+ *   http://www.appelsiini.net/projects/jeditable
+ *
+ * Based on editable by Dylan Verheul <dylan_at_dyve.net>:
+ *    http://www.dyve.net/jquery/?editable
+ *
+ */
+
+/**
+  * Version 1.7.3
+  *
+  * ** means there is basic unit tests for this parameter. 
+  *
+  * @name  Jeditable
+  * @type  jQuery
+  * @param String  target             (POST) URL or function to send edited content to **
+  * @param Hash    options            additional options 
+  * @param String  options[method]    method to use to send edited content (POST or PUT) **
+  * @param Function options[callback] Function to run after submitting edited content **
+  * @param String  options[name]      POST parameter name of edited content
+  * @param String  options[id]        POST parameter name of edited div id
+  * @param Hash    options[submitdata] Extra parameters to send when submitting edited content.
+  * @param String  options[type]      text, textarea or select (or any 3rd party input type) **
+  * @param Integer options[rows]      number of rows if using textarea ** 
+  * @param Integer options[cols]      number of columns if using textarea **
+  * @param Mixed   options[height]    'auto', 'none' or height in pixels **
+  * @param Mixed   options[width]     'auto', 'none' or width in pixels **
+  * @param String  options[loadurl]   URL to fetch input content before editing **
+  * @param String  options[loadtype]  Request type for load url. Should be GET or POST.
+  * @param String  options[loadtext]  Text to display while loading external content.
+  * @param Mixed   options[loaddata]  Extra parameters to pass when fetching content before editing.
+  * @param Mixed   options[data]      Or content given as paramameter. String or function.**
+  * @param String  options[indicator] indicator html to show when saving
+  * @param String  options[tooltip]   optional tooltip text via title attribute **
+  * @param String  options[event]     jQuery event such as 'click' of 'dblclick' **
+  * @param String  options[submit]    submit button value, empty means no button **
+  * @param String  options[cancel]    cancel button value, empty means no button **
+  * @param String  options[cssclass]  CSS class to apply to input form. 'inherit' to copy from parent. **
+  * @param String  options[style]     Style to apply to input form 'inherit' to copy from parent. **
+  * @param String  options[select]    true or false, when true text is highlighted ??
+  * @param String  options[placeholder] Placeholder text or html to insert when element is empty. **
+  * @param String  options[onblur]    'cancel', 'submit', 'ignore' or function ??
+  *             
+  * @param Function options[onsubmit] function(settings, original) { ... } called before submit
+  * @param Function options[onreset]  function(settings, original) { ... } called before reset
+  * @param Function options[onerror]  function(settings, original, xhr) { ... } called on error
+  *             
+  * @param Hash    options[ajaxoptions]  jQuery Ajax options. See docs.jquery.com.
+  *             
+  */
+
+(function($) {
+
+    $.fn.editable = function(target, options) {
+            
+        if ('disable' == target) {
+            $(this).data('disabled.editable', true);
+            return;
+        }
+        if ('enable' == target) {
+            $(this).data('disabled.editable', false);
+            return;
+        }
+        if ('destroy' == target) {
+            $(this)
+                .unbind($(this).data('event.editable'))
+                .removeData('disabled.editable')
+                .removeData('event.editable');
+            return;
+        }
+        
+        var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options);
+        
+        /* setup some functions */
+        var plugin   = $.editable.types[settings.type].plugin || function() { };
+        var submit   = $.editable.types[settings.type].submit || function() { };
+        var buttons  = $.editable.types[settings.type].buttons 
+                    || $.editable.types['defaults'].buttons;
+        var content  = $.editable.types[settings.type].content 
+                    || $.editable.types['defaults'].content;
+        var element  = $.editable.types[settings.type].element 
+                    || $.editable.types['defaults'].element;
+        var reset    = $.editable.types[settings.type].reset 
+                    || $.editable.types['defaults'].reset;
+        var callback = settings.callback || function() { };
+        var onedit   = settings.onedit   || function() { }; 
+        var onsubmit = settings.onsubmit || function() { };
+        var onreset  = settings.onreset  || function() { };
+        var onerror  = settings.onerror  || reset;
+          
+        /* Show tooltip. */
+        if (settings.tooltip) {
+            $(this).attr('title', settings.tooltip);
+        }
+        
+        settings.autowidth  = 'auto' == settings.width;
+        settings.autoheight = 'auto' == settings.height;
+        
+        return this.each(function() {
+                        
+            /* Save this to self because this changes when scope changes. */
+            var self = this;  
+                   
+            /* Inlined block elements lose their width and height after first edit. */
+            /* Save them for later use as workaround. */
+            var savedwidth  = $(self).width();
+            var savedheight = $(self).height();
+
+            /* Save so it can be later used by $.editable('destroy') */
+            $(this).data('event.editable', settings.event);
+            
+            /* If element is empty add something clickable (if requested) */
+            if (!$.trim($(this).html())) {
+                $(this).html(settings.placeholder);
+            }
+            
+            $(this).bind(settings.event, function(e) {
+                
+                /* Abort if element is disabled. */
+                if (true === $(this).data('disabled.editable')) {
+                    return;
+                }
+                
+                /* Prevent throwing an exeption if edit field is clicked again. */
+                if (self.editing) {
+                    return;
+                }
+                
+                /* Abort if onedit hook returns false. */
+                if (false === onedit.apply(this, [settings, self])) {
+                   return;
+                }
+                
+                /* Prevent default action and bubbling. */
+                e.preventDefault();
+                e.stopPropagation();
+                
+                /* Remove tooltip. */
+                if (settings.tooltip) {
+                    $(self).removeAttr('title');
+                }
+                
+                /* Figure out how wide and tall we are, saved width and height. */
+                /* Workaround for http://dev.jquery.com/ticket/2190 */
+                if (0 == $(self).width()) {
+                    settings.width  = savedwidth;
+                    settings.height = savedheight;
+                } else {
+                    if (settings.width != 'none') {
+                        settings.width = 
+                            settings.autowidth ? $(self).width()  : settings.width;
+                    }
+                    if (settings.height != 'none') {
+                        settings.height = 
+                            settings.autoheight ? $(self).height() : settings.height;
+                    }
+                }
+                
+                /* Remove placeholder text, replace is here because of IE. */
+                if ($(this).html().toLowerCase().replace(/(;|"|\/)/g, '') == 
+                    settings.placeholder.toLowerCase().replace(/(;|"|\/)/g, '')) {
+                        $(this).html('');
+                }
+                                
+                self.editing    = true;
+                self.revert     = $(self).html();
+                $(self).html('');
+
+                /* Create the form object. */
+                var form = $('<form />');
+                
+                /* Apply css or style or both. */
+                if (settings.cssclass) {
+                    if ('inherit' == settings.cssclass) {
+                        form.attr('class', $(self).attr('class'));
+                    } else {
+                        form.attr('class', settings.cssclass);
+                    }
+                }
+
+                if (settings.style) {
+                    if ('inherit' == settings.style) {
+                        form.attr('style', $(self).attr('style'));
+                        /* IE needs the second line or display wont be inherited. */
+                        form.css('display', $(self).css('display'));                
+                    } else {
+                        form.attr('style', settings.style);
+                    }
+                }
+
+                /* Add main input element to form and store it in input. */
+                var input = element.apply(form, [settings, self]);
+
+                /* Set input content via POST, GET, given data or existing value. */
+                var input_content;
+                
+                if (settings.loadurl) {
+                    var t = setTimeout(function() {
+                        input.disabled = true;
+                        content.apply(form, [settings.loadtext, settings, self]);
+                    }, 100);
+
+                    var loaddata = {};
+                    loaddata[settings.id] = self.id;
+                    if ($.isFunction(settings.loaddata)) {
+                        $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings]));
+                    } else {
+                        $.extend(loaddata, settings.loaddata);
+                    }
+                    $.ajax({
+                       type : settings.loadtype,
+                       url  : settings.loadurl,
+                       data : loaddata,
+                       async : false,
+                       success: function(result) {
+                          window.clearTimeout(t);
+                          input_content = result;
+                          input.disabled = false;
+                       }
+                    });
+                } else if (settings.data) {
+                    input_content = settings.data;
+                    if ($.isFunction(settings.data)) {
+                        input_content = settings.data.apply(self, [self.revert, settings]);
+                    }
+                } else {
+                    input_content = self.revert; 
+                }
+                content.apply(form, [input_content, settings, self]);
+
+                input.attr('name', settings.name);
+        
+                /* Add buttons to the form. */
+                buttons.apply(form, [settings, self]);
+         
+                /* Add created form to self. */
+                $(self).append(form);
+         
+                /* Attach 3rd party plugin if requested. */
+                plugin.apply(form, [settings, self]);
+
+                /* Focus to first visible form element. */
+                $(':input:visible:enabled:first', form).focus();
+
+                /* Highlight input contents when requested. */
+                if (settings.select) {
+                    input.select();
+                }
+        
+                /* discard changes if pressing esc */
+                input.keydown(function(e) {
+                    if (e.keyCode == 27) {
+                        e.preventDefault();
+                        reset.apply(form, [settings, self]);
+                    }
+                });
+
+                /* Discard, submit or nothing with changes when clicking outside. */
+                /* Do nothing is usable when navigating with tab. */
+                var t;
+                if ('cancel' == settings.onblur) {
+                    input.blur(function(e) {
+                        /* Prevent canceling if submit was clicked. */
+                        t = setTimeout(function() {
+                            reset.apply(form, [settings, self]);
+                        }, 500);
+                    });
+                } else if ('submit' == settings.onblur) {
+                    input.blur(function(e) {
+                        /* Prevent double submit if submit was clicked. */
+                        t = setTimeout(function() {
+                            form.submit();
+                        }, 200);
+                    });
+                } else if ($.isFunction(settings.onblur)) {
+                    input.blur(function(e) {
+                        settings.onblur.apply(self, [input.val(), settings]);
+                    });
+                } else {
+                    input.blur(function(e) {
+                      /* TODO: maybe something here */
+                    });
+                }
+
+                form.submit(function(e) {
+
+                    if (t) { 
+                        clearTimeout(t);
+                    }
+
+                    /* Do no submit. */
+                    e.preventDefault(); 
+            
+                    /* Call before submit hook. */
+                    /* If it returns false abort submitting. */                    
+                    if (false !== onsubmit.apply(form, [settings, self])) { 
+                        /* Custom inputs call before submit hook. */
+                        /* If it returns false abort submitting. */
+                        if (false !== submit.apply(form, [settings, self])) { 
+
+                          /* Check if given target is function */
+                          if ($.isFunction(settings.target)) {
+                              var str = settings.target.apply(self, [input.val(), settings]);
+                              $(self).html(str);
+                              self.editing = false;
+                              callback.apply(self, [self.innerHTML, settings]);
+                              /* TODO: this is not dry */                              
+                              if (!$.trim($(self).html())) {
+                                  $(self).html(settings.placeholder);
+                              }
+                          } else {
+                              /* Add edited content and id of edited element to POST. */
+                              var submitdata = {};
+                              submitdata[settings.name] = input.val();
+                              submitdata[settings.id] = self.id;
+                              /* Add extra data to be POST:ed. */
+                              if ($.isFunction(settings.submitdata)) {
+                                  $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings]));
+                              } else {
+                                  $.extend(submitdata, settings.submitdata);
+                              }
+
+                              /* Quick and dirty PUT support. */
+                              if ('PUT' == settings.method) {
+                                  submitdata['_method'] = 'put';
+                              }
+
+                              /* Show the saving indicator. */
+                              $(self).html(settings.indicator);
+                              
+                              /* Defaults for ajaxoptions. */
+                              var ajaxoptions = {
+                                  type    : 'POST',
+                                  data    : submitdata,
+                                  dataType: 'html',
+                                  url     : settings.target,
+                                  success : function(result, status) {
+                                      if (ajaxoptions.dataType == 'html') {
+                                        $(self).html(result);
+                                      }
+                                      self.editing = false;
+                                      callback.apply(self, [result, settings]);
+                                      if (!$.trim($(self).html())) {
+                                          $(self).html(settings.placeholder);
+                                      }
+                                  },
+                                  error   : function(xhr, status, error) {
+                                      onerror.apply(form, [settings, self, xhr]);
+                                  }
+                              };
+                              
+                              /* Override with what is given in settings.ajaxoptions. */
+                              $.extend(ajaxoptions, settings.ajaxoptions);   
+                              $.ajax(ajaxoptions);          
+                              
+                            }
+                        }
+                    }
+                    
+                    /* Show tooltip again. */
+                    $(self).attr('title', settings.tooltip);
+                    
+                    return false;
+                });
+            });
+            
+            /* Privileged methods */
+            this.reset = function(form) {
+                /* Prevent calling reset twice when blurring. */
+                if (this.editing) {
+                    /* Before reset hook, if it returns false abort reseting. */
+                    if (false !== onreset.apply(form, [settings, self])) { 
+                        $(self).html(self.revert);
+                        self.editing   = false;
+                        if (!$.trim($(self).html())) {
+                            $(self).html(settings.placeholder);
+                        }
+                        /* Show tooltip again. */
+                        if (settings.tooltip) {
+                            $(self).attr('title', settings.tooltip);                
+                        }
+                    }                    
+                }
+            };            
+        });
+
+    };
+
+
+    $.editable = {
+        types: {
+            defaults: {
+                element : function(settings, original) {
+                    var input = $('<input type="hidden"></input>');                
+                    $(this).append(input);
+                    return(input);
+                },
+                content : function(string, settings, original) {
+                    $(':input:first', this).val(string);
+                },
+                reset : function(settings, original) {
+                  original.reset(this);
+                },
+                buttons : function(settings, original) {
+                    var form = this;
+                    if (settings.submit) {
+                        /* If given html string use that. */
+                        if (settings.submit.match(/>$/)) {
+                            var submit = $(settings.submit).click(function() {
+                                if (submit.attr("type") != "submit") {
+                                    form.submit();
+                                }
+                            });
+                        /* Otherwise use button with given string as text. */
+                        } else {
+                            var submit = $('<button type="submit" />');
+                            submit.html(settings.submit);                            
+                        }
+                        $(this).append(submit);
+                    }
+                    if (settings.cancel) {
+                        /* If given html string use that. */
+                        if (settings.cancel.match(/>$/)) {
+                            var cancel = $(settings.cancel);
+                        /* otherwise use button with given string as text */
+                        } else {
+                            var cancel = $('<button type="cancel" />');
+                            cancel.html(settings.cancel);
+                        }
+                        $(this).append(cancel);
+
+                        $(cancel).click(function(event) {
+                            if ($.isFunction($.editable.types[settings.type].reset)) {
+                                var reset = $.editable.types[settings.type].reset;                                                                
+                            } else {
+                                var reset = $.editable.types['defaults'].reset;                                
+                            }
+                            reset.apply(form, [settings, original]);
+                            return false;
+                        });
+                    }
+                }
+            },
+            text: {
+                element : function(settings, original) {
+                    var input = $('<input />');
+                    if (settings.width  != 'none') { input.width(settings.width);  }
+                    if (settings.height != 'none') { input.height(settings.height); }
+                    /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */
+                    //input[0].setAttribute('autocomplete','off');
+                    input.attr('autocomplete','off');
+                    $(this).append(input);
+                    return(input);
+                }
+            },
+            textarea: {
+                element : function(settings, original) {
+                    var textarea = $('<textarea />');
+                    if (settings.rows) {
+                        textarea.attr('rows', settings.rows);
+                    } else if (settings.height != "none") {
+                        textarea.height(settings.height);
+                    }
+                    if (settings.cols) {
+                        textarea.attr('cols', settings.cols);
+                    } else if (settings.width != "none") {
+                        textarea.width(settings.width);
+                    }
+                    $(this).append(textarea);
+                    return(textarea);
+                }
+            },
+            select: {
+               element : function(settings, original) {
+                    var select = $('<select />');
+                    $(this).append(select);
+                    return(select);
+                },
+                content : function(data, settings, original) {
+                    /* If it is string assume it is json. */
+                    if (String == data.constructor) {      
+                        eval ('var json = ' + data);
+                    } else {
+                    /* Otherwise assume it is a hash already. */
+                        var json = data;
+                    }
+                    for (var key in json) {
+                        if (!json.hasOwnProperty(key)) {
+                            continue;
+                        }
+                        if ('selected' == key) {
+                            continue;
+                        } 
+                        var option = $('<option />').val(key).append(json[key]);
+                        $('select', this).append(option);    
+                    }                    
+                    /* Loop option again to set selected. IE needed this... */ 
+                    $('select', this).children().each(function() {
+                        if ($(this).val() == json['selected'] || 
+                            $(this).text() == $.trim(original.revert)) {
+                                $(this).attr('selected', 'selected');
+                        }
+                    });
+                    /* Submit on change if no submit button defined. */
+                    if (!settings.submit) {
+                        var form = this;
+                        $('select', this).change(function() {
+                            form.submit();
+                        });
+                    }
+                }
+            }
+        },
+
+        /* Add new input type */
+        addInputType: function(name, input) {
+            $.editable.types[name] = input;
+        }
+    };
+
+    /* Publicly accessible defaults. */
+    $.fn.editable.defaults = {
+        name       : 'value',
+        id         : 'id',
+        type       : 'text',
+        width      : 'auto',
+        height     : 'auto',
+        event      : 'click.editable',
+        onblur     : 'cancel',
+        loadtype   : 'GET',
+        loadtext   : 'Loading...',
+        placeholder: 'Click to edit',
+        loaddata   : {},
+        submitdata : {},
+        ajaxoptions: {}
+    };
+
+})(jQuery);
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.min.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.min.js
new file mode 100644
index 0000000..73f33fb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
+}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
+},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.ui.widget.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.ui.widget.js
new file mode 100644
index 0000000..1c0cbd1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/jquery.ui.widget.js
@@ -0,0 +1,521 @@
+/*!
+ * jQuery UI Widget 1.10.4
+ * http://jqueryui.com
+ *
+ * Copyright 2014 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/jQuery.widget/
+ */
+(function( $, undefined ) {
+
+var uuid = 0,
+	slice = Array.prototype.slice,
+	_cleanData = $.cleanData;
+$.cleanData = function( elems ) {
+	for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+		try {
+			$( elem ).triggerHandler( "remove" );
+		// http://bugs.jquery.com/ticket/8235
+		} catch( e ) {}
+	}
+	_cleanData( elems );
+};
+
+$.widget = function( name, base, prototype ) {
+	var fullName, existingConstructor, constructor, basePrototype,
+		// proxiedPrototype allows the provided prototype to remain unmodified
+		// so that it can be used as a mixin for multiple widgets (#8876)
+		proxiedPrototype = {},
+		namespace = name.split( "." )[ 0 ];
+
+	name = name.split( "." )[ 1 ];
+	fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	// create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+		// allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+	// extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+		// copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+		// track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	});
+
+	basePrototype = new base();
+	// we need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = (function() {
+			var _super = function() {
+					return base.prototype[ prop ].apply( this, arguments );
+				},
+				_superApply = function( args ) {
+					return base.prototype[ prop ].apply( this, args );
+				};
+			return function() {
+				var __super = this._super,
+					__superApply = this._superApply,
+					returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		})();
+	});
+	constructor.prototype = $.widget.extend( basePrototype, {
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	});
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
+		});
+		// remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+};
+
+$.widget.extend = function( target ) {
+	var input = slice.call( arguments, 1 ),
+		inputIndex = 0,
+		inputLength = input.length,
+		key,
+		value;
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string",
+			args = slice.call( arguments, 1 ),
+			returnValue = this;
+
+		// allow multiple hashes to be passed on init
+		options = !isMethodCall && args.length ?
+			$.widget.extend.apply( null, [ options ].concat(args) ) :
+			options;
+
+		if ( isMethodCall ) {
+			this.each(function() {
+				var methodValue,
+					instance = $.data( this, fullName );
+				if ( !instance ) {
+					return $.error( "cannot call methods on " + name + " prior to initialization; " +
+						"attempted to call method '" + options + "'" );
+				}
+				if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
+					return $.error( "no such method '" + options + "' for " + name + " widget instance" );
+				}
+				methodValue = instance[ options ].apply( instance, args );
+				if ( methodValue !== instance && methodValue !== undefined ) {
+					returnValue = methodValue && methodValue.jquery ?
+						returnValue.pushStack( methodValue.get() ) :
+						methodValue;
+					return false;
+				}
+			});
+		} else {
+			this.each(function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} )._init();
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			});
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+	options: {
+		disabled: false,
+
+		// callbacks
+		create: null
+	},
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = uuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			});
+			this.document = $( element.style ?
+				// element within the document
+				element.ownerDocument :
+				// element is window or document
+				element.document || element );
+			this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
+		}
+
+		this._create();
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+	_getCreateOptions: $.noop,
+	_getCreateEventData: $.noop,
+	_create: $.noop,
+	_init: $.noop,
+
+	destroy: function() {
+		this._destroy();
+		// we can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.unbind( this.eventNamespace )
+			// 1.9 BC for #7810
+			// TODO remove dual storage
+			.removeData( this.widgetName )
+			.removeData( this.widgetFullName )
+			// support: jquery <1.6.3
+			// http://bugs.jquery.com/ticket/9413
+			.removeData( $.camelCase( this.widgetFullName ) );
+		this.widget()
+			.unbind( this.eventNamespace )
+			.removeAttr( "aria-disabled" )
+			.removeClass(
+				this.widgetFullName + "-disabled " +
+				"ui-state-disabled" );
+
+		// clean up events and states
+		this.bindings.unbind( this.eventNamespace );
+		this.hoverable.removeClass( "ui-state-hover" );
+		this.focusable.removeClass( "ui-state-focus" );
+	},
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key,
+			parts,
+			curOption,
+			i;
+
+		if ( arguments.length === 0 ) {
+			// don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+			// handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( arguments.length === 1 ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( arguments.length === 1 ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+	_setOption: function( key, value ) {
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this.widget()
+				.toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value )
+				.attr( "aria-disabled", value );
+			this.hoverable.removeClass( "ui-state-hover" );
+			this.focusable.removeClass( "ui-state-focus" );
+		}
+
+		return this;
+	},
+
+	enable: function() {
+		return this._setOption( "disabled", false );
+	},
+	disable: function() {
+		return this._setOption( "disabled", true );
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement,
+			instance = this;
+
+		// no suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// no element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			// accept selectors, DOM elements
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+				// allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+							$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^(\w+)\s*(.*)$/ ),
+				eventName = match[1] + instance.eventNamespace,
+				selector = match[2];
+			if ( selector ) {
+				delegateElement.delegate( selector, eventName, handlerProxy );
+			} else {
+				element.bind( eventName, handlerProxy );
+			}
+		});
+	},
+
+	_off: function( element, eventName ) {
+		eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace;
+		element.unbind( eventName ).undelegate( eventName );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-hover" );
+			}
+		});
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				$( event.currentTarget ).addClass( "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				$( event.currentTarget ).removeClass( "ui-state-focus" );
+			}
+		});
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig,
+			callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+		// the original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+		var hasOptions,
+			effectName = !options ?
+				method :
+				options === true || typeof options === "number" ?
+					defaultEffect :
+					options.effect || defaultEffect;
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue(function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			});
+		}
+	};
+});
+
+})( jQuery );
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/respond.min.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/respond.min.js
new file mode 100755
index 0000000..80a7b69
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/respond.min.js
@@ -0,0 +1,5 @@
+/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
+ * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
+ *  */
+
+!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/tmpl.min.js b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/tmpl.min.js
new file mode 100644
index 0000000..64bb2a3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.bundle/js/tmpl.min.js
@@ -0,0 +1 @@
+!function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r","	":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","'":"&#39;"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this);
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.h b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.h
new file mode 100644
index 0000000..02ff30d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.h
@@ -0,0 +1,197 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "GCDWebServer.h"
+
+@class GCDWebUploader;
+
+/**
+ *  Delegate methods for GCDWebUploader.
+ *
+ *  @warning These methods are always called on the main thread in a serialized way.
+ */
+@protocol GCDWebUploaderDelegate <GCDWebServerDelegate>
+@optional
+
+/**
+ *  This method is called whenever a file has been downloaded.
+ */
+- (void)webUploader:(GCDWebUploader*)uploader didDownloadFileAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a file has been uploaded.
+ */
+- (void)webUploader:(GCDWebUploader*)uploader didUploadFileAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a file or directory has been moved.
+ */
+- (void)webUploader:(GCDWebUploader*)uploader didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called whenever a file or directory has been deleted.
+ */
+- (void)webUploader:(GCDWebUploader*)uploader didDeleteItemAtPath:(NSString*)path;
+
+/**
+ *  This method is called whenever a directory has been created.
+ */
+- (void)webUploader:(GCDWebUploader*)uploader didCreateDirectoryAtPath:(NSString*)path;
+
+@end
+
+/**
+ *  The GCDWebUploader subclass of GCDWebServer implements an HTML 5 web browser
+ *  interface for uploading or downloading files, and moving or deleting files
+ *  or directories.
+ *
+ *  See the README.md file for more information about the features of GCDWebUploader.
+ *
+ *  @warning For GCDWebUploader to work, "GCDWebUploader.bundle" must be added
+ *  to the resources of the Xcode target.
+ */
+@interface GCDWebUploader : GCDWebServer
+
+/**
+ *  Returns the upload directory as specified when the uploader was initialized.
+ */
+@property(nonatomic, readonly) NSString* uploadDirectory;
+
+/**
+ *  Sets the delegate for the uploader.
+ */
+@property(nonatomic, assign) id<GCDWebUploaderDelegate> delegate;
+
+/**
+ *  Sets which files are allowed to be operated on depending on their extension.
+ *
+ *  The default value is nil i.e. all file extensions are allowed.
+ */
+@property(nonatomic, copy) NSArray* allowedFileExtensions;
+
+/**
+ *  Sets if files and directories whose name start with a period are allowed to
+ *  be operated on.
+ *
+ *  The default value is NO.
+ */
+@property(nonatomic) BOOL allowHiddenItems;
+
+/**
+ *  Sets the title for the uploader web interface.
+ *
+ *  The default value is the application name.
+ *
+ *  @warning Any reserved HTML characters in the string value for this property
+ *  must have been replaced by character entities e.g. "&" becomes "&amp;".
+ */
+@property(nonatomic, copy) NSString* title;
+
+/**
+ *  Sets the header for the uploader web interface.
+ *
+ *  The default value is the same as the title property.
+ *
+ *  @warning Any reserved HTML characters in the string value for this property
+ *  must have been replaced by character entities e.g. "&" becomes "&amp;".
+ */
+@property(nonatomic, copy) NSString* header;
+
+/**
+ *  Sets the prologue for the uploader web interface.
+ *
+ *  The default value is a short help text.
+ *
+ *  @warning The string value for this property must be raw HTML
+ *  e.g. "<p>Some text</p>"
+ */
+@property(nonatomic, copy) NSString* prologue;
+
+/**
+ *  Sets the epilogue for the uploader web interface.
+ *
+ *  The default value is nil i.e. no epilogue.
+ *
+ *  @warning The string value for this property must be raw HTML
+ *  e.g. "<p>Some text</p>"
+ */
+@property(nonatomic, copy) NSString* epilogue;
+
+/**
+ *  Sets the footer for the uploader web interface.
+ *
+ *  The default value is the application name and version.
+ *
+ *  @warning Any reserved HTML characters in the string value for this property
+ *  must have been replaced by character entities e.g. "&" becomes "&amp;".
+ */
+@property(nonatomic, copy) NSString* footer;
+
+/**
+ *  This method is the designated initializer for the class.
+ */
+- (instancetype)initWithUploadDirectory:(NSString*)path;
+
+@end
+
+/**
+ *  Hooks to customize the behavior of GCDWebUploader.
+ *
+ *  @warning These methods can be called on any GCD thread.
+ */
+@interface GCDWebUploader (Subclassing)
+
+/**
+ *  This method is called to check if a file upload is allowed to complete.
+ *  The uploaded file is available for inspection at "tempPath".
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldUploadFileAtPath:(NSString*)path withTemporaryFile:(NSString*)tempPath;
+
+/**
+ *  This method is called to check if a file or directory is allowed to be moved.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath;
+
+/**
+ *  This method is called to check if a file or directory is allowed to be deleted.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldDeleteItemAtPath:(NSString*)path;
+
+/**
+ *  This method is called to check if a directory is allowed to be created.
+ *
+ *  The default implementation returns YES.
+ */
+- (BOOL)shouldCreateDirectoryAtPath:(NSString*)path;
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.m b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.m
new file mode 100644
index 0000000..d88a45a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/GCDWebUploader/GCDWebUploader.m
@@ -0,0 +1,417 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if !__has_feature(objc_arc)
+#error GCDWebUploader requires ARC
+#endif
+
+#import <TargetConditionals.h>
+#if TARGET_OS_IPHONE
+#import <UIKit/UIKit.h>
+#else
+#import <SystemConfiguration/SystemConfiguration.h>
+#endif
+
+#import "GCDWebUploader.h"
+
+#import "GCDWebServerDataRequest.h"
+#import "GCDWebServerMultiPartFormRequest.h"
+#import "GCDWebServerURLEncodedFormRequest.h"
+
+#import "GCDWebServerDataResponse.h"
+#import "GCDWebServerErrorResponse.h"
+#import "GCDWebServerFileResponse.h"
+
+@interface GCDWebUploader () {
+@private
+  NSString* _uploadDirectory;
+  NSArray* _allowedExtensions;
+  BOOL _allowHidden;
+  NSString* _title;
+  NSString* _header;
+  NSString* _prologue;
+  NSString* _epilogue;
+  NSString* _footer;
+}
+@end
+
+@implementation GCDWebUploader (Methods)
+
+// Must match implementation in GCDWebDAVServer
+- (BOOL)_checkSandboxedPath:(NSString*)path {
+  return [[path stringByStandardizingPath] hasPrefix:_uploadDirectory];
+}
+
+- (BOOL)_checkFileExtension:(NSString*)fileName {
+  if (_allowedExtensions && ![_allowedExtensions containsObject:[[fileName pathExtension] lowercaseString]]) {
+    return NO;
+  }
+  return YES;
+}
+
+- (NSString*) _uniquePathForPath:(NSString*)path {
+  if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
+    NSString* directory = [path stringByDeletingLastPathComponent];
+    NSString* file = [path lastPathComponent];
+    NSString* base = [file stringByDeletingPathExtension];
+    NSString* extension = [file pathExtension];
+    int retries = 0;
+    do {
+      if (extension.length) {
+        path = [directory stringByAppendingPathComponent:[[base stringByAppendingFormat:@" (%i)", ++retries] stringByAppendingPathExtension:extension]];
+      } else {
+        path = [directory stringByAppendingPathComponent:[base stringByAppendingFormat:@" (%i)", ++retries]];
+      }
+    } while ([[NSFileManager defaultManager] fileExistsAtPath:path]);
+  }
+  return path;
+}
+
+- (GCDWebServerResponse*)listDirectory:(GCDWebServerRequest*)request {
+  NSString* relativePath = [[request query] objectForKey:@"path"];
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  if (!isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"\"%@\" is not a directory", relativePath];
+  }
+  
+  NSString* directoryName = [absolutePath lastPathComponent];
+  if (!_allowHidden && [directoryName hasPrefix:@"."]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Listing directory name \"%@\" is not allowed", directoryName];
+  }
+  
+  NSError* error = nil;
+  NSArray* contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:absolutePath error:&error];
+  if (contents == nil) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed listing directory \"%@\"", relativePath];
+  }
+  
+  NSMutableArray* array = [NSMutableArray array];
+  for (NSString* item in [contents sortedArrayUsingSelector:@selector(localizedStandardCompare:)]) {
+    if (_allowHidden || ![item hasPrefix:@"."]) {
+      NSDictionary* attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[absolutePath stringByAppendingPathComponent:item] error:NULL];
+      NSString* type = [attributes objectForKey:NSFileType];
+      if ([type isEqualToString:NSFileTypeRegular] && [self _checkFileExtension:item]) {
+        [array addObject:@{
+                           @"path": [relativePath stringByAppendingPathComponent:item],
+                           @"name": item,
+                           @"size": [attributes objectForKey:NSFileSize]
+                           }];
+      } else if ([type isEqualToString:NSFileTypeDirectory]) {
+        [array addObject:@{
+                           @"path": [[relativePath stringByAppendingPathComponent:item] stringByAppendingString:@"/"],
+                           @"name": item
+                           }];
+      }
+    }
+  }
+  return [GCDWebServerDataResponse responseWithJSONObject:array];
+}
+
+- (GCDWebServerResponse*)downloadFile:(GCDWebServerRequest*)request {
+  NSString* relativePath = [[request query] objectForKey:@"path"];
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  if (isDirectory) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_BadRequest message:@"\"%@\" is a directory", relativePath];
+  }
+  
+  NSString* fileName = [absolutePath lastPathComponent];
+  if (([fileName hasPrefix:@"."] && !_allowHidden) || ![self _checkFileExtension:fileName]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Downlading file name \"%@\" is not allowed", fileName];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(webUploader:didDownloadFileAtPath:  )]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate webUploader:self didDownloadFileAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerFileResponse responseWithFile:absolutePath isAttachment:YES];
+}
+
+- (GCDWebServerResponse*)uploadFile:(GCDWebServerMultiPartFormRequest*)request {
+  NSRange range = [[request.headers objectForKey:@"Accept"] rangeOfString:@"application/json" options:NSCaseInsensitiveSearch];
+  NSString* contentType = (range.location != NSNotFound ? @"application/json" : @"text/plain; charset=utf-8");  // Required when using iFrame transport (see https://github.com/blueimp/jQuery-File-Upload/wiki/Setup)
+  
+  GCDWebServerMultiPartFile* file = [request firstFileForControlName:@"files[]"];
+  if ((!_allowHidden && [file.fileName hasPrefix:@"."]) || ![self _checkFileExtension:file.fileName]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Uploaded file name \"%@\" is not allowed", file.fileName];
+  }
+  NSString* relativePath = [[request firstArgumentForControlName:@"path"] string];
+  NSString* absolutePath = [self _uniquePathForPath:[[_uploadDirectory stringByAppendingPathComponent:relativePath] stringByAppendingPathComponent:file.fileName]];
+  if (![self _checkSandboxedPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  if (![self shouldUploadFileAtPath:absolutePath withTemporaryFile:file.temporaryPath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Uploading file \"%@\" to \"%@\" is not permitted", file.fileName, relativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] moveItemAtPath:file.temporaryPath toPath:absolutePath error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed moving uploaded file to \"%@\"", relativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(webUploader:didUploadFileAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate webUploader:self didUploadFileAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerDataResponse responseWithJSONObject:@{} contentType:contentType];
+}
+
+- (GCDWebServerResponse*)moveItem:(GCDWebServerURLEncodedFormRequest*)request {
+  NSString* oldRelativePath = [request.arguments objectForKey:@"oldPath"];
+  NSString* oldAbsolutePath = [_uploadDirectory stringByAppendingPathComponent:oldRelativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:oldAbsolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:oldAbsolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", oldRelativePath];
+  }
+  
+  NSString* newRelativePath = [request.arguments objectForKey:@"newPath"];
+  NSString* newAbsolutePath = [self _uniquePathForPath:[_uploadDirectory stringByAppendingPathComponent:newRelativePath]];
+  if (![self _checkSandboxedPath:newAbsolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", newRelativePath];
+  }
+  
+  NSString* itemName = [newAbsolutePath lastPathComponent];
+  if ((!_allowHidden && [itemName hasPrefix:@"."]) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Moving to item name \"%@\" is not allowed", itemName];
+  }
+  
+  if (![self shouldMoveItemFromPath:oldAbsolutePath toPath:newAbsolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Moving \"%@\" to \"%@\" is not permitted", oldRelativePath, newRelativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] moveItemAtPath:oldAbsolutePath toPath:newAbsolutePath error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed moving \"%@\" to \"%@\"", oldRelativePath, newRelativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(webUploader:didMoveItemFromPath:toPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate webUploader:self didMoveItemFromPath:oldAbsolutePath toPath:newAbsolutePath];
+    });
+  }
+  return [GCDWebServerDataResponse responseWithJSONObject:@{}];
+}
+
+- (GCDWebServerResponse*)deleteItem:(GCDWebServerURLEncodedFormRequest*)request {
+  NSString* relativePath = [request.arguments objectForKey:@"path"];
+  NSString* absolutePath = [_uploadDirectory stringByAppendingPathComponent:relativePath];
+  BOOL isDirectory = NO;
+  if (![self _checkSandboxedPath:absolutePath] || ![[NSFileManager defaultManager] fileExistsAtPath:absolutePath isDirectory:&isDirectory]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* itemName = [absolutePath lastPathComponent];
+  if (([itemName hasPrefix:@"."] && !_allowHidden) || (!isDirectory && ![self _checkFileExtension:itemName])) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Deleting item name \"%@\" is not allowed", itemName];
+  }
+  
+  if (![self shouldDeleteItemAtPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Deleting \"%@\" is not permitted", relativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] removeItemAtPath:absolutePath error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed deleting \"%@\"", relativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(webUploader:didDeleteItemAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate webUploader:self didDeleteItemAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerDataResponse responseWithJSONObject:@{}];
+}
+
+- (GCDWebServerResponse*)createDirectory:(GCDWebServerURLEncodedFormRequest*)request {
+  NSString* relativePath = [request.arguments objectForKey:@"path"];
+  NSString* absolutePath = [self _uniquePathForPath:[_uploadDirectory stringByAppendingPathComponent:relativePath]];
+  if (![self _checkSandboxedPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_NotFound message:@"\"%@\" does not exist", relativePath];
+  }
+  
+  NSString* directoryName = [absolutePath lastPathComponent];
+  if (!_allowHidden && [directoryName hasPrefix:@"."]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Creating directory name \"%@\" is not allowed", directoryName];
+  }
+  
+  if (![self shouldCreateDirectoryAtPath:absolutePath]) {
+    return [GCDWebServerErrorResponse responseWithClientError:kGCDWebServerHTTPStatusCode_Forbidden message:@"Creating directory \"%@\" is not permitted", relativePath];
+  }
+  
+  NSError* error = nil;
+  if (![[NSFileManager defaultManager] createDirectoryAtPath:absolutePath withIntermediateDirectories:NO attributes:nil error:&error]) {
+    return [GCDWebServerErrorResponse responseWithServerError:kGCDWebServerHTTPStatusCode_InternalServerError underlyingError:error message:@"Failed creating directory \"%@\"", relativePath];
+  }
+  
+  if ([self.delegate respondsToSelector:@selector(webUploader:didCreateDirectoryAtPath:)]) {
+    dispatch_async(dispatch_get_main_queue(), ^{
+      [self.delegate webUploader:self didCreateDirectoryAtPath:absolutePath];
+    });
+  }
+  return [GCDWebServerDataResponse responseWithJSONObject:@{}];
+}
+
+@end
+
+@implementation GCDWebUploader
+
+@synthesize uploadDirectory=_uploadDirectory, allowedFileExtensions=_allowedExtensions, allowHiddenItems=_allowHidden,
+            title=_title, header=_header, prologue=_prologue, epilogue=_epilogue, footer=_footer;
+
+- (instancetype)initWithUploadDirectory:(NSString*)path {
+  if ((self = [super init])) {
+    NSBundle* siteBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"GCDWebUploader" ofType:@"bundle"]];
+    if (siteBundle == nil) {
+      return nil;
+    }
+    _uploadDirectory = [[path stringByStandardizingPath] copy];
+    GCDWebUploader* __unsafe_unretained server = self;
+    
+    // Resource files
+    [self addGETHandlerForBasePath:@"/" directoryPath:[siteBundle resourcePath] indexFilename:nil cacheAge:3600 allowRangeRequests:NO];
+    
+    // Web page
+    [self addHandlerForMethod:@"GET" path:@"/" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      
+#if TARGET_OS_IPHONE
+      NSString* device = [[UIDevice currentDevice] name];
+#else
+      NSString* device = CFBridgingRelease(SCDynamicStoreCopyComputerName(NULL, NULL));
+#endif
+      NSString* title = server.title;
+      if (title == nil) {
+        title = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
+        if (title == nil) {
+          title = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];
+        }
+#if !TARGET_OS_IPHONE
+        if (title == nil) {
+          title = [[NSProcessInfo processInfo] processName];
+        }
+#endif
+      }
+      NSString* header = server.header;
+      if (header == nil) {
+        header = title;
+      }
+      NSString* prologue = server.prologue;
+      if (prologue == nil) {
+        prologue = [siteBundle localizedStringForKey:@"PROLOGUE" value:@"" table:nil];
+      }
+      NSString* epilogue = server.epilogue;
+      if (epilogue == nil) {
+        epilogue = [siteBundle localizedStringForKey:@"EPILOGUE" value:@"" table:nil];
+      }
+      NSString* footer = server.footer;
+      if (footer == nil) {
+        NSString* name = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
+        NSString* version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
+#if !TARGET_OS_IPHONE
+        if (!name && !version) {
+          name = @"OS X";
+          version = [[NSProcessInfo processInfo] operatingSystemVersionString];
+        }
+#endif
+        footer = [NSString stringWithFormat:[siteBundle localizedStringForKey:@"FOOTER_FORMAT" value:@"" table:nil], name, version];
+      }
+      return [GCDWebServerDataResponse responseWithHTMLTemplate:[siteBundle pathForResource:@"index" ofType:@"html"]
+                                                      variables:@{
+                                                                  @"device": device,
+                                                                  @"title": title,
+                                                                  @"header": header,
+                                                                  @"prologue": prologue,
+                                                                  @"epilogue": epilogue,
+                                                                  @"footer": footer
+                                                                  }];
+      
+    }];
+    
+    // File listing
+    [self addHandlerForMethod:@"GET" path:@"/list" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server listDirectory:request];
+    }];
+    
+    // File download
+    [self addHandlerForMethod:@"GET" path:@"/download" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server downloadFile:request];
+    }];
+    
+    // File upload
+    [self addHandlerForMethod:@"POST" path:@"/upload" requestClass:[GCDWebServerMultiPartFormRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server uploadFile:(GCDWebServerMultiPartFormRequest*)request];
+    }];
+    
+    // File and folder moving
+    [self addHandlerForMethod:@"POST" path:@"/move" requestClass:[GCDWebServerURLEncodedFormRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server moveItem:(GCDWebServerURLEncodedFormRequest*)request];
+    }];
+    
+    // File and folder deletion
+    [self addHandlerForMethod:@"POST" path:@"/delete" requestClass:[GCDWebServerURLEncodedFormRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server deleteItem:(GCDWebServerURLEncodedFormRequest*)request];
+    }];
+    
+    // Directory creation
+    [self addHandlerForMethod:@"POST" path:@"/create" requestClass:[GCDWebServerURLEncodedFormRequest class] processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      return [server createDirectory:(GCDWebServerURLEncodedFormRequest*)request];
+    }];
+    
+  }
+  return self;
+}
+
+@end
+
+@implementation GCDWebUploader (Subclassing)
+
+- (BOOL)shouldUploadFileAtPath:(NSString*)path withTemporaryFile:(NSString*)tempPath {
+  return YES;
+}
+
+- (BOOL)shouldMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  return YES;
+}
+
+- (BOOL)shouldDeleteItemAtPath:(NSString*)path {
+  return YES;
+}
+
+- (BOOL)shouldCreateDirectoryAtPath:(NSString*)path {
+  return YES;
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/LICENSE b/local-webserver/src/ios/GCDWebServer/LICENSE
new file mode 100644
index 0000000..12335de
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/LICENSE
@@ -0,0 +1,24 @@
+Copyright (c) 2012-2014, Pierre-Olivier Latour
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * The name of Pierre-Olivier Latour may not be used to endorse
+      or promote products derived from this software without specific
+      prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/local-webserver/src/ios/GCDWebServer/Mac/main.m b/local-webserver/src/ios/GCDWebServer/Mac/main.m
new file mode 100644
index 0000000..f446ce0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Mac/main.m
@@ -0,0 +1,407 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <libgen.h>
+
+#import "GCDWebServer.h"
+
+#import "GCDWebServerDataRequest.h"
+#import "GCDWebServerURLEncodedFormRequest.h"
+#import "GCDWebServerMultiPartFormRequest.h"
+
+#import "GCDWebServerDataResponse.h"
+#import "GCDWebServerStreamedResponse.h"
+
+#import "GCDWebDAVServer.h"
+
+#import "GCDWebUploader.h"
+
+#ifndef __GCDWEBSERVER_ENABLE_TESTING__
+#error __GCDWEBSERVER_ENABLE_TESTING__ must be defined
+#endif
+
+typedef enum {
+  kMode_WebServer = 0,
+  kMode_HTMLPage,
+  kMode_HTMLForm,
+  kMode_HTMLFileUpload,
+  kMode_WebDAV,
+  kMode_WebUploader,
+  kMode_StreamingResponse,
+  kMode_AsyncResponse
+} Mode;
+
+@interface Delegate : NSObject <GCDWebServerDelegate, GCDWebDAVServerDelegate, GCDWebUploaderDelegate>
+@end
+
+@implementation Delegate
+
+- (void)_logDelegateCall:(SEL)selector {
+  fprintf(stdout, "<DELEGATE METHOD \"%s\" CALLED>\n", [NSStringFromSelector(selector) UTF8String]);
+}
+
+- (void)webServerDidStart:(GCDWebServer*)server {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webServerDidCompleteBonjourRegistration:(GCDWebServer*)server {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webServerDidConnect:(GCDWebServer*)server {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webServerDidDisconnect:(GCDWebServer*)server {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webServerDidStop:(GCDWebServer*)server {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didDownloadFileAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didUploadFileAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didCopyItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didDeleteItemAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)davServer:(GCDWebDAVServer*)server didCreateDirectoryAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didDownloadFileAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didUploadFileAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didDeleteItemAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didCreateDirectoryAtPath:(NSString*)path {
+  [self _logDelegateCall:_cmd];
+}
+
+@end
+
+int main(int argc, const char* argv[]) {
+  int result = -1;
+  @autoreleasepool {
+    Mode mode = kMode_WebServer;
+    BOOL recording = NO;
+    NSString* rootDirectory = NSHomeDirectory();
+    NSString* testDirectory = nil;
+    NSString* authenticationMethod = nil;
+    NSString* authenticationRealm = nil;
+    NSString* authenticationUser = nil;
+    NSString* authenticationPassword = nil;
+    
+    if (argc == 1) {
+      fprintf(stdout, "Usage: %s [-mode webServer | htmlPage | htmlForm | htmlFileUpload | webDAV | webUploader | streamingResponse | asyncResponse] [-record] [-root directory] [-tests directory] [-authenticationMethod Basic | Digest] [-authenticationRealm realm] [-authenticationUser user] [-authenticationPassword password]\n\n", basename((char*)argv[0]));
+    } else {
+      for (int i = 1; i < argc; ++i) {
+        if (argv[i][0] != '-') {
+          continue;
+        }
+        if (!strcmp(argv[i], "-mode") && (i + 1 < argc)) {
+          ++i;
+          if (!strcmp(argv[i], "webServer")) {
+            mode = kMode_WebServer;
+          } else if (!strcmp(argv[i], "htmlPage")) {
+            mode = kMode_HTMLPage;
+          } else if (!strcmp(argv[i], "htmlForm")) {
+            mode = kMode_HTMLForm;
+          } else if (!strcmp(argv[i], "htmlFileUpload")) {
+            mode = kMode_HTMLFileUpload;
+          } else if (!strcmp(argv[i], "webDAV")) {
+            mode = kMode_WebDAV;
+          } else if (!strcmp(argv[i], "webUploader")) {
+            mode = kMode_WebUploader;
+          } else if (!strcmp(argv[i], "streamingResponse")) {
+            mode = kMode_StreamingResponse;
+          } else if (!strcmp(argv[i], "asyncResponse")) {
+            mode = kMode_AsyncResponse;
+          }
+        } else if (!strcmp(argv[i], "-record")) {
+          recording = YES;
+        } else if (!strcmp(argv[i], "-root") && (i + 1 < argc)) {
+          ++i;
+          rootDirectory = [[[NSFileManager defaultManager] stringWithFileSystemRepresentation:argv[i] length:strlen(argv[i])] stringByStandardizingPath];
+        } else if (!strcmp(argv[i], "-tests") && (i + 1 < argc)) {
+          ++i;
+          testDirectory = [[[NSFileManager defaultManager] stringWithFileSystemRepresentation:argv[i] length:strlen(argv[i])] stringByStandardizingPath];
+        } else if (!strcmp(argv[i], "-authenticationMethod") && (i + 1 < argc)) {
+          ++i;
+          authenticationMethod = [NSString stringWithUTF8String:argv[i]];
+        } else if (!strcmp(argv[i], "-authenticationRealm") && (i + 1 < argc)) {
+          ++i;
+          authenticationRealm = [NSString stringWithUTF8String:argv[i]];
+        } else if (!strcmp(argv[i], "-authenticationUser") && (i + 1 < argc)) {
+          ++i;
+          authenticationUser = [NSString stringWithUTF8String:argv[i]];
+        } else if (!strcmp(argv[i], "-authenticationPassword") && (i + 1 < argc)) {
+          ++i;
+          authenticationPassword = [NSString stringWithUTF8String:argv[i]];
+        }
+      }
+    }
+    
+    GCDWebServer* webServer = nil;
+    switch (mode) {
+      
+      // Simply serve contents of home directory
+      case kMode_WebServer: {
+        fprintf(stdout, "Running in Web Server mode from \"%s\"", [rootDirectory UTF8String]);
+        webServer = [[GCDWebServer alloc] init];
+        [webServer addGETHandlerForBasePath:@"/" directoryPath:rootDirectory indexFilename:nil cacheAge:0 allowRangeRequests:YES];
+        break;
+      }
+      
+      // Renders a HTML page
+      case kMode_HTMLPage: {
+        fprintf(stdout, "Running in HTML Page mode");
+        webServer = [[GCDWebServer alloc] init];
+        [webServer addDefaultHandlerForMethod:@"GET"
+                                 requestClass:[GCDWebServerRequest class]
+                                 processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          return [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
+          
+        }];
+        break;
+      }
+      
+      // Implements an HTML form
+      case kMode_HTMLForm: {
+        fprintf(stdout, "Running in HTML Form mode");
+        webServer = [[GCDWebServer alloc] init];
+        [webServer addHandlerForMethod:@"GET"
+                                  path:@"/"
+                          requestClass:[GCDWebServerRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          NSString* html = @" \
+            <html><body> \
+              <form name=\"input\" action=\"/\" method=\"post\" enctype=\"application/x-www-form-urlencoded\"> \
+              Value: <input type=\"text\" name=\"value\"> \
+              <input type=\"submit\" value=\"Submit\"> \
+              </form> \
+            </body></html> \
+          ";
+          return [GCDWebServerDataResponse responseWithHTML:html];
+          
+        }];
+        [webServer addHandlerForMethod:@"POST"
+                                  path:@"/"
+                          requestClass:[GCDWebServerURLEncodedFormRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          NSString* value = [[(GCDWebServerURLEncodedFormRequest*)request arguments] objectForKey:@"value"];
+          NSString* html = [NSString stringWithFormat:@"<html><body><p>%@</p></body></html>", value];
+          return [GCDWebServerDataResponse responseWithHTML:html];
+          
+        }];
+        break;
+      }
+      
+      // Implements HTML file upload
+      case kMode_HTMLFileUpload: {
+        fprintf(stdout, "Running in HTML File Upload mode");
+        webServer = [[GCDWebServer alloc] init];
+        NSString* formHTML = @" \
+          <form name=\"input\" action=\"/\" method=\"post\" enctype=\"multipart/form-data\"> \
+          <input type=\"hidden\" name=\"secret\" value=\"42\"> \
+          <input type=\"file\" name=\"files\" multiple><br/> \
+          <input type=\"submit\" value=\"Submit\"> \
+          </form> \
+        ";
+        [webServer addHandlerForMethod:@"GET"
+                                  path:@"/"
+                          requestClass:[GCDWebServerRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          NSString* html = [NSString stringWithFormat:@"<html><body>%@</body></html>", formHTML];
+          return [GCDWebServerDataResponse responseWithHTML:html];
+          
+        }];
+        [webServer addHandlerForMethod:@"POST"
+                                  path:@"/"
+                          requestClass:[GCDWebServerMultiPartFormRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          NSMutableString* string = [NSMutableString string];
+          for (GCDWebServerMultiPartArgument* argument in [(GCDWebServerMultiPartFormRequest*)request arguments]) {
+            [string appendFormat:@"%@ = %@<br>", argument.controlName, argument.string];
+          }
+          for (GCDWebServerMultiPartFile* file in [(GCDWebServerMultiPartFormRequest*)request files]) {
+            NSDictionary* attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:file.temporaryPath error:NULL];
+            [string appendFormat:@"%@ = &quot;%@&quot; (%@ | %llu %@)<br>", file.controlName, file.fileName, file.mimeType,
+                                 attributes.fileSize >= 1000 ? attributes.fileSize / 1000 : attributes.fileSize,
+                                 attributes.fileSize >= 1000 ? @"KB" : @"Bytes"];
+          };
+          NSString* html = [NSString stringWithFormat:@"<html><body><p>%@</p><hr>%@</body></html>", string, formHTML];
+          return [GCDWebServerDataResponse responseWithHTML:html];
+          
+        }];
+        break;
+      }
+      
+      // Serve home directory through WebDAV
+      case kMode_WebDAV: {
+        fprintf(stdout, "Running in WebDAV mode from \"%s\"", [rootDirectory UTF8String]);
+        webServer = [[GCDWebDAVServer alloc] initWithUploadDirectory:rootDirectory];
+        break;
+      }
+      
+      // Serve home directory through web uploader
+      case kMode_WebUploader: {
+        fprintf(stdout, "Running in Web Uploader mode from \"%s\"", [rootDirectory UTF8String]);
+        webServer = [[GCDWebUploader alloc] initWithUploadDirectory:rootDirectory];
+        break;
+      }
+      
+      // Test streaming responses
+      case kMode_StreamingResponse: {
+        fprintf(stdout, "Running in Streaming Response mode");
+        webServer = [[GCDWebServer alloc] init];
+        [webServer addHandlerForMethod:@"GET"
+                                  path:@"/sync"
+                          requestClass:[GCDWebServerRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          __block int countDown = 10;
+          return [GCDWebServerStreamedResponse responseWithContentType:@"text/plain" streamBlock:^NSData *(NSError** error) {
+            
+            usleep(100 * 1000);
+            if (countDown) {
+              return [[NSString stringWithFormat:@"%i\n", countDown--] dataUsingEncoding:NSUTF8StringEncoding];
+            } else {
+              return [NSData data];
+            }
+            
+          }];
+          
+        }];
+        [webServer addHandlerForMethod:@"GET"
+                                  path:@"/async"
+                          requestClass:[GCDWebServerRequest class]
+                          processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+          
+          __block int countDown = 10;
+          return [GCDWebServerStreamedResponse responseWithContentType:@"text/plain" asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) {
+            
+            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+              
+              NSData* data = countDown ? [[NSString stringWithFormat:@"%i\n", countDown--] dataUsingEncoding:NSUTF8StringEncoding] : [NSData data];
+              completionBlock(data, nil);
+              
+            });
+            
+          }];
+          
+        }];
+        break;
+      }
+      
+      // Test async responses
+      case kMode_AsyncResponse: {
+        fprintf(stdout, "Running in Async Response mode");
+        webServer = [[GCDWebServer alloc] init];
+        [webServer addHandlerForMethod:@"GET"
+                                  path:@"/"
+                          requestClass:[GCDWebServerRequest class]
+                     asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+          
+          dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            GCDWebServerDataResponse* response = [GCDWebServerDataResponse responseWithData:[@"Hello World!" dataUsingEncoding:NSUTF8StringEncoding] contentType:@"text/plain"];
+            completionBlock(response);
+          });
+          
+        }];
+        break;
+      }
+      
+    }
+    
+    if (webServer) {
+      Delegate* delegate = [[Delegate alloc] init];
+      if (testDirectory) {
+#if DEBUG
+        webServer.delegate = delegate;
+#endif
+        fprintf(stdout, "<RUNNING TESTS FROM \"%s\">\n\n", [testDirectory UTF8String]);
+        result = (int)[webServer runTestsWithOptions:@{GCDWebServerOption_Port: @8080} inDirectory:testDirectory];
+      } else {
+        webServer.delegate = delegate;
+        if (recording) {
+          fprintf(stdout, "<RECORDING ENABLED>\n");
+          webServer.recordingEnabled = YES;
+        }
+        fprintf(stdout, "\n");
+        NSMutableDictionary* options = [NSMutableDictionary dictionary];
+        [options setObject:@8080 forKey:GCDWebServerOption_Port];
+        [options setObject:@"" forKey:GCDWebServerOption_BonjourName];
+        if (authenticationUser && authenticationPassword) {
+          [options setValue:authenticationRealm forKey:GCDWebServerOption_AuthenticationRealm];
+          [options setObject:@{authenticationUser: authenticationPassword} forKey:GCDWebServerOption_AuthenticationAccounts];
+          if ([authenticationMethod isEqualToString:@"Basic"]) {
+            [options setObject:GCDWebServerAuthenticationMethod_Basic forKey:GCDWebServerOption_AuthenticationMethod];
+          } else if ([authenticationMethod isEqualToString:@"Digest"]) {
+            [options setObject:GCDWebServerAuthenticationMethod_DigestAccess forKey:GCDWebServerOption_AuthenticationMethod];
+          }
+        }
+        if ([webServer runWithOptions:options error:NULL]) {
+          result = 0;
+        }
+      }
+      webServer.delegate = nil;
+    }
+  }
+  return result;
+}
diff --git a/local-webserver/src/ios/GCDWebServer/README.md b/local-webserver/src/ios/GCDWebServer/README.md
new file mode 100644
index 0000000..357586a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/README.md
@@ -0,0 +1,444 @@
+Overview
+========
+
+[![Build Status](https://travis-ci.org/swisspol/GCDWebServer.svg?branch=master)](https://travis-ci.org/swisspol/GCDWebServer)
+[![Version](http://cocoapod-badges.herokuapp.com/v/GCDWebServer/badge.png)](http://cocoadocs.org/docsets/GCDWebServer)
+[![Platform](http://cocoapod-badges.herokuapp.com/p/GCDWebServer/badge.png)](https://github.com/swisspol/GCDWebServer)
+[![License](http://img.shields.io/cocoapods/l/GCDWebServer.svg)](LICENSE)
+
+*ANNOUNCEMENT: If you like GCDWebServer, check out [XLFacility](https://github.com/swisspol/XLFacility), an elegant and powerful logging facility for OS X & iOS by the same author and also open-source. XLFacility can be used seemlessly to handle logging from GCDWebServer (see "Logging in GCDWebServer" below).*
+
+GCDWebServer is a modern and lightweight GCD based HTTP 1.1 server designed to be embedded in OS X & iOS apps. It was written from scratch with the following goals in mind:
+* Elegant and easy to use architecture with only 4 core classes: server, connection, request and response (see "Understanding GCDWebServer's Architecture" below)
+* Well designed API with fully documented headers for easy integration and customization
+* Entirely built with an event-driven design using [Grand Central Dispatch](http://en.wikipedia.org/wiki/Grand_Central_Dispatch) for best performance and concurrency
+* No dependencies on third-party source code
+* Available under a friendly [New BSD License](LICENSE)
+
+Extra built-in features:
+* Allow implementation of fully asynchronous handlers of incoming HTTP requests
+* Minimize memory usage with disk streaming of large HTTP request or response bodies
+* Parser for [web forms](http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4) submitted using "application/x-www-form-urlencoded" or "multipart/form-data" encodings (including file uploads)
+* [JSON](http://www.json.org/) parsing and serialization for request and response HTTP bodies
+* [Chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) for request and response HTTP bodies
+* [HTTP compression](https://en.wikipedia.org/wiki/HTTP_compression) with gzip for request and response HTTP bodies
+* [HTTP range](https://en.wikipedia.org/wiki/Byte_serving) support for requests of local files
+* [Basic](https://en.wikipedia.org/wiki/Basic_access_authentication) and [Digest Access](https://en.wikipedia.org/wiki/Digest_access_authentication) authentications for password protection
+* Automatically handle transitions between foreground, background and suspended modes in iOS apps
+* Full support for both IPv4 and IPv6
+
+Included extensions:
+* [GCDWebUploader](GCDWebUploader/GCDWebUploader.h): subclass of ```GCDWebServer``` that implements an interface for uploading and downloading files using a web browser
+* [GCDWebDAVServer](GCDWebDAVServer/GCDWebDAVServer.h): subclass of ```GCDWebServer``` that implements a class 1 [WebDAV](https://en.wikipedia.org/wiki/WebDAV) server (with partial class 2 support for OS X Finder)
+
+What's not supported (but not really required from an embedded HTTP server):
+* Keep-alive connections
+* HTTPS
+
+Requirements:
+* OS X 10.7 or later (x86_64)
+* iOS 5.0 or later (armv7, armv7s or arm64)
+* ARC memory management only (if you need MRC support use GCDWebServer 3.1 and earlier)
+
+Getting Started
+===============
+
+Download or check out the [latest release](https://github.com/swisspol/GCDWebServer/releases) of GCDWebServer then add the entire "GCDWebServer" subfolder to your Xcode project. If you intend to use one of the extensions like GCDWebDAVServer or GCDWebUploader, add these subfolders as well.
+
+Alternatively, you can install GCDWebServer using [CocoaPods](http://cocoapods.org/) by simply adding this line to your Xcode project's Podfile:
+```
+pod "GCDWebServer", "~> 3.0"
+```
+If you want to use GCDWebUploader, use this line instead:
+```
+pod "GCDWebServer/WebUploader", "~> 3.0"
+```
+Or this line for GCDWebDAVServer:
+```
+pod "GCDWebServer/WebDAV", "~> 3.0"
+```
+
+Hello World
+===========
+
+These code snippets show how to implement a custom HTTP server that runs on port 8080 and returns a "Hello World" HTML page to any request. Since GCDWebServer uses GCD blocks to handle requests, no subclassing or delegates are needed, which results in very clean code.
+
+**OS X version (command line tool):**
+```objectivec
+#import "GCDWebServer.h"
+#import "GCDWebServerDataResponse.h"
+
+int main(int argc, const char* argv[]) {
+  @autoreleasepool {
+    
+    // Create server
+    GCDWebServer* webServer = [[GCDWebServer alloc] init];
+    
+    // Add a handler to respond to GET requests on any URL
+    [webServer addDefaultHandlerForMethod:@"GET"
+                             requestClass:[GCDWebServerRequest class]
+                             processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+      
+      return [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
+      
+    }];
+    
+    // Use convenience method that runs server on port 8080
+    // until SIGINT (Ctrl-C in Terminal) or SIGTERM is received
+    [webServer runWithPort:8080 bonjourName:nil];
+    NSLog(@"Visit %@ in your web browser", webServer.serverURL);
+    
+  }
+  return 0;
+}
+```
+
+**iOS version:**
+```objectivec
+#import "GCDWebServer.h"
+#import "GCDWebServerDataResponse.h"
+
+@interface AppDelegate : NSObject <UIApplicationDelegate> {
+  GCDWebServer* _webServer;
+}
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
+  
+  // Create server
+  _webServer = [[GCDWebServer alloc] init];
+  
+  // Add a handler to respond to GET requests on any URL
+  [_webServer addDefaultHandlerForMethod:@"GET"
+                            requestClass:[GCDWebServerRequest class]
+                            processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+    return [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
+    
+  }];
+  
+  // Start server on port 8080
+  [_webServer startWithPort:8080 bonjourName:nil];
+  NSLog(@"Visit %@ in your web browser", _webServer.serverURL);
+  
+  return YES;
+}
+
+@end
+```
+
+**OS X Swift version (command line tool):**
+
+***webServer.swift***
+```swift
+import Foundation
+
+let webServer = GCDWebServer()
+
+webServer.addDefaultHandlerForMethod("GET", requestClass: GCDWebServerRequest.self) { request in
+    return GCDWebServerDataResponse(HTML:"<html><body><p>Hello World</p></body></html>")
+}
+
+webServer.runWithPort(8080, bonjourName: nil)
+
+println("Visit \(webServer.serverURL) in your web browser")
+```
+
+***WebServer-Bridging-Header.h***
+```objectivec
+#import "GCDWebServer.h"
+#import "GCDWebServerDataResponse.h"
+```
+
+Asynchronous HTTP Responses
+===========================
+
+New in GCDWebServer 3.0 is the ability to process HTTP requests aysnchronously i.e. add handlers to the server which generate their ```GCDWebServerResponse``` asynchronously. This is achieved by adding handlers that use a ```GCDWebServerAsyncProcessBlock``` instead of a ```GCDWebServerProcessBlock```. Here's an example:
+
+**(Synchronous version)** The handler blocks while generating the HTTP response:
+```objectivec
+[webServer addDefaultHandlerForMethod:@"GET"
+                         requestClass:[GCDWebServerRequest class]
+                         processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+  
+  GCDWebServerDataResponse* response = [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
+  return response;
+  
+}];
+```
+
+**(Asynchronous version)** The handler returns immediately and calls back GCDWebServer later with the generated HTTP response:
+```objectivec
+[webServer addDefaultHandlerForMethod:@"GET"
+                         requestClass:[GCDWebServerRequest class]
+                    asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+  
+  // Do some async operation like network access or file I/O (simulated here using dispatch_after())
+  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    GCDWebServerDataResponse* response = [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
+    completionBlock(response);
+  });
+
+}];
+```
+
+**(Advanced asynchronous version)** The handler returns immediately a streamed HTTP response which itself generates its contents asynchronously:
+```objectivec
+[webServer addDefaultHandlerForMethod:@"GET"
+                         requestClass:[GCDWebServerRequest class]
+                    asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {
+  
+  GCDWebServerStreamedResponse* response = [GCDWebServerStreamedResponse responseWithContentType:@"text/html" asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) {
+    
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+      completionBlock([@"<html><body><p>Hello" dataUsingEncoding:NSUTF8StringEncoding], nil);  // Generate the 1st part of the stream data
+      
+      dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        completionBlock([@"World</p></body></html>" dataUsingEncoding:NSUTF8StringEncoding], nil);  // Generate the 2nd part of the stream data
+        
+        completionBlock([NSData data], nil);  // Must pass an empty NSData to signal the end of the stream
+       });
+       
+    });
+    
+  }];
+  return response;
+
+}];
+```
+
+*Note that you can even combine both the asynchronous and advanced asynchronous versions to return asynchronously an asynchronous HTTP response!*
+
+Web Based Uploads in iOS Apps
+=============================
+
+GCDWebUploader is a subclass of ```GCDWebServer``` that provides a ready-to-use HTML 5 file uploader & downloader. This lets users upload, download, delete files and create directories from a directory inside your iOS app's sandbox using a clean user interface in their web browser.
+
+Simply instantiate and run a ```GCDWebUploader``` instance then visit ```http://{YOUR-IOS-DEVICE-IP-ADDRESS}/``` from your web browser:
+
+```objectivec
+#import "GCDWebUploader.h"
+
+@interface AppDelegate : NSObject <UIApplicationDelegate> {
+  GCDWebUploader* _webUploader;
+}
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
+  NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
+  _webUploader = [[GCDWebUploader alloc] initWithUploadDirectory:documentsPath];
+  [_webUploader start];
+  NSLog(@"Visit %@ in your web browser", _webUploader.serverURL);
+  return YES;
+}
+
+@end
+```
+
+WebDAV Server in iOS Apps
+=========================
+
+GCDWebDAVServer is a subclass of ```GCDWebServer``` that provides a class 1 compliant [WebDAV](https://en.wikipedia.org/wiki/WebDAV) server. This lets users upload, download, delete files and create directories from a directory inside your iOS app's sandbox using any WebDAV client like [Transmit](https://panic.com/transmit/) (Mac), [ForkLift](http://binarynights.com/forklift/) (Mac) or [CyberDuck](http://cyberduck.io/) (Mac / Windows).
+
+GCDWebDAVServer should also work with the [OS X Finder](http://support.apple.com/kb/PH13859) as it is partially class 2 compliant (but only when the client is the OS X WebDAV implementation).
+
+Simply instantiate and run a ```GCDWebDAVServer``` instance then connect to ```http://{YOUR-IOS-DEVICE-IP-ADDRESS}/``` using a WebDAV client:
+
+```objectivec
+#import "GCDWebDAVServer.h"
+
+@interface AppDelegate : NSObject <UIApplicationDelegate> {
+  GCDWebDAVServer* _davServer;
+}
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
+  NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
+  _davServer = [[GCDWebDAVServer alloc] initWithUploadDirectory:documentsPath];
+  [_davServer start];
+  NSLog(@"Visit %@ in your WebDAV client", _davServer.serverURL);
+  return YES;
+}
+
+@end
+```
+
+Serving a Static Website
+========================
+
+GCDWebServer includes a built-in handler that can recursively serve a directory (it also lets you control how the ["Cache-Control"](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) header should be set):
+
+```objectivec
+#import "GCDWebServer.h"
+
+int main(int argc, const char* argv[]) {
+  @autoreleasepool {
+    
+    GCDWebServer* webServer = [[GCDWebServer alloc] init];
+    [webServer addGETHandlerForBasePath:@"/" directoryPath:NSHomeDirectory() indexFilename:nil cacheAge:3600 allowRangeRequests:YES];
+    [webServer runWithPort:8080];
+    
+  }
+  return 0;
+}
+```
+
+Using GCDWebServer
+==================
+
+You start by creating an instance of the ```GCDWebServer``` class. Note that you can have multiple web servers running in the same app as long as they listen on different ports.
+
+Then you add one or more "handlers" to the server: each handler gets a chance to handle an incoming web request and provide a response. Handlers are called in a LIFO queue, so the latest added handler overrides any previously added ones.
+
+Finally you start the server on a given port.
+
+Understanding GCDWebServer's Architecture
+=========================================
+
+GCDWebServer's architecture consists of only 4 core classes:
+* [GCDWebServer](GCDWebServer/Core/GCDWebServer.h) manages the socket that listens for new HTTP connections and the list of handlers used by the server.
+* [GCDWebServerConnection](GCDWebServer/Core/GCDWebServerConnection.h) is instantiated by ```GCDWebServer``` to handle each new HTTP connection. Each instance stays alive until the connection is closed. You cannot use this class directly, but it is exposed so you can subclass it to override some hooks.
+* [GCDWebServerRequest](GCDWebServer/Core/GCDWebServerRequest.h) is created by the ```GCDWebServerConnection``` instance after HTTP headers have been received. It wraps the request and handles the HTTP body if any. GCDWebServer comes with [several subclasses](GCDWebServer/Requests) of ```GCDWebServerRequest``` to handle common cases like storing the body in memory or stream it to a file on disk.
+* [GCDWebServerResponse](GCDWebServer/Core/GCDWebServerResponse.h) is created by the request handler and wraps the response HTTP headers and optional body. GCDWebServer comes with [several subclasses](GCDWebServer/Responses) of ```GCDWebServerResponse``` to handle common cases like HTML text in memory or streaming a file from disk.
+
+Implementing Handlers
+=====================
+
+GCDWebServer relies on "handlers" to process incoming web requests and generating responses. Handlers are implemented with GCD blocks which makes it very easy to provide your owns. However, they are executed on arbitrary threads within GCD so __special attention must be paid to thread-safety and re-entrancy__.
+
+Handlers require 2 GCD blocks:
+* The ```GCDWebServerMatchBlock``` is called on every handler added to the ```GCDWebServer``` instance whenever a web request has started (i.e. HTTP headers have been received). It is passed the basic info for the web request (HTTP method, URL, headers...) and must decide if it wants to handle it or not. If yes, it must return a new ```GCDWebServerRequest``` instance (see above) created with this info. Otherwise, it simply returns nil.
+* The ```GCDWebServerProcessBlock``` or ```GCDWebServerAsyncProcessBlock``` is called after the web request has been fully received and is passed the ```GCDWebServerRequest``` instance created at the previous step. It must return synchronously (if using ```GCDWebServerProcessBlock```) or asynchronously (if using ```GCDWebServerAsyncProcessBlock```) a ```GCDWebServerResponse``` instance (see above) or nil on error, which will result in a 500 HTTP status code returned to the client. It's however recommended to return an instance of [GCDWebServerErrorResponse](GCDWebServer/Responses/GCDWebServerErrorResponse.h) on error so more useful information can be returned to the client.
+
+Note that most methods on ```GCDWebServer``` to add handlers only require the ```GCDWebServerProcessBlock``` or ```GCDWebServerAsyncProcessBlock``` as they already provide a built-in ```GCDWebServerMatchBlock``` e.g. to match a URL path with a Regex.
+
+GCDWebServer & Background Mode for iOS Apps
+===========================================
+
+When doing networking operations in iOS apps, you must handle carefully [what happens when iOS puts the app in the background](https://developer.apple.com/library/ios/technotes/tn2277/_index.html). Typically you must stop any network servers while the app is in the background and restart them when the app comes back to the foreground. This can become quite complex considering servers might have ongoing connections when they need to be stopped.
+
+Fortunately, GCDWebServer does all of this automatically for you:
+- GCDWebServer begins a [background task](https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html) whenever the first HTTP connection is opened and ends it only when the last one is closed. This prevents iOS from suspending the app after it goes in the background, which would immediately kill HTTP connections to the client.
+ - While the app is in the background, as long as new HTTP connections keep being initiated, the background task will continue to exist and iOS will not suspend the app (unless under sudden and unexpected memory pressure).
+ - If the app is still in the background when the last HTTP connection is closed, GCDWebServer will suspend itself and stop accepting new connections as if you had called ```-stop``` (this behavior can be disabled with the ```GCDWebServerOption_AutomaticallySuspendInBackground``` option).
+- If the app goes in the background while no HTTP connections are opened, GCDWebServer will immediately suspend itself and stop accepting new connections as if you had called ```-stop``` (this behavior can be disabled with the ```GCDWebServerOption_AutomaticallySuspendInBackground``` option).
+- If the app comes back to the foreground and GCDWebServer had been suspended, it will automatically resume itself and start accepting again new HTTP connections as if you had called ```-start```.
+
+HTTP connections are often initiated in batches (or bursts), for instance when loading a web page with multiple resources. This makes it difficult to accurately detect when the *very last* HTTP connection has been closed: it's possible 2 consecutive HTTP connections part of the same batch would be separated by a small delay instead of overlapping. It would be bad for the client if GCDWebServer suspended itself right in between. The ```GCDWebServerOption_ConnectedStateCoalescingInterval``` option solves this problem elegantly by forcing GCDWebServer to wait some extra delay before performing any action after the last HTTP connection has been closed, just in case a new HTTP connection is initiated within this delay.
+
+Logging in GCDWebServer
+=======================
+
+Both for debugging and informational purpose, GCDWebServer logs messages extensively whenever something happens. Furthermore, when building GCDWebServer in "Debug" mode versus "Release" mode, it logs even more information but also performs a number of internal consistency checks. To enable this behavior, define the preprocessor constant ```DEBUG=1``` when compiling GCDWebServer. In Xcode target settings, this can be done by adding ```DEBUG=1``` to the build setting ```GCC_PREPROCESSOR_DEFINITIONS``` when building in "Debug" configuration. Finally, you can also control the logging verbosity at run time by calling ```+[GCDWebServer setLogLevel:]```.
+
+By default, all messages logged by GCDWebServer are sent to its built-in logging facility, which simply outputs to ```stderr``` (assuming a terminal type device is connected). In order to better integrate with the rest of your app or because of the amount of information logged, you might want to use another logging facility.
+
+GCDWebServer has automatic support for [XLFacility](https://github.com/swisspol/XLFacility) (by the same author as GCDWebServer and also open-source) and [CocoaLumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack). If either of them is in the same Xcode project, GCDWebServer should use it automatically instead of the built-in logging facility (see [GCDWebServerPrivate.h](GCDWebServer/Core/GCDWebServerPrivate.h) for the implementation details).
+
+It's also possible to use a custom logging facility - see [GCDWebServer.h](GCDWebServer/Core/GCDWebServer.h) for more information.
+
+Advanced Example 1: Implementing HTTP Redirects
+===============================================
+
+Here's an example handler that redirects "/" to "/index.html" using the convenience method on ```GCDWebServerResponse``` (it sets the HTTP status code and "Location" header automatically):
+
+```objectivec
+[self addHandlerForMethod:@"GET"
+                     path:@"/"
+             requestClass:[GCDWebServerRequest class]
+             processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+  return [GCDWebServerResponse responseWithRedirect:[NSURL URLWithString:@"index.html" relativeToURL:request.URL]
+                                          permanent:NO];
+    
+}];
+```
+
+Advanced Example 2: Implementing Forms
+======================================
+
+To implement an HTTP form, you need a pair of handlers:
+* The GET handler does not expect any body in the HTTP request and therefore uses the ```GCDWebServerRequest``` class. The handler generates a response containing a simple HTML form.
+* The POST handler expects the form values to be in the body of the HTTP request and percent-encoded. Fortunately, GCDWebServer provides the request class ```GCDWebServerURLEncodedFormRequest``` which can automatically parse such bodies. The handler simply echoes back the value from the user submitted form.
+
+```objectivec
+[webServer addHandlerForMethod:@"GET"
+                          path:@"/"
+                  requestClass:[GCDWebServerRequest class]
+                  processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+  
+  NSString* html = @" \
+    <html><body> \
+      <form name=\"input\" action=\"/\" method=\"post\" enctype=\"application/x-www-form-urlencoded\"> \
+      Value: <input type=\"text\" name=\"value\"> \
+      <input type=\"submit\" value=\"Submit\"> \
+      </form> \
+    </body></html> \
+  ";
+  return [GCDWebServerDataResponse responseWithHTML:html];
+  
+}];
+
+[webServer addHandlerForMethod:@"POST"
+                          path:@"/"
+                  requestClass:[GCDWebServerURLEncodedFormRequest class]
+                  processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+  
+  NSString* value = [[(GCDWebServerURLEncodedFormRequest*)request arguments] objectForKey:@"value"];
+  NSString* html = [NSString stringWithFormat:@"<html><body><p>%@</p></body></html>", value];
+  return [GCDWebServerDataResponse responseWithHTML:html];
+  
+}];
+```
+
+Advanced Example 3: Serving a Dynamic Website
+=============================================
+
+GCDWebServer provides an extension to the ```GCDWebServerDataResponse``` class that can return HTML content generated from a template and a set of variables (using the format ```%variable%```). It is a very basic template system and is really intended as a starting point to building more advanced template systems by subclassing ```GCDWebServerResponse```.
+
+Assuming you have a website directory in your app containing HTML template files along with the corresponding CSS, scripts and images, it's pretty easy to turn it into a dynamic website:
+
+```objectivec
+// Get the path to the website directory
+NSString* websitePath = [[NSBundle mainBundle] pathForResource:@"Website" ofType:nil];
+
+// Add a default handler to serve static files (i.e. anything other than HTML files)
+[self addGETHandlerForBasePath:@"/" directoryPath:websitePath indexFilename:nil cacheAge:3600 allowRangeRequests:YES];
+
+// Add an override handler for all requests to "*.html" URLs to do the special HTML templatization
+[self addHandlerForMethod:@"GET"
+                pathRegex:@"/.*\.html"
+             requestClass:[GCDWebServerRequest class]
+             processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+    NSDictionary* variables = [NSDictionary dictionaryWithObjectsAndKeys:@"value", @"variable", nil];
+    return [GCDWebServerDataResponse responseWithHTMLTemplate:[websitePath stringByAppendingPathComponent:request.path]
+                                                    variables:variables];
+    
+}];
+
+// Add an override handler to redirect "/" URL to "/index.html"
+[self addHandlerForMethod:@"GET"
+                     path:@"/"
+             requestClass:[GCDWebServerRequest class]
+             processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
+    
+    return [GCDWebServerResponse responseWithRedirect:[NSURL URLWithString:@"index.html" relativeToURL:request.URL]
+                                            permanent:NO];
+    
+];
+
+```
+
+Final Example: File Downloads and Uploads From iOS App
+======================================================
+
+GCDWebServer was originally written for the [ComicFlow](http://itunes.apple.com/us/app/comicflow/id409290355?mt=8) comic reader app for iPad. It allow users to connect to their iPad with their web browser over WiFi and then upload, download and organize comic files inside the app.
+
+ComicFlow is [entirely open-source](https://github.com/swisspol/ComicFlow) and you can see how it uses GCDWebServer in the [WebServer.h](https://github.com/swisspol/ComicFlow/blob/master/Classes/WebServer.h) and [WebServer.m](https://github.com/swisspol/ComicFlow/blob/master/Classes/WebServer.m) files.
diff --git a/local-webserver/src/ios/GCDWebServer/Run-Tests.sh b/local-webserver/src/ios/GCDWebServer/Run-Tests.sh
new file mode 100755
index 0000000..1bfa0af
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Run-Tests.sh
@@ -0,0 +1,60 @@
+#!/bin/bash -ex
+
+OSX_SDK="macosx"
+if [ -z "$TRAVIS" ]; then
+  IOS_SDK="iphoneos"
+else
+  IOS_SDK="iphonesimulator"
+fi
+
+OSX_TARGET="GCDWebServer (Mac)"
+IOS_TARGET="GCDWebServer (iOS)"
+CONFIGURATION="Release"
+
+BUILD_DIR="/tmp/GCDWebServer-Build"
+PRODUCT="$BUILD_DIR/$CONFIGURATION/GCDWebServer"
+
+PAYLOAD_ZIP="Tests/Payload.zip"
+PAYLOAD_DIR="/tmp/GCDWebServer-Payload"
+
+function runTests {
+  rm -rf "$PAYLOAD_DIR"
+  ditto -x -k "$PAYLOAD_ZIP" "$PAYLOAD_DIR"
+  TZ=GMT find "$PAYLOAD_DIR" -type d -exec SetFile -d "1/1/2014 00:00:00" -m "1/1/2014 00:00:00" '{}' \;  # ZIP archives do not preserve directories dates
+  if [ "$4" != "" ]; then
+    cp -f "$4" "$PAYLOAD_DIR/Payload"
+    pushd "$PAYLOAD_DIR/Payload"
+    SetFile -d "1/1/2014 00:00:00" -m "1/1/2014 00:00:00" `basename "$4"`
+    popd
+  fi
+  logLevel=2 $1 -mode "$2" -root "$PAYLOAD_DIR/Payload" -tests "$3"
+}
+
+# Build for iOS for oldest deployment target (TODO: run tests on iOS)
+rm -rf "$BUILD_DIR"
+xcodebuild -sdk "$IOS_SDK" -target "$IOS_TARGET" -configuration "$CONFIGURATION" build "SYMROOT=$BUILD_DIR" "IPHONEOS_DEPLOYMENT_TARGET=5.1.1" > /dev/null
+
+# Build for iOS for default deployment target (TODO: run tests on iOS)
+rm -rf "$BUILD_DIR"
+xcodebuild -sdk "$IOS_SDK" -target "$IOS_TARGET" -configuration "$CONFIGURATION" build "SYMROOT=$BUILD_DIR" > /dev/null
+
+# Build for OS X for oldest deployment target
+rm -rf "$BUILD_DIR"
+xcodebuild -sdk "$OSX_SDK" -target "$OSX_TARGET" -configuration "$CONFIGURATION" build "SYMROOT=$BUILD_DIR" "MACOSX_DEPLOYMENT_TARGET=10.7" > /dev/null
+
+# Build for OS X for default deployment target
+rm -rf "$BUILD_DIR"
+xcodebuild -sdk "$OSX_SDK" -target "$OSX_TARGET" -configuration "$CONFIGURATION" build "SYMROOT=$BUILD_DIR" > /dev/null
+
+# Run tests
+runTests $PRODUCT "htmlForm" "Tests/HTMLForm"
+runTests $PRODUCT "htmlFileUpload" "Tests/HTMLFileUpload"
+runTests $PRODUCT "webServer" "Tests/WebServer"
+runTests $PRODUCT "webDAV" "Tests/WebDAV-Transmit"
+runTests $PRODUCT "webDAV" "Tests/WebDAV-Cyberduck"
+runTests $PRODUCT "webDAV" "Tests/WebDAV-Finder"
+runTests $PRODUCT "webUploader" "Tests/WebUploader"
+runTests $PRODUCT "webServer" "Tests/WebServer-Sample-Movie" "Tests/Sample-Movie.mp4"
+
+# Done
+echo "\nAll tests completed successfully!"
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-200.response
new file mode 100644
index 0000000..f39660c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 299
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 25 Apr 2014 14:15:11 GMT
+
+<html><body>           <form name="input" action="/" method="post" enctype="multipart/form-data">           <input type="hidden" name="secret" value="42">           <input type="file" name="files" multiple><br/>           <input type="submit" value="Submit">           </form>         </body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-GET.request
new file mode 100644
index 0000000..6480774
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/001-GET.request
@@ -0,0 +1,10 @@
+GET / HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Cache-Control: max-age=0
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+DNT: 1
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-200.response b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-200.response
new file mode 100644
index 0000000..a3ec365
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 447
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 25 Apr 2014 14:15:21 GMT
+
+<html><body><p>secret = 42<br>files = &quot;hero_mba_11.jpg&quot; (image/jpeg | 106 KB)<br>files = &quot;Test File.txt&quot; (text/plain | 21 Bytes)<br></p><hr>           <form name="input" action="/" method="post" enctype="multipart/form-data">           <input type="hidden" name="secret" value="42">           <input type="file" name="files" multiple><br/>           <input type="submit" value="Submit">           </form>         </body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-POST.request
new file mode 100644
index 0000000..da29882
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLFileUpload/002-POST.request
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-200.response
new file mode 100644
index 0000000..77a3972
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 293
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 25 Apr 2014 14:12:09 GMT
+
+             <html><body>               <form name="input" action="/" method="post" enctype="application/x-www-form-urlencoded">               Value: <input type="text" name="value">               <input type="submit" value="Submit">               </form>             </body></html>           
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-GET.request
new file mode 100644
index 0000000..6480774
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/001-GET.request
@@ -0,0 +1,10 @@
+GET / HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Cache-Control: max-age=0
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+DNT: 1
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-200.response b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-200.response
new file mode 100644
index 0000000..4874a64
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 47
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 25 Apr 2014 14:12:20 GMT
+
+<html><body><p>Hellø Wörld!</p></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-POST.request
new file mode 100644
index 0000000..d30c7c9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/HTMLForm/002-POST.request
@@ -0,0 +1,15 @@
+POST / HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 30
+Cache-Control: max-age=0
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+Origin: http://localhost:8080
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+Content-Type: application/x-www-form-urlencoded
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+value=Hell%C3%B8+W%C3%B6rld%21
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/Payload.zip b/local-webserver/src/ios/GCDWebServer/Tests/Payload.zip
new file mode 100644
index 0000000..0157687
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/Payload.zip
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/Sample-Movie.mp4 b/local-webserver/src/ios/GCDWebServer/Tests/Sample-Movie.mp4
new file mode 100644
index 0000000..b2879c7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/Sample-Movie.mp4
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-200.response
new file mode 100755
index 0000000..51c9c76
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-200.response
@@ -0,0 +1,6 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:42 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-HEAD.request
new file mode 100755
index 0000000..dba741b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/001-HEAD.request
@@ -0,0 +1,6 @@
+HEAD / HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-207.response
new file mode 100755
index 0000000..1a3b9fd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:42 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/002-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-207.response
new file mode 100755
index 0000000..db0aff7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:47 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-PROPFIND.request
new file mode 100755
index 0000000..932d41d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/003-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-207.response
new file mode 100755
index 0000000..de32c84
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 998
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:47 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/capable_green_ipad_l.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-PROPFIND.request
new file mode 100755
index 0000000..56d4e72
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/004-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /images/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-200.response
new file mode 100755
index 0000000..4553d7d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-200.response
@@ -0,0 +1,6 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:51 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-HEAD.request
new file mode 100755
index 0000000..dba741b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/005-HEAD.request
@@ -0,0 +1,6 @@
+HEAD / HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-404.response
new file mode 100755
index 0000000..ab0e086
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-404.response
@@ -0,0 +1,7 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:51 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-HEAD.request
new file mode 100755
index 0000000..9631e6c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/006-HEAD.request
@@ -0,0 +1,6 @@
+HEAD /Copy%20%284%3A11%3A14%2C%209%3A52%20PM%29.txt HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-201.response
new file mode 100755
index 0000000..9e0396e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:51 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-COPY.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-COPY.request
new file mode 100755
index 0000000..7eb04c0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/007-COPY.request
@@ -0,0 +1,8 @@
+COPY /Copy.txt HTTP/1.1
+Destination: http://localhost:8080/Copy%20%284%3A11%3A14%2C%209%3A52%20PM%29.txt
+Overwrite: T
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-207.response
new file mode 100755
index 0000000..14613e9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-207.response
@@ -0,0 +1,15 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1448
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:51 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy%20(4:11:14,%209:52%20PM).txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/008-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-200.response
new file mode 100755
index 0000000..1ed7386
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-200.response
@@ -0,0 +1,6 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:52:59 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-HEAD.request
new file mode 100755
index 0000000..dba741b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/009-HEAD.request
@@ -0,0 +1,6 @@
+HEAD / HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-200.response
new file mode 100755
index 0000000..944e0d5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-GET.request
new file mode 100755
index 0000000..e3b80fa
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/010-GET.request
@@ -0,0 +1,6 @@
+GET /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-207.response
new file mode 100755
index 0000000..b2e9323
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 998
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:07 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/capable_green_ipad_l.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-PROPFIND.request
new file mode 100755
index 0000000..56d4e72
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/011-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /images/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-204.response
new file mode 100755
index 0000000..223f472
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-DELETE.request
new file mode 100755
index 0000000..9efec78
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/012-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-204.response
new file mode 100755
index 0000000..223f472
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-DELETE.request
new file mode 100755
index 0000000..4f5131f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/013-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-204.response
new file mode 100755
index 0000000..223f472
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-DELETE.request
new file mode 100755
index 0000000..1353820
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/014-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /images/ HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-207.response
new file mode 100755
index 0000000..76271de
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1214
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:07 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy%20(4:11:14,%209:52%20PM).txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/015-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-201.response
new file mode 100755
index 0000000..eb039d5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:13 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-MOVE.request
new file mode 100755
index 0000000..63d2c39
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/016-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Copy%20%284%3A11%3A14%2C%209%3A52%20PM%29.txt HTTP/1.1
+Destination: http://localhost:8080/Test.txt
+Overwrite: T
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-207.response
new file mode 100755
index 0000000..0384b51
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1189
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:13 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Test.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/017-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-201.response
new file mode 100755
index 0000000..5ce2907
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:14 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-MOVE.request
new file mode 100755
index 0000000..78015b7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/018-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Test.txt HTTP/1.1
+Destination: http://localhost:8080/PDF%20Reports/Test.txt
+Overwrite: T
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-207.response
new file mode 100755
index 0000000..3dcf0a7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 872
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:14 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/019-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-207.response
new file mode 100755
index 0000000..4377386
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1031
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:14 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-PROPFIND.request
new file mode 100755
index 0000000..932d41d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/020-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-200.response
new file mode 100755
index 0000000..843b6c5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-200.response
@@ -0,0 +1,6 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:22 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-HEAD.request
new file mode 100755
index 0000000..dba741b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/021-HEAD.request
@@ -0,0 +1,6 @@
+HEAD / HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-404.response
new file mode 100755
index 0000000..3757c13
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-404.response
@@ -0,0 +1,7 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:22 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-HEAD.request
new file mode 100755
index 0000000..1ab6cee
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/022-HEAD.request
@@ -0,0 +1,6 @@
+HEAD /Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-201.response
new file mode 100755
index 0000000..ce4db7a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:22 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-PUT.request
new file mode 100755
index 0000000..b94f128
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/023-PUT.request
@@ -0,0 +1,11 @@
+PUT /Test%20File.txt HTTP/1.1
+Content-Length: 21
+Content-Type: text/plain
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+X-GCDWebServer-CreationDate: 2014-04-12T04:53:22+00:00
+X-GCDWebServer-ModifiedDate: Sat, 12 Apr 2014 04:53:22 GMT
+
+Nothing to see here!
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-207.response
new file mode 100755
index 0000000..250b167
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1195
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:22 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T04:53:22+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 04:53:22 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/024-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-201.response
new file mode 100755
index 0000000..e44e7e8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:35 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-MKCOL.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-MKCOL.request
new file mode 100755
index 0000000..a731b57
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/025-MKCOL.request
@@ -0,0 +1,8 @@
+MKCOL /Text%20Files/ HTTP/1.1
+Content-Length: 0
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+X-GCDWebServer-CreationDate: 2014-04-12T04:53:35+00:00
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-207.response
new file mode 100755
index 0000000..8ba974e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-207.response
@@ -0,0 +1,15 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1435
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:35 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T04:53:22+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 04:53:22 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Text%20Files</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T04:53:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/026-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-207.response
new file mode 100755
index 0000000..306ad7e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 327
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:36 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Text%20Files/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T04:53:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-PROPFIND.request
new file mode 100755
index 0000000..760fe73
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/027-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /Text%20Files/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-201.response
new file mode 100755
index 0000000..444c34d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:39 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-MOVE.request
new file mode 100755
index 0000000..70cae94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/028-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Test%20File.txt HTTP/1.1
+Destination: http://localhost:8080/Text%20Files/Test%20File.txt
+Overwrite: T
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-201.response
new file mode 100755
index 0000000..444c34d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:39 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-MOVE.request
new file mode 100755
index 0000000..5f51f8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/029-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Copy.txt HTTP/1.1
+Destination: http://localhost:8080/Text%20Files/Copy.txt
+Overwrite: T
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-207.response
new file mode 100755
index 0000000..3c1d3e1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 795
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Text%20Files</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T04:53:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/030-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-207.response
new file mode 100755
index 0000000..f61942b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 993
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Text%20Files/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T04:53:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Text%20Files/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Text%20Files/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T04:53:22+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 04:53:22 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-PROPFIND.request
new file mode 100755
index 0000000..760fe73
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/031-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /Text%20Files/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-207.response
new file mode 100755
index 0000000..0ca15d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1031
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-PROPFIND.request
new file mode 100755
index 0000000..932d41d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/032-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-204.response
new file mode 100755
index 0000000..224ed16
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:44 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-DELETE.request
new file mode 100755
index 0000000..a0c3918
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/033-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-204.response
new file mode 100755
index 0000000..224ed16
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:44 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-DELETE.request
new file mode 100755
index 0000000..4f402b1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/034-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /PDF%20Reports/Test.txt HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-204.response
new file mode 100755
index 0000000..224ed16
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:44 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-DELETE.request
new file mode 100755
index 0000000..39479f4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/035-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-207.response
new file mode 100755
index 0000000..198a424
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 554
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:53:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Text%20Files</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T04:53:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-PROPFIND.request
new file mode 100755
index 0000000..b1b74bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Cyberduck/036-PROPFIND.request
@@ -0,0 +1,10 @@
+PROPFIND / HTTP/1.1
+Depth: 1
+Content-Type: text/xml; charset=utf-8
+Content-Length: 99
+Host: localhost:8080
+Connection: Keep-Alive
+User-Agent: Cyberduck/4.4.3 (Mac OS X/10.9.2) (x86_64)
+Accept-Encoding: gzip,deflate
+
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><propfind xmlns="DAV:"><allprop/></propfind>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-200.response
new file mode 100755
index 0000000..93df092
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-200.response
@@ -0,0 +1,7 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+DAV: 1, 2
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-OPTIONS.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-OPTIONS.request
new file mode 100755
index 0000000..76685b2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/001-OPTIONS.request
@@ -0,0 +1,7 @@
+OPTIONS / HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: close
+User-Agent: WebDAVLib/1.3
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-200.response
new file mode 100755
index 0000000..93df092
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-200.response
@@ -0,0 +1,7 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+DAV: 1, 2
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-OPTIONS.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-OPTIONS.request
new file mode 100755
index 0000000..76685b2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/002-OPTIONS.request
@@ -0,0 +1,7 @@
+OPTIONS / HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: close
+User-Agent: WebDAVLib/1.3
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-200.response
new file mode 100755
index 0000000..93df092
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-200.response
@@ -0,0 +1,7 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+DAV: 1, 2
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-OPTIONS.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-OPTIONS.request
new file mode 100755
index 0000000..aa5621f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/003-OPTIONS.request
@@ -0,0 +1,7 @@
+OPTIONS / HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/004-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-207.response
new file mode 100755
index 0000000..21f9bd3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 208
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-PROPFIND.request
new file mode 100755
index 0000000..22a5da6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/005-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 175
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:quota-available-bytes/>
+<D:quota-used-bytes/>
+<D:quota/>
+<D:quotaused/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/006-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/007-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/008-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/009-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/010-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/011-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-404.response
new file mode 100755
index 0000000..9cd3d9e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/012-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-404.response
new file mode 100755
index 0000000..cb84a14
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 193
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backups.backupdb&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-PROPFIND.request
new file mode 100755
index 0000000..a5942bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/013-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backups.backupdb HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-404.response
new file mode 100755
index 0000000..73ac7c5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 184
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.hidden&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-PROPFIND.request
new file mode 100755
index 0000000..777eab9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/014-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.hidden HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-404.response
new file mode 100755
index 0000000..555266c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 188
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/mach_kernel&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-PROPFIND.request
new file mode 100755
index 0000000..c1279b8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/015-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /mach_kernel HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-404.response
new file mode 100755
index 0000000..19917b2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.Spotlight-V100&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-PROPFIND.request
new file mode 100755
index 0000000..e4fa6f6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/016-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.Spotlight-V100 HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-404.response
new file mode 100755
index 0000000..27c5901
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 198
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.metadata_never_index&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-PROPFIND.request
new file mode 100755
index 0000000..6fa9198
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/017-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.metadata_never_index HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-404.response
new file mode 100755
index 0000000..f645c98
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 212
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.metadata_never_index_unless_rootfs&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-PROPFIND.request
new file mode 100755
index 0000000..7af5fd4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/018-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.metadata_never_index_unless_rootfs HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-403.response
new file mode 100755
index 0000000..bd95aec
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/019-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-403.response
new file mode 100755
index 0000000..bd95aec
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/020-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-403.response
new file mode 100755
index 0000000..e423213
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/021-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-403.response
new file mode 100755
index 0000000..bd95aec
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/022-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-207.response
new file mode 100755
index 0000000..4ef1fa9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/023-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-207.response
new file mode 100755
index 0000000..84d4b5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/024-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-404.response
new file mode 100755
index 0000000..070948d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/025-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-404.response
new file mode 100755
index 0000000..9c5fd6e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/026-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-404.response
new file mode 100755
index 0000000..4e9ff12
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:55 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/027-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-207.response
new file mode 100755
index 0000000..7bd30b0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 998
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/capable_green_ipad_l.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/028-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-404.response
new file mode 100755
index 0000000..6da8f28
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/029-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-404.response
new file mode 100755
index 0000000..549f3d8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/030-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-404.response
new file mode 100755
index 0000000..fd967dd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/031-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-404.response
new file mode 100755
index 0000000..fd967dd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/032-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-404.response
new file mode 100755
index 0000000..6867241
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/033-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-404.response
new file mode 100755
index 0000000..9035641
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/034-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-207.response
new file mode 100755
index 0000000..160bf9f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/035-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-404.response
new file mode 100755
index 0000000..9a91358
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/036-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-404.response
new file mode 100755
index 0000000..7ebcb9f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/037-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-404.response
new file mode 100755
index 0000000..7ebcb9f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/038-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-207.response
new file mode 100755
index 0000000..bfed2b0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/039-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-207.response
new file mode 100755
index 0000000..bfed2b0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:10:56 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/040-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-404.response
new file mode 100755
index 0000000..7f22a52
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/041-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-207.response
new file mode 100755
index 0000000..efe79d8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 328
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-PROPFIND.request
new file mode 100755
index 0000000..811a30f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/042-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-207.response
new file mode 100755
index 0000000..d995eb6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/043-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-404.response
new file mode 100755
index 0000000..55999f4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/044-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-404.response
new file mode 100755
index 0000000..73ab452
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 198
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/.DS_Store&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-PROPFIND.request
new file mode 100755
index 0000000..bd9e9fc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/045-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-207.response
new file mode 100755
index 0000000..d995eb6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/046-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-404.response
new file mode 100755
index 0000000..600d014
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/047-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-207.response
new file mode 100755
index 0000000..a6c4b67
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 998
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/capable_green_ipad_l.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/048-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-404.response
new file mode 100755
index 0000000..9962e32
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/049-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-207.response
new file mode 100755
index 0000000..67fa361
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-PROPFIND.request
new file mode 100755
index 0000000..9255288
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/050-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-404.response
new file mode 100755
index 0000000..1d51126
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/051-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-404.response
new file mode 100755
index 0000000..edca90b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 193
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:00 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/.DS_Store&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-PROPFIND.request
new file mode 100755
index 0000000..bac62b7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/052-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-403.response
new file mode 100755
index 0000000..8a77d2a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:01 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/053-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-403.response
new file mode 100755
index 0000000..8a77d2a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:01 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/054-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-403.response
new file mode 100755
index 0000000..342c9dc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:01 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/055-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-403.response
new file mode 100755
index 0000000..8a77d2a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:01 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/056-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-404.response
new file mode 100755
index 0000000..0239b61
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:03 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/057-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-200.response
new file mode 100755
index 0000000..92ae6ab
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-GET.request
new file mode 100755
index 0000000..94adb24
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/058-GET.request
@@ -0,0 +1,6 @@
+GET /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Connection: keep-alive
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-200.response
new file mode 100755
index 0000000..92ae6ab
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-GET.request
new file mode 100755
index 0000000..798dea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/059-GET.request
@@ -0,0 +1,8 @@
+GET /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+If-Range: Thu, 10 Apr 2014 21:51:14 GMT
+Accept: */*
+Range: bytes=98304-
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-404.response
new file mode 100755
index 0000000..757b5f9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:05 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/060-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-200.response
new file mode 100755
index 0000000..313335e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-GET.request
new file mode 100755
index 0000000..ceaddf8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/061-GET.request
@@ -0,0 +1,6 @@
+GET /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Connection: keep-alive
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-200.response
new file mode 100755
index 0000000..313335e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-GET.request
new file mode 100755
index 0000000..39559b8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/062-GET.request
@@ -0,0 +1,8 @@
+GET /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+If-Range: Thu, 10 Apr 2014 21:46:56 GMT
+Accept: */*
+Range: bytes=98304-
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-404.response
new file mode 100755
index 0000000..757b5f9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:05 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/063-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-404.response
new file mode 100755
index 0000000..a94e44c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:06 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/064-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-404.response
new file mode 100755
index 0000000..c4d55df
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/065-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-404.response
new file mode 100755
index 0000000..a0dcf64
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 198
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-PROPFIND.request
new file mode 100755
index 0000000..8261949
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/066-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-404.response
new file mode 100755
index 0000000..a0dcf64
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 198
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-PROPFIND.request
new file mode 100755
index 0000000..8261949
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/067-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-404.response
new file mode 100755
index 0000000..bf36e4d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 210
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-PROPFIND.request
new file mode 100755
index 0000000..c1941c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/068-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-201.response
new file mode 100755
index 0000000..489b75d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-MOVE.request
new file mode 100755
index 0000000..45df685
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/069-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Destination: http://localhost:8080/images/Green%20iPad.png
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-404.response
new file mode 100755
index 0000000..223171b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/070-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-404.response
new file mode 100755
index 0000000..63a2387
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 208
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/capable_green_ipad_l.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-PROPFIND.request
new file mode 100755
index 0000000..41853c0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/071-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-404.response
new file mode 100755
index 0000000..223171b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/072-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-207.response
new file mode 100755
index 0000000..1e8ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 990
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/073-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-404.response
new file mode 100755
index 0000000..a320533
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/074-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-207.response
new file mode 100755
index 0000000..1e8ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 990
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/075-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-207.response
new file mode 100755
index 0000000..1e8ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 990
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:13 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/076-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-207.response
new file mode 100755
index 0000000..ffb20ab
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:14 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-PROPFIND.request
new file mode 100755
index 0000000..9255288
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/077-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-207.response
new file mode 100755
index 0000000..d20ae45
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 421
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:14 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-PROPFIND.request
new file mode 100755
index 0000000..8261949
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/078-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-404.response
new file mode 100755
index 0000000..65832cb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:14 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/079-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-404.response
new file mode 100755
index 0000000..09537e4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:14 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/080-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-204.response
new file mode 100755
index 0000000..ba16ec2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-DELETE.request
new file mode 100755
index 0000000..8c37d38
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/081-DELETE.request
@@ -0,0 +1,7 @@
+DELETE /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-404.response
new file mode 100755
index 0000000..45bff13
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 201
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-PROPFIND.request
new file mode 100755
index 0000000..709447a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/082-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-207.response
new file mode 100755
index 0000000..a878377
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/083-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-404.response
new file mode 100755
index 0000000..c616472
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/084-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-207.response
new file mode 100755
index 0000000..a878377
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/085-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-404.response
new file mode 100755
index 0000000..816c1c9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/086-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-207.response
new file mode 100755
index 0000000..8ee25e2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/087-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-404.response
new file mode 100755
index 0000000..db2bcb2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:16 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/088-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-207.response
new file mode 100755
index 0000000..ecbadcc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:17 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/089-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-404.response
new file mode 100755
index 0000000..a7459fc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:17 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/090-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-404.response
new file mode 100755
index 0000000..8aceaac
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 199
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:17 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/hero_mba_11.jpg&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-PROPFIND.request
new file mode 100755
index 0000000..6e95d9e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/091-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-207.response
new file mode 100755
index 0000000..a5a10f2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:18 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/092-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-404.response
new file mode 100755
index 0000000..6598cf5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:18 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/093-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-403.response
new file mode 100755
index 0000000..339beb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:22 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/094-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-403.response
new file mode 100755
index 0000000..339beb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:22 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/095-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-403.response
new file mode 100755
index 0000000..afab35e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:22 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/096-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-403.response
new file mode 100755
index 0000000..339beb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:22 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/097-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-404.response
new file mode 100755
index 0000000..68e2937
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:25 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/098-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-404.response
new file mode 100755
index 0000000..5af31ae
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/099-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-404.response
new file mode 100755
index 0000000..838ad85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 202
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/100-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-404.response
new file mode 100755
index 0000000..838ad85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 202
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/101-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-201.response
new file mode 100755
index 0000000..3463528
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-PUT.request
new file mode 100755
index 0000000..452c46e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/102-PUT.request
@@ -0,0 +1,9 @@
+PUT /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+X-GCDWebServer-CreationDate: 2014-04-12T05:11:26+00:00
+X-GCDWebServer-ModifiedDate: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/103-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-200.response
new file mode 100755
index 0000000..a7d6ce3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-200.response
@@ -0,0 +1,21 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 522
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:prop xmlns:D="DAV:">
+<D:lockdiscovery>
+<D:activelock>
+<D:locktype><D:write/></D:locktype>
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:depth>0</D:depth>
+<D:owner><D:href>http://www.apple.com/webdav_fs/</D:href></D:owner>
+<D:timeout>Second-600</D:timeout>
+<D:locktoken><D:href>urn:uuid:53F6E66F-FEAE-46B7-B8D7-7E8FFBD6A5C5</D:href></D:locktoken>
+<D:lockroot><D:href>http://localhost:8080//PDF Reports/Test File.txt</D:href></D:lockroot>
+</D:activelock>
+</D:lockdiscovery>
+</D:prop>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-LOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-LOCK.request
new file mode 100755
index 0000000..8cd3862
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/104-LOCK.request
@@ -0,0 +1,19 @@
+LOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml; charset="utf-8"
+Depth: 0
+Timeout: Second-600
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 229
+Connection: keep-alive
+X-GCDWebServer-LockToken: urn:uuid:53F6E66F-FEAE-46B7-B8D7-7E8FFBD6A5C5
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:lockinfo xmlns:D="DAV:">
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:locktype><D:write/></D:locktype>
+<D:owner>
+<D:href>http://www.apple.com/webdav_fs/</D:href>
+</D:owner>
+</D:lockinfo>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-UNLOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-UNLOCK.request
new file mode 100755
index 0000000..9b42a9f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/105-UNLOCK.request
@@ -0,0 +1,8 @@
+UNLOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Lock-Token: <urn:uuid:53F6E66F-FEAE-46B7-B8D7-7E8FFBD6A5C5>
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-200.response
new file mode 100755
index 0000000..d2f6f7d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-200.response
@@ -0,0 +1,21 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 522
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:prop xmlns:D="DAV:">
+<D:lockdiscovery>
+<D:activelock>
+<D:locktype><D:write/></D:locktype>
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:depth>0</D:depth>
+<D:owner><D:href>http://www.apple.com/webdav_fs/</D:href></D:owner>
+<D:timeout>Second-600</D:timeout>
+<D:locktoken><D:href>urn:uuid:2D01C33C-FCF8-4D67-B461-AD503BE4E673</D:href></D:locktoken>
+<D:lockroot><D:href>http://localhost:8080//PDF Reports/Test File.txt</D:href></D:lockroot>
+</D:activelock>
+</D:lockdiscovery>
+</D:prop>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-LOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-LOCK.request
new file mode 100755
index 0000000..f8ce587
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/106-LOCK.request
@@ -0,0 +1,19 @@
+LOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml; charset="utf-8"
+Depth: 0
+Timeout: Second-600
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 229
+Connection: keep-alive
+X-GCDWebServer-LockToken: urn:uuid:2D01C33C-FCF8-4D67-B461-AD503BE4E673
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:lockinfo xmlns:D="DAV:">
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:locktype><D:write/></D:locktype>
+<D:owner>
+<D:href>http://www.apple.com/webdav_fs/</D:href>
+</D:owner>
+</D:lockinfo>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-UNLOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-UNLOCK.request
new file mode 100755
index 0000000..7f85175
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/107-UNLOCK.request
@@ -0,0 +1,8 @@
+UNLOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Lock-Token: <urn:uuid:2D01C33C-FCF8-4D67-B461-AD503BE4E673>
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/108-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-403.response
new file mode 100755
index 0000000..f5f634c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 211
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;._Test File.txt&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-PUT.request
new file mode 100755
index 0000000..a8c918d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/109-PUT.request
@@ -0,0 +1,7 @@
+PUT /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/110-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-207.response
new file mode 100755
index 0000000..dbbd66d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 328
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-PROPFIND.request
new file mode 100755
index 0000000..811a30f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/111-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-207.response
new file mode 100755
index 0000000..071018a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 422
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>0</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/112-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-404.response
new file mode 100755
index 0000000..bd267fa
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/113-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-DELETE.request
new file mode 100755
index 0000000..fb4f0af
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/114-DELETE.request
@@ -0,0 +1,7 @@
+DELETE /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/115-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-404.response
new file mode 100755
index 0000000..838ad85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 202
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/116-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-201.response
new file mode 100755
index 0000000..3463528
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-PUT.request
new file mode 100755
index 0000000..2eb2f3a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/117-PUT.request
@@ -0,0 +1,7 @@
+PUT /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/118-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-200.response
new file mode 100755
index 0000000..2c06984
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-200.response
@@ -0,0 +1,21 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 522
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:prop xmlns:D="DAV:">
+<D:lockdiscovery>
+<D:activelock>
+<D:locktype><D:write/></D:locktype>
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:depth>0</D:depth>
+<D:owner><D:href>http://www.apple.com/webdav_fs/</D:href></D:owner>
+<D:timeout>Second-600</D:timeout>
+<D:locktoken><D:href>urn:uuid:CD24F78B-42E4-4357-98CA-94F47DCF0818</D:href></D:locktoken>
+<D:lockroot><D:href>http://localhost:8080//PDF Reports/Test File.txt</D:href></D:lockroot>
+</D:activelock>
+</D:lockdiscovery>
+</D:prop>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-LOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-LOCK.request
new file mode 100755
index 0000000..eb5ed11
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/119-LOCK.request
@@ -0,0 +1,19 @@
+LOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml; charset="utf-8"
+Depth: 0
+Timeout: Second-600
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 229
+Connection: keep-alive
+X-GCDWebServer-LockToken: urn:uuid:CD24F78B-42E4-4357-98CA-94F47DCF0818
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:lockinfo xmlns:D="DAV:">
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:locktype><D:write/></D:locktype>
+<D:owner>
+<D:href>http://www.apple.com/webdav_fs/</D:href>
+</D:owner>
+</D:lockinfo>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-PUT.request
new file mode 100755
index 0000000..c8087e9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/120-PUT.request
@@ -0,0 +1,16 @@
+PUT /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+X-Expected-Entity-Length: 21
+If: (<urn:uuid:CD24F78B-42E4-4357-98CA-94F47DCF0818>)
+Transfer-Encoding: Chunked
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Connection: close
+X-GCDWebServer-CreationDate: 2014-04-12T05:11:26+00:00
+X-GCDWebServer-ModifiedDate: Sat, 12 Apr 2014 05:11:26 GMT
+
+15
+Nothing to see here!
+
+0
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/121-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-403.response
new file mode 100755
index 0000000..f5f634c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 211
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;._Test File.txt&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-PUT.request
new file mode 100755
index 0000000..a8c918d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/122-PUT.request
@@ -0,0 +1,7 @@
+PUT /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/123-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-403.response
new file mode 100755
index 0000000..f5f634c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 211
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;._Test File.txt&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-PUT.request
new file mode 100755
index 0000000..a8c918d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/124-PUT.request
@@ -0,0 +1,7 @@
+PUT /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-UNLOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-UNLOCK.request
new file mode 100755
index 0000000..bd22378
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/125-UNLOCK.request
@@ -0,0 +1,8 @@
+UNLOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Lock-Token: <urn:uuid:CD24F78B-42E4-4357-98CA-94F47DCF0818>
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-404.response
new file mode 100755
index 0000000..26c1fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/126-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-200.response
new file mode 100755
index 0000000..e9dc065
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-200.response
@@ -0,0 +1,21 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 522
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:prop xmlns:D="DAV:">
+<D:lockdiscovery>
+<D:activelock>
+<D:locktype><D:write/></D:locktype>
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:depth>0</D:depth>
+<D:owner><D:href>http://www.apple.com/webdav_fs/</D:href></D:owner>
+<D:timeout>Second-600</D:timeout>
+<D:locktoken><D:href>urn:uuid:50EA272F-C8AB-4057-8B49-9C70CBCC2E33</D:href></D:locktoken>
+<D:lockroot><D:href>http://localhost:8080//PDF Reports/Test File.txt</D:href></D:lockroot>
+</D:activelock>
+</D:lockdiscovery>
+</D:prop>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-LOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-LOCK.request
new file mode 100755
index 0000000..5cc632d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/127-LOCK.request
@@ -0,0 +1,19 @@
+LOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml; charset="utf-8"
+Depth: 0
+Timeout: Second-600
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 229
+Connection: keep-alive
+X-GCDWebServer-LockToken: urn:uuid:50EA272F-C8AB-4057-8B49-9C70CBCC2E33
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:lockinfo xmlns:D="DAV:">
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:locktype><D:write/></D:locktype>
+<D:owner>
+<D:href>http://www.apple.com/webdav_fs/</D:href>
+</D:owner>
+</D:lockinfo>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-UNLOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-UNLOCK.request
new file mode 100755
index 0000000..8f19e43
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/128-UNLOCK.request
@@ -0,0 +1,8 @@
+UNLOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Lock-Token: <urn:uuid:50EA272F-C8AB-4057-8B49-9C70CBCC2E33>
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-200.response
new file mode 100755
index 0000000..0023b4a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-200.response
@@ -0,0 +1,21 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 522
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:prop xmlns:D="DAV:">
+<D:lockdiscovery>
+<D:activelock>
+<D:locktype><D:write/></D:locktype>
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:depth>0</D:depth>
+<D:owner><D:href>http://www.apple.com/webdav_fs/</D:href></D:owner>
+<D:timeout>Second-600</D:timeout>
+<D:locktoken><D:href>urn:uuid:34F304E0-C45C-4CA7-9DF7-23833547F994</D:href></D:locktoken>
+<D:lockroot><D:href>http://localhost:8080//PDF Reports/Test File.txt</D:href></D:lockroot>
+</D:activelock>
+</D:lockdiscovery>
+</D:prop>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-LOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-LOCK.request
new file mode 100755
index 0000000..a96da23
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/129-LOCK.request
@@ -0,0 +1,19 @@
+LOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml; charset="utf-8"
+Depth: 0
+Timeout: Second-600
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 229
+Connection: keep-alive
+X-GCDWebServer-LockToken: urn:uuid:34F304E0-C45C-4CA7-9DF7-23833547F994
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:lockinfo xmlns:D="DAV:">
+<D:lockscope><D:exclusive/></D:lockscope>
+<D:locktype><D:write/></D:locktype>
+<D:owner>
+<D:href>http://www.apple.com/webdav_fs/</D:href>
+</D:owner>
+</D:lockinfo>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-204.response
new file mode 100755
index 0000000..8edf9f5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-UNLOCK.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-UNLOCK.request
new file mode 100755
index 0000000..fe48acf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/130-UNLOCK.request
@@ -0,0 +1,8 @@
+UNLOCK /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Lock-Token: <urn:uuid:34F304E0-C45C-4CA7-9DF7-23833547F994>
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-207.response
new file mode 100755
index 0000000..6beefaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/131-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-404.response
new file mode 100755
index 0000000..79732e7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/132-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-404.response
new file mode 100755
index 0000000..80e3f58
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/133-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-207.response
new file mode 100755
index 0000000..d04bb85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1037
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/134-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-404.response
new file mode 100755
index 0000000..5864003
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/135-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-207.response
new file mode 100755
index 0000000..dbbd66d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 328
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-PROPFIND.request
new file mode 100755
index 0000000..811a30f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/136-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-207.response
new file mode 100755
index 0000000..736c4a4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 423
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/137-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-207.response
new file mode 100755
index 0000000..d04bb85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1037
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/138-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-207.response
new file mode 100755
index 0000000..d04bb85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1037
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/139-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-207.response
new file mode 100755
index 0000000..d04bb85
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1037
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/140-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-404.response
new file mode 100755
index 0000000..e6858a2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/141-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-207.response
new file mode 100755
index 0000000..de8c5bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/142-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-404.response
new file mode 100755
index 0000000..bf8051c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/143-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-404.response
new file mode 100755
index 0000000..9f0b2e9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/144-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-404.response
new file mode 100755
index 0000000..57b79e9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/145-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-207.response
new file mode 100755
index 0000000..edb46d4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/146-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-404.response
new file mode 100755
index 0000000..cef01db
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/147-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-207.response
new file mode 100755
index 0000000..12fdd1a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1037
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-PROPFIND.request
new file mode 100755
index 0000000..8f16b05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/148-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-404.response
new file mode 100755
index 0000000..4428bb3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 229
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-PROPFIND.request
new file mode 100755
index 0000000..8e86c09
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/149-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-404.response
new file mode 100755
index 0000000..bc9b806
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 204
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-PROPFIND.request
new file mode 100755
index 0000000..d28ab94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/150-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-207.response
new file mode 100755
index 0000000..0c84c14
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 328
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-PROPFIND.request
new file mode 100755
index 0000000..811a30f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/151-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-207.response
new file mode 100755
index 0000000..376ed3b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 423
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-PROPFIND.request
new file mode 100755
index 0000000..eb48bd0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/152-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports/Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-207.response
new file mode 100755
index 0000000..de8c5bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:27 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/153-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-403.response
new file mode 100755
index 0000000..91d9f62
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:28 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/154-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-403.response
new file mode 100755
index 0000000..91d9f62
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:28 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/155-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-403.response
new file mode 100755
index 0000000..48bbcc5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:28 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/156-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-403.response
new file mode 100755
index 0000000..91d9f62
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:28 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/157-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-404.response
new file mode 100755
index 0000000..df0f866
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/158-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-404.response
new file mode 100755
index 0000000..cc06ac1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-PROPFIND.request
new file mode 100755
index 0000000..a34a5cc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/159-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-404.response
new file mode 100755
index 0000000..cc06ac1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-PROPFIND.request
new file mode 100755
index 0000000..a34a5cc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/160-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-404.response
new file mode 100755
index 0000000..3072e9e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 190
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-PROPFIND.request
new file mode 100755
index 0000000..bda68ad
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/161-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-201.response
new file mode 100755
index 0000000..5faa439
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-MOVE.request
new file mode 100755
index 0000000..d94c216
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/162-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Destination: http://localhost:8080/Apple%20Reports
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-404.response
new file mode 100755
index 0000000..797c1bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/163-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-404.response
new file mode 100755
index 0000000..1b7c84f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 188
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-PROPFIND.request
new file mode 100755
index 0000000..0ab0250
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/164-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-404.response
new file mode 100755
index 0000000..797c1bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/165-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-404.response
new file mode 100755
index 0000000..df0f866
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/166-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-207.response
new file mode 100755
index 0000000..bd10c33
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1108
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/167-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-404.response
new file mode 100755
index 0000000..b61831a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/168-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-404.response
new file mode 100755
index 0000000..dd81c63
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:31 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/169-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-404.response
new file mode 100755
index 0000000..5aa7248
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/170-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-404.response
new file mode 100755
index 0000000..435034f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/171-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-207.response
new file mode 100755
index 0000000..b340d5c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1043
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Apple%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-PROPFIND.request
new file mode 100755
index 0000000..08f95e5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/172-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-404.response
new file mode 100755
index 0000000..1d8c9cd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 231
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-PROPFIND.request
new file mode 100755
index 0000000..ff49099
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/173-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-404.response
new file mode 100755
index 0000000..0cf58ae
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 206
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-PROPFIND.request
new file mode 100755
index 0000000..1e426d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/174-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-404.response
new file mode 100755
index 0000000..0f2ab24
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/175-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-207.response
new file mode 100755
index 0000000..53dcd8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1108
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/176-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-404.response
new file mode 100755
index 0000000..7fc3347
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/177-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-404.response
new file mode 100755
index 0000000..c859d4d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/178-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-404.response
new file mode 100755
index 0000000..79c6d4d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 188
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:32 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/PDF Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-PROPFIND.request
new file mode 100755
index 0000000..0ab0250
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/179-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /PDF%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-207.response
new file mode 100755
index 0000000..a979410
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 330
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:33 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Apple%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-PROPFIND.request
new file mode 100755
index 0000000..90ce87d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/180-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-404.response
new file mode 100755
index 0000000..69d619a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-PROPFIND.request
new file mode 100755
index 0000000..a16130c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/181-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-201.response
new file mode 100755
index 0000000..3b40c52
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-MKCOL.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-MKCOL.request
new file mode 100755
index 0000000..63f98ee
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/182-MKCOL.request
@@ -0,0 +1,8 @@
+MKCOL /untitled%20folder HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+X-GCDWebServer-CreationDate: 2014-04-12T05:11:35+00:00
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-404.response
new file mode 100755
index 0000000..af185d8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-PROPFIND.request
new file mode 100755
index 0000000..e89dfb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/183-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-404.response
new file mode 100755
index 0000000..54e5d6e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/184-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-403.response
new file mode 100755
index 0000000..78206ff
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/185-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-403.response
new file mode 100755
index 0000000..78206ff
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/186-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-403.response
new file mode 100755
index 0000000..e5a3b63
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/187-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-404.response
new file mode 100755
index 0000000..af185d8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-PROPFIND.request
new file mode 100755
index 0000000..e89dfb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/188-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-403.response
new file mode 100755
index 0000000..78206ff
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/189-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-207.response
new file mode 100755
index 0000000..197a431
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 332
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/untitled%20folder/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-PROPFIND.request
new file mode 100755
index 0000000..8370892
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/190-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /untitled%20folder/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-404.response
new file mode 100755
index 0000000..31ab01a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/191-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-404.response
new file mode 100755
index 0000000..2331848
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/192-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-404.response
new file mode 100755
index 0000000..0f00b13
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/193-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-404.response
new file mode 100755
index 0000000..2de2c4c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 206
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-PROPFIND.request
new file mode 100755
index 0000000..1e426d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/194-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-404.response
new file mode 100755
index 0000000..601d76d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 231
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-PROPFIND.request
new file mode 100755
index 0000000..ff49099
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/195-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-404.response
new file mode 100755
index 0000000..5f51946
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:35 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/196-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-207.response
new file mode 100755
index 0000000..3e58f6c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-207.response
@@ -0,0 +1,15 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1353
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/untitled%20folder</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/197-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-207.response
new file mode 100755
index 0000000..1584e52
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 332
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/untitled%20folder/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-PROPFIND.request
new file mode 100755
index 0000000..1072da6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/198-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /untitled%20folder/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-404.response
new file mode 100755
index 0000000..bdf45ca
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/199-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-404.response
new file mode 100755
index 0000000..7bbeb21
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-PROPFIND.request
new file mode 100755
index 0000000..afc1cc6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/200-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-404.response
new file mode 100755
index 0000000..7bbeb21
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-PROPFIND.request
new file mode 100755
index 0000000..afc1cc6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/201-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-404.response
new file mode 100755
index 0000000..ed068af
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-PROPFIND.request
new file mode 100755
index 0000000..e89dfb4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/202-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-201.response
new file mode 100755
index 0000000..e7eec91
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-MOVE.request
new file mode 100755
index 0000000..afbbc68
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/203-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /untitled%20folder/ HTTP/1.1
+Host: localhost:8080
+Destination: http://localhost:8080/Backup
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-404.response
new file mode 100755
index 0000000..739c2c7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/204-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-404.response
new file mode 100755
index 0000000..09d77a7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-PROPFIND.request
new file mode 100755
index 0000000..a16130c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/205-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-404.response
new file mode 100755
index 0000000..739c2c7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:36 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/206-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-404.response
new file mode 100755
index 0000000..d30b64c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/207-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-207.response
new file mode 100755
index 0000000..f10df29
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-207.response
@@ -0,0 +1,15 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1342
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/208-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-404.response
new file mode 100755
index 0000000..443b50f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/209-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-404.response
new file mode 100755
index 0000000..e937eda
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/210-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-404.response
new file mode 100755
index 0000000..1af269c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/211-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-404.response
new file mode 100755
index 0000000..d30b64c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/212-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-207.response
new file mode 100755
index 0000000..f10df29
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-207.response
@@ -0,0 +1,15 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1342
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/213-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-404.response
new file mode 100755
index 0000000..443b50f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/214-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-404.response
new file mode 100755
index 0000000..911392f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/215-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-404.response
new file mode 100755
index 0000000..e937eda
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/216-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-404.response
new file mode 100755
index 0000000..1af269c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/217-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-404.response
new file mode 100755
index 0000000..e0f7111
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/218-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-404.response
new file mode 100755
index 0000000..7481ef2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 206
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-PROPFIND.request
new file mode 100755
index 0000000..1e426d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/219-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-404.response
new file mode 100755
index 0000000..aa68721
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 231
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-PROPFIND.request
new file mode 100755
index 0000000..ff49099
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/220-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-404.response
new file mode 100755
index 0000000..b6a9b39
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:37 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/untitled folder&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-PROPFIND.request
new file mode 100755
index 0000000..a16130c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/221-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /untitled%20folder HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-207.response
new file mode 100755
index 0000000..4801ad6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:38 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-PROPFIND.request
new file mode 100755
index 0000000..a57ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/222-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-404.response
new file mode 100755
index 0000000..a58f70e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/223-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-404.response
new file mode 100755
index 0000000..787fa06
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/224-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-403.response
new file mode 100755
index 0000000..a305bd8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/225-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-403.response
new file mode 100755
index 0000000..a305bd8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/226-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-403.response
new file mode 100755
index 0000000..48c41bc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/227-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-403.response
new file mode 100755
index 0000000..a305bd8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/228-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-404.response
new file mode 100755
index 0000000..8522102
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-PROPFIND.request
new file mode 100755
index 0000000..c520f17
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/229-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-404.response
new file mode 100755
index 0000000..8522102
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-PROPFIND.request
new file mode 100755
index 0000000..c520f17
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/230-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-404.response
new file mode 100755
index 0000000..a58f70e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 187
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-PROPFIND.request
new file mode 100755
index 0000000..b446ea8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/231-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-201.response
new file mode 100755
index 0000000..f4baded
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-MOVE.request
new file mode 100755
index 0000000..7932b4e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/232-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Copy.txt HTTP/1.1
+Host: localhost:8080
+Destination: http://localhost:8080/Backup/Copy.txt
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-404.response
new file mode 100755
index 0000000..851afa8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-PROPFIND.request
new file mode 100755
index 0000000..3f78310
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/233-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-404.response
new file mode 100755
index 0000000..851afa8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-PROPFIND.request
new file mode 100755
index 0000000..3f78310
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/234-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-404.response
new file mode 100755
index 0000000..25f9d52
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 193
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/.DS_Store&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-PROPFIND.request
new file mode 100755
index 0000000..2bbb8cb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/235-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-207.response
new file mode 100755
index 0000000..8c04c3b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 645
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-PROPFIND.request
new file mode 100755
index 0000000..fdb35f2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/236-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-404.response
new file mode 100755
index 0000000..9ff0206
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/237-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-207.response
new file mode 100755
index 0000000..376ee6f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1025
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/238-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-207.response
new file mode 100755
index 0000000..b8d8541
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-PROPFIND.request
new file mode 100755
index 0000000..a57ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/239-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-404.response
new file mode 100755
index 0000000..4128a6a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-PROPFIND.request
new file mode 100755
index 0000000..e8c943d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/240-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-404.response
new file mode 100755
index 0000000..770e8ac
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/241-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-207.response
new file mode 100755
index 0000000..b8d8541
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-PROPFIND.request
new file mode 100755
index 0000000..a57ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/242-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-404.response
new file mode 100755
index 0000000..63f019f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:39 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/243-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-404.response
new file mode 100755
index 0000000..9b93229
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/244-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-404.response
new file mode 100755
index 0000000..d5b2a51
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/245-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-207.response
new file mode 100755
index 0000000..c6630f7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1025
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/246-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-404.response
new file mode 100755
index 0000000..0e3a468
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/247-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-404.response
new file mode 100755
index 0000000..58c6244
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/248-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-207.response
new file mode 100755
index 0000000..c002c72
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 645
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-PROPFIND.request
new file mode 100755
index 0000000..fdb35f2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/249-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-404.response
new file mode 100755
index 0000000..adaac3a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 194
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Backup/._Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-PROPFIND.request
new file mode 100755
index 0000000..3f78310
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/250-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/._Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-404.response
new file mode 100755
index 0000000..30bc06a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Copy.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-PROPFIND.request
new file mode 100755
index 0000000..e8c943d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/251-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-207.response
new file mode 100755
index 0000000..ed147cd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 321
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-PROPFIND.request
new file mode 100755
index 0000000..a57ebaf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/252-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-207.response
new file mode 100755
index 0000000..2aabcdf
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 410
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:40 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Backup/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-PROPFIND.request
new file mode 100755
index 0000000..c520f17
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/253-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Backup/Copy.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-404.response
new file mode 100755
index 0000000..993fe04
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:42 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/254-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-207.response
new file mode 100755
index 0000000..49b6592
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:42 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/255-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-404.response
new file mode 100755
index 0000000..e142501
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:42 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/256-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-403.response
new file mode 100755
index 0000000..02ed998
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/257-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-403.response
new file mode 100755
index 0000000..02ed998
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/258-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-403.response
new file mode 100755
index 0000000..5bb96ab
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 205
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-PUT.request
new file mode 100755
index 0000000..fa6a196
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/259-PUT.request
@@ -0,0 +1,7 @@
+PUT /.DS_Store HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-403.response
new file mode 100755
index 0000000..02ed998
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Retrieving properties for item name &quot;.DS_Store&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-PROPFIND.request
new file mode 100755
index 0000000..1243b70
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/260-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.DS_Store HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-207.response
new file mode 100755
index 0000000..2b8ea9d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/261-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-404.response
new file mode 100755
index 0000000..ba27008
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/262-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-404.response
new file mode 100755
index 0000000..4a6bab5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 239
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/.fde3d915-75dd-4368-a060-890a3c537750-67a2f-0-Spotlight&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-PROPFIND.request
new file mode 100755
index 0000000..bfdcefa
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/263-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/.fde3d915-75dd-4368-a060-890a3c537750-67a2f-0-Spotlight HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-403.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-403.response
new file mode 100755
index 0000000..e016214
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-403.response
@@ -0,0 +1,8 @@
+HTTP/1.1 403 Forbidden
+Content-Length: 251
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 403</title></head><body><h1>HTTP Error 403: Uploading file name &quot;.fde3d915-75dd-4368-a060-890a3c537750-67a2f-0-Spotlight&quot; is not allowed</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-PUT.request
new file mode 100755
index 0000000..04c37f3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/264-PUT.request
@@ -0,0 +1,7 @@
+PUT /images/.fde3d915-75dd-4368-a060-890a3c537750-67a2f-0-Spotlight HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-207.response
new file mode 100755
index 0000000..2b8ea9d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 656
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/Green%20iPad.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-PROPFIND.request
new file mode 100755
index 0000000..ded319a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/265-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-204.response
new file mode 100755
index 0000000..4417fb0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-DELETE.request
new file mode 100755
index 0000000..25a057b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/266-DELETE.request
@@ -0,0 +1,7 @@
+DELETE /images/Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-404.response
new file mode 100755
index 0000000..ba27008
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 200
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images/._Green iPad.png&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-PROPFIND.request
new file mode 100755
index 0000000..be72318
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/267-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images/._Green%20iPad.png HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-207.response
new file mode 100755
index 0000000..bcf6f0e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 263
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-PROPFIND.request
new file mode 100755
index 0000000..e07634e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/268-PROPFIND.request
@@ -0,0 +1,15 @@
+PROPFIND /images/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 118
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-204.response
new file mode 100755
index 0000000..4417fb0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-DELETE.request
new file mode 100755
index 0000000..ef9ca46
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/269-DELETE.request
@@ -0,0 +1,7 @@
+DELETE /images/ HTTP/1.1
+Host: localhost:8080
+Accept: */*
+Content-Length: 0
+Connection: keep-alive
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-404.response
new file mode 100755
index 0000000..24c47da
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-PROPFIND.request
new file mode 100755
index 0000000..11b91ce
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/270-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-404.response
new file mode 100755
index 0000000..fb03432
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-PROPFIND.request
new file mode 100755
index 0000000..8a12332
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/271-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-404.response
new file mode 100755
index 0000000..8c4c725
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/272-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-207.response
new file mode 100755
index 0000000..88a5e9e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 791
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/273-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-404.response
new file mode 100755
index 0000000..f581f98
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/274-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-404.response
new file mode 100755
index 0000000..d4de9cd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/275-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-207.response
new file mode 100755
index 0000000..88a5e9e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 791
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:44 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/276-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-404.response
new file mode 100755
index 0000000..d0978a6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-PROPFIND.request
new file mode 100755
index 0000000..8a12332
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/277-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-404.response
new file mode 100755
index 0000000..d0978a6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-PROPFIND.request
new file mode 100755
index 0000000..8a12332
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/278-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-404.response
new file mode 100755
index 0000000..d0978a6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-PROPFIND.request
new file mode 100755
index 0000000..8a12332
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/279-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-404.response
new file mode 100755
index 0000000..9f90479
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/280-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-207.response
new file mode 100755
index 0000000..2953ff7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 791
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/281-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-404.response
new file mode 100755
index 0000000..70c7065
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/282-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-404.response
new file mode 100755
index 0000000..c02dece
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/283-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-404.response
new file mode 100755
index 0000000..d0978a6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 183
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:45 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/images&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-PROPFIND.request
new file mode 100755
index 0000000..8a12332
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/284-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /images HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-404.response
new file mode 100755
index 0000000..a7f2e9c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/285-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-207.response
new file mode 100755
index 0000000..246765f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 791
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/286-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-404.response
new file mode 100755
index 0000000..055cca8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/287-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-404.response
new file mode 100755
index 0000000..4679e1e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/288-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-207.response
new file mode 100755
index 0000000..ecfaf29
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1043
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Apple%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports/Test%20File.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-12T05:11:26+00:00</D:creationdate><D:getlastmodified>Sat, 12 Apr 2014 05:11:26 GMT</D:getlastmodified><D:getcontentlength>21</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-PROPFIND.request
new file mode 100755
index 0000000..08f95e5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/289-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/ HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-404.response
new file mode 100755
index 0000000..8a94ab2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 231
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Apple Economic Impact on Cupertino.pdf&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-PROPFIND.request
new file mode 100755
index 0000000..ff49099
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/290-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-404.response
new file mode 100755
index 0000000..fb532c4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 206
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:52 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/Apple Reports/._Test File.txt&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-PROPFIND.request
new file mode 100755
index 0000000..1e426d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/291-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /Apple%20Reports/._Test%20File.txt HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-404.response
new file mode 100755
index 0000000..be9bfc8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 180
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._.&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-PROPFIND.request
new file mode 100755
index 0000000..2ea082e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/292-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._. HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-207.response
new file mode 100755
index 0000000..4703cd8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 791
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Apple%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Backup</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-04-12T05:11:35+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-PROPFIND.request
new file mode 100755
index 0000000..db98647
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/293-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 1
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-404.response
new file mode 100755
index 0000000..8527131
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Apple Reports&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-PROPFIND.request
new file mode 100755
index 0000000..40c58d3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/294-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Apple%20Reports HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-404.response
new file mode 100755
index 0000000..4184c24
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/._Backup&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-PROPFIND.request
new file mode 100755
index 0000000..c4eaa8e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/295-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /._Backup HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-404.response
new file mode 100755
index 0000000..dd58bbe
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 192
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.TemporaryItems&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-PROPFIND.request
new file mode 100755
index 0000000..641f23b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/296-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.TemporaryItems HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-404.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-404.response
new file mode 100755
index 0000000..25f9150
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-404.response
@@ -0,0 +1,8 @@
+HTTP/1.1 404 Not Found
+Content-Length: 185
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>HTTP Error 404</title></head><body><h1>HTTP Error 404: &quot;/.Trashes&quot; does not exist</h1><h3></h3></body></html>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-PROPFIND.request
new file mode 100755
index 0000000..6e98222
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/297-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND /.Trashes HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-207.response
new file mode 100755
index 0000000..53ed9db
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 314
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:11:53 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-PROPFIND.request
new file mode 100755
index 0000000..d4c53d0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Finder/298-PROPFIND.request
@@ -0,0 +1,18 @@
+PROPFIND / HTTP/1.1
+Host: localhost:8080
+Content-Type: text/xml
+Depth: 0
+Accept: */*
+User-Agent: WebDAVFS/3.0.1 (03018000) Darwin/13.1.0 (x86_64)
+Content-Length: 179
+Connection: keep-alive
+
+<?xml version="1.0" encoding="utf-8"?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getlastmodified/>
+<D:getcontentlength/>
+<D:creationdate/>
+<D:resourcetype/>
+</D:prop>
+</D:propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-200.response
new file mode 100755
index 0000000..060a947
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-200.response
@@ -0,0 +1,7 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+DAV: 1
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:26 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-OPTIONS.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-OPTIONS.request
new file mode 100755
index 0000000..ec8fad3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/001-OPTIONS.request
@@ -0,0 +1,7 @@
+OPTIONS / HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Keep-Alive: 
+Connection: TE, Keep-Alive
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-207.response
new file mode 100755
index 0000000..23bf707
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 256
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-PROPFIND.request
new file mode 100755
index 0000000..a148d91
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/002-PROPFIND.request
@@ -0,0 +1,13 @@
+PROPFIND / HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 0
+Content-Length: 117
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-207.response
new file mode 100755
index 0000000..f7bfb66
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-207.response
@@ -0,0 +1,14 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 1106
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:26 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/Copy.txt</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T11:10:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 11:10:14 GMT</D:getlastmodified><D:getcontentlength>271</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-PROPFIND.request
new file mode 100755
index 0000000..382bf21
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/003-PROPFIND.request
@@ -0,0 +1,16 @@
+PROPFIND / HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 1
+Content-Length: 211
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<creationdate xmlns="DAV:"/>
+<getcontentlength xmlns="DAV:"/>
+<getlastmodified xmlns="DAV:"/>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-207.response
new file mode 100755
index 0000000..58f96dd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-207.response
@@ -0,0 +1,12 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 700
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:29 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2013-05-01T12:01:13+00:00</D:creationdate><D:getlastmodified>Wed, 01 May 2013 12:01:13 GMT</D:getlastmodified><D:getcontentlength>181952</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-PROPFIND.request
new file mode 100755
index 0000000..531a4c2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/004-PROPFIND.request
@@ -0,0 +1,16 @@
+PROPFIND /PDF%20Reports/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 1
+Content-Length: 211
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<creationdate xmlns="DAV:"/>
+<getcontentlength xmlns="DAV:"/>
+<getlastmodified xmlns="DAV:"/>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-207.response
new file mode 100755
index 0000000..f352c8a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-207.response
@@ -0,0 +1,13 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 998
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:30 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/images/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype><D:creationdate>2014-01-01T00:00:00+00:00</D:creationdate></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/capable_green_ipad_l.png</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:46:56+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:46:56 GMT</D:getlastmodified><D:getcontentlength>116066</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+<D:response><D:href>/images/hero_mba_11.jpg</D:href><D:propstat><D:prop><D:resourcetype/><D:creationdate>2014-04-10T21:51:14+00:00</D:creationdate><D:getlastmodified>Thu, 10 Apr 2014 21:51:14 GMT</D:getlastmodified><D:getcontentlength>106799</D:getcontentlength></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-PROPFIND.request
new file mode 100755
index 0000000..fdc8d21
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/005-PROPFIND.request
@@ -0,0 +1,16 @@
+PROPFIND /images/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 1
+Content-Length: 211
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<creationdate xmlns="DAV:"/>
+<getcontentlength xmlns="DAV:"/>
+<getlastmodified xmlns="DAV:"/>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-200.response
new file mode 100755
index 0000000..4f69d7e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-GET.request
new file mode 100755
index 0000000..9118593
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/006-GET.request
@@ -0,0 +1,6 @@
+GET /images/hero_mba_11.jpg HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-204.response
new file mode 100755
index 0000000..7af7908
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:42 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-DELETE.request
new file mode 100755
index 0000000..5a44e8d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/007-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /images/hero_mba_11.jpg HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-201.response
new file mode 100755
index 0000000..e3a9e5b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:48 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-MOVE.request
new file mode 100755
index 0000000..ec6316e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/008-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/PDF%20Reports/Apple%20Economic%20Impact.pdf
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-201.response
new file mode 100755
index 0000000..9e23198
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:49:51 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-MOVE.request
new file mode 100755
index 0000000..1ded3c0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/009-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /PDF%20Reports/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/Apple%20PDF%20Reports
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-207.response
new file mode 100755
index 0000000..831b125
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 256
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:50:00 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-PROPFIND.request
new file mode 100755
index 0000000..a148d91
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/010-PROPFIND.request
@@ -0,0 +1,13 @@
+PROPFIND / HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 0
+Content-Length: 117
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-200.response
new file mode 100755
index 0000000..0d7087d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-200.response
@@ -0,0 +1,13 @@
+HTTP/1.1 200 OK
+Connection: Close
+Server: GCDWebDAVServer
+Content-Type: text/plain
+Last-Modified: Thu, 10 Apr 2014 11:10:14 GMT
+Date: Sat, 12 Apr 2014 04:50:00 GMT
+Content-Length: 271
+Cache-Control: no-cache
+Etag: 73590261/1397128214/0
+
+For the colorful.
+
+Color is more than just a hue. It expresses a feeling. Makes a statement. Declares an allegiance. Color reveals your personality. iPhone 5c, in five anything-but-shy colors, does just that. It’s not just for lovers of color. It’s for the colorful.
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-GET.request
new file mode 100755
index 0000000..df1a296
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/011-GET.request
@@ -0,0 +1,6 @@
+GET /Copy.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-201.response
new file mode 100755
index 0000000..aa2d92c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:50:04 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-PUT.request
new file mode 100755
index 0000000..bbbdef2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/012-PUT.request
@@ -0,0 +1,12 @@
+PUT /Copy_safe_save_215004.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Content-Length: 288
+
+For the colorful.
+
+Color is more than just a hue. It expresses a feeling. Makes a statement. Declares an allegiance. Color reveals your personality. iPhone 5c, in five anything-but-shy colors, does just that. It’s not just for lovers of color. It’s for the colorful.
+
+This is a test!
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-204.response
new file mode 100755
index 0000000..e093e28
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:50:04 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-DELETE.request
new file mode 100755
index 0000000..2b92feb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/013-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /Copy.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-201.response
new file mode 100755
index 0000000..aa2d92c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:50:04 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-MOVE.request
new file mode 100755
index 0000000..3362a1b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/014-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Copy_safe_save_215004.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/Copy.txt
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-201.response
new file mode 100755
index 0000000..fa298e4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:50:55 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-PUT.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-PUT.request
new file mode 100755
index 0000000..7c8f138
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/015-PUT.request
@@ -0,0 +1,8 @@
+PUT /Test%20File.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Content-Length: 21
+
+Nothing to see here!
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-201.response
new file mode 100755
index 0000000..9fedb89
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:05 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-MOVE.request
new file mode 100755
index 0000000..50af176
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/016-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Test%20File.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/Apple%20PDF%20Reports/Test%20File.txt
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-207.response
new file mode 100755
index 0000000..1bcaf69
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 278
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:07 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/Apple%20PDF%20Reports/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-PROPFIND.request
new file mode 100755
index 0000000..70641f0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/017-PROPFIND.request
@@ -0,0 +1,13 @@
+PROPFIND /Apple%20PDF%20Reports/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 0
+Content-Length: 117
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-204.response
new file mode 100755
index 0000000..b4b83bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-DELETE.request
new file mode 100755
index 0000000..cf04d76
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/018-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /Apple%20PDF%20Reports/Apple%20Economic%20Impact.pdf HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-204.response
new file mode 100755
index 0000000..b4b83bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-DELETE.request
new file mode 100755
index 0000000..963e2e7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/019-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /Apple%20PDF%20Reports/Test%20File.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-207.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-207.response
new file mode 100755
index 0000000..d346913
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-207.response
@@ -0,0 +1,11 @@
+HTTP/1.1 207 Multi-Status
+Cache-Control: no-cache
+Content-Length: 256
+Content-Type: application/xml; charset="utf-8"
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:07 GMT
+
+<?xml version="1.0" encoding="utf-8" ?><D:multistatus xmlns:D="DAV:">
+<D:response><D:href>/</D:href><D:propstat><D:prop><D:resourcetype><D:collection/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat></D:response>
+</D:multistatus>
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-PROPFIND.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-PROPFIND.request
new file mode 100755
index 0000000..a148d91
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/020-PROPFIND.request
@@ -0,0 +1,13 @@
+PROPFIND / HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Depth: 0
+Content-Length: 117
+Content-Type: application/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<propfind xmlns="DAV:"><prop>
+<resourcetype xmlns="DAV:"/>
+</prop></propfind>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-204.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-204.response
new file mode 100755
index 0000000..b4b83bb
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-204.response
@@ -0,0 +1,6 @@
+HTTP/1.1 204 No Content
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 04:51:07 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-DELETE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-DELETE.request
new file mode 100755
index 0000000..f35149f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/021-DELETE.request
@@ -0,0 +1,6 @@
+DELETE /Apple%20PDF%20Reports/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-201.response
new file mode 100755
index 0000000..645ffa7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:08:32 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-MKCOL.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-MKCOL.request
new file mode 100755
index 0000000..efd1ca8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/022-MKCOL.request
@@ -0,0 +1,6 @@
+MKCOL /untitled%20folder/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-201.response
new file mode 100755
index 0000000..e9631c2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:08:38 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-MOVE.request
new file mode 100755
index 0000000..70950a9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/023-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /Copy.txt HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/untitled%20folder/Copy.txt
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-201.response b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-201.response
new file mode 100755
index 0000000..55ae4c5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-201.response
@@ -0,0 +1,6 @@
+HTTP/1.1 201 Created
+Cache-Control: no-cache
+Connection: Close
+Server: GCDWebDAVServer
+Date: Sat, 12 Apr 2014 05:08:41 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-MOVE.request b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-MOVE.request
new file mode 100755
index 0000000..bf87800
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebDAV-Transmit/024-MOVE.request
@@ -0,0 +1,8 @@
+MOVE /untitled%20folder/ HTTP/1.1
+User-Agent: Transmit/4.4.6 neon/0.29.3
+Connection: TE
+TE: trailers
+Host: localhost:8080
+Destination: http://localhost:8080/My%20Folder
+Overwrite: T
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-200.response
new file mode 100644
index 0000000..3344d49
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-GET.request
new file mode 100644
index 0000000..da63cc8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/001-GET.request
@@ -0,0 +1,12 @@
+GET /Sample-Movie.mp4 HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Cache-Control: no-cache
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+Pragma: no-cache
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-206.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-206.response
new file mode 100644
index 0000000..5296802
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-206.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-GET.request
new file mode 100644
index 0000000..0a59bf3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/002-GET.request
@@ -0,0 +1,13 @@
+GET /Sample-Movie.mp4 HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Cache-Control: no-cache
+Pragma: no-cache
+Accept-Encoding: identity;q=1, *;q=0
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/Sample-Movie.mp4
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=0-
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-206.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-206.response
new file mode 100644
index 0000000..f823c94
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-206.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-GET.request
new file mode 100644
index 0000000..0b05519
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/003-GET.request
@@ -0,0 +1,13 @@
+GET /Sample-Movie.mp4 HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Cache-Control: no-cache
+Pragma: no-cache
+Accept-Encoding: identity;q=1, *;q=0
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/Sample-Movie.mp4
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=3391326-
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-206.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-206.response
new file mode 100644
index 0000000..b2d31d6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-206.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-GET.request
new file mode 100644
index 0000000..0b24407
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/004-GET.request
@@ -0,0 +1,12 @@
+GET /Sample-Movie.mp4 HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept-Encoding: identity;q=1, *;q=0
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/Sample-Movie.mp4
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=168-3391487
+If-Range: 75279017/1388563200/0
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-206.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-206.response
new file mode 100644
index 0000000..ed217a4
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-206.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-GET.request
new file mode 100644
index 0000000..fa19379
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer-Sample-Movie/005-GET.request
@@ -0,0 +1,12 @@
+GET /Sample-Movie.mp4 HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept-Encoding: identity;q=1, *;q=0
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/Sample-Movie.mp4
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=168-1023
+If-Range: 75279017/1388563200/0
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-200.response
new file mode 100644
index 0000000..e786789
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-200.response
@@ -0,0 +1,16 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:22 GMT
+
+<!DOCTYPE html>
+<html><head><meta charset="utf-8"></head><body>
+<ul>
+<li><a href="Copy.txt">Copy.txt</a></li>
+<li><a href="images/">images/</a></li>
+<li><a href="PDF%20Reports/">PDF Reports/</a></li>
+</ul>
+</body></html>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-GET.request
new file mode 100644
index 0000000..e310d25
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/001-GET.request
@@ -0,0 +1,9 @@
+GET / HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-200.response
new file mode 100644
index 0000000..e5ef469
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-200.response
@@ -0,0 +1,14 @@
+HTTP/1.1 200 OK
+Connection: Close
+Server: GCDWebServer
+Content-Type: text/plain
+Last-Modified: Thu, 10 Apr 2014 11:10:14 GMT
+Date: Fri, 11 Apr 2014 02:42:24 GMT
+Accept-Ranges: bytes
+Content-Length: 271
+Cache-Control: no-cache
+Etag: 73212403/1397128214/0
+
+For the colorful.
+
+Color is more than just a hue. It expresses a feeling. Makes a statement. Declares an allegiance. Color reveals your personality. iPhone 5c, in five anything-but-shy colors, does just that. It’s not just for lovers of color. It’s for the colorful.
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-GET.request
new file mode 100644
index 0000000..99f5fe7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/002-GET.request
@@ -0,0 +1,10 @@
+GET /Copy.txt HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-200.response
new file mode 100644
index 0000000..638a6d2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-200.response
@@ -0,0 +1,15 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 218
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:27 GMT
+
+<!DOCTYPE html>
+<html><head><meta charset="utf-8"></head><body>
+<ul>
+<li><a href="capable_green_ipad_l.png">capable_green_ipad_l.png</a></li>
+<li><a href="hero_mba_11.jpg">hero_mba_11.jpg</a></li>
+</ul>
+</body></html>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-GET.request
new file mode 100644
index 0000000..3ae76ee
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/003-GET.request
@@ -0,0 +1,10 @@
+GET /images/ HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-200.response
new file mode 100644
index 0000000..aafbef8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-GET.request
new file mode 100644
index 0000000..ff8422f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/004-GET.request
@@ -0,0 +1,10 @@
+GET /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/images/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-200.response
new file mode 100644
index 0000000..4964ddc
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-GET.request
new file mode 100644
index 0000000..de90302
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/005-GET.request
@@ -0,0 +1,10 @@
+GET /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/images/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-304.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-304.response
new file mode 100644
index 0000000..5207fc5
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-304.response
@@ -0,0 +1,7 @@
+HTTP/1.1 304 Not Modified
+Last-Modified: Thu, 10 Apr 2014 21:46:56 GMT
+Etag: 73209474/1397166416/0
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:34 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-GET.request
new file mode 100644
index 0000000..9a666f9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/006-GET.request
@@ -0,0 +1,12 @@
+GET /images/capable_green_ipad_l.png HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/images/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+If-None-Match: 73209474/1397166416/0
+If-Modified-Since: Thu, 10 Apr 2014 21:46:56 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-304.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-304.response
new file mode 100644
index 0000000..c0ffdd2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-304.response
@@ -0,0 +1,7 @@
+HTTP/1.1 304 Not Modified
+Last-Modified: Thu, 10 Apr 2014 21:51:14 GMT
+Etag: 73212154/1397166674/0
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:37 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-GET.request
new file mode 100644
index 0000000..17d717e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/007-GET.request
@@ -0,0 +1,12 @@
+GET /images/hero_mba_11.jpg HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/images/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+If-None-Match: 73212154/1397166674/0
+If-Modified-Since: Thu, 10 Apr 2014 21:51:14 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-200.response
new file mode 100644
index 0000000..3b27d34
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-200.response
@@ -0,0 +1,14 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 199
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:40 GMT
+
+<!DOCTYPE html>
+<html><head><meta charset="utf-8"></head><body>
+<ul>
+<li><a href="Apple%20Economic%20Impact%20on%20Cupertino.pdf">Apple Economic Impact on Cupertino.pdf</a></li>
+</ul>
+</body></html>
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-GET.request
new file mode 100644
index 0000000..f7bfb55
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/008-GET.request
@@ -0,0 +1,10 @@
+GET /PDF%20Reports/ HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-200.response
new file mode 100644
index 0000000..0d94abd
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-200.response
Binary files differ
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-GET.request
new file mode 100644
index 0000000..cc75d37
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/009-GET.request
@@ -0,0 +1,10 @@
+GET /PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/PDF%20Reports/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-304.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-304.response
new file mode 100644
index 0000000..dbc7e32
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-304.response
@@ -0,0 +1,7 @@
+HTTP/1.1 304 Not Modified
+Last-Modified: Wed, 01 May 2013 12:01:13 GMT
+Etag: 73212107/1367409673/0
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:42 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-GET.request
new file mode 100644
index 0000000..7d8867f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/010-GET.request
@@ -0,0 +1,13 @@
+GET /PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=0-32767
+If-None-Match: 73212107/1367409673/0
+If-Modified-Since: Wed, 01 May 2013 12:01:13 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-304.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-304.response
new file mode 100644
index 0000000..dbc7e32
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-304.response
@@ -0,0 +1,7 @@
+HTTP/1.1 304 Not Modified
+Last-Modified: Wed, 01 May 2013 12:01:13 GMT
+Etag: 73212107/1367409673/0
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:42:42 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-GET.request
new file mode 100644
index 0000000..f9bea7d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/011-GET.request
@@ -0,0 +1,13 @@
+GET /PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
+Accept: */*
+DNT: 1
+Referer: http://localhost:8080/PDF%20Reports/Apple%20Economic%20Impact%20on%20Cupertino.pdf
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+Range: bytes=32768-181951
+If-None-Match: 73212107/1367409673/0
+If-Modified-Since: Wed, 01 May 2013 12:01:13 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-200.response
new file mode 100644
index 0000000..b33aff2
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-200.response
@@ -0,0 +1,8 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 221
+Content-Type: text/html; charset=utf-8
+Connection: Close
+Server: GCDWebServer
+Date: Fri, 11 Apr 2014 02:43:00 GMT
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-HEAD.request b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-HEAD.request
new file mode 100644
index 0000000..c870918
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebServer/012-HEAD.request
@@ -0,0 +1,5 @@
+HEAD / HTTP/1.1
+User-Agent: curl/7.30.0
+Host: localhost:8080
+Accept: */*
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-200.response
new file mode 100755
index 0000000..5e70bc0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 138
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:13 GMT
+
+[{"path":"\/Copy.txt","name":"Copy.txt","size":271},{"path":"\/images\/","name":"images"},{"path":"\/PDF Reports\/","name":"PDF Reports"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/018-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-200.response
new file mode 100755
index 0000000..7aca4e1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-200.response
@@ -0,0 +1,14 @@
+HTTP/1.1 200 OK
+Connection: Close
+Server: GCDWebUploader
+Content-Type: text/plain
+Last-Modified: Thu, 10 Apr 2014 11:10:14 GMT
+Date: Sat, 12 Apr 2014 05:36:17 GMT
+Content-Disposition: attachment; filename="Copy.txt"; filename*=UTF-8''Copy.txt
+Content-Length: 271
+Cache-Control: no-cache
+Etag: 73598983/1397128214/0
+
+For the colorful.
+
+Color is more than just a hue. It expresses a feeling. Makes a statement. Declares an allegiance. Color reveals your personality. iPhone 5c, in five anything-but-shy colors, does just that. It’s not just for lovers of color. It’s for the colorful.
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-GET.request
new file mode 100755
index 0000000..c1d9830
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/019-GET.request
@@ -0,0 +1,10 @@
+GET /download?path=%2FCopy.txt HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-200.response
new file mode 100755
index 0000000..1237e60
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 128
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:19 GMT
+
+[{"path":"\/PDF Reports\/Apple Economic Impact on Cupertino.pdf","name":"Apple Economic Impact on Cupertino.pdf","size":181952}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-GET.request
new file mode 100755
index 0000000..5563f9d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/020-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2FPDF+Reports%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-200.response
new file mode 100755
index 0000000..0049cf3
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 138
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:38 GMT
+
+[{"path":"\/Copy.txt","name":"Copy.txt","size":271},{"path":"\/images\/","name":"images"},{"path":"\/PDF Reports\/","name":"PDF Reports"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/022-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-200.response
new file mode 100755
index 0000000..f23bb3d
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:47 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-POST.request
new file mode 100755
index 0000000..d2ebfae
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/023-POST.request
@@ -0,0 +1,15 @@
+POST /move HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 50
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+oldPath=%2FPDF+Reports%2F&newPath=%2FApple+Reports
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-200.response
new file mode 100755
index 0000000..cf4c31f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 142
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:47 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/Copy.txt","name":"Copy.txt","size":271},{"path":"\/images\/","name":"images"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/024-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-200.response
new file mode 100755
index 0000000..7477db6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:54 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-POST.request
new file mode 100755
index 0000000..968aee1
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/025-POST.request
@@ -0,0 +1,25 @@
+POST /upload HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 303
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7lMHFBOBPzmFnORR
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+------WebKitFormBoundary7lMHFBOBPzmFnORR
+Content-Disposition: form-data; name="path"
+
+/
+------WebKitFormBoundary7lMHFBOBPzmFnORR
+Content-Disposition: form-data; name="files[]"; filename="Test File.txt"
+Content-Type: text/plain
+
+Nothing to see here!
+
+------WebKitFormBoundary7lMHFBOBPzmFnORR--
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-200.response
new file mode 100755
index 0000000..99c21be
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 202
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:36:54 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/Copy.txt","name":"Copy.txt","size":271},{"path":"\/images\/","name":"images"},{"path":"\/Test File.txt","name":"Test File.txt","size":21}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/026-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-200.response
new file mode 100755
index 0000000..ec86294
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:07 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-POST.request
new file mode 100755
index 0000000..d160965
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/027-POST.request
@@ -0,0 +1,15 @@
+POST /create HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 18
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+path=%2FText+Files
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-200.response
new file mode 100755
index 0000000..622603f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 248
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:07 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/Copy.txt","name":"Copy.txt","size":271},{"path":"\/images\/","name":"images"},{"path":"\/Test File.txt","name":"Test File.txt","size":21},{"path":"\/Text Files\/","name":"Text Files"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/028-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-200.response
new file mode 100755
index 0000000..6478160
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:14 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-POST.request
new file mode 100755
index 0000000..42ae050
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/029-POST.request
@@ -0,0 +1,15 @@
+POST /move HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 52
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+oldPath=%2FCopy.txt&newPath=%2FText+Files%2FCopy.txt
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-200.response
new file mode 100755
index 0000000..be1a3c7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 197
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:14 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/images\/","name":"images"},{"path":"\/Test File.txt","name":"Test File.txt","size":21},{"path":"\/Text Files\/","name":"Text Files"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/030-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-200.response
new file mode 100755
index 0000000..e90dc8b
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:22 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-POST.request
new file mode 100755
index 0000000..c8cb0c6
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/031-POST.request
@@ -0,0 +1,15 @@
+POST /move HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 62
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+oldPath=%2FTest+File.txt&newPath=%2FText+Files%2FTest+File.txt
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-200.response
new file mode 100755
index 0000000..e0d8a7f
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 137
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:22 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/images\/","name":"images"},{"path":"\/Text Files\/","name":"Text Files"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/032-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-200.response
new file mode 100755
index 0000000..32a5f05
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:25 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-POST.request
new file mode 100755
index 0000000..8e973ca
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/033-POST.request
@@ -0,0 +1,15 @@
+POST /delete HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 21
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+path=%2FText+Files%2F
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-200.response
new file mode 100755
index 0000000..d87f0df
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 91
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:25 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/images\/","name":"images"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/034-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-200.response
new file mode 100755
index 0000000..7d970e7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 171
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:29 GMT
+
+[{"path":"\/images\/capable_green_ipad_l.png","name":"capable_green_ipad_l.png","size":116066},{"path":"\/images\/hero_mba_11.jpg","name":"hero_mba_11.jpg","size":106799}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-GET.request
new file mode 100755
index 0000000..991cf51
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/035-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2Fimages%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-200.response
new file mode 100755
index 0000000..7af382a
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:32 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-POST.request
new file mode 100755
index 0000000..e496ce0
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/036-POST.request
@@ -0,0 +1,15 @@
+POST /delete HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 41
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: application/x-www-form-urlencoded; charset=UTF-8
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+path=%2Fimages%2Fcapable_green_ipad_l.png
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-200.response
new file mode 100755
index 0000000..305cf2e
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 77
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:32 GMT
+
+[{"path":"\/images\/hero_mba_11.jpg","name":"hero_mba_11.jpg","size":106799}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-GET.request
new file mode 100755
index 0000000..991cf51
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/037-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2Fimages%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-200.response
new file mode 100755
index 0000000..2ef2a18
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 2
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:43 GMT
+
+{}
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-POST.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-POST.request
new file mode 100755
index 0000000..a27ab4c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/038-POST.request
@@ -0,0 +1,25 @@
+POST /upload HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Content-Length: 310
+Accept: application/json, text/javascript, */*; q=0.01
+Origin: http://localhost:8080
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryBafwo3u3oLFJ8XeG
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
+------WebKitFormBoundaryBafwo3u3oLFJ8XeG
+Content-Disposition: form-data; name="path"
+
+/images/
+------WebKitFormBoundaryBafwo3u3oLFJ8XeG
+Content-Disposition: form-data; name="files[]"; filename="Test File.txt"
+Content-Type: text/plain
+
+Nothing to see here!
+
+------WebKitFormBoundaryBafwo3u3oLFJ8XeG--
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-200.response
new file mode 100755
index 0000000..5263fd7
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 145
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:43 GMT
+
+[{"path":"\/images\/hero_mba_11.jpg","name":"hero_mba_11.jpg","size":106799},{"path":"\/images\/Test File.txt","name":"Test File.txt","size":21}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-GET.request
new file mode 100755
index 0000000..991cf51
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/039-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2Fimages%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-200.response b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-200.response
new file mode 100755
index 0000000..ab12db8
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-200.response
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Cache-Control: no-cache
+Content-Length: 91
+Content-Type: application/json
+Connection: Close
+Server: GCDWebUploader
+Date: Sat, 12 Apr 2014 05:37:48 GMT
+
+[{"path":"\/Apple Reports\/","name":"Apple Reports"},{"path":"\/images\/","name":"images"}]
\ No newline at end of file
diff --git a/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-GET.request b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-GET.request
new file mode 100755
index 0000000..42bc027
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/Tests/WebUploader/040-GET.request
@@ -0,0 +1,11 @@
+GET /list?path=%2F HTTP/1.1
+Host: localhost:8080
+Connection: keep-alive
+Accept: application/json, text/javascript, */*; q=0.01
+X-Requested-With: XMLHttpRequest
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
+DNT: 1
+Referer: http://localhost:8080/
+Accept-Encoding: gzip,deflate,sdch
+Accept-Language: en-US,en;q=0.8,fr;q=0.6
+
diff --git a/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.h b/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.h
new file mode 100644
index 0000000..eee7618
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.h
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+@property(retain, nonatomic) UIWindow* window;
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.m b/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.m
new file mode 100644
index 0000000..2058768
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/iOS/AppDelegate.m
@@ -0,0 +1,70 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "AppDelegate.h"
+#import "GCDWebUploader.h"
+
+@interface AppDelegate () <GCDWebUploaderDelegate> {
+@private
+  GCDWebUploader* _webServer;
+}
+@end
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
+  CGRect bounds = ([UIScreen instancesRespondToSelector:@selector(nativeBounds)] ? [[UIScreen mainScreen] nativeBounds] : [[UIScreen mainScreen] bounds]);
+  _window = [[UIWindow alloc] initWithFrame:bounds];
+  _window.backgroundColor = [UIColor whiteColor];
+  [_window makeKeyAndVisible];
+  
+  NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
+  _webServer = [[GCDWebUploader alloc] initWithUploadDirectory:documentsPath];
+  _webServer.delegate = self;
+  _webServer.allowHiddenItems = YES;
+  [_webServer start];
+  
+  return YES;
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didUploadFileAtPath:(NSString*)path {
+  NSLog(@"[UPLOAD] %@", path);
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
+  NSLog(@"[MOVE] %@ -> %@", fromPath, toPath);
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didDeleteItemAtPath:(NSString*)path {
+  NSLog(@"[DELETE] %@", path);
+}
+
+- (void)webUploader:(GCDWebUploader*)uploader didCreateDirectoryAtPath:(NSString*)path {
+  NSLog(@"[CREATE] %@", path);
+}
+
+@end
diff --git a/local-webserver/src/ios/GCDWebServer/iOS/Info.plist b/local-webserver/src/ios/GCDWebServer/iOS/Info.plist
new file mode 100644
index 0000000..2645b2c
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/iOS/Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIdentifier</key>
+	<string>net.pol-online.${PRODUCT_NAME:rfc1034identifier}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>
diff --git a/local-webserver/src/ios/GCDWebServer/iOS/main.m b/local-webserver/src/ios/GCDWebServer/iOS/main.m
new file mode 100644
index 0000000..21b6aa9
--- /dev/null
+++ b/local-webserver/src/ios/GCDWebServer/iOS/main.m
@@ -0,0 +1,34 @@
+/*
+ Copyright (c) 2012-2014, Pierre-Olivier Latour
+ All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * The name of Pierre-Olivier Latour may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "AppDelegate.h"
+
+int main(int argc, char* argv[]) {
+  @autoreleasepool {
+    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+  }
+}
