From ddd8a7d4ef9df8080d97e057b75f47fa70473895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Diot?= Date: Thu, 16 Jan 2025 10:30:32 +0100 Subject: [PATCH] Remove unused test files for luasocket --- src/deps/src/luasocket/docs/dns.html | 183 - src/deps/src/luasocket/docs/ftp.html | 288 -- src/deps/src/luasocket/docs/http.html | 339 -- src/deps/src/luasocket/docs/index.html | 138 - src/deps/src/luasocket/docs/installation.html | 127 - src/deps/src/luasocket/docs/introduction.html | 333 -- src/deps/src/luasocket/docs/ltn12.html | 440 --- src/deps/src/luasocket/docs/lua05.ppt | Bin 304128 -> 0 bytes src/deps/src/luasocket/docs/luasocket.png | Bin 11732 -> 0 bytes src/deps/src/luasocket/docs/mime.html | 477 --- src/deps/src/luasocket/docs/reference.css | 55 - src/deps/src/luasocket/docs/reference.html | 261 -- src/deps/src/luasocket/docs/smtp.html | 419 --- src/deps/src/luasocket/docs/socket.html | 481 --- src/deps/src/luasocket/docs/tcp.html | 738 ---- src/deps/src/luasocket/docs/udp.html | 596 ---- src/deps/src/luasocket/docs/url.html | 328 -- src/deps/src/luasocket/test/README | 14 - src/deps/src/luasocket/test/auth/.htaccess | 4 - src/deps/src/luasocket/test/auth/.htpasswd | 1 - src/deps/src/luasocket/test/auth/index.html | 3002 ----------------- src/deps/src/luasocket/test/cgi/cat | 6 - .../src/luasocket/test/cgi/cat-index-html | 5 - src/deps/src/luasocket/test/cgi/env | 5 - src/deps/src/luasocket/test/cgi/query-string | 4 - src/deps/src/luasocket/test/cgi/redirect-loop | 3 - src/deps/src/luasocket/test/cgi/request-uri | 4 - src/deps/src/luasocket/test/dicttest.lua | 5 - src/deps/src/luasocket/test/excepttest.lua | 30 - .../src/luasocket/test/find-connect-limit | 32 - src/deps/src/luasocket/test/ftptest.lua | 122 - src/deps/src/luasocket/test/hello.lua | 3 - src/deps/src/luasocket/test/httptest.lua | 441 --- src/deps/src/luasocket/test/index.html | 3002 ----------------- src/deps/src/luasocket/test/ltn12test.lua | 308 -- src/deps/src/luasocket/test/luasocket.png | Bin 11732 -> 0 bytes src/deps/src/luasocket/test/mimetest.lua | 299 -- src/deps/src/luasocket/test/smtptest.lua | 259 -- src/deps/src/luasocket/test/stufftest.lua | 21 - src/deps/src/luasocket/test/tcp-getoptions | 57 - src/deps/src/luasocket/test/test_bind.lua | 6 - .../src/luasocket/test/test_getaddrinfo.lua | 15 - .../src/luasocket/test/test_socket_error.lua | 31 - src/deps/src/luasocket/test/testclnt.lua | 803 ----- src/deps/src/luasocket/test/testmesg.lua | 96 - src/deps/src/luasocket/test/testsrvr.lua | 20 - src/deps/src/luasocket/test/testsupport.lua | 37 - src/deps/src/luasocket/test/tftptest.lua | 20 - .../src/luasocket/test/udp-zero-length-send | 25 - .../luasocket/test/udp-zero-length-send-recv | 37 - .../src/luasocket/test/udpconnectclnt.lua | 19 - .../src/luasocket/test/udpconnectsrvr.lua | 16 - src/deps/src/luasocket/test/unixdgramclnt.lua | 9 - src/deps/src/luasocket/test/unixdgramsrvr.lua | 9 - .../src/luasocket/test/unixstreamclnt.lua | 8 - .../src/luasocket/test/unixstreamsrvr.lua | 9 - src/deps/src/luasocket/test/upload.html | 15 - src/deps/src/luasocket/test/urltest.lua | 738 ---- src/deps/src/luasocket/test/utestclnt.lua | 644 ---- src/deps/src/luasocket/test/utestsrvr.lua | 17 - 60 files changed, 15404 deletions(-) delete mode 100644 src/deps/src/luasocket/docs/dns.html delete mode 100644 src/deps/src/luasocket/docs/ftp.html delete mode 100644 src/deps/src/luasocket/docs/http.html delete mode 100644 src/deps/src/luasocket/docs/index.html delete mode 100644 src/deps/src/luasocket/docs/installation.html delete mode 100644 src/deps/src/luasocket/docs/introduction.html delete mode 100644 src/deps/src/luasocket/docs/ltn12.html delete mode 100644 src/deps/src/luasocket/docs/lua05.ppt delete mode 100644 src/deps/src/luasocket/docs/luasocket.png delete mode 100644 src/deps/src/luasocket/docs/mime.html delete mode 100644 src/deps/src/luasocket/docs/reference.css delete mode 100644 src/deps/src/luasocket/docs/reference.html delete mode 100644 src/deps/src/luasocket/docs/smtp.html delete mode 100644 src/deps/src/luasocket/docs/socket.html delete mode 100644 src/deps/src/luasocket/docs/tcp.html delete mode 100644 src/deps/src/luasocket/docs/udp.html delete mode 100644 src/deps/src/luasocket/docs/url.html delete mode 100644 src/deps/src/luasocket/test/README delete mode 100644 src/deps/src/luasocket/test/auth/.htaccess delete mode 100644 src/deps/src/luasocket/test/auth/.htpasswd delete mode 100644 src/deps/src/luasocket/test/auth/index.html delete mode 100644 src/deps/src/luasocket/test/cgi/cat delete mode 100644 src/deps/src/luasocket/test/cgi/cat-index-html delete mode 100644 src/deps/src/luasocket/test/cgi/env delete mode 100644 src/deps/src/luasocket/test/cgi/query-string delete mode 100644 src/deps/src/luasocket/test/cgi/redirect-loop delete mode 100644 src/deps/src/luasocket/test/cgi/request-uri delete mode 100644 src/deps/src/luasocket/test/dicttest.lua delete mode 100644 src/deps/src/luasocket/test/excepttest.lua delete mode 100644 src/deps/src/luasocket/test/find-connect-limit delete mode 100644 src/deps/src/luasocket/test/ftptest.lua delete mode 100644 src/deps/src/luasocket/test/hello.lua delete mode 100644 src/deps/src/luasocket/test/httptest.lua delete mode 100644 src/deps/src/luasocket/test/index.html delete mode 100644 src/deps/src/luasocket/test/ltn12test.lua delete mode 100644 src/deps/src/luasocket/test/luasocket.png delete mode 100644 src/deps/src/luasocket/test/mimetest.lua delete mode 100644 src/deps/src/luasocket/test/smtptest.lua delete mode 100644 src/deps/src/luasocket/test/stufftest.lua delete mode 100644 src/deps/src/luasocket/test/tcp-getoptions delete mode 100644 src/deps/src/luasocket/test/test_bind.lua delete mode 100644 src/deps/src/luasocket/test/test_getaddrinfo.lua delete mode 100644 src/deps/src/luasocket/test/test_socket_error.lua delete mode 100644 src/deps/src/luasocket/test/testclnt.lua delete mode 100644 src/deps/src/luasocket/test/testmesg.lua delete mode 100644 src/deps/src/luasocket/test/testsrvr.lua delete mode 100644 src/deps/src/luasocket/test/testsupport.lua delete mode 100644 src/deps/src/luasocket/test/tftptest.lua delete mode 100644 src/deps/src/luasocket/test/udp-zero-length-send delete mode 100644 src/deps/src/luasocket/test/udp-zero-length-send-recv delete mode 100644 src/deps/src/luasocket/test/udpconnectclnt.lua delete mode 100644 src/deps/src/luasocket/test/udpconnectsrvr.lua delete mode 100644 src/deps/src/luasocket/test/unixdgramclnt.lua delete mode 100644 src/deps/src/luasocket/test/unixdgramsrvr.lua delete mode 100644 src/deps/src/luasocket/test/unixstreamclnt.lua delete mode 100644 src/deps/src/luasocket/test/unixstreamsrvr.lua delete mode 100644 src/deps/src/luasocket/test/upload.html delete mode 100644 src/deps/src/luasocket/test/urltest.lua delete mode 100644 src/deps/src/luasocket/test/utestclnt.lua delete mode 100644 src/deps/src/luasocket/test/utestsrvr.lua diff --git a/src/deps/src/luasocket/docs/dns.html b/src/deps/src/luasocket/docs/dns.html deleted file mode 100644 index 56ce3ba40..000000000 --- a/src/deps/src/luasocket/docs/dns.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -LuaSocket: DNS support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

DNS

- -

-IPv4 name resolution functions -dns.toip -and -dns.tohostname -return all information obtained from -the resolver in a table of the form: -

- -
-resolved4 = {
-  name = canonic-name,
-  alias = alias-list,
-  ip = ip-address-list
-} -
- -

-Note that the alias list can be empty. -

- -

-The more general name resolution function -dns.getaddrinfo, which -supports both IPv6 and IPv4, -returns all information obtained from -the resolver in a table of the form: -

- -
-resolved6 = {
-  [1] = {
-    family = family-name-1,
-    addr = address-1
-  },
-  ...
-  [n] = {
-    family = family-name-n,
-    addr = address-n
-  }
-} -
- -

-Here, family contains the string "inet" for IPv4 -addresses, and "inet6" for IPv6 addresses. -

- - - -

-socket.dns.getaddrinfo(address) -

- -

-Converts from host name to address. -

- -

-Address can be an IPv4 or IPv6 address or host name. -

- -

-The function returns a table with all information returned by -the resolver. In case of error, the function returns nil -followed by an error message. -

- - - -

-socket.dns.gethostname() -

- -

-Returns the standard host name for the machine as a string. -

- - - -

-socket.dns.tohostname(address) -

- -

-Converts from IPv4 address to host name. -

- -

-Address can be an IP address or host name. -

- -

-The function returns a string with the canonic host name of the given -address, followed by a table with all information returned by -the resolver. In case of error, the function returns nil -followed by an error message. -

- - - -

-socket.dns.toip(address) -

- -

-Converts from host name to IPv4 address. -

- -

-Address can be an IP address or host name. -

- -

-Returns a string with the first IP address found for address, -followed by a table with all information returned by the resolver. -In case of error, the function returns nil followed by an error -message. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/ftp.html b/src/deps/src/luasocket/docs/ftp.html deleted file mode 100644 index 7f7da2e47..000000000 --- a/src/deps/src/luasocket/docs/ftp.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - -LuaSocket: FTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

FTP

- -

-FTP (File Transfer Protocol) is a protocol used to transfer files -between hosts. The ftp namespace offers thorough support -to FTP, under a simple interface. The implementation conforms to -RFC 959. -

- -

-High level functions are provided supporting the most common operations. -These high level functions are implemented on top of a lower level -interface. Using the low-level interface, users can easily create their -own functions to access any operation supported by the FTP -protocol. For that, check the implementation. -

- -

-To really benefit from this module, a good understanding of - -LTN012, Filters sources and sinks is necessary. -

- -

-To obtain the ftp namespace, run: -

- -
--- loads the FTP module and any libraries it requires
-local ftp = require("socket.ftp")
-
- -

-URLs MUST conform to -RFC 1738, -that is, an URL is a string in the form: -

- -
- -[ftp://][<user>[:<password>]@]<host>[:<port>][/<path>][type=a|i] -
- -

-The following constants in the namespace can be set to control the default behavior of -the FTP module: -

- - - - - - -

-ftp.get(url)
-ftp.get{
-  host = string,
-  sink = LTN12 sink,
-  argument or path = string,
-  [user = string,]
-  [password = string]
-  [command = string,]
-  [port = number,]
-  [type = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-The get function has two forms. The simple form has fixed -functionality: it downloads the contents of a URL and returns it as a -string. The generic form allows a lot more control, as explained -below. -

- -

-If the argument of the get function is a table, the function -expects at least the fields host, sink, and one of -argument or path (argument takes -precedence). Host is the server to connect to. Sink is -the simple -LTN12 -sink that will receive the downloaded data. Argument or -path give the target path to the resource in the server. The -optional arguments are the following: -

- - -

-If successful, the simple version returns the URL contents as a -string, and the generic function returns 1. In case of error, both -functions return nil and an error message describing the -error. -

- -
--- load the ftp support
-local ftp = require("socket.ftp")
-
--- Log as user "anonymous" on server "ftp.tecgraf.puc-rio.br",
--- and get file "lua.tar.gz" from directory "pub/lua" as binary.
-f, e = ftp.get("ftp://ftp.tecgraf.puc-rio.br/pub/lua/lua.tar.gz;type=i")
-
- -
--- load needed modules
-local ftp = require("socket.ftp")
-local ltn12 = require("ltn12")
-local url = require("socket.url")
-
--- a function that returns a directory listing
-function nlst(u)
-    local t = {}
-    local p = url.parse(u)
-    p.command = "nlst"
-    p.sink = ltn12.sink.table(t)
-    local r, e = ftp.get(p)
-    return r and table.concat(t), e
-end
-
- - - -

-ftp.put(url, content)
-ftp.put{
-  host = string,
-  source = LTN12 sink,
-  argument or path = string,
-  [user = string,]
-  [password = string]
-  [command = string,]
-  [port = number,]
-  [type = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-The put function has two forms. The simple form has fixed -functionality: it uploads a string of content into a URL. The generic form -allows a lot more control, as explained below. -

- -

-If the argument of the put function is a table, the function -expects at least the fields host, source, and one of -argument or path (argument takes -precedence). Host is the server to connect to. Source is -the simple -LTN12 -source that will provide the contents to be uploaded. -Argument or -path give the target path to the resource in the server. The -optional arguments are the following: -

- - -

-Both functions return 1 if successful, or nil and an error -message describing the reason for failure. -

- -
--- load the ftp support
-local ftp = require("socket.ftp")
-
--- Log as user "fulano" on server "ftp.example.com",
--- using password "silva", and store a file "README" with contents
--- "wrong password, of course"
-f, e = ftp.put("ftp://fulano:silva@ftp.example.com/README",
-    "wrong password, of course")
-
- -
--- load the ftp support
-local ftp = require("socket.ftp")
-local ltn12 = require("ltn12")
-
--- Log as user "fulano" on server "ftp.example.com",
--- using password "silva", and append to the remote file "LOG", sending the
--- contents of the local file "LOCAL-LOG"
-f, e = ftp.put{
-  host = "ftp.example.com",
-  user = "fulano",
-  password = "silva",
-  command = "appe",
-  argument = "LOG",
-  source = ltn12.source.file(io.open("LOCAL-LOG", "r"))
-}
-
- - - - - - - - diff --git a/src/deps/src/luasocket/docs/http.html b/src/deps/src/luasocket/docs/http.html deleted file mode 100644 index 52b8a30fe..000000000 --- a/src/deps/src/luasocket/docs/http.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - -LuaSocket: HTTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -introduction · -introduction · -reference -

-
-
-
- - - -

HTTP

- -

-HTTP (Hyper Text Transfer Protocol) is the protocol used to exchange -information between web-browsers and servers. The http -namespace offers full support for the client side of the HTTP -protocol (i.e., -the facilities that would be used by a web-browser implementation). The -implementation conforms to the HTTP/1.1 standard, -RFC 2616. -

- -

-The module exports functions that provide HTTP functionality in different -levels of abstraction. From the simple -string oriented requests, through generic -LTN12 based, down to even lower-level if you bother to look through the source code. -

- -

-To obtain the http namespace, run: -

- -
--- loads the HTTP module and any libraries it requires
-local http = require("socket.http")
-
- -

-URLs must conform to -RFC 1738, -that is, an URL is a string in the form: -

- -
-
-[http://][<user>[:<password>]@]<host>[:<port>][/<path>]
-
-
- -

-MIME headers are represented as a Lua table in the form: -

- -
- - -
-headers = {
-  field-1-name = field-1-value,
-  field-2-name = field-2-value,
-  field-3-name = field-3-value,
-  ...
-  field-n-name = field-n-value
-} -
-
- -

-Field names are case insensitive (as specified by the standard) and all -functions work with lowercase field names (but see -socket.headers.canonic). -Field values are left unmodified. -

- -

-Note: MIME headers are independent of order. Therefore, there is no problem -in representing them in a Lua table. -

- -

-The following constants can be set to control the default behavior of -the HTTP module: -

- - - -

-Note: These constants are global. Changing them will also -change the behavior other code that might be using LuaSocket. -

- - - -

-http.request(url [, body])
-http.request{
-  url = string,
-  [sink = LTN12 sink,]
-  [method = string,]
-  [headers = header-table,]
-  [source = LTN12 source],
-  [step = LTN12 pump step,]
-  [proxy = string,]
-  [redirect = boolean,]
-  [create = function,]
-  [maxredirects = number]
-} -

- -

-The request function has two forms. The simple form downloads -a URL using the GET or POST method and is based -on strings. The generic form performs any HTTP method and is -LTN12 based. -

- -

-If the first argument of the request function is a string, it -should be an url. In that case, if a body -is provided as a string, the function will perform a POST method -in the url. Otherwise, it performs a GET in the -url -

- -

-If the first argument is instead a table, the most important fields are -the url and the simple -LTN12 -sink that will receive the downloaded content. -Any part of the url can be overridden by including -the appropriate field in the request table. -If authentication information is provided, the function -uses the Basic Authentication Scheme (see note) -to retrieve the document. If sink is nil, the -function discards the downloaded data. The optional parameters are the -following: -

- - -

-In case of failure, the function returns nil followed by an -error message. If successful, the simple form returns the response -body as a string, followed by the response status code, the response -headers and the response status line. The generic function returns the same -information, except the first return value is just the number 1 (the body -goes to the sink). -

- -

-Even when the server fails to provide the contents of the requested URL (URL not found, for example), -it usually returns a message body (a web page informing the -URL was not found or some other useless page). To make sure the -operation was successful, check the returned status code. For -a list of the possible values and their meanings, refer to RFC 2616. -

- -

-Here are a few examples with the simple interface: -

- -
--- load the http module
-local io = require("io")
-local http = require("socket.http")
-local ltn12 = require("ltn12")
-
--- connect to server "www.cs.princeton.edu" and retrieves this manual
--- file from "~diego/professional/luasocket/http.html" and print it to stdout
-http.request{
-    url = "http://www.cs.princeton.edu/~diego/professional/luasocket/http.html",
-    sink = ltn12.sink.file(io.stdout)
-}
-
--- connect to server "www.example.com" and tries to retrieve
--- "/private/index.html". Fails because authentication is needed.
-b, c, h = http.request("http://www.example.com/private/index.html")
--- b returns some useless page telling about the denied access,
--- h returns authentication information
--- and c returns with value 401 (Authentication Required)
-
--- tries to connect to server "wrong.host" to retrieve "/"
--- and fails because the host does not exist.
-r, e = http.request("http://wrong.host/")
--- r is nil, and e returns with value "host not found"
-
- -

-And here is an example using the generic interface: -

- -
--- load the http module
-http = require("socket.http")
-
--- Requests information about a document, without downloading it.
--- Useful, for example, if you want to display a download gauge and need
--- to know the size of the document in advance
-r, c, h = http.request {
-  method = "HEAD",
-  url = "http://www.tecgraf.puc-rio.br/~diego"
-}
--- r is 1, c is 200, and h would return the following headers:
--- h = {
---   date = "Tue, 18 Sep 2001 20:42:21 GMT",
---   server = "Apache/1.3.12 (Unix)  (Red Hat/Linux)",
---   ["last-modified"] = "Wed, 05 Sep 2001 06:11:20 GMT",
---   ["content-length"] = 15652,
---   ["connection"] = "close",
---   ["content-Type"] = "text/html"
--- }
-
- -

-Note: When sending a POST request, simple interface adds a -"Content-type: application/x-www-form-urlencoded" -header to the request. This is the type used by -HTML forms. If you need another type, use the generic -interface. -

- -

-Note: Some URLs are protected by their -servers from anonymous download. For those URLs, the server must receive -some sort of authentication along with the request or it will deny -download and return status "401 Authentication Required". -

- -

-The HTTP/1.1 standard defines two authentication methods: the Basic -Authentication Scheme and the Digest Authentication Scheme, both -explained in detail in -RFC 2068. -

- -

The Basic Authentication Scheme sends -<user> and -<password> unencrypted to the server and is therefore -considered unsafe. Unfortunately, by the time of this implementation, -the wide majority of servers and browsers support the Basic Scheme only. -Therefore, this is the method used by the toolkit whenever -authentication is required. -

- -
--- load required modules
-http = require("socket.http")
-mime = require("mime")
-
--- Connect to server "www.example.com" and tries to retrieve
--- "/private/index.html", using the provided name and password to
--- authenticate the request
-b, c, h = http.request("http://fulano:silva@www.example.com/private/index.html")
-
--- Alternatively, one could fill the appropriate header and authenticate
--- the request directly.
-r, c = http.request {
-  url = "http://www.example.com/private/index.html",
-  headers = { authorization = "Basic " .. (mime.b64("fulano:silva")) }
-}
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/index.html b/src/deps/src/luasocket/docs/index.html deleted file mode 100644 index ad926870f..000000000 --- a/src/deps/src/luasocket/docs/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -LuaSocket: Network support for the Lua language - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

What is LuaSocket?

- -

-LuaSocket is a Lua extension library -that is composed by two parts: a C core that provides support for the TCP -and UDP transport layers, and a set of Lua modules that add support for -functionality commonly needed by applications that deal with the Internet. -

- -

-The core support has been implemented so that it is both efficient and -simple to use. It is available to any Lua application once it has been -properly initialized by the interpreter in use. The code has been tested -and runs well on several Windows and UNIX platforms.

- -

-Among the support modules, the most commonly used implement the -SMTP -(sending e-mails), -HTTP -(WWW access) and -FTP -(uploading and downloading files) client -protocols. These provide a very natural and generic interface to the -functionality defined by each protocol. -In addition, you will find that the -MIME (common encodings), -URL -(anything you could possible want to do with one) and -LTN12 -(filters, sinks, sources and pumps) modules can be very handy. -

- -

-The library is available under the same - -terms and conditions as the Lua language, the MIT license. The idea is -that if you can use Lua in a project, you should also be able to use -LuaSocket. -

- -

-Copyright © 1999-2013 Diego Nehab. All rights reserved.
-Author: Diego Nehab -

- - - -

Download

- -

-LuaSocket version 3.1.0 is now available for download! -It is compatible with Lua 5.1 through 5.4. -Chances are it works well on most UNIX distributions and Windows flavors. -

- -

-The current version of the library can be found at -the LuaSocket -project page on GitHub. Besides the full C and Lua source code -for the library, the distribution contains several examples, -this user's manual and basic test procedures. -

- -

Take a look at the installation section of the -manual to find out how to properly install the library. -

- - - -

Special thanks

- -

-This marks the first release of LuaSocket that -wholeheartedly embraces the open-source development -philosophy. After a long hiatus, Matthew Wild finally -convinced me it was time for a release including IPv6 and -Lua 5.2 support. It was more work than we anticipated. -Special thanks to Sam Roberts, Florian Zeitz, and Paul -Aurich, Liam Devine, Alexey Melnichuk, and everybody else -that has helped bring this library back to life. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/installation.html b/src/deps/src/luasocket/docs/installation.html deleted file mode 100644 index dcf9d36f5..000000000 --- a/src/deps/src/luasocket/docs/installation.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -LuaSocket: Installation - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Installation

- -

Here we describe the standard distribution. If the -standard doesn't meet your needs, we refer you to the Lua -discussion list, where any question about the package scheme -will likely already have been answered.

- -

Directory structure

- -

On Unix systems, the standard distribution uses two base -directories, one for system dependent files, and another for system -independent files. Let's call these directories <CDIR> -and <LDIR>, respectively. -For example, in my laptp, Lua 5.1 is configured to -use '/usr/local/lib/lua/5.1' for -<CDIR> and '/usr/local/share/lua/5.1' for -<LDIR>. On Windows, <CDIR> -usually points to the directory where the Lua executable is -found, and <LDIR> points to a -lua/ directory inside <CDIR>. (These -settings can be overridden by environment variables -LUA_PATH and LUA_CPATH. See the Lua -documentation for details.) Here is the standard LuaSocket -distribution directory structure:

- -
-<LDIR>/ltn12.lua
-<LDIR>/socket.lua
-<CDIR>/socket/core.dll
-<LDIR>/socket/http.lua
-<LDIR>/socket/tp.lua
-<LDIR>/socket/ftp.lua
-<LDIR>/socket/smtp.lua
-<LDIR>/socket/url.lua
-<LDIR>/mime.lua
-<CDIR>/mime/core.dll
-
- -

Naturally, on Unix systems, core.dll -would be replaced by core.so. -

- -

Using LuaSocket

- -

With the above setup, and an interpreter with shared library support, -it should be easy to use LuaSocket. Just fire the interpreter and use the -require function to gain access to whatever module you need:

- -
-Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
-> socket = require("socket")
-> print(socket._VERSION)
---> LuaSocket 3.0.0
-
- -

Each module loads their dependencies automatically, so you only need to -load the modules you directly depend upon:

- -
-Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
-> http = require("socket.http")
-> print(http.request("http://www.impa.br/~diego/software/luasocket"))
---> homepage gets dumped to terminal
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/introduction.html b/src/deps/src/luasocket/docs/introduction.html deleted file mode 100644 index fd22f483d..000000000 --- a/src/deps/src/luasocket/docs/introduction.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - -LuaSocket: Introduction to the core - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Introduction

- -

-LuaSocket is a Lua extension library -that is composed by two parts: a C core that provides support for the TCP -and UDP transport layers, and a set of Lua modules that add support for -the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and -downloading files) protocols and other functionality commonly needed by -applications that deal with the Internet. This introduction is about the C -core. -

- -

-Communication in LuaSocket is performed via I/O objects. These can -represent different network domains. Currently, support is provided for TCP -and UDP, but nothing prevents other developers from implementing SSL, Local -Domain, Pipes, File Descriptors etc. I/O objects provide a standard -interface to I/O across different domains and operating systems. -

- -

-The API design had two goals in mind. First, users -experienced with the C API to sockets should feel comfortable using LuaSocket. -Second, the simplicity and the feel of the Lua language should be -preserved. To achieve these goals, the LuaSocket API keeps the function names and semantics the C API whenever possible, but their usage in Lua has been greatly simplified. -

- - -

-One of the simplifications is the receive pattern capability. -Applications can read data from stream domains (such as TCP) -line by line, block by block, or until the connection is closed. -All I/O reads are buffered and the performance differences between -different receive patterns are negligible. -

- -

-Another advantage is the flexible timeout control -mechanism. As in C, all I/O operations are blocking by default. For -example, the send, -receive and -accept methods -of the TCP domain will block the caller application until -the operation is completed (if ever!). However, with a call to the -settimeout -method, an application can specify upper limits on -the time it can be blocked by LuaSocket (the "total" timeout), on -the time LuaSocket can internally be blocked by any OS call (the -"block" timeout) or a combination of the two. Each LuaSocket -call might perform several OS calls, so that the two timeout values are -not equivalent. -

- -

-Finally, the host name resolution is transparent, meaning that most -functions and methods accept both IP addresses and host names. In case a -host name is given, the library queries the system's resolver and -tries the main IP address returned. Note that direct use of IP addresses -is more efficient, of course. The -toip -and tohostname -functions from the DNS module are provided to convert between host names and IP addresses. -

- -

-Together, these changes make network programming in LuaSocket much simpler -than it is in C, as the following sections will show. -

- - - -

TCP

- -

-TCP (Transfer Control Protocol) is reliable stream protocol. In other -words, applications communicating through TCP can send and receive data as -an error free stream of bytes. Data is split in one end and -reassembled transparently on the other end. There are no boundaries in -the data transfers. The library allows users to read data from the -sockets in several different granularities: patterns are available for -lines, arbitrary sized blocks or "read up to connection closed", all with -good performance. -

- -

-The library distinguishes three types of TCP sockets: master, -client and server sockets. -

- -

-Master sockets are newly created TCP sockets returned by the function -socket.tcp. A master socket is -transformed into a server socket -after it is associated with a local address by a call to the -bind method followed by a call to the -listen. Conversely, a master socket -can be changed into a client socket with the method -connect, -which associates it with a remote address. -

- -

-On server sockets, applications can use the -accept method -to wait for a client connection. Once a connection is established, a -client socket object is returned representing this connection. The -other methods available for server socket objects are -getsockname, -setoption, -settimeout, and -close. -

- -

-Client sockets are used to exchange data between two applications over -the Internet. Applications can call the methods -send and -receive -to send and receive data. The other methods -available for client socket objects are -getsockname, -getpeername, -setoption, -settimeout, -shutdown, and -close. -

- -

-Example: -

-
-

-A simple echo server, using LuaSocket. The program binds to an ephemeral -port (one that is chosen by the operating system) on the local host and -awaits client connections on that port. When a connection is established, -the program reads a line from the remote end and sends it back, closing -the connection immediately. You can test it using the telnet -program. -

- -
--- load namespace
-local socket = require("socket")
--- create a TCP socket and bind it to the local host, at any port
-local server = assert(socket.bind("*", 0))
--- find out which port the OS chose for us
-local ip, port = server:getsockname()
--- print a message informing what's up
-print("Please telnet to localhost on port " .. port)
-print("After connecting, you have 10s to enter a line to be echoed")
--- loop forever waiting for clients
-while 1 do
-  -- wait for a connection from any client
-  local client = server:accept()
-  -- make sure we don't block waiting for this client's line
-  client:settimeout(10)
-  -- receive the line
-  local line, err = client:receive()
-  -- if there was no error, send it back to the client
-  if not err then client:send(line .. "\n") end
-  -- done with client, close the object
-  client:close()
-end
-
-
- - - -

UDP

- -

-UDP (User Datagram Protocol) is a non-reliable datagram protocol. In -other words, applications communicating through UDP send and receive -data as independent blocks, which are not guaranteed to reach the other -end. Even when they do reach the other end, they are not guaranteed to be -error free. Data transfers are atomic, one datagram at a time. Reading -only part of a datagram discards the rest, so that the following read -operation will act on the next datagram. The advantages are in -simplicity (no connection setup) and performance (no error checking or -error correction). -

- -

-Note that although no guarantees are made, these days -networks are so good that, under normal circumstances, few errors -happen in practice. -

- -

-An UDP socket object is created by the -socket.udp function. UDP -sockets do not need to be connected before use. The method -sendto -can be used immediately after creation to -send a datagram to IP address and port. Host names are not allowed -because performing name resolution for each packet would be forbiddingly -slow. Methods -receive and -receivefrom -can be used to retrieve datagrams, the latter returning the IP and port of -the sender as extra return values (thus being slightly less -efficient). -

- -

-When communication is performed repeatedly with a single peer, an -application should call the -setpeername method to specify a -permanent partner. Methods -sendto and -receivefrom -can no longer be used, but the method -send can be used to send data -directly to the peer, and the method -receive -will only return datagrams originating -from that peer. There is about 30% performance gain due to this practice. -

- -

-To associate an UDP socket with a local address, an application calls the -setsockname -method before sending any datagrams. Otherwise, the socket is -automatically bound to an ephemeral address before the first data -transmission and once bound the local address cannot be changed. -The other methods available for UDP sockets are -getpeername, -getsockname, -settimeout, -setoption and -close. -

- -

-Example: -

-
-

-A simple daytime client, using LuaSocket. The program connects to a remote -server and tries to retrieve the daytime, printing the answer it got or an -error message. -

- -
--- change here to the host an port you want to contact
-local host, port = "localhost", 13
--- load namespace
-local socket = require("socket")
--- convert host name to ip address
-local ip = assert(socket.dns.toip(host))
--- create a new UDP object
-local udp = assert(socket.udp())
--- contact daytime host
-assert(udp:sendto("anything", ip, port))
--- retrieve the answer and print results
-io.write(assert(udp:receive()))
-
-
- - - -

Support modules

- -

Although not covered in the introduction, LuaSocket offers -much more than TCP and UDP functionality. As the library -evolved, support for HTTP, FTP, -and SMTP were built on top of these. These modules -and many others are covered by the reference manual. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/ltn12.html b/src/deps/src/luasocket/docs/ltn12.html deleted file mode 100644 index fe3e3a0fb..000000000 --- a/src/deps/src/luasocket/docs/ltn12.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - -LuaSocket: LTN12 module - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

LTN12

- -

The ltn12 namespace implements the ideas described in - -LTN012, Filters sources and sinks. This manual simply describes the -functions. Please refer to the LTN for a deeper explanation of the -functionality provided by this module. -

- -

-To obtain the ltn12 namespace, run: -

- -
--- loads the LTN21 module
-local ltn12 = require("ltn12")
-
- - - -

Filters

- - - -

-ltn12.filter.chain(filter1, filter2 -[, ... filterN]) -

- -

-Returns a filter that passes all data it receives through each of a -series of given filters. -

- -

-Filter1 to filterN are simple -filters. -

- -

-The function returns the chained filter. -

- -

-The nesting of filters can be arbitrary. For instance, the useless filter -below doesn't do anything but return the data that was passed to it, -unaltered. -

- -
--- load required modules
-local ltn12 = require("ltn12")
-local mime = require("mime")
-
--- create a silly identity filter
-id = ltn12.filter.chain(
-  mime.encode("quoted-printable"),
-  mime.encode("base64"),
-  mime.decode("base64"),
-  mime.decode("quoted-printable")
-)
-
- - - -

-ltn12.filter.cycle(low [, ctx, extra]) -

- -

-Returns a high-level filter that cycles though a low-level filter by -passing it each chunk and updating a context between calls. -

- -

-Low is the low-level filter to be cycled, -ctx is the initial context and extra is any extra -argument the low-level filter might take. -

- -

-The function returns the high-level filter. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- the base64 mime filter factory
-encodet['base64'] = function()
-    return ltn12.filter.cycle(b64, "")
-end
-
- - - -

Pumps

- - - -

-ltn12.pump.all(source, sink) -

- -

-Pumps all data from a source to a sink. -

- -

-If successful, the function returns a value that evaluates to -true. In case -of error, the function returns a false value, followed by an error message. -

- - - -

-ltn12.pump.step(source, sink) -

- -

-Pumps one chunk of data from a source to a sink. -

- -

-If successful, the function returns a value that evaluates to -true. In case -of error, the function returns a false value, followed by an error message. -

- - - -

Sinks

- - - -

-ltn12.sink.chain(filter, sink) -

- -

-Creates and returns a new sink that passes data through a filter before sending it to a given sink. -

- - - -

-ltn12.sink.error(message) -

- -

-Creates and returns a sink that aborts transmission with the error -message. -

- - - -

-ltn12.sink.file(handle, message) -

- -

-Creates a sink that sends data to a file. -

- -

-Handle is a file handle. If handle is nil, -message should give the reason for failure. -

- -

-The function returns a sink that sends all data to the given handle -and closes the file when done, or a sink that aborts the transmission with -the error message -

- -

-In the following example, notice how the prototype is designed to -fit nicely with the io.open function. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- copy a file
-ltn12.pump.all(
-  ltn12.source.file(io.open("original.png", "rb")),
-  ltn12.sink.file(io.open("copy.png", "wb"))
-)
-
- - - -

-ltn12.sink.null() -

- -

-Returns a sink that ignores all data it receives. -

- - - -

-ltn12.sink.simplify(sink) -

- -

-Creates and returns a simple sink given a fancy sink. -

- - - -

-ltn12.sink.table([table]) -

- -

-Creates a sink that stores all chunks in a table. The chunks can later be -efficiently concatenated into a single string. -

- -

-Table is used to hold the chunks. If -nil, the function creates its own table. -

- -

-The function returns the sink and the table used to store the chunks. -

- -
--- load needed modules
-local http = require("socket.http")
-local ltn12 = require("ltn12")
-
--- a simplified http.get function
-function http.get(u)
-  local t = {}
-  local respt = request{
-    url = u,
-    sink = ltn12.sink.table(t)
-  }
-  return table.concat(t), respt.headers, respt.code
-end
-
- - - -

Sources

- - - -

-ltn12.source.cat(source1 [, source2, ..., -sourceN]) -

- -

-Creates a new source that produces the concatenation of the data produced -by a number of sources. -

- -

-Source1 to sourceN are the original -sources. -

- -

-The function returns the new source. -

- - - -

-ltn12.source.chain(source, filter) -

- -

-Creates a new source that passes data through a filter -before returning it. -

- -

-The function returns the new source. -

- - - -

-ltn12.source.empty() -

- -

-Creates and returns an empty source. -

- - - -

-ltn12.source.error(message) -

- -

-Creates and returns a source that aborts transmission with the error -message. -

- - - -

-ltn12.source.file(handle, message) -

- -

-Creates a source that produces the contents of a file. -

- -

-Handle is a file handle. If handle is nil, -message should give the reason for failure. -

- -

-The function returns a source that reads chunks of data from -given handle and returns it to the user, -closing the file when done, or a source that aborts the transmission with -the error message -

- -

-In the following example, notice how the prototype is designed to -fit nicely with the io.open function. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- copy a file
-ltn12.pump.all(
-  ltn12.source.file(io.open("original.png", "rb")),
-  ltn12.sink.file(io.open("copy.png", "wb"))
-)
-
- - - -

-ltn12.source.simplify(source) -

- -

-Creates and returns a simple source given a fancy source. -

- - - -

-ltn12.source.string(string) -

- -

-Creates and returns a source that produces the contents of a -string, chunk by chunk. -

- - - -

-ltn12.source.table(table) -

- -

-Creates and returns a source that produces the numerically-indexed values of a table successively beginning at 1. The source returns nil (end-of-stream) whenever a nil value is produced by the current index, which proceeds forward regardless. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/lua05.ppt b/src/deps/src/luasocket/docs/lua05.ppt deleted file mode 100644 index e2b7ab4b304505811d6f481ac1ab7147af3e8ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304128 zcmeFYc|6qL`#=1eF)@~yL6)+NF=%>Ag9>FC4B0{?Te8GdWX~Rk1|za1nTV7nWXZlH z>pNsiLYARH)+`y4{hoP$d*8qB{rTO$KYsW9&;7@Jd0d|7y3RS*xn9>Fp(9`3fKMEKCOwrQ}@!;_AkfHrX7bfXEL1zk`_vlQ| z`v2+w!w~@Tx!CAk$3kZ?zzP8XEbxlUjV>Jl4)@jQh(rK@BOL*H7ypBdG=K#&{xfPF z9$3*k)(G!y*hvZAsDHD(pd0+)nMrDnCzGsYDSs>A<)|d04{(X@`9e?0)VyD ze>BW%3G`Cn4iMl;&!3^Q0;3?E=p*kRV))IVe~Qx)`i}(spF>vQkNj^wqfv%KJpZBR z_#^*2)LH*S=KK$t?&Cl7Z~6ah_djKZpA6ssSLOfp?|+4iX~&>{>;JFH{om;s*DUc* z?f(&{qkm+EpA6d!WYqo7`v11~-;r@GGIVCdj8UEu8-|Y2@Bj2Y9T|G|Kgei{Av0pe zKt}8t$RLJYUONA0y#H;FQSKO>8OTRxhMv)<|2?0dE;I54{~#UyFZTbHkJA$;{xGAw z5S>lXu2e`HBIGRiTC zp=ZPnL1zXr>M`hFWW-O7&WtuNe~>ZF7;VVYnNbcwXNDayIy2<6e^C4nO8h~oKX~R3 z%KpJ~bY#>&|3^MaM}~jsKeF^6`Sc(8)F1ro52^v6H6lF?23Xcmbo`&`pF6>SQ#bu@ zm38=ImzlZY0@mWkiR%ZF;)YhCtZzRb0-~*qcK@X&-~qtC#)wlGh#m>(1IE;bMyfON z8$mGoD$xX@tDt}Xqd5dY>Ej#(rq_ph0LOna`u~s&0E>%@0EI$fRH74s&L8P~2w(w` zpMS;xlwpOjf^X569#LS8i%}N_wF_7UN7qG*0i%|(UU}DVGe`ueH(XEdE!9b}Sy~2Odr@q5RMyiyP z3zR^2jX-CH>;ddDF@`FGJm`skWky9TeNKu3JP_r7a{q0E3z%nGm}M-C3rvi`K%mdG zZ}cl?FeA+v9E=Ihn23x?|HlOo7qHHxO~2wZKnE8?j{!b&F#^HJ=K=;%O?-Txt*zr}*C8{bI0F2)Ek z4EQfwSLv2q0Vlxw|Aj5YA6uG$JK*z=Z%*|82*8kT_kY(f%pY6kbidqyTl8N0FJ$=l zzhetbzeemITc;1@4-o+7umV$!`F|2G0^Jq>WdCzxCjfTzG-LPzK+ZosMHiurWr(q? z(8*0?jh{ZT{-@~{ZESeyDBE#H-yhZ0!I{vpgU%nI^iBr^Fc!6RVD-?kq+cjI4}(F# zvvkJt%yLinvKGrA3meZx4*!W9FUF#!i&MYqKl-D=@-b@IN7BD4s3ZtCWAYc<33X|d z4k;NYu61R+B7qluWhyuE?5mWXz5amIs*uzu@@$DV1vLF!%0D(XP2ypQs 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 z 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®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[~2ha~#t@A)Fl3 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

q3K#UGuE*q~9)O#l@#|#4d9-E2eW2P*||? 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 - - - - - -LuaSocket: MIME module - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

MIME

- -

-The mime namespace offers filters that apply and remove common -content transfer encodings, such as Base64 and Quoted-Printable. -It also provides functions to break text into lines and change -the end-of-line convention. -MIME is described mainly in -RFC 2045, -2046, -2047, -2048, and -2049. -

- -

-All functionality provided by the MIME module -follows the ideas presented in - -LTN012, Filters sources and sinks. -

- -

-To obtain the mime namespace, run: -

- -
--- loads the MIME module and everything it requires
-local mime = require("mime")
-
- - - - -

High-level filters

- - - - -

-mime.decode("base64")
-mime.decode("quoted-printable") -

- -

-Returns a filter that decodes data from a given transfer content -encoding. -

- - - -

-mime.encode("base64")
-mime.encode("quoted-printable" [, mode]) -

- -

-Returns a filter that encodes data according to a given transfer content -encoding. -

- -

-In the Quoted-Printable case, the user can specify whether the data is -textual or binary, by passing the mode strings "text" or -"binary". Mode defaults to "text". -

- -

-Although both transfer content encodings specify a limit for the line -length, the encoding filters do not break text into lines (for -added flexibility). -Below is a filter that converts binary data to the Base64 transfer content -encoding and breaks it into lines of the correct size. -

- -
-base64 = ltn12.filter.chain(
-  mime.encode("base64"),
-  mime.wrap("base64")
-)
-
- -

-Note: Text data has to be converted to canonic form -before being encoded. -

- -
-base64 = ltn12.filter.chain(
-  mime.normalize(),
-  mime.encode("base64"),
-  mime.wrap("base64")
-)
-
- - - -

-mime.normalize([marker]) -

- -

-Converts most common end-of-line markers to a specific given marker. -

- -

-Marker is the new marker. It defaults to CRLF, the canonic -end-of-line marker defined by the MIME standard. -

- -

-The function returns a filter that performs the conversion. -

- -

-Note: There is no perfect solution to this problem. Different end-of-line -markers are an evil that will probably plague developers forever. -This function, however, will work perfectly for text created with any of -the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF), -or the DOS (CRLF) conventions. Even if the data has mixed end-of-line -markers, the function will still work well, although it doesn't -guarantee that the number of empty lines will be correct. -

- - - -

-mime.stuff()
-

- -

-Creates and returns a filter that performs stuffing of SMTP messages. -

- -

-Note: The smtp.send function -uses this filter automatically. You don't need to chain it with your -source, or apply it to your message body. -

- - - -

-mime.wrap("text" [, length])
-mime.wrap("base64")
-mime.wrap("quoted-printable") -

- -

-Returns a filter that breaks data into lines. -

- -

-The "text" line-wrap filter simply breaks text into lines by -inserting CRLF end-of-line markers at appropriate positions. -Length defaults 76. -The "base64" line-wrap filter works just like the default -"text" line-wrap filter with default length. -The function can also wrap "quoted-printable" lines, taking care -not to break lines in the middle of an escaped character. In that case, the -line length is fixed at 76. -

- -

-For example, to create an encoding filter for the Quoted-Printable transfer content encoding of text data, do the following: -

- -
-qp = ltn12.filter.chain(
-  mime.normalize(),
-  mime.encode("quoted-printable"),
-  mime.wrap("quoted-printable")
-)
-
- -

-Note: To break into lines with a different end-of-line convention, apply -a normalization filter after the line break filter. -

- - - -

Low-level filters

- - - -

-A, B = mime.b64(C [, D]) -

- -

-Low-level filter to perform Base64 encoding. -

- -

-A is the encoded version of the largest prefix of -C..D -that can be encoded unambiguously. B has the remaining bytes of -C..D, before encoding. -If D is nil, A is padded with -the encoding of the remaining bytes of C. -

- -

-Note: The simplest use of this function is to encode a string into it's -Base64 transfer content encoding. Notice the extra parenthesis around the -call to mime.b64, to discard the second return value. -

- -
-print((mime.b64("diego:password")))
---> ZGllZ286cGFzc3dvcmQ=
-
- - -

-A, n = mime.dot(m [, B]) -

- -

-Low-level filter to perform SMTP stuffing and enable transmission of -messages containing the sequence "CRLF.CRLF". -

- -

-A is the stuffed version of B. 'n' gives the -number of characters from the sequence CRLF seen in the end of B. -'m' should tell the same, but for the previous chunk. -

- -

Note: The message body is defined to begin with -an implicit CRLF. Therefore, to stuff a message correctly, the -first m should have the value 2. -

- -
-print((string.gsub(mime.dot(2, ".\r\nStuffing the message.\r\n.\r\n."), "\r\n", "\\n")))
---> ..\nStuffing the message.\n..\n..
-
- -

-Note: The smtp.send function -uses this filter automatically. You don't need to -apply it again. -

- - - -

-A, B = mime.eol(C [, D, marker]) -

- -

-Low-level filter to perform end-of-line marker translation. -For each chunk, the function needs to know if the last character of the -previous chunk could be part of an end-of-line marker or not. This is the -context the function receives besides the chunk. An updated version of -the context is returned after each new chunk. -

- -

-A is the translated version of D. C is the -ASCII value of the last character of the previous chunk, if it was a -candidate for line break, or 0 otherwise. -B is the same as C, but for the current -chunk. Marker gives the new end-of-line marker and defaults to CRLF. -

- -
--- translates the end-of-line marker to UNIX
-unix = mime.eol(0, dos, "\n")
-
- - - -

-A, B = mime.qp(C [, D, marker]) -

- -

-Low-level filter to perform Quoted-Printable encoding. -

- -

-A is the encoded version of the largest prefix of -C..D -that can be encoded unambiguously. B has the remaining bytes of -C..D, before encoding. -If D is nil, A is padded with -the encoding of the remaining bytes of C. -Throughout encoding, occurrences of CRLF are replaced by the -marker, which itself defaults to CRLF. -

- -

-Note: The simplest use of this function is to encode a string into it's -Quoted-Printable transfer content encoding. -Notice the extra parenthesis around the call to mime.qp, to discard the second return value. -

- -
-print((mime.qp("ma��")))
---> ma=E7=E3=
-
- - - -

-A, m = mime.qpwrp(n [, B, length]) -

- -

-Low-level filter to break Quoted-Printable text into lines. -

- -

-A is a copy of B, broken into lines of at most -length bytes (defaults to 76). -'n' should tell how many bytes are left for the first -line of B and 'm' returns the number of bytes -left in the last line of A. -

- -

-Note: Besides breaking text into lines, this function makes sure the line -breaks don't fall in the middle of an escaped character combination. Also, -this function only breaks lines that are bigger than length bytes. -

- - - -

-A, B = mime.unb64(C [, D]) -

- -

-Low-level filter to perform Base64 decoding. -

- -

-A is the decoded version of the largest prefix of -C..D -that can be decoded unambiguously. B has the remaining bytes of -C..D, before decoding. -If D is nil, A is the empty string -and B returns whatever couldn't be decoded. -

- -

-Note: The simplest use of this function is to decode a string from it's -Base64 transfer content encoding. -Notice the extra parenthesis around the call to mime.unqp, to discard the second return value. -

- -
-print((mime.unb64("ZGllZ286cGFzc3dvcmQ=")))
---> diego:password
-
- - - -

-A, B = mime.unqp(C [, D]) -

- -

-Low-level filter to remove the Quoted-Printable transfer content encoding -from data. -

- -

-A is the decoded version of the largest prefix of -C..D -that can be decoded unambiguously. B has the remaining bytes of -C..D, before decoding. -If D is nil, A is augmented with -the encoding of the remaining bytes of C. -

- -

-Note: The simplest use of this function is to decode a string from it's -Quoted-Printable transfer content encoding. -Notice the extra parenthesis around the call to mime.unqp, to discard the second return value. -

- -
-print((mime.qp("ma=E7=E3=")))
---> ma��
-
- - - -

-A, m = mime.wrp(n [, B, length]) -

- -

-Low-level filter to break text into lines with CRLF marker. -Text is assumed to be in the normalize form. -

- -

-A is a copy of B, broken into lines of at most -length bytes (defaults to 76). -'n' should tell how many bytes are left for the first -line of B and 'm' returns the number of bytes -left in the last line of A. -

- -

-Note: This function only breaks lines that are bigger than -length bytes. The resulting line length does not include the CRLF -marker. -

- - - - - - - - diff --git a/src/deps/src/luasocket/docs/reference.css b/src/deps/src/luasocket/docs/reference.css deleted file mode 100644 index 04e38cfeb..000000000 --- a/src/deps/src/luasocket/docs/reference.css +++ /dev/null @@ -1,55 +0,0 @@ -body { - margin-left: 1em; - margin-right: 1em; - font-family: "Verdana", sans-serif; - background: #ffffff; -} - -tt { - font-family: "Andale Mono", monospace; -} - -h1, h2, h3, h4 { margin-left: 0em; } - - -h3 { padding-top: 1em; } - -p { margin-left: 1em; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; - margin-left: 0em; -} - -a[href] { color: #00007f; } - -blockquote { margin-left: 3em; } - -pre.example { - background: #ccc; - padding: 1em; - margin-left: 1em; - font-family: "Andale Mono", monospace; - font-size: small; -} - -hr { - margin-left: 0em; - background: #00007f; - border: 0px; - height: 1px; -} - -ul { list-style-type: disc; } - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } -table.index ul { padding-top: 0em; margin-top: 0em; } - -h1:first-letter, -h2:first-letter, -h2:first-letter, -h3:first-letter { color: #00007f; } - -div.header, div.footer { margin-left: 0em; } diff --git a/src/deps/src/luasocket/docs/reference.html b/src/deps/src/luasocket/docs/reference.html deleted file mode 100644 index 2bc5f78c5..000000000 --- a/src/deps/src/luasocket/docs/reference.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -LuaSocket: Index to reference manual - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Reference

- -
-DNS (in socket) -
-getaddrinfo, -gethostname, -tohostname, -toip. -
-
- - - -
-FTP -
-get, -put. -
-
- - - -
-HTTP -
-request. -
-
- - - -
-LTN12 -
-filter: -chain, -cycle. -
-
-pump: -all, -step. -
-
-sink: -chain, -error, -file, -null, -simplify, -table. -
-
-source: -cat, -chain, -empty, -error, -file, -simplify, -string, -table. -
-
- - - -
-MIME -
-high-level: -decode, -encode, -normalize, -stuff, -wrap. -
-
-low-level: -b64, -dot, -eol, -qp, -qpwrp, -unb64, -unqp, -wrp. -
-
- - - -
-SMTP -
-message, -send. -
-
- - - -
-Socket -
-bind, -connect, -connect4, -connect6, -_DATAGRAMSIZE, -_DEBUG, -dns, -gettime, -headers.canonic, -newtry, -protect, -select, -sink, -skip, -sleep, -_SETSIZE, -_SOCKETINVALID, -source, -tcp, -tcp4, -tcp6, -try, -udp, -udp4, -udp6, -_VERSION. -
-
- - - -
-TCP (in socket) -
-accept, -bind, -close, -connect, -dirty, -getfd, -getoption, -getpeername, -getsockname, -getstats, -gettimeout, -listen, -receive, -send, -setfd, -setoption, -setstats, -settimeout, -shutdown. -
-
- - - -
-UDP (in socket) -
-close, -getoption, -getpeername, -getsockname, -gettimeout, -receive, -receivefrom, -send, -sendto, -setpeername, -setsockname, -setoption, -settimeout. -
-
- - - -
-URL -
-absolute, -build, -build_path, -escape, -parse, -parse_path, -unescape. -
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/smtp.html b/src/deps/src/luasocket/docs/smtp.html deleted file mode 100644 index 787d0b107..000000000 --- a/src/deps/src/luasocket/docs/smtp.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - -LuaSocket: SMTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

SMTP

- -

The smtp namespace provides functionality to send e-mail -messages. The high-level API consists of two functions: one to -define an e-mail message, and another to actually send the message. -Although almost all users will find that these functions provide more than -enough functionality, the underlying implementation allows for even more -control (if you bother to read the code). -

- -

The implementation conforms to the Simple Mail Transfer Protocol, -RFC 2821. -Another RFC of interest is RFC 2822, -which governs the Internet Message Format. -Multipart messages (those that contain attachments) are part -of the MIME standard, but described mainly -in RFC 2046.

- -

In the description below, good understanding of LTN012, Filters -sources and sinks and the MIME module is -assumed. In fact, the SMTP module was the main reason for their -creation.

- -

-To obtain the smtp namespace, run: -

- -
--- loads the SMTP module and everything it requires
-local smtp = require("socket.smtp")
-
- -

-MIME headers are represented as a Lua table in the form: -

- -
- - -
-headers = {
-  field-1-name = field-1-value,
-  field-2-name = field-2-value,
-  field-3-name = field-3-value,
-  ...
-  field-n-name = field-n-value
-} -
-
- -

-Field names are case insensitive (as specified by the standard) and all -functions work with lowercase field names (but see -socket.headers.canonic). -Field values are left unmodified. -

- -

-Note: MIME headers are independent of order. Therefore, there is no problem -in representing them in a Lua table. -

- -

-The following constants can be set to control the default behavior of -the SMTP module: -

- -
    -
  • DOMAIN: domain used to greet the server;
  • -
  • PORT: default port used for the connection;
  • -
  • SERVER: default server used for the connection;
  • -
  • TIMEOUT: default timeout for all I/O operations;
  • -
  • ZONE: default time zone.
  • -
- - - -

-smtp.message(mesgt) -

- -

-Returns a simple -LTN12 source that sends an SMTP message body, possibly multipart (arbitrarily deep). -

- -

-The only parameter of the function is a table describing the message. -Mesgt has the following form (notice the recursive structure): -

- -
- - -
-mesgt = {
-  headers = header-table,
-  body = LTN12 source or string or -multipart-mesgt
-}

-multipart-mesgt = {
-  [preamble = string,]
-  [1] = mesgt,
-  [2] = mesgt,
-  ...
-  [n] = mesgt,
-  [epilogue = string,]
-}
-
-
- -

-For a simple message, all that is needed is a set of headers -and the body. The message body can be given as a string -or as a simple -LTN12 -source. For multipart messages, the body is a table that -recursively defines each part as an independent message, plus an optional -preamble and epilogue. -

- -

-The function returns a simple -LTN12 -source that produces the -message contents as defined by mesgt, chunk by chunk. -Hopefully, the following -example will make things clear. When in doubt, refer to the appropriate RFC -as listed in the introduction.

- -
--- load the smtp support and its friends
-local smtp = require("socket.smtp")
-local mime = require("mime")
-local ltn12 = require("ltn12")
-
--- creates a source to send a message with two parts. The first part is
--- plain text, the second part is a PNG image, encoded as base64.
-source = smtp.message{
-  headers = {
-     -- Remember that headers are *ignored* by smtp.send.
-     from = "Sicrano de Oliveira <sicrano@example.com>",
-     to = "Fulano da Silva <fulano@example.com>",
-     subject = "Here is a message with attachments"
-  },
-  body = {
-    preamble = "If your client doesn't understand attachments, \r\n" ..
-               "it will still display the preamble and the epilogue.\r\n" ..
-               "Preamble will probably appear even in a MIME enabled client.",
-    -- first part: no headers means plain text, us-ascii.
-    -- The mime.eol low-level filter normalizes end-of-line markers.
-    [1] = {
-      body = mime.eol(0, [[
-        Lines in a message body should always end with CRLF.
-        The smtp module will *NOT* perform translation. However, the
-        send function *DOES* perform SMTP stuffing, whereas the message
-        function does *NOT*.
-      ]])
-    },
-    -- second part: headers describe content to be a png image,
-    -- sent under the base64 transfer content encoding.
-    -- notice that nothing happens until the message is actually sent.
-    -- small chunks are loaded into memory right before transmission and
-    -- translation happens on the fly.
-    [2] = {
-      headers = {
-        ["content-type"] = 'image/png; name="image.png"',
-        ["content-disposition"] = 'attachment; filename="image.png"',
-        ["content-description"] = 'a beautiful image',
-        ["content-transfer-encoding"] = "BASE64"
-      },
-      body = ltn12.source.chain(
-        ltn12.source.file(io.open("image.png", "rb")),
-        ltn12.filter.chain(
-          mime.encode("base64"),
-          mime.wrap()
-        )
-      )
-    },
-    epilogue = "This might also show up, but after the attachments"
-  }
-}
-
--- finally send it
-r, e = smtp.send{
-    from = "<sicrano@example.com>",
-    rcpt = "<fulano@example.com>",
-    source = source,
-}
-
- - - - -

-smtp.send{
-  from = string,
-  rcpt = string or string-table,
-  source = LTN12 source,
-  [user = string,]
-  [password = string,]
-  [server = string,]
-  [port = number,]
-  [domain = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-Sends a message to a recipient list. Since sending messages is not as -simple as downloading an URL from a FTP or HTTP server, this function -doesn't have a simple interface. However, see the -message source factory for -a very powerful way to define the message contents. -

- - -

-The sender is given by the e-mail address in the from field. -Rcpt is a Lua table with one entry for each recipient e-mail -address, or a string -in case there is just one recipient. -The contents of the message are given by a simple -LTN12 -source. Several arguments are optional: -

-
    -
  • user, password: User and password for -authentication. The function will attempt LOGIN and PLAIN authentication -methods if supported by the server (both are unsafe);
  • -
  • server: Server to connect to. Defaults to "localhost";
  • -
  • port: Port to connect to. Defaults to 25;
  • -
  • domain: Domain name used to greet the server; Defaults to the -local machine host name;
  • -
  • step: -LTN12 -pump step function used to pass data from the -source to the server. Defaults to the LTN12 pump.step function;
  • -
  • create: An optional function to be used instead of -socket.tcp when the communications socket is created.
  • -
- -

-If successful, the function returns 1. Otherwise, the function returns -nil followed by an error message. -

- -

-Note: SMTP servers can be very picky with the format of e-mail -addresses. To be safe, use only addresses of the form -"<fulano@example.com>" in the from and -rcpt arguments to the send function. In headers, e-mail -addresses can take whatever form you like.

- -

-Big note: There is a good deal of misconception with the use of the -destination address field headers, i.e., the 'To', 'Cc', -and, more importantly, the 'Bcc' headers. Do not add a -'Bcc' header to your messages because it will probably do the -exact opposite of what you expect. -

- -

-Only recipients specified in the rcpt list will receive a copy of the -message. Each recipient of an SMTP mail message receives a copy of the -message body along with the headers, and nothing more. The headers -are part of the message and should be produced by the -LTN12 -source function. The rcpt list is not -part of the message and will not be sent to anyone. -

- -

-RFC 2822 -has two important and short sections, "3.6.3. Destination address -fields" and "5. Security considerations", explaining the proper -use of these headers. Here is a summary of what it says: -

- -
    -
  • To: contains the address(es) of the primary recipient(s) -of the message;
  • -
  • Cc: (where the "Cc" means "Carbon Copy" in the sense of -making a copy on a typewriter using carbon paper) contains the -addresses of others who are to receive the message, though the -content of the message may not be directed at them;
  • -
  • Bcc: (where the "Bcc" means "Blind Carbon -Copy") contains addresses of recipients of the message whose addresses are not -to be revealed to other recipients of the message.
  • -
- -

-The LuaSocket send function does not care or interpret the -headers you send, but it gives you full control over what is sent and -to whom it is sent: -

-
    -
  • If someone is to receive the message, the e-mail address has -to be in the recipient list. This is the only parameter that controls who -gets a copy of the message;
  • -
  • If there are multiple recipients, none of them will automatically -know that someone else got that message. That is, the default behavior is -similar to the Bcc field of popular e-mail clients;
  • -
  • It is up to you to add the To header with the list of primary -recipients so that other recipients can see it;
  • -
  • It is also up to you to add the Cc header with the -list of additional recipients so that everyone else sees it;
  • -
  • Adding a header Bcc is nonsense, unless it is -empty. Otherwise, everyone receiving the message will see it and that is -exactly what you don't want to happen!
  • -
- -

-I hope this clarifies the issue. Otherwise, please refer to -RFC 2821 -and -RFC 2822. -

- -
--- load the smtp support
-local smtp = require("socket.smtp")
-
--- Connects to server "localhost" and sends a message to users
--- "fulano@example.com",  "beltrano@example.com",
--- and "sicrano@example.com".
--- Note that "fulano" is the primary recipient, "beltrano" receives a
--- carbon copy and neither of them knows that "sicrano" received a blind
--- carbon copy of the message.
-from = "<luasocket@example.com>"
-
-rcpt = {
-  "<fulano@example.com>",
-  "<beltrano@example.com>",
-  "<sicrano@example.com>"
-}
-
-mesgt = {
-  headers = {
-    to = "Fulano da Silva <fulano@example.com>",
-    cc = '"Beltrano F. Nunes" <beltrano@example.com>',
-    subject = "My first message"
-  },
-  body = "I hope this works. If it does, I can send you another 1000 copies."
-}
-
-r, e = smtp.send{
-  from = from,
-  rcpt = rcpt,
-  source = smtp.message(mesgt)
-}
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/socket.html b/src/deps/src/luasocket/docs/socket.html deleted file mode 100644 index c14811447..000000000 --- a/src/deps/src/luasocket/docs/socket.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - -LuaSocket: The socket namespace - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

The socket namespace

- -

-The socket namespace contains the core functionality of LuaSocket. -

- -

-To obtain the socket namespace, run: -

- -
--- loads the socket module
-local socket = require("socket")
-
- - - -

-socket.headers.canonic

- -

The socket.headers.canonic table -is used by the HTTP and SMTP modules to translate from -lowercase field names back into their canonic -capitalization. When a lowercase field name exists as a key -in this table, the associated value is substituted in -whenever the field name is sent out. -

- -

-You can obtain the headers namespace if case run-time -modifications are required by running: -

- -
--- loads the headers module
-local headers = require("headers")
-
- - - - -

-socket.bind(address, port [, backlog]) -

- -

-This function is a shortcut that creates and returns a TCP server object -bound to a local address and port, ready to -accept client connections. Optionally, -user can also specify the backlog argument to the -listen method (defaults to 32). -

- -

-Note: The server object returned will have the option "reuseaddr" -set to true. -

- - - -

-socket.connect[46](address, port [, locaddr] [, locport] [, family]) -

- -

-This function is a shortcut that creates and returns a TCP client object -connected to a remote address at a given port. Optionally, -the user can also specify the local address and port to bind -(locaddr and locport), or restrict the socket family -to "inet" or "inet6". -Without specifying family to connect, whether a tcp or tcp6 -connection is created depends on your system configuration. Two variations -of connect are defined as simple helper functions that restrict the -family, socket.connect4 and socket.connect6. -

- - - -

-socket._DEBUG -

- -

-This constant is set to true if the library was compiled -with debug support. -

- - - -

-socket._DATAGRAMSIZE -

- -

-Default datagram size used by calls to -receive and -receivefrom. -(Unless changed in compile time, the value is 8192.) -

- - - -

-socket.gettime() -

- -

-Returns the UNIX time in seconds. You should subtract the values returned by this function -to get meaningful values. -

- -
-t = socket.gettime()
--- do stuff
-print(socket.gettime() - t .. " seconds elapsed")
-
- - - -

-socket.newtry(finalizer) -

- -

-Creates and returns a clean -try -function that allows for cleanup before the exception -is raised. -

- -

-Finalizer is a function that will be called before -try throws the exception. -

- -

-The function returns your customized try function. -

- -

-Note: This idea saved a lot of work with the -implementation of protocols in LuaSocket: -

- -
-foo = socket.protect(function()
-    -- connect somewhere
-    local c = socket.try(socket.connect("somewhere", 42))
-    -- create a try function that closes 'c' on error
-    local try = socket.newtry(function() c:close() end)
-    -- do everything reassured c will be closed
-    try(c:send("hello there?\r\n"))
-    local answer = try(c:receive())
-    ...
-    try(c:send("good bye\r\n"))
-    c:close()
-end)
-
- - - - -

-socket.protect(func) -

- -

-Converts a function that throws exceptions into a safe function. This -function only catches exceptions thrown by the try -and newtry functions. It does not catch normal -Lua errors. -

- -

-Func is a function that calls -try (or assert, or error) -to throw exceptions. -

- -

-Returns an equivalent function that instead of throwing exceptions in case of -a failed try call, returns nil -followed by an error message. -

- - - -

-socket.select(recvt, sendt [, timeout]) -

- -

-Waits for a number of sockets to change status. -

- -

-Recvt is an array with the sockets to test for characters -available for reading. Sockets in the sendt array are watched to -see if it is OK to immediately write on them. Timeout is the -maximum amount of time (in seconds) to wait for a change in status. A -nil, negative or omitted timeout value allows the -function to block indefinitely. Recvt and sendt can also -be empty tables or nil. Non-socket values (or values with -non-numeric indices) in the arrays will be silently ignored. -

- -

The function returns a list with the sockets ready for -reading, a list with the sockets ready for writing and an error message. -The error message is "timeout" if a timeout -condition was met, "select failed" if the call -to select failed, and -nil otherwise. The returned tables are -doubly keyed both by integers and also by the sockets -themselves, to simplify the test if a specific socket has -changed status. -

- -

-Note: select can monitor a limited number -of sockets, as defined by the constant -socket._SETSIZE. This -number may be as high as 1024 or as low as 64 by default, -depending on the system. It is usually possible to change this -at compile time. Invoking select with a larger -number of sockets will raise an error. -

- -

-Important note: a known bug in WinSock causes select to fail -on non-blocking TCP sockets. The function may return a socket as -writable even though the socket is not ready for sending. -

- -

-Another important note: calling select with a server socket in the receive parameter before a call to accept does not guarantee -accept will return immediately. -Use the settimeout -method or accept might block forever. -

- -

-Yet another note: If you close a socket and pass -it to select, it will be ignored. -

- -

-Using select with non-socket objects: Any object that implements getfd and dirty can be used with select, allowing objects from other libraries to be used within a socket.select driven loop. -

- - - -

-socket._SETSIZE -

- -

-The maximum number of sockets that the select function can handle. -

- - - - -

-socket.sink(mode, socket) -

- -

-Creates an -LTN12 -sink from a stream socket object. -

- -

-Mode defines the behavior of the sink. The following -options are available: -

-
    -
  • "http-chunked": sends data through socket after applying the -chunked transfer coding, closing the socket when done;
  • -
  • "close-when-done": sends all received data through the -socket, closing the socket when done;
  • -
  • "keep-open": sends all received data through the -socket, leaving it open when done.
  • -
-

-Socket is the stream socket object used to send the data. -

- -

-The function returns a sink with the appropriate behavior. -

- - - -

-socket.skip(d [, ret1, ret2 ... retN]) -

- -

-Drops a number of arguments and returns the remaining. -

- -

-D is the number of arguments to drop. Ret1 to -retN are the arguments. -

- -

-The function returns retd+1 to retN. -

- -

-Note: This function is useful to avoid creation of dummy variables: -

- -
--- get the status code and separator from SMTP server reply
-local code, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)"))
-
- - - -

-socket.sleep(time) -

- -

-Freezes the program execution during a given amount of time. -

- -

-Time is the number of seconds to sleep for. If -time is negative, the function returns immediately. -

- - - -

-socket.source(mode, socket [, length]) -

- -

-Creates an -LTN12 -source from a stream socket object. -

- -

-Mode defines the behavior of the source. The following -options are available: -

-
    -
  • "http-chunked": receives data from socket and removes the -chunked transfer coding before returning the data;
  • -
  • "by-length": receives a fixed number of bytes from the -socket. This mode requires the extra argument length;
  • -
  • "until-closed": receives data from a socket until the other -side closes the connection.
  • -
-

-Socket is the stream socket object used to receive the data. -

- -

-The function returns a source with the appropriate behavior. -

- - - -

-socket._SOCKETINVALID -

- -

-The OS value for an invalid socket. This can be used with -tcp:getfd and tcp:setfd methods. -

- - - -

-socket.try(ret1 [, ret2 ... retN]) -

- -

-Throws an exception in case ret1 is falsy, using -ret2 as the error message. The exception is supposed to be caught -by a protected function only. -

- -

-Ret1 to retN can be arbitrary -arguments, but are usually the return values of a function call -nested with try. -

- -

-The function returns ret1 to retN if -ret1 is not nil or false. -Otherwise, it calls error passing ret2 wrapped -in a table with metatable used by protect to -distinguish exceptions from runtime errors. -

- -
--- connects or throws an exception with the appropriate error message
-c = socket.try(socket.connect("localhost", 80))
-
- - - -

-socket._VERSION -

- -

-This constant has a string describing the current LuaSocket version. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/tcp.html b/src/deps/src/luasocket/docs/tcp.html deleted file mode 100644 index a26228d50..000000000 --- a/src/deps/src/luasocket/docs/tcp.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - -LuaSocket: TCP/IP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

TCP

- - - -

-server:accept() -

- -

-Waits for a remote connection on the server -object and returns a client object representing that connection. -

- -

-If a connection is successfully initiated, a client object is returned. -If a timeout condition is met, the method returns nil -followed by the error string 'timeout'. Other errors are -reported by nil followed by a message describing the error. -

- -

-Note: calling socket.select -with a server object in -the recvt parameter before a call to accept does -not guarantee accept will return immediately. Use the settimeout method or accept -might block until another client shows up. -

- - - -

-master:bind(address, port) -

- -

-Binds a master object to address and port on the -local host. -

- -

-Address can be an IP address or a host name. -Port must be an integer number in the range [0..64K). -If address -is '*', the system binds to all local interfaces -using the INADDR_ANY constant or -IN6ADDR_ANY_INIT, according to the family. -If port is 0, the system automatically -chooses an ephemeral port. -

- -

-In case of success, the method returns 1. In case of error, the -method returns nil followed by an error message. -

- -

-Note: The function socket.bind -is available and is a shortcut for the creation of server sockets. -

- - - -

-master:close()
-client:close()
-server:close() -

- -

-Closes a TCP object. The internal socket used by the object is closed -and the local address to which the object was -bound is made available to other applications. No further operations -(except for further calls to the close method) are allowed on -a closed socket. -

- -

-Note: It is important to close all used sockets once they are not -needed, since, in many systems, each socket uses a file descriptor, -which are limited system resources. Garbage-collected objects are -automatically closed before destruction, though. -

- - - -

-master:connect(address, port) -

- -

-Attempts to connect a master object to a remote host, transforming it into a -client object. -Client objects support methods -send, -receive, -getsockname, -getpeername, -settimeout, -and close. -

- -

-Address can be an IP address or a host name. -Port must be an integer number in the range [1..64K). -

- -

-In case of error, the method returns nil followed by a string -describing the error. In case of success, the method returns 1. -

- -

-Note: The function socket.connect -is available and is a shortcut for the creation of client sockets. -

- -

-Note: Starting with LuaSocket 2.0, -the settimeout -method affects the behavior of connect, causing it to return -with an error in case of a timeout. If that happens, you can still call socket.select with the socket in the -sendt table. The socket will be writable when the connection is -established. -

- -

-Note: Starting with LuaSocket 3.0, the host name resolution -depends on whether the socket was created by -socket.tcp, -socket.tcp4 or -socket.tcp6. Addresses from -the appropriate family (or both) are tried in the order -returned by the resolver until the -first success or until the last failure. If the timeout was -set to zero, only the first address is tried. -

- - - -

-master:dirty()
-client:dirty()
-server:dirty() -

- -

-Check the read buffer status. -

- -

-Returns true if there is any data in the read buffer, false otherwise. -

- -

-Note: This is an internal method, use at your own risk. -

- - - - -

-master:getfd()
-client:getfd()
-server:getfd() -

- -

-Returns the underling socket descriptor or handle associated to the object. -

- -

-The descriptor or handle. In case the object has been closed, the return value -will be -1. For an invalid socket it will be -_SOCKETINVALID. -

- -

-Note: This is an internal method. Unlikely to be -portable. Use at your own risk. -

- - - - -

-client:getoption(option)
-server:getoption(option) -

- -

-Gets options for the TCP object. -See setoption for description of the -option names and values. -

- -

-Option is a string with the option name.

-
    -
  • 'keepalive'
  • -
  • 'linger'
  • -
  • 'reuseaddr'
  • -
  • 'tcp-nodelay'
  • -
- -

-The method returns the option value in case of success, or -nil followed by an error message otherwise. -

- - - - -

-client:getpeername() -

- -

-Returns information about the remote side of a connected client object. -

- -

-Returns a string with the IP address of the peer, the -port number that peer is using for the connection, -and a string with the family ("inet" or "inet6"). -In case of error, the method returns nil. -

- -

-Note: It makes no sense to call this method on server objects. -

- - - -

-master:getsockname()
-client:getsockname()
-server:getsockname() -

- -

-Returns the local address information associated to the object. -

- -

-The method returns a string with local IP address, a number with -the local port, -and a string with the family ("inet" or "inet6"). -In case of error, the method returns nil. -

- - - -

-master:getstats()
-client:getstats()
-server:getstats()
-

- -

-Returns accounting information on the socket, useful for throttling -of bandwidth. -

- -

-The method returns the number of bytes received, the number of bytes sent, -and the age of the socket object in seconds. -

- - - -

-master:gettimeout()
-client:gettimeout()
-server:gettimeout() -

- -

-Returns the current block timeout followed by the curent -total timeout. -

- - - - -

-master:listen(backlog) -

- -

-Specifies the socket is willing to receive connections, transforming the -object into a server object. Server objects support the -accept, -getsockname, -setoption, -settimeout, -and close methods. -

- -

-The parameter backlog specifies the number of client -connections that can -be queued waiting for service. If the queue is full and another client -attempts connection, the connection is refused. -

- -

-In case of success, the method returns 1. In case of error, the -method returns nil followed by an error message. -

- - - -

-client:receive([pattern [, prefix]]) -

- -

-Reads data from a client object, according to the specified read -pattern. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible. -

- -

-Pattern can be any of the following: -

- -
    -
  • '*a': reads from the socket until the connection is -closed. No end-of-line translation is performed;
  • -
  • '*l': reads a line of text from the socket. The line is -terminated by a LF character (ASCII 10), optionally preceded by a -CR character (ASCII 13). The CR and LF characters are not included in -the returned line. In fact, all CR characters are -ignored by the pattern. This is the default pattern;
  • -
  • number: causes the method to read a specified number -of bytes from the socket.
  • -
- -

-Prefix is an optional string to be concatenated to the beginning -of any received data before return. -

- -

-If successful, the method returns the received pattern. In case of error, -the method returns nil followed by an error -message, followed by a (possibly empty) string containing -the partial that was received. The error message can be -the string 'closed' in case the connection was -closed before the transmission was completed or the string -'timeout' in case there was a timeout during the operation. -

- -

-Important note: This function was changed severely. It used -to support multiple patterns (but I have never seen this feature used) and -now it doesn't anymore. Partial results used to be returned in the same -way as successful results. This last feature violated the idea that all -functions should return nil on error. Thus it was changed -too. -

- - - -

-client:send(data [, i [, j]]) -

- -

-Sends data through client object. -

- -

-Data is the string to be sent. The optional arguments -i and j work exactly like the standard -string.sub Lua function to allow the selection of a -substring to be sent. -

- -

-If successful, the method returns the index of the last byte -within [i, j] that has been sent. Notice that, if -i is 1 or absent, this is effectively the total -number of bytes sent. In case of error, the method returns -nil, followed by an error message, followed -by the index of the last byte within [i, j] that -has been sent. You might want to try again from the byte -following that. The error message can be 'closed' -in case the connection was closed before the transmission -was completed or the string 'timeout' in case -there was a timeout during the operation. -

- -

-Note: Output is not buffered. For small strings, -it is always better to concatenate them in Lua -(with the '..' operator) and send the result in one call -instead of calling the method several times. -

- - - -

-client:setoption(option [, value])
-server:setoption(option [, value]) -

- -

-Sets options for the TCP object. Options are only needed by low-level or -time-critical applications. You should only modify an option if you -are sure you need it. -

- -

-Option is a string with the option name, and value -depends on the option being set:

- -
    - -
  • 'keepalive': Setting this option to true enables -the periodic transmission of messages on a connected socket. Should the -connected party fail to respond to these messages, the connection is -considered broken and processes using the socket are notified;
  • - -
  • 'linger': Controls the action taken when unsent data are -queued on a socket and a close is performed. The value is a table with a -boolean entry 'on' and a numeric entry for the time interval -'timeout' in seconds. If the 'on' field is set to -true, the system will block the process on the close attempt until -it is able to transmit the data or until 'timeout' has passed. If -'on' is false and a close is issued, the system will -process the close in a manner that allows the process to continue as -quickly as possible. I do not advise you to set this to anything other than -zero;
  • - -
  • 'reuseaddr': Setting this option indicates that the rules -used in validating addresses supplied in a call to -bind should allow reuse of local addresses;
  • - -
  • 'tcp-nodelay': Setting this option to true -disables the Nagle's algorithm for the connection;
  • - -
  • 'tcp-keepidle': value in seconds for TCP_KEEPIDLE Linux only!!
  • - -
  • 'tcp-keepcnt': value for TCP_KEEPCNT Linux only!!
  • - -
  • 'tcp-keepintvl': value for TCP_KEEPINTVL Linux only!!
  • - -
  • 'tcp-defer-accept': value for TCP_DEFER_ACCEPT Linux only!!
  • - -
  • 'tcp-fastopen': value for TCP_FASTOPEN Linux only!!
  • - -
  • 'tcp-fastopen-connect': value for TCP_FASTOPEN_CONNECT Linux only!!
  • - -
  • 'ipv6-v6only': -Setting this option to true restricts an inet6 socket to -sending and receiving only IPv6 packets.
  • -
- -

-The method returns 1 in case of success, or nil -followed by an error message otherwise. -

- -

-Note: The descriptions above come from the man pages. -

- - - -

-master:setstats(received, sent, age)
-client:setstats(received, sent, age)
-server:setstats(received, sent, age)
-

- -

-Resets accounting information on the socket, useful for throttling -of bandwidth. -

- -

-Received is a number with the new number of bytes received. -Sent is a number with the new number of bytes sent. -Age is the new age in seconds. -

- -

-The method returns 1 in case of success and nil otherwise. -

- - - -

-master:settimeout(value [, mode])
-client:settimeout(value [, mode])
-server:settimeout(value [, mode]) -

- -

-Changes the timeout values for the object. By default, -all I/O operations are blocking. That is, any call to the methods -send, -receive, and -accept -will block indefinitely, until the operation completes. The -settimeout method defines a limit on the amount of time the -I/O methods can block. When a timeout is set and the specified amount of -time has elapsed, the affected methods give up and fail with an error code. -

- -

-The amount of time to wait is specified as the -value parameter, in seconds. There are two timeout modes and -both can be used together for fine tuning: -

- -
    -
  • 'b': block timeout. Specifies the upper limit on -the amount of time LuaSocket can be blocked by the operating system -while waiting for completion of any single I/O operation. This is the -default mode;
  • - -
  • 't': total timeout. Specifies the upper limit on -the amount of time LuaSocket can block a Lua script before returning from -a call.
  • -
- -

-The nil timeout value allows operations to block -indefinitely. Negative timeout values have the same effect. -

- -

-Note: although timeout values have millisecond precision in LuaSocket, -large blocks can cause I/O functions not to respect timeout values due -to the time the library takes to transfer blocks to and from the OS -and to and from the Lua interpreter. Also, function that accept host names -and perform automatic name resolution might be blocked by the resolver for -longer than the specified timeout value. -

- -

-Note: The old timeout method is deprecated. The name has been -changed for sake of uniformity, since all other method names already -contained verbs making their imperative nature obvious. -

- - - -

-client:shutdown(mode)
-

- -

-Shuts down part of a full-duplex connection. -

- -

-Mode tells which way of the connection should be shut down and can -take the value: -

    -
  • "both": disallow further sends and receives on the object. -This is the default mode;
  • -
  • "send": disallow further sends on the object;
  • -
  • "receive": disallow further receives on the object.
  • -
-

- -

-This function returns 1. -

- - - -

-master:setfd(fd)
-client:setfd(fd)
-server:setfd(fd) -

- -

-Sets the underling socket descriptor or handle associated to the object. The current one -is simply replaced, not closed, and no other change to the object state is made. -To set it as invalid use _SOCKETINVALID. -

- -

-No return value. -

- -

-Note: This is an internal method. Unlikely to be -portable. Use at your own risk. -

- - - -

-socket.tcp() -

- -

-Creates and returns an TCP master object. A master object can -be transformed into a server object with the method -listen (after a call to bind) or into a client object with -the method connect. The only other -method supported by a master object is the -close method.

- -

-In case of success, a new master object is returned. In case of error, -nil is returned, followed by an error message. -

- -

-Note: The choice between IPv4 and IPv6 happens during a call to -bind or connect, depending on the address -family obtained from the resolver. -

- -

-Note: Before the choice between IPv4 and IPv6 happens, -the internal socket object is invalid and therefore setoption will fail. -

- - - -

-socket.tcp4() -

- -

-Creates and returns an IPv4 TCP master object. A master object can -be transformed into a server object with the method -listen (after a call to bind) or into a client object with -the method connect. The only other -method supported by a master object is the -close method.

- -

-In case of success, a new master object is returned. In case of error, -nil is returned, followed by an error message. -

- - - -

-socket.tcp6() -

- -

-Creates and returns an IPv6 TCP master object. A master object can -be transformed into a server object with the method -listen (after a call to bind) or into a client object with -the method connect. The only other -method supported by a master object is the -close method.

- -

-In case of success, a new master object is returned. In case of error, -nil is returned, followed by an error message. -

- -

-Note: The TCP object returned will have the option -"ipv6-v6only" set to true. -

- - - - - - - - - diff --git a/src/deps/src/luasocket/docs/udp.html b/src/deps/src/luasocket/docs/udp.html deleted file mode 100644 index db711cb8d..000000000 --- a/src/deps/src/luasocket/docs/udp.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - -LuaSocket: UDP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - - -

UDP

- - - -

-connected:close()
-unconnected:close() -

- -

-Closes a UDP object. The internal socket -used by the object is closed and the local address to which the -object was bound is made available to other applications. No -further operations (except for further calls to the close -method) are allowed on a closed socket. -

- -

-Note: It is important to close all used sockets -once they are not needed, since, in many systems, each socket uses -a file descriptor, which are limited system resources. -Garbage-collected objects are automatically closed before -destruction, though. -

- - - -

-connected:getoption()
-unconnected:getoption() -

- -

-Gets an option value from the UDP object. -See setoption for -description of the option names and values. -

- -

Option is a string with the option name. -

    -
  • 'dontroute'
  • -
  • 'broadcast'
  • -
  • 'reuseaddr'
  • -
  • 'reuseport'
  • -
  • 'ip-multicast-loop'
  • -
  • 'ipv6-v6only'
  • -
  • 'ip-multicast-if'
  • -
  • 'ip-multicast-ttl'
  • -
  • 'ip-add-membership'
  • -
  • 'ip-drop-membership'
  • -
-

- -

-The method returns the option value in case of -success, or -nil followed by an error message otherwise. -

- - - -

-connected:getpeername() -

- -

-Retrieves information about the peer -associated with a connected UDP object. -

- - -

-Returns a string with the IP address of the peer, the -port number that peer is using for the connection, -and a string with the family ("inet" or "inet6"). -In case of error, the method returns nil. -

- -

-Note: It makes no sense to call this method on unconnected objects. -

- - - -

-connected:getsockname()
-unconnected:getsockname() -

- -

-Returns the local address information associated to the object. -

- - -

-The method returns a string with local IP address, a number with -the local port, -and a string with the family ("inet" or "inet6"). -In case of error, the method returns nil. -

- -

-Note: UDP sockets are not bound to any address -until the setsockname or the -sendto method is called for the -first time (in which case it is bound to an ephemeral port and the -wild-card address). -

- - - -

-connected:settimeout(value)
-unconnected:settimeout(value) -

- -

-Returns the current timeout value. -

- - - - -

-connected:receive([size])
-unconnected:receive([size]) -

- -

-Receives a datagram from the UDP object. If -the UDP object is connected, only datagrams coming from the peer -are accepted. Otherwise, the returned datagram can come from any -host. -

- -

-The optional size parameter -specifies the maximum size of the datagram to be retrieved. If -there are more than size bytes available in the datagram, -the excess bytes are discarded. If there are less then -size bytes available in the current datagram, the -available bytes are returned. -If size is omitted, the -compile-time constant -socket._DATAGRAMSIZE is used -(it defaults to 8192 bytes). Larger sizes will cause a -temporary buffer to be allocated for the operation. -

- -

-In case of success, the method returns the -received datagram. In case of timeout, the method returns -nil followed by the string 'timeout'. -

- - - -

-unconnected:receivefrom([size]) -

- -

-Works exactly as the receive -method, except it returns the IP -address and port as extra return values (and is therefore slightly less -efficient). -

- - - -

-connected:send(datagram) -

- -

-Sends a datagram to the UDP peer of a connected object. -

- -

-Datagram is a string with the datagram contents. -The maximum datagram size for UDP is 64K minus IP layer overhead. -However datagrams larger than the link layer packet size will be -fragmented, which may deteriorate performance and/or reliability. -

- -

-If successful, the method returns 1. In case of -error, the method returns nil followed by an error message. -

- -

-Note: In UDP, the send method never blocks -and the only way it can fail is if the underlying transport layer -refuses to send a message to the specified address (i.e. no -interface accepts the address). -

- - - -

-unconnected:sendto(datagram, ip, port) -

- -

-Sends a datagram to the specified IP address and port number. -

- -

-Datagram is a string with the -datagram contents. -The maximum datagram size for UDP is 64K minus IP layer overhead. -However datagrams larger than the link layer packet size will be -fragmented, which may deteriorate performance and/or reliability. -Ip is the IP address of the recipient. -Host names are not allowed for performance reasons. - -Port is the port number at the recipient. -

- -

-If successful, the method returns 1. In case of -error, the method returns nil followed by an error message. -

- -

-Note: In UDP, the send method never blocks -and the only way it can fail is if the underlying transport layer -refuses to send a message to the specified address (i.e. no -interface accepts the address). -

- - - -

-connected:setoption(option [, value])
-unconnected:setoption(option [, value]) -

- -

-Sets options for the UDP object. Options are -only needed by low-level or time-critical applications. You should -only modify an option if you are sure you need it.

-

Option is a string with the option -name, and value depends on the option being set: -

- -
    -
  • 'dontroute': Indicates that outgoing -messages should bypass the standard routing facilities. -Receives a boolean value;
  • -
  • 'broadcast': Requests permission to send -broadcast datagrams on the socket. -Receives a boolean value;
  • -
  • 'reuseaddr': Indicates that the rules used in -validating addresses supplied in a bind() call -should allow reuse of local addresses. -Receives a boolean value;
  • -
  • 'reuseport': Allows completely duplicate -bindings by multiple processes if they all set -'reuseport' before binding the port. -Receives a boolean value;
  • -
  • 'ip-multicast-loop': -Specifies whether or not a copy of an outgoing multicast -datagram is delivered to the sending host as long as it is a -member of the multicast group. -Receives a boolean value;
  • -
  • 'ipv6-v6only': -Specifies whether to restrict inet6 sockets to -sending and receiving only IPv6 packets. -Receive a boolean value;
  • -
  • 'ip-multicast-if': -Sets the interface over which outgoing multicast datagrams -are sent. -Receives an IP address;
  • -
  • 'ip-multicast-ttl': -Sets the Time To Live in the IP header for outgoing -multicast datagrams. -Receives a number;
  • -
  • 'ip-add-membership': -Joins the multicast group specified. -Receives a table with fields -multiaddr and interface, each containing an -IP address;
  • -
  • 'ip-drop-membership': Leaves the multicast -group specified. -Receives a table with fields -multiaddr and interface, each containing an -IP address.
  • -
- -

-The method returns 1 in case of success, or -nil followed by an error message otherwise. -

- -

-Note: The descriptions above come from the man pages. -

- - - - -

-connected:setpeername('*')
-unconnected:setpeername(address, port) -

- -

-Changes the peer of a UDP object. This -method turns an unconnected UDP object into a connected UDP -object or vice versa. -

- -

-For connected objects, outgoing datagrams -will be sent to the specified peer, and datagrams received from -other peers will be discarded by the OS. Connected UDP objects must -use the send and -receive methods instead of -sendto and -receivefrom. -

- -

-Address can be an IP address or a -host name. Port is the port number. If address is -'*' and the object is connected, the peer association is -removed and the object becomes an unconnected object again. In that -case, the port argument is ignored. -

- -

-In case of error the method returns -nil followed by an error message. In case of success, the -method returns 1. -

- -

-Note: Since the address of the peer does not have -to be passed to and from the OS, the use of connected UDP objects -is recommended when the same peer is used for several transmissions -and can result in up to 30% performance gains. -

- -

-Note: Starting with LuaSocket 3.0, the host name resolution -depends on whether the socket was created by socket.udp or socket.udp6. Addresses from -the appropriate family are tried in succession until the -first success or until the last failure. -

- - - -

-unconnected:setsockname(address, port) -

- -

-Binds the UDP object to a local address. -

- -

-Address can be an IP address or a -host name. If address is '*' the system binds to -all local interfaces using the constant INADDR_ANY. If -port is 0, the system chooses an ephemeral port. -

- -

-If successful, the method returns 1. In case of -error, the method returns nil followed by an error -message. -

- -

-Note: This method can only be called before any -datagram is sent through the UDP object, and only once. Otherwise, -the system automatically binds the object to all local interfaces -and chooses an ephemeral port as soon as the first datagram is -sent. After the local address is set, either automatically by the -system or explicitly by setsockname, it cannot be -changed. -

- - - -

-connected:settimeout(value)
-unconnected:settimeout(value) -

- -

-Changes the timeout values for the object. By default, the -receive and -receivefrom -operations are blocking. That is, any call to the methods will block -indefinitely, until data arrives. The settimeout function defines -a limit on the amount of time the functions can block. When a timeout is -set and the specified amount of time has elapsed, the affected methods -give up and fail with an error code. -

- -

-The amount of time to wait is specified as -the value parameter, in seconds. The nil timeout -value allows operations to block indefinitely. Negative -timeout values have the same effect. -

- -

-Note: In UDP, the send -and sendto methods never block (the -datagram is just passed to the OS and the call returns -immediately). Therefore, the settimeout method has no -effect on them. -

- -

-Note: The old timeout method is -deprecated. The name has been changed for sake of uniformity, since -all other method names already contained verbs making their -imperative nature obvious. -

- - - -

-socket.udp() -

- -

-Creates and returns an unconnected UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-In case of success, a new unconnected UDP object -returned. In case of error, nil is returned, followed by -an error message. -

- -

-Note: The choice between IPv4 and IPv6 happens during a call to -sendto, setpeername, or sockname, depending on the address -family obtained from the resolver. -

- -

-Note: Before the choice between IPv4 and IPv6 happens, -the internal socket object is invalid and therefore setoption will fail. -

- - - -

-socket.udp4() -

- -

-Creates and returns an unconnected IPv4 UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-In case of success, a new unconnected UDP object -returned. In case of error, nil is returned, followed by -an error message. -

- - - -

-socket.udp6() -

- -

-Creates and returns an unconnected IPv6 UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-In case of success, a new unconnected UDP object -returned. In case of error, nil is returned, followed by -an error message. -

- -

-Note: The TCP object returned will have the option -"ipv6-v6only" set to true. -

- - - - - - - - - diff --git a/src/deps/src/luasocket/docs/url.html b/src/deps/src/luasocket/docs/url.html deleted file mode 100644 index 6ff673da5..000000000 --- a/src/deps/src/luasocket/docs/url.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - -LuaSocket: URL support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

URL

- -

-The url namespace provides functions to parse, protect, -and build URLs, as well as functions to compose absolute URLs -from base and relative URLs, according to -RFC 2396. -

- -

-To obtain the url namespace, run: -

- -
--- loads the URL module 
-local url = require("socket.url")
-
- -

-An URL is defined by the following grammar: -

- -
- -<url> ::= [<scheme>:][//<authority>][/<path>][;<params>][?<query>][#<fragment>]
-<authority> ::= [<userinfo>@]<host>[:<port>]
-<userinfo> ::= <user>[:<password>]
-<path> ::= {<segment>/}<segment>
-
-
- - - -

-url.absolute(base, relative) -

- -

-Builds an absolute URL from a base URL and a relative URL. -

- -

-Base is a string with the base URL or -a parsed URL table. Relative is a -string with the relative URL. -

- -

-The function returns a string with the absolute URL. -

- -

-Note: The rules that -govern the composition are fairly complex, and are described in detail in -RFC 2396. -The example bellow should give an idea of what the rules are. -

- -
-http://a/b/c/d;p?q
-
-+
-
-g:h      =  g:h
-g        =  http://a/b/c/g
-./g      =  http://a/b/c/g
-g/       =  http://a/b/c/g/
-/g       =  http://a/g
-//g      =  http://g
-?y       =  http://a/b/c/?y
-g?y      =  http://a/b/c/g?y
-#s       =  http://a/b/c/d;p?q#s
-g#s      =  http://a/b/c/g#s
-g?y#s    =  http://a/b/c/g?y#s
-;x       =  http://a/b/c/;x
-g;x      =  http://a/b/c/g;x
-g;x?y#s  =  http://a/b/c/g;x?y#s
-.        =  http://a/b/c/
-./       =  http://a/b/c/
-..       =  http://a/b/
-../      =  http://a/b/
-../g     =  http://a/b/g
-../..    =  http://a/
-../../   =  http://a/
-../../g  =  http://a/g
-
- - - -

-url.build(parsed_url) -

- -

-Rebuilds an URL from its parts. -

- -

-Parsed_url is a table with same components returned by -parse. -Lower level components, if specified, -take precedence over high level components of the URL grammar. -

- -

-The function returns a string with the built URL. -

- - - -

-url.build_path(segments, unsafe) -

- -

-Builds a <path> component from a list of -<segment> parts. -Before composition, any reserved characters found in a segment are escaped into -their protected form, so that the resulting path is a valid URL path -component. -

- -

-Segments is a list of strings with the <segment> -parts. If unsafe is anything but nil, reserved -characters are left untouched. -

- -

-The function returns a string with the -built <path> component. -

- - - -

-url.escape(content) -

- -

-Applies the URL escaping content coding to a string -Each byte is encoded as a percent character followed -by the two byte hexadecimal representation of its integer -value. -

- -

-Content is the string to be encoded. -

- -

-The function returns the encoded string. -

- -
--- load url module
-url = require("socket.url")
-
-code = url.escape("/#?;")
--- code = "%2f%23%3f%3b"
-
- - - -

-url.parse(url, default) -

- -

-Parses an URL given as a string into a Lua table with its components. -

- -

-Url is the URL to be parsed. If the default table is -present, it is used to store the parsed fields. Only fields present in the -URL are overwritten. Therefore, this table can be used to pass default -values for each field. -

- -

-The function returns a table with all the URL components: -

- -
-parsed_url = {
-  url = string,
-  scheme = string,
-  authority = string,
-  path = string,
-  params = string,
-  query = string,
-  fragment = string,
-  userinfo = string,
-  host = string,
-  port = string,
-  user = string,
-  password = string
-} -
- -
--- load url module
-url = require("socket.url")
-
-parsed_url = url.parse("http://www.example.com/cgilua/index.lua?a=2#there")
--- parsed_url = {
---   scheme = "http",
---   authority = "www.example.com",
---   path = "/cgilua/index.lua"
---   query = "a=2",
---   fragment = "there",
---   host = "www.puc-rio.br",
--- }
-
-parsed_url = url.parse("ftp://root:passwd@unsafe.org/pub/virus.exe;type=i")
--- parsed_url = {
---   scheme = "ftp",
---   authority = "root:passwd@unsafe.org",
---   path = "/pub/virus.exe",
---   params = "type=i",
---   userinfo = "root:passwd",
---   host = "unsafe.org",
---   user = "root",
---   password = "passwd",
--- }
-
- - - -

-url.parse_path(path) -

- -

-Breaks a <path> URL component into all its -<segment> parts. -

- -

-Path is a string with the path to be parsed. -

- -

-Since some characters are reserved in URLs, they must be escaped -whenever present in a <path> component. Therefore, before -returning a list with all the parsed segments, the function removes -escaping from all of them. -

- - - -

-url.unescape(content) -

- -

-Removes the URL escaping content coding from a string. -

- -

-Content is the string to be decoded. -

- -

-The function returns the decoded string. -

- - - - - - - diff --git a/src/deps/src/luasocket/test/README b/src/deps/src/luasocket/test/README deleted file mode 100644 index 27837e04d..000000000 --- a/src/deps/src/luasocket/test/README +++ /dev/null @@ -1,14 +0,0 @@ -This provides the automated test scripts used to make sure the library -is working properly. - -The files provided are: - - testsrvr.lua -- test server - testclnt.lua -- test client - -To run these tests, just run lua on the server and then on the client. - - hello.lua -- run to verify if installation worked - -Good luck, -Diego. diff --git a/src/deps/src/luasocket/test/auth/.htaccess b/src/deps/src/luasocket/test/auth/.htaccess deleted file mode 100644 index 2509ae36a..000000000 --- a/src/deps/src/luasocket/test/auth/.htaccess +++ /dev/null @@ -1,4 +0,0 @@ -AuthName "test-auth" - AuthType Basic - AuthUserFile /home/diego/impa/luasocket/test/auth/.htpasswd - Require valid-user diff --git a/src/deps/src/luasocket/test/auth/.htpasswd b/src/deps/src/luasocket/test/auth/.htpasswd deleted file mode 100644 index cfb26034b..000000000 --- a/src/deps/src/luasocket/test/auth/.htpasswd +++ /dev/null @@ -1 +0,0 @@ -luasocket:$apr1$47u2O.Me$.m/5BWAtt7GVoxsouIPBR1 diff --git a/src/deps/src/luasocket/test/auth/index.html b/src/deps/src/luasocket/test/auth/index.html deleted file mode 100644 index 786694ef6..000000000 --- a/src/deps/src/luasocket/test/auth/index.html +++ /dev/null @@ -1,3002 +0,0 @@ - - -This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
- - diff --git a/src/deps/src/luasocket/test/cgi/cat b/src/deps/src/luasocket/test/cgi/cat deleted file mode 100644 index 8d41255ea..000000000 --- a/src/deps/src/luasocket/test/cgi/cat +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -echo Content-type: text/plain -echo - -cat > /tmp/luasocket.cat.tmp -cat /tmp/luasocket.cat.tmp diff --git a/src/deps/src/luasocket/test/cgi/cat-index-html b/src/deps/src/luasocket/test/cgi/cat-index-html deleted file mode 100644 index 7595043b1..000000000 --- a/src/deps/src/luasocket/test/cgi/cat-index-html +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -echo Content-type: text/plain -echo - -cat ../index.html diff --git a/src/deps/src/luasocket/test/cgi/env b/src/deps/src/luasocket/test/cgi/env deleted file mode 100644 index 412a716ea..000000000 --- a/src/deps/src/luasocket/test/cgi/env +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -echo Content-type: text/plain -echo - -env diff --git a/src/deps/src/luasocket/test/cgi/query-string b/src/deps/src/luasocket/test/cgi/query-string deleted file mode 100644 index 2342af532..000000000 --- a/src/deps/src/luasocket/test/cgi/query-string +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -echo Content-type: text/plain -echo -echo $QUERY_STRING diff --git a/src/deps/src/luasocket/test/cgi/redirect-loop b/src/deps/src/luasocket/test/cgi/redirect-loop deleted file mode 100644 index bd32f2048..000000000 --- a/src/deps/src/luasocket/test/cgi/redirect-loop +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -echo Location: http://$HTTP_HOST$REQUEST_URI -echo diff --git a/src/deps/src/luasocket/test/cgi/request-uri b/src/deps/src/luasocket/test/cgi/request-uri deleted file mode 100644 index 20ebe9fed..000000000 --- a/src/deps/src/luasocket/test/cgi/request-uri +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -echo Content-type: text/plain -echo -echo $REQUEST_URI diff --git a/src/deps/src/luasocket/test/dicttest.lua b/src/deps/src/luasocket/test/dicttest.lua deleted file mode 100644 index a0da2e184..000000000 --- a/src/deps/src/luasocket/test/dicttest.lua +++ /dev/null @@ -1,5 +0,0 @@ -local dict = require"socket.dict" - -print(dict.get("dict://localhost/d:teste")) - -for i,v in pairs(dict.get("dict://localhost/d:teste")) do print(v) end diff --git a/src/deps/src/luasocket/test/excepttest.lua b/src/deps/src/luasocket/test/excepttest.lua deleted file mode 100644 index 80c9cb80a..000000000 --- a/src/deps/src/luasocket/test/excepttest.lua +++ /dev/null @@ -1,30 +0,0 @@ -local socket = require("socket") - -local finalizer_called - -local func = socket.protect(function(err, ...) - local try = socket.newtry(function() - finalizer_called = true - end) - - if err then - return error(err, 0) - else - return try(...) - end -end) - -local ret1, ret2, ret3 = func(false, 1, 2, 3) -assert(not finalizer_called, "unexpected finalizer call") -assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values") - -ret1, ret2, ret3 = func(false, false, "error message") -assert(finalizer_called, "finalizer not called") -assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values") - -local err = {key = "value"} -ret1, ret2 = pcall(func, err) -assert(not ret1, "error not rethrown") -assert(ret2 == err, "incorrect error rethrown") - -print("OK") diff --git a/src/deps/src/luasocket/test/find-connect-limit b/src/deps/src/luasocket/test/find-connect-limit deleted file mode 100644 index 199e51525..000000000 --- a/src/deps/src/luasocket/test/find-connect-limit +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env lua ---[[ -Find out how many TCP connections we can make. - -Use ulimit to increase the max number of descriptors: - -ulimit -n 10000 -ulimit -n - -You'll probably need to be root to do this. -]] - -socket = require "socket" - -host = arg[1] or "google.com" -port = arg[2] or 80 - -connections = {} - -repeat - c = assert(socket.connect(hostip or host, 80)) - table.insert(connections, c) - - if not hostip then - hostip = c:getpeername() - print("resolved", host, "to", hostip) - end - - print("connection #", #connections, c, "fd", c:getfd()) - -until false - diff --git a/src/deps/src/luasocket/test/ftptest.lua b/src/deps/src/luasocket/test/ftptest.lua deleted file mode 100644 index 3ea0d3959..000000000 --- a/src/deps/src/luasocket/test/ftptest.lua +++ /dev/null @@ -1,122 +0,0 @@ -local socket = require("socket") -local ftp = require("socket.ftp") -local url = require("socket.url") -local ltn12 = require("ltn12") - --- use dscl to create user "luasocket" with password "password" --- with home in /Users/diego/luasocket/test/ftp --- with group com.apple.access_ftp --- with shell set to /sbin/nologin --- set /etc/ftpchroot to chroot luasocket --- must set group com.apple.access_ftp on user _ftp (for anonymous access) --- copy index.html to /var/empty/pub (home of user ftp) --- start ftp server with --- sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist --- copy index.html to /Users/diego/luasocket/test/ftp --- stop with --- sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist - --- override protection to make sure we see all errors ---socket.protect = function(s) return s end - -dofile("testsupport.lua") - -local host = host or "localhost" -local port, index_file, index, back, err, ret - -local t = socket.gettime() - -index_file = "index.html" - --- a function that returns a directory listing -local function nlst(u) - local t = {} - local p = url.parse(u) - p.command = "nlst" - p.sink = ltn12.sink.table(t) - local r, e = ftp.get(p) - return r and table.concat(t), e -end - --- function that removes a remote file -local function dele(u) - local p = url.parse(u) - p.command = "dele" - p.argument = string.gsub(p.path, "^/", "") - if p.argumet == "" then p.argument = nil end - p.check = 250 - return ftp.command(p) -end - --- read index with CRLF convention -index = readfile(index_file) - -io.write("testing wrong scheme: ") -back, err = ftp.get("wrong://banana.com/lixo") -assert(not back and err == "wrong scheme 'wrong'", err) -print("ok") - -io.write("testing invalid url: ") -back, err = ftp.get("localhost/dir1/index.html;type=i") -assert(not back and err) -print("ok") - -io.write("testing anonymous file download: ") -back, err = socket.ftp.get("ftp://" .. host .. "/pub/index.html;type=i") -assert(not err and back == index, err) -print("ok") - -io.write("erasing before upload: ") -ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html") -if not ret then print(err) -else print("ok") end - -io.write("testing upload: ") -ret, err = ftp.put("ftp://luasocket:password@" .. host .. "/index.up.html;type=i", index) -assert(ret and not err, err) -print("ok") - -io.write("downloading uploaded file: ") -back, err = ftp.get("ftp://luasocket:password@" .. host .. "/index.up.html;type=i") -assert(ret and not err and index == back, err) -print("ok") - -io.write("erasing after upload/download: ") -ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html") -assert(ret and not err, err) -print("ok") - -io.write("testing weird-character translation: ") -back, err = ftp.get("ftp://luasocket:password@" .. host .. "/%23%3f;type=i") -assert(not err and back == index, err) -print("ok") - -io.write("testing parameter overriding: ") -local back = {} -ret, err = ftp.get{ - url = "//stupid:mistake@" .. host .. "/index.html", - user = "luasocket", - password = "password", - type = "i", - sink = ltn12.sink.table(back) -} -assert(ret and not err and table.concat(back) == index, err) -print("ok") - -io.write("testing upload denial: ") -ret, err = ftp.put("ftp://" .. host .. "/index.up.html;type=a", index) -assert(not ret and err, "should have failed") -print(err) - -io.write("testing authentication failure: ") -ret, err = ftp.get("ftp://luasocket:wrong@".. host .. "/index.html;type=a") -assert(not ret and err, "should have failed") -print(err) - -io.write("testing wrong file: ") -back, err = ftp.get("ftp://".. host .. "/index.wrong.html;type=a") -assert(not back and err, "should have failed") -print(err) - -print("passed all tests") -print(string.format("done in %.2fs", socket.gettime() - t)) diff --git a/src/deps/src/luasocket/test/hello.lua b/src/deps/src/luasocket/test/hello.lua deleted file mode 100644 index 3f385dc24..000000000 --- a/src/deps/src/luasocket/test/hello.lua +++ /dev/null @@ -1,3 +0,0 @@ -local socket = require"socket" -local mime = require"mime" -print("Hello from " .. socket._VERSION .. " and " .. mime._VERSION .. "!") diff --git a/src/deps/src/luasocket/test/httptest.lua b/src/deps/src/luasocket/test/httptest.lua deleted file mode 100644 index 63ff92176..000000000 --- a/src/deps/src/luasocket/test/httptest.lua +++ /dev/null @@ -1,441 +0,0 @@ --- needs Alias from /home/c/diego/tec/luasocket/test to --- "/luasocket-test" and "/luasocket-test/" --- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi --- to "/luasocket-test-cgi" and "/luasocket-test-cgi/" --- needs "AllowOverride AuthConfig" on /home/c/diego/tec/luasocket/test/auth -local socket = require("socket") -local http = require("socket.http") -local url = require("socket.url") - -local mime = require("mime") -local ltn12 = require("ltn12") - --- override protection to make sure we see all errors --- socket.protect = function(s) return s end - -dofile("testsupport.lua") - -local host, proxy, request, response, index_file -local ignore, expect, index, prefix, cgiprefix, index_crlf - -http.TIMEOUT = 10 - -local t = socket.gettime() - ---host = host or "diego.student.princeton.edu" ---host = host or "diego.student.princeton.edu" -host = host or "localhost" -proxy = proxy or "http://localhost:3128" -prefix = prefix or "/luasocket-test" -cgiprefix = cgiprefix or "/luasocket-test-cgi" -index_file = "index.html" - --- read index with CRLF convention -index = readfile(index_file) - -local check_result = function(response, expect, ignore) - for i,v in pairs(response) do - if not ignore[i] then - if v ~= expect[i] then - local f = io.open("err", "w") - f:write(tostring(v), "\n\n versus\n\n", tostring(expect[i])) - f:close() - fail(i .. " differs!") - end - end - end - for i,v in pairs(expect) do - if not ignore[i] then - if v ~= response[i] then - local f = io.open("err", "w") - f:write(tostring(response[i]), "\n\n versus\n\n", tostring(v)) - v = string.sub(type(v) == "string" and v or "", 1, 70) - f:close() - fail(i .. " differs!") - end - end - end - print("ok") -end - -local check_request = function(request, expect, ignore) - local t - if not request.sink then request.sink, t = ltn12.sink.table() end - request.source = request.source or - (request.body and ltn12.source.string(request.body)) - local response = {} - response.code, response.headers, response.status = - socket.skip(1, http.request(request)) - if t and #t > 0 then response.body = table.concat(t) end - check_result(response, expect, ignore) -end - ------------------------------------------------------------------------- -io.write("testing request uri correctness: ") -local forth = cgiprefix .. "/request-uri?" .. "this+is+the+query+string" -local back, c, h = http.request("http://" .. host .. forth) -if not back then fail(c) end -back = url.parse(back) -if similar(back.query, "this+is+the+query+string") then print("ok") -else fail(back.query) end - ------------------------------------------------------------------------- -io.write("testing query string correctness: ") -forth = "this+is+the+query+string" -back = http.request("http://" .. host .. cgiprefix .. - "/query-string?" .. forth) -if similar(back, forth) then print("ok") -else fail("failed!") end - ------------------------------------------------------------------------- -io.write("testing document retrieval: ") -request = { - url = "http://" .. host .. prefix .. "/index.html" -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing redirect loop: ") -request = { - url = "http://" .. host .. cgiprefix .. "/redirect-loop" -} -expect = { - code = 302 -} -ignore = { - status = 1, - headers = 1, - body = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing invalid url: ") -local r, e = http.request{url = host .. prefix} -assert(r == nil and e == "invalid host ''") -r, re = http.request(host .. prefix) -assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) .. - " vs " .. tostring(e)) -print("ok") - -io.write("testing invalid empty port: ") -request = { - url = "http://" .. host .. ":" .. prefix .. "/index.html" -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing post method: ") --- wanted to test chunked post, but apache doesn't support it... -request = { - url = "http://" .. host .. cgiprefix .. "/cat", - method = "POST", - body = index, - -- remove content-length header to send chunked body - headers = { ["content-length"] = string.len(index) } -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- ---[[ -io.write("testing proxy with post method: ") -request = { - url = "http://" .. host .. cgiprefix .. "/cat", - method = "POST", - body = index, - headers = { ["content-length"] = string.len(index) }, - proxy= proxy -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) -]] - ------------------------------------------------------------------------- -io.write("testing simple post function: ") -back = http.request("http://" .. host .. cgiprefix .. "/cat", index) -assert(back == index) -print("ok") - ------------------------------------------------------------------------- -io.write("testing ltn12.(sink|source).file: ") -request = { - url = "http://" .. host .. cgiprefix .. "/cat", - method = "POST", - source = ltn12.source.file(io.open(index_file, "rb")), - sink = ltn12.sink.file(io.open(index_file .. "-back", "wb")), - headers = { ["content-length"] = string.len(index) } -} -expect = { - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) -back = readfile(index_file .. "-back") -assert(back == index) -os.remove(index_file .. "-back") - ------------------------------------------------------------------------- -io.write("testing ltn12.(sink|source).chain and mime.(encode|decode): ") - -local function b64length(len) - local a = math.ceil(len/3)*4 - local l = math.ceil(a/76) - return a + l*2 -end - -local source = ltn12.source.chain( - ltn12.source.file(io.open(index_file, "rb")), - ltn12.filter.chain( - mime.encode("base64"), - mime.wrap("base64") - ) -) - -local sink = ltn12.sink.chain( - mime.decode("base64"), - ltn12.sink.file(io.open(index_file .. "-back", "wb")) -) - -request = { - url = "http://" .. host .. cgiprefix .. "/cat", - method = "POST", - source = source, - sink = sink, - headers = { ["content-length"] = b64length(string.len(index)) } -} -expect = { - code = 200 -} -ignore = { - body_cb = 1, - status = 1, - headers = 1 -} -check_request(request, expect, ignore) -back = readfile(index_file .. "-back") -assert(back == index) -os.remove(index_file .. "-back") - ------------------------------------------------------------------------- -io.write("testing http redirection: ") -request = { - url = "http://" .. host .. prefix -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- ---[[ -io.write("testing proxy with redirection: ") -request = { - url = "http://" .. host .. prefix, - proxy = proxy -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) -]] - ------------------------------------------------------------------------- -io.write("testing automatic auth failure: ") -request = { - url = "http://really:wrong@" .. host .. prefix .. "/auth/index.html" -} -expect = { - code = 401 -} -ignore = { - body = 1, - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing http redirection failure: ") -request = { - url = "http://" .. host .. prefix, - redirect = false -} -expect = { - code = 301 -} -ignore = { - body = 1, - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing document not found: ") -request = { - url = "http://" .. host .. "/wrongdocument.html" -} -expect = { - code = 404 -} -ignore = { - body = 1, - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing auth failure: ") -request = { - url = "http://" .. host .. prefix .. "/auth/index.html" -} -expect = { - code = 401 -} -ignore = { - body = 1, - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing manual basic auth: ") -request = { - url = "http://" .. host .. prefix .. "/auth/index.html", - headers = { - authorization = "Basic " .. (mime.b64("luasocket:password")) - } -} -expect = { - code = 200, - body = index -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing automatic basic auth: ") -request = { - url = "http://luasocket:password@" .. host .. prefix .. "/auth/index.html" -} -expect = { - code = 200, - body = index -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing auth info overriding: ") -request = { - url = "http://really:wrong@" .. host .. prefix .. "/auth/index.html", - user = "luasocket", - password = "password" -} -expect = { - code = 200, - body = index -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -io.write("testing cgi output retrieval (probably chunked...): ") -request = { - url = "http://" .. host .. cgiprefix .. "/cat-index-html" -} -expect = { - body = index, - code = 200 -} -ignore = { - status = 1, - headers = 1 -} -check_request(request, expect, ignore) - ------------------------------------------------------------------------- -local body -io.write("testing simple request function: ") -body = http.request("http://" .. host .. prefix .. "/index.html") -assert(body == index) -print("ok") - ------------------------------------------------------------------------- -io.write("testing HEAD method: ") -local r, c, h = http.request { - method = "HEAD", - url = "http://www.tecgraf.puc-rio.br/~diego/" -} -assert(r and h and (c == 200), c) -print("ok") - ------------------------------------------------------------------------- -io.write("testing host not found: ") -local c, e = socket.connect("example.invalid", 80) -local r, re = http.request{url = "http://example.invalid/does/not/exist"} -assert(r == nil and e == re, tostring(r) .. " " .. tostring(re)) -r, re = http.request("http://example.invalid/does/not/exist") -assert(r == nil and e == re) -print("ok") - ------------------------------------------------------------------------- -print("passed all tests") -os.remove("err") - -print(string.format("done in %.2fs", socket.gettime() - t)) diff --git a/src/deps/src/luasocket/test/index.html b/src/deps/src/luasocket/test/index.html deleted file mode 100644 index 786694ef6..000000000 --- a/src/deps/src/luasocket/test/index.html +++ /dev/null @@ -1,3002 +0,0 @@ - - -This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
- - diff --git a/src/deps/src/luasocket/test/ltn12test.lua b/src/deps/src/luasocket/test/ltn12test.lua deleted file mode 100644 index 0cafbc9d4..000000000 --- a/src/deps/src/luasocket/test/ltn12test.lua +++ /dev/null @@ -1,308 +0,0 @@ -local ltn12 = require("ltn12") - -dofile("testsupport.lua") - -local function format(chunk) - if chunk then - if chunk == "" then return "''" - else return string.len(chunk) end - else return "nil" end -end - -local function show(name, input, output) - local sin = format(input) - local sout = format(output) - io.write(name, ": ", sin, " -> ", sout, "\n") -end - -local function chunked(length) - local tmp - return function(chunk) - local ret - if chunk and chunk ~= "" then - tmp = chunk - end - ret = string.sub(tmp, 1, length) - tmp = string.sub(tmp, length+1) - if not chunk and ret == "" then ret = nil end - return ret - end -end - -local function named(f, name) - return function(chunk) - local ret = f(chunk) - show(name, chunk, ret) - return ret - end -end - --------------------------------- -local function split(size) - local buffer = "" - local last_out = "" - local last_in = "" - local function output(chunk) - local part = string.sub(buffer, 1, size) - buffer = string.sub(buffer, size+1) - last_out = (part ~= "" or chunk) and part - last_in = chunk - return last_out - end - return function(chunk, done) - if done then - return not last_in and not last_out - end - -- check if argument is consistent with state - if not chunk then - if last_in and last_in ~= "" and last_out ~= "" then - error("nil chunk following data chunk", 2) - end - if not last_out then error("extra nil chunk", 2) end - return output(chunk) - elseif chunk == "" then - if last_out == "" then error('extra "" chunk', 2) end - if not last_out then error('"" chunk following nil return', 2) end - if not last_in then error('"" chunk following nil chunk', 2) end - return output(chunk) - else - if not last_in then error("data chunk following nil chunk", 2) end - if last_in ~= "" and last_out ~= "" then - error("data chunk following data chunk", 2) - end - buffer = chunk - return output(chunk) - end - end -end - --------------------------------- -local function format(chunk) - if chunk then - if chunk == "" then return "''" - else return string.len(chunk) end - else return "nil" end -end - --------------------------------- -local function merge(size) - local buffer = "" - local last_out = "" - local last_in = "" - local function output(chunk) - local part - if string.len(buffer) >= size or not chunk then - part = buffer - buffer = "" - else - part = "" - end - last_out = (part ~= "" or chunk) and part - last_in = chunk - return last_out - end - return function(chunk, done) - if done then - return not last_in and not last_out - end - -- check if argument is consistent with state - if not chunk then - if last_in and last_in ~= "" and last_out ~= "" then - error("nil chunk following data chunk", 2) - end - if not last_out then error("extra nil chunk", 2) end - return output(chunk) - elseif chunk == "" then - if last_out == "" then error('extra "" chunk', 2) end - if not last_out then error('"" chunk following nil return', 2) end - if not last_in then error('"" chunk following nil chunk', 2) end - return output(chunk) - else - if not last_in then error("data chunk following nil chunk", 2) end - if last_in ~= "" and last_out ~= "" then - error("data chunk following data chunk", 2) - end - buffer = buffer .. chunk - return output(chunk) - end - end -end - --------------------------------- -io.write("testing sink.table: ") -local sink, t = ltn12.sink.table() -local s, c = "", "" -for i = 0, 10 do - c = string.rep(string.char(i), i) - s = s .. c - assert(sink(c), "returned error") -end -assert(sink(nil), "returned error") -assert(table.concat(t) == s, "mismatch") -print("ok") - --------------------------------- -io.write("testing sink.chain (with split): ") -sink, t = ltn12.sink.table() -local filter = split(3) -sink = ltn12.sink.chain(filter, sink) -s = "123456789012345678901234567890" -assert(sink(s), "returned error") -assert(sink(s), "returned error") -assert(sink(nil), "returned error") -assert(table.concat(t) == s .. s, "mismatch") -assert(filter(nil, 1), "filter not empty") -print("ok") - --------------------------------- -io.write("testing sink.chain (with merge): ") -sink, t = ltn12.sink.table() -filter = merge(10) -sink = ltn12.sink.chain(filter, sink) -s = string.rep("123", 30) -s = s .. string.rep("4321", 30) -for i = 1, 30 do - assert(sink("123"), "returned error") -end -for i = 1, 30 do - assert(sink("4321"), "returned error") -end -assert(sink(nil), "returned error") -assert(filter(nil, 1), "filter not empty") -assert(table.concat(t) == s, "mismatch") -print("ok") - --------------------------------- -io.write("testing source.string and pump.all: ") -local source = ltn12.source.string(s) -sink, t = ltn12.sink.table() -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == s, "mismatch") -print("ok") - --------------------------------- -io.write("testing source.table: ") -local inp = {'a','b','c','d','e'} -local source = ltn12.source.table(inp) -sink, t = ltn12.sink.table() -assert(ltn12.pump.all(source, sink), "returned error") -for i = 1, #inp do assert(t[i] == inp[i], "mismatch") end -print("ok") - --------------------------------- -io.write("testing source.chain (with split): ") -source = ltn12.source.string(s) -filter = split(5) -source = ltn12.source.chain(source, filter) -sink, t = ltn12.sink.table() -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -print("ok") - --------------------------------- -io.write("testing source.chain (with several filters): ") -local function double(x) -- filter turning "ABC" into "AABBCC" - if not x then return end - local b={} - for k in x:gmatch'.' do table.insert(b, k..k) end - return table.concat(b) -end -source = ltn12.source.string(s) -source = ltn12.source.chain(source, double, double, double) -sink, t = ltn12.sink.table() -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == double(double(double(s))), "mismatch") -print("ok") - --------------------------------- -io.write("testing source.chain (with split) and sink.chain (with merge): ") -source = ltn12.source.string(s) -filter = split(5) -source = ltn12.source.chain(source, filter) -local filter2 = merge(13) -sink, t = ltn12.sink.table() -sink = ltn12.sink.chain(filter2, sink) -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -assert(filter2(nil, 1), "filter2 not empty") -print("ok") - --------------------------------- -io.write("testing sink.chain (with several filters): ") -source = ltn12.source.string(s) -sink, t = ltn12.sink.table() -sink = ltn12.sink.chain(double, double, double, sink) -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == double(double(double(s))), "mismatch") -print("ok") - --------------------------------- -io.write("testing filter.chain (and sink.chain, with split, merge): ") -source = ltn12.source.string(s) -filter = split(5) -filter2 = merge(13) -local chain = ltn12.filter.chain(filter, filter2) -sink, t = ltn12.sink.table() -sink = ltn12.sink.chain(chain, sink) -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -assert(filter2(nil, 1), "filter2 not empty") -print("ok") - --------------------------------- -io.write("testing filter.chain (and sink.chain, a bunch): ") -source = ltn12.source.string(s) -filter = split(5) -filter2 = merge(13) -local filter3 = split(7) -local filter4 = merge(11) -local filter5 = split(10) -chain = ltn12.filter.chain(filter, filter2, filter3, filter4, filter5) -sink, t = ltn12.sink.table() -sink = ltn12.sink.chain(chain, sink) -assert(ltn12.pump.all(source, sink)) -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -assert(filter2(nil, 1), "filter2 not empty") -assert(filter3(nil, 1), "filter3 not empty") -assert(filter4(nil, 1), "filter4 not empty") -assert(filter5(nil, 1), "filter5 not empty") -print("ok") - --------------------------------- -io.write("testing filter.chain (and source.chain, with split, merge): ") -source = ltn12.source.string(s) -filter = split(5) -filter2 = merge(13) -local chain = ltn12.filter.chain(filter, filter2) -sink, t = ltn12.sink.table() -source = ltn12.source.chain(source, chain) -assert(ltn12.pump.all(source, sink), "returned error") -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -assert(filter2(nil, 1), "filter2 not empty") -print("ok") - --------------------------------- -io.write("testing filter.chain (and source.chain, a bunch): ") -source = ltn12.source.string(s) -filter = split(5) -filter2 = merge(13) -local filter3 = split(7) -local filter4 = merge(11) -local filter5 = split(10) -chain = ltn12.filter.chain(filter, filter2, filter3, filter4, filter5) -sink, t = ltn12.sink.table() -source = ltn12.source.chain(source, chain) -assert(ltn12.pump.all(source, sink)) -assert(table.concat(t) == s, "mismatch") -assert(filter(nil, 1), "filter not empty") -assert(filter2(nil, 1), "filter2 not empty") -assert(filter3(nil, 1), "filter3 not empty") -assert(filter4(nil, 1), "filter4 not empty") -assert(filter5(nil, 1), "filter5 not empty") -print("ok") - diff --git a/src/deps/src/luasocket/test/luasocket.png b/src/deps/src/luasocket/test/luasocket.png deleted file mode 100644 index d24a95495b55894b96aec1b01d0b7c02cc43f168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11732 zcmW++1ymGm7oH`T4vD3t6_iHlmKN!jUJ*q)M0$ml4r%F-?(Rkw1f;uDI;HcU@1L`A z&hG3xbMD^v-Y0Ibx~c*JE;TLy00c^kvYOyK;=d;p4SZEGI!^%rPAw%_Y3(nw``+#@ z+H#YZC52O;q6g)Bl}USLraK2Qg7$Fz@nAnRBwR5Zr4vbf)|SIW2J?Idh4}}=@OJR~ zcy=JN4uB*Ju0|~DuW}aRuPic(GQG-Br7ezyI}@F|`~1_jk<vF(q$U3K0YJ;ImxnqIVrJD)*0_au!r(hC8CxFA^2o+Lf5kb64 z>*Yn$i0Rh3b7WNR<^N^eVjo458Ow};G)uUWX2%9(ymGEf6aj91t+u_Hs=Ug|Xw4l5 zAs3N_E+R=AzC;)twpOH9_IG_c}6sn**$rhYO2AIsRqMas}{!22RRMUY#g>}f0?5`f$9U(DgE z=VgXql9O04ZEkM*-X8aKbaasX|5!tXhlYinTGkel)y(ZDa2ZFlus?gIObmlJTMeaM zUtcT5JOOWrDqP-FC_2O&kb>S{4c#V~%$gc|;{Xsv00V$H0EF$pJK%-Ohk;LJe;PK^ z$dsvMdhrOZV*tZ=rhX?mIXNSv6c(k`r$rO9WWqwU$>w$cDeEf95Z3$eFJ*3j(Y$qdwfl`bQ^=sXA%1DG(9vj>cBLpN-5eSL4ffuDoJX7yJv7|$wwj%Q5T1wc#o zT9b&0l~f+A(q^ihH*r$Aq%_EYaq@G~-Y!@S%i8uBrHl;P=qQ#( zAMa0X`ERuU5Jm3efR#ou8vMlUfz=PkhtF& zy|AXR`-vxzeUnf66P}rg^7Av5S9tqNWH{m=cg|0n10ELnSp0gYs4PvwoBBnH;jny> z!g-=bhh>f9;3HB}-4esIf9VhN!sGxjS$Y@YjE#b2G?7WAILl-Q1mvFWMxrCsbBqq_ z-I=wmCUagV)Y>nZn3zbo9n2SK<>5BC?dsc$EQCTQa%v|C+c(EGAJ%KUFE`XW7U;1%C zZf!LMA|)-&33S04oQamc63Z5>4J5uUC?Mf#Ie3Hifwi!Ikd2Qon)eAyiEi6z&dWjR zX@Ex_X$C|PpWjz!#Hz25e+y~J&j?Y&;`?Ju$!*f&C?8IYW)>Hx*YW53;wOw@i*#a5 zefd!DZb|S?XV1bTq+2W4SR=SXe|({^#t>7TglHwv}Dd5UH}KPh#xa z0WJL>OBvE%M@AsLyc97?fy5LW;CHqvC z!pzLCh=G)5@@8wHXYypu-6i=S?r;CmOWYJ+_C_feP2fsFf-V`dyYvqW3>YQZEx~|1 zd%oLtS4)hzyunsUB5N^|?(@TZwYKW_3-@QNJCpzL5`;lQLb3SA!EVMBf|n4nw&ve% zi+dhHT{ue}NhezC{_n44e|-33aYIW{<17={46i(l*&x^RJhs?0{b53nRp2cifHiEc zg5>S*zTBY07^6Ii;l*V@=kf2bKi@<4Jf;DQb+n0EGwgu;n-b|@-?K!~3sV@4oh%gH zK}p7H@Rm>59YKt2Q36U>cl+X=>y;WQsi^ElZx>yY=2$QX%*}0t)8H+BVXmvMCj|g} zBr$@Jek>fF5ejH1L-qhLjx8Rpvt2}y=l{lvyn#Q~#PUJ8Pv(wRK7Fz-hMt){#Rm|) z76TF=HTR;JpU>L{304z1?0hpy?PX+S#KFO7H8cGX7{ZjzNPoSyyN1Ojh7^V6itQ4U+12{z zhre^r*2t?xk57xI+sD>r59YZYW2Le?h8(q9vJ_Vr!2@6q2qo8;9XV% zlsFj}8YU$t7m>c=saI`i)14;uo12R>y*~*(J-s+N>4P4>QdDE#f3$}VScGXQlSD(0 zx!Ll6@WSsNsqNX>x(4Me)1tBAzE;6^KkhaFY(bWfi9*4E0h;2Rx^wMxwYi`usmI{ zTUqs-1xKq7QyKlLzISJbEI4@Y*(M>IUSqj(Zi~Y5@yV=8Hof9e(#Ra*um+B|=^oa9Kb0+HS}f5? ziW@=DG7}RMb8^7)$Q8$;RQ^+yHDt0NoY!MDc*ysx$QRu#>?}6qkGZ57J)<5vNe&rY z95u>6v}aVi$8Ro8YT`O5oyYue)AriuZda77TeX0I@jHu5P`QJP7gRc0mUuO`)&jq* zt#xa`?T~Ex@J~KeCwgzLj+=+ap%aNy7}fJ=i83vGQuoSAa_)K~0W+E`gRM9jZ6E6^ zIzz>NmNt?*=qo&o7iHl&@0iSDE>|&_ChpV|al=XBztud=t4J#0Rlj<*c|j+pk89?3 zK+w$w12D~yKMq?xr|BPrK3yL1$eAzx^!HE%)EJ>Ap{YDOo0<`aQ5;SN zumrOy@BRw*ud0m4!lde!0;GxxnUL=iYwMmvzs?jpn_w7F2#`naToRB-*^YSH1bI|( zREZwWU!F~Ui(X&aobCZ|H~WTsCGIy8tg^H59S*BPdiLi+O}?z`j*e2x48%GCTpxIB z4Nn$Zh-mQXR>YTI2;xNN$EtIa`tedogq7Nsw&I%G0v-2vH=jOz5`}I}G_qF*DbU{) zo0doN{+%a*eVA_ew^H(!^6Aq+&Awls^=>j_`}tTg!1V9c%F~rN=_OO1gF=98HtpzJ z!pFDf+oN@V<4>nL0WWr3Q^DyyM`*_xu3mW9`2 zs*^)F9c8T^W@{+sJH895n4ei3*hCVo4(1^oS}UU@`eQy&X%RXSPcHwjHq+(Hae9BX zth->sAD7!)cPl7O=M|v2+Hts~`1rr8e_gQCbrFpR zswqMmT3Y;8gS3Yic&;V6xf{VxCD5f(+@_FDKM}lW4$W78Q`dSFglV;rVV(*|XZuKK zM_9#_Npf;pn(W7>@(xErU{p)(&R$Ngip8A!ob)(k&c3aswpM_fTdjK$OoeaGn}ctD z@R%>Rf3>)7TFRJJfGlt4x#{V=B+lAw<`!)1ythn#`DyE9V~yQXgzi9-v~gGpItN|? zj{yfAXETi0*w}cj%%^6~^2b3t41~2bl0MDLGRDp03Y@*aCkwLJX1xM;54U+%lt~vW zH^zPMrryh_#GcnALKuHFi1Ryd-(LOB;%|M5U+^I(_BH8X?{uZJ6@>9gCK-tzyY0t&oyW*RT_?i($Nm??qi~d>u9i>w5xm`JEPNZu~I`R zY{FADWn4`4lr?f6mNChD$MyLJtd4mRZ=;(!N&$%A6EyTviB8~OsN?(TjyS@Jej zeo3{R2BLjeP*}KgdAt_Q;@Z9@ z8S{&Y$7WVr-DHu4;wvQux6+6&pZ4jcE)fo?{5y_78Vw8cnj2pmr~+-OBN1) z#5np#RrCmh3DL8nu8qIQFl`eur?QGv)ZLvRlITSr3YCKT|M>5Kkwh)AyGR2So*d7f zQH!{+eIaIEO=2+*^tYSU1~PVuHnT)*fD9(wM_%O^U+6^95Fp?LxSCCl%pA}S7UuU;D%unrrP2U7$P(R1}XX=!QYwS6uLz{0>NHfa$N z5TFq2cNu9>lN2YAl8fJbgQ~0}L|44INZ>^^54>5L{W?D%N&`1pIL0`?f{j{DIe2ZYhc5?xQ-$*cPfNsv=2D7x)vpM6EAY%hvm#Tn1w z1*V&?Jo9jWEtq0tJY4UNqEMgJuJZwzpx^IK)@hCu0oPTYvN?m75j)crg?)X`q1)F@ z=SUa}xpmf-id(8`ET2**CT0!DLa6}soKzL|K?uB{w3J=2jx>YWzvFd(+B~{(Kd_E* zv~`OHOxKl>No~J4&9R5@qDc6>@2|FP=Tu*l>XJpSP}`w5#3up3kaz-XzW_H$u;1v- zdFq9q2qi}2D@u$HHZ~kwT$7WSTiG~a0K?PGtfumvr^J>t*>TS$CEZHF?p~>);~U>& zl`@@R`9$e5(pT&VY$Z@$_nBdbK}fILlCgHw^2%egFfaj$!o$NC7!Xn(=H@H4wsXzb zbP)LX^t8|40aoB}M-m%Q>Rk0dCXk!=#5C85=Q6Ebbe%$lguItVpHSM(9d)@aVhhtO zor-CDxSKxoZKH&1^oUlLLdf*Jj`>dAA-wpijvIm@AxL~z*xBW)M=zF7T3bP$Gb zyF4Gpgjic!%ZF2M!~wLxV0s%`d-M9SSr`mXLUM24Dy$Y?psH|xySdjD=*#enAq*uL zi3Qyj+5|hnLl@CMN-kQkLxQ-OWM$z_D_Y^5CpNLvUfPm zqgN8X_qbn7AghftHWY+>lrKI@BR+!YQBF=;Z{_dC#+z25DWOd!9@#wRmLKjbbaE;D zgCvYTx<%e=sQGZ3$Ss$@IS`aif4k6njofNfW1_z%0<-Mb^UQKbu2K>9S3PDD|S2d9eNHc=`$9EBJkbHp%dC z+0dau#BM415l4Q_1Y_2;chiH&5z4RHYw7iFn4`e~`e9SA-u4e^CY4P7!lrqY*wQPu zjTEgYqCF$3AH<_Na(sF=zxm){o|W3Z5|(?3y)a-~4js(2 zAd>!={OG2+YL0Bvc0b7@V28l(r>5M;m3g}tJIu`f78Wv0OlWVOh;LSARXeCQ#XZ_y zAZGDtblT_xR|6@IG4TecmP!0Z%u}`8oSbjpzPTTNGY>&fuABFD%yD1zA9)>hnc6$yPd&NM~?VNv2s{eEeuLy^R3C#kF4YJp6&>4`nnP zIREu%+xKqQ$k%rYcpBPGOis?@?Qv`GE9!c6GE{5N4I-~ptWJlLsYj-z!5 z1tCpzgn@c!E-o!ZDLl_mav{h~F5{~G58UuDp}M>D2Y%ay#-?z2C4Hs2+4Yl?T<1+{ zYwKc}?;^D07Q8ldpOKQc8_9*LO$?MzSa7~ePI>vxagU^(ZJb`2 zDmvnL?I#-AZHX?8%wnC8n8<8aRwo_CPIPqiW8YiHi{Uh`TL@SZW$?euehWT3DBd1j z`fz}Y3Jb;nstnwgrDoE^tytK56W4+O9!4x+?P+=nnc!OvEMH%7gy83=Hqu#y;cgs> zD!D;H&g-v{eAoMo=r`EpLce3i609oCw4G|)6r-c z8irPsmhBCQLk6Wa$P8)||3Kh9Pr@J5Nw{nwI{d*6%K_F`bgUm|AZ6C8_n-b829gA2 zi2|x(D5FMZLrID4=3pw3*bzdpa5>2%dZ%)$lb#p`>lH35DIp*t!X~niQn{kyU#+v3 z99e>$2Y4ZQHY?lO%>N|K^e04yN7UA@i{WLDPt*{?%;H&0zp$e%kLC3gDJ~CYMPU;? z9vB>q2n(w=ECFS8P!pyIm1C*nL-qCbWo2dkIwn~JSDXLvBH-J%xP$~yPMzh?5du`w zC19EN12|h~I#5S01v!KBJp&QzaVhf_X=qJdzmCpiUtf`>Ww_Olz}}LnD!ZuDI`2_O zwH!P8@KA~{Ohmt8*$D>Zsw9%q)2GM9b;E9M{|(s+BzIc`hlD7rsNmz{-(IdorhAR9509!2|8UM_-;hW*}k6cE~^2xVns%WrHH zVPdja?~U3VN^kpey!s7~^89dVX?Xa1bTlay6%LnA@Zk67+5@rY=bvjHE9bds_OaqD zIIAg}m{7^cBa)j4n^}_4j(Qa(6N-=w%KI@-i4q05f3IZ7|2(a0^S(%4+LH-#EY;dI zBlV*rY+^f|B@bePo*26kbi;z9*;JL?96l;mXLn2Oo4-tFhM zf+$93Ymq&f=j#*%+A$UOab=SN9FJE?4pJTCIom;vzOTRk6_kMb#fP2o0;cw-FJ5TJ z{Y&}BC1zpRlbwf@Trd73?DXz(Z^j=&+ls-)gapc|^ENit=9!Gqe`@e08qL$w8C0WV zV-2PVXOE2_18+j@H#YQ&b*bP=vY!eB6-glu_%sxSR80zaVhC?k*rnrI);O8~*Oxhv zJimYc9z^RPXHZp*=vonSKgr%P(x_obFE*ToONvq5VJ`Wej^J1eHa|i*Q)S3$7*42j zs?iUUZ)Uv*GT1o8=6&bup+K_9lE$TUG?WpRaVFT-VA~E<e%GuCfhlIdI_Jb-O=u?>sggFDV`2Yynt|Oa_=2&0+feZmVR;M@fx=HN$)-c zf>mbVYsRP4a1p7_KWoicWq$DX z3};4#QiKC_M}%KucKr5ijpW^LwX8Z@Q7yfxtf?3z@;fG;=0P+6Z?o?p!U&iD z{XrJX|Fp<7r|nqY?o-jvhMB*#cs($!Lb1EkcPrY&FDt6^0YFl+4J1(_w1k81mX;gE z230`2MFlKep7J52%)Qg2<-X~#waT!>+U#4N+|lqWxTY4i#%%EOS6jtk0Kexw^GgHZ z810kAGjpS>JTMl6T(ISq7>i1Z-b67gJf3TIAE9$&0oqL;lK%BQzwz@A&j{B4OUv^F zG&G9zeAz37sn&?ZUwBNFvMNM~rKPsqb`gOt-46>M#jC5A+uJmKebgi}pPMSJbqsYT z_=zONu-fIJq6=?QM*41Obn&8cS;-t@=M-;ZNu*n#e~u~%c!WW z#RQ(?c1=6nUVbyElDOQIq|D6?C~_RklKk^$pS#U#`Hx^*aAc&IOMa)#WU7d((i|BI zH83#dyy;VIw;=v107G<>m{MabfxE8t?tEm*RC0WFw%NQZxb4oi)G$m+$SAdgpk3Je zxI6Jl%rn~b50kTO&Kg#nC9# zb67IK1CPMOlV5aJ3;E5WqhkPCZns%khDa79F?`?oZ?@Ojgyw#S%`+Ly^R~;?P)t0E zEf*1kcr`F2VD-Dc_NbakNlW7zWS&s9ONTNXl$Mn(HM;Ibv%W??*=5(&!=RxgpHNG= zjGWZ%4sIf(K5hT_Q#Xd}L6}Io0zF?kMP_hNV({4q4)lowtN?5r3x?UBz!Gsj5 zD_}eWJf0RU%QN@=G3NDfK^hWh(_G3!Kib%M?UvN(7VCq~w=}z}B=k{fkDnU5^6Kjk zAGTuDB(^bc=r}F1*+5CMT+bvC-OQO6Kgd|EPJ(N}Jj{_031j`8PR!5v?k-kP+rax1;eNA zZYe2wW6UJggv(wf?s>D4c-o)!0eQ?CgIz1A5W#w}vypnFI_(-J-{H zF)=Y7p5b?VS65e5_yObNnZy*H!Z+=aj?(?+Uh-#^rjjb6=ofN>+A1qL4{*vq9w^OD-I;& zbxS^PF&bTz+X$_ak>uarBvaIxcQFA?`37J5Q6(-SMkIZ`4R?1JhpFP8LHVs)T-unj z3JPWVV9y942g5osF#-CDA3lC0dFKC}D^+#Uj@~Mi7#9ae*z3|kOKa?CrE7v>f&Ufg zbDGIz!h7VeZ;~$##NPznd&K?K#Uezo;AqTV_ed@_SnDJy?rp!o&TVPAs~VD+tAHzL zXpCel#pHrF_2`k7wsve>oMqh{91fQg)6FxGUtmTIySs`Q>+4UK8aILP0mJkkaZ<=H zVfomT(^Gw!()jRc$9-e%fO z3NbUh{;>b|m4q^q2bD5){v8sLHN14kCC>7z+M=6qke9LXt)}1x?9rg5 z^0w$92Pm~4q`_+D682oj7I6YhRKl)m;$VUSm5v4Q>1KH+fpisT7JsO8ae2N!99 zmRooXmVW&9T4dzINxuSE+GA^9M>`bGGg%n0oIFC!qNCxb`?k7l^aWR{7?+n3#t09^ zhK7U`=I4K~wIz=l3d!1XX#}fuX!bbQki(t;q`E~TlG8DG@8~p$#oPd7iBD)H@5e!t zg*@jQ@z(a0QA?P27%yW68z&s~>#^khy0IH8UTV)6fWv4}3EIGuHUhqvD}h;>MfLwq zHu|monl32a-s1V~_Va~sgEKFhWZm!h+(r6j$Lx#QIKVjA%;-0zzOzc-G-8xJJl#4M zSJ>&Lgb#EG8@G7;eVWekSZLUEOKkSo`YuQyc^}L*g~-P>h9x5-Bg_gBAi$USa+G0G zmcYU;D0l&W3jzUC&{9aiUy4B4vlJ-4jJ2CC@35|sxH}ztX4@QU>1Y-z6lvKVvXG~i z!2Ir)zEkOLD<6LLI%{wRL) z`}gnMZMT&f8B+0#4k<^SljyvxoQng! z#`B$`o8%4&Ocd&Xg!OY%OG}G51B28{zt2<~(~l@z=pZB(VN~HL^R9sXnX1jz?oe>X;QZc# zQ=Ifr328yj1YrZo=?6;7jPWaRaCAQ7BXB9RG` zXLd?++7yphXb(?&TKxHin3&hq$p)yZlyt4|!0?w{>GH>vQ;;B{mv0VWv*Y+ z9aP&|!8x3juE0k!WO5J$IR7LQv|xuF-qNA4q*X?@Ra|OR((Kf>y5dOeWgu>1fS=Jg z+vsNhJ58KbSeWwp^JL%`yIJQec8RH%+b^7WHWh46Pc<~8wQ}*31i2j#=70V85s~rX z4Epf`wv9re+HN?uFWc_zc+ugps zclu?E3J`}sH7m!)&CSik#3Ulp*uP&d%E-O}H5M%@YB9cF2@Gg%-Z^Y5d(Kf@R^05d ztywg&^WD=IZq|A5@f(uY3@(JY5@`=aI6EYs)y}g(Hn@Uj8pL&DD@DyJ4dY`jw%EH)dJC1{b>8XxbgO>&T<48c2Z=p(ouFJv|T)aQ+3_$jiVa%Cc#WqZGFDIy|bu(y}Eav$qvsf+nf zi@!+IH@?C*m1F^At{2O{eWnsJtc7MaX(c#+{J2eN>ZPHf@n1{~s@?}l`?pP>OS&x*dCX-rHKT=`WQqbmSfzw^bd5Dt zU--|lb1~UJ=jA=l417!~%D&IcMJhwy-O|K%qk!%>b&k;mmfAfq+C%A*_BDoMqoaI$ zd>-WuZW>IOF9Zekbag2xC?e=3B^Vi{Ej^w!?N-X{yzy&&3o&$XvqnR(D1keY1|0Ut zVguzgXA*RU2wJdGQoZ<~Zf2IzZGl5bNI`?gnMDN;$x>IA3uktHS`Y6bG>FGx1k(vT zlS^DfCqshxJ~boD*VO@HNQkE@pSiKXq_jU>0VfRXdSCUsvKds_x3)g;M$OI5O_iB0 zjgB%EL&44jPGMo>nKytD1~CPg@ljDxGK+}hnL>Iuzd8&E#)rJB&qc+Sx?vTQle$F{ zB4+J?EyFlyv69HF0%I8&8Pn7HB}j)TiaWkB@eWQ|KrN%ut$LR65}}YFZkqr>ze9U~ zU=U~QTjkl&a~dvudbd=0ME?r$ptq6>Tl2wKT6sWQ(d-$zSLUV$r>w4cb*_o 4 then which = 1 end - return eol[which] - end)) - for i = 1, 4 do - for j = 1, 4 do - f:write(eol[i]) - f:write(eol[j]) - end - end - -- try long spaced and tabbed lines - f:write("\r\n") - for i = 0, 255 do - f:write(string.char(9)) - end - f:write("\r\n") - for i = 0, 255 do - f:write(' ') - end - f:write("\r\n") - for i = 0, 255 do - f:write(string.char(9),' ') - end - f:write("\r\n") - for i = 0, 255 do - f:write(' ',string.char(32)) - end - f:write("\r\n") - - f:close() -end - -local function cleanup_qptest() - os.remove(qptest) - os.remove(eqptest) - os.remove(dqptest) -end - --- create test file -local function create_b64test() - local f = assert(io.open(b64test, "wb")) - local t = {} - for j = 1, 100 do - for i = 1, 100 do - t[i] = math.random(0, 255) - end - f:write(string.char(unpack(t))) - end - f:close() -end - -local function encode_b64test() - local e1 = mime.encode("base64") - local e2 = mime.encode("base64") - local e3 = mime.encode("base64") - local e4 = mime.encode("base64") - local sp4 = mime.wrap() - local sp3 = mime.wrap(59) - local sp2 = mime.wrap("base64", 30) - local sp1 = mime.wrap(27) - local chain = ltn12.filter.chain(e1, sp1, e2, sp2, e3, sp3, e4, sp4) - transform(b64test, eb64test, chain) -end - -local function decode_b64test() - local d1 = named(mime.decode("base64"), "d1") - local d2 = named(mime.decode("base64"), "d2") - local d3 = named(mime.decode("base64"), "d3") - local d4 = named(mime.decode("base64"), "d4") - local chain = named(ltn12.filter.chain(d1, d2, d3, d4), "chain") - transform(eb64test, db64test, chain) -end - -local function cleanup_b64test() - os.remove(b64test) - os.remove(eb64test) - os.remove(db64test) -end - -local function compare_b64test() -io.write("testing b64 chained encode: ") - compare(b64test, db64test) -end - -local function identity_test() -io.write("testing identity: ") - local chain = named(ltn12.filter.chain( - named(mime.encode("quoted-printable"), "1 eq"), - named(mime.encode("base64"), "2 eb"), - named(mime.decode("base64"), "3 db"), - named(mime.decode("quoted-printable"), "4 dq") - ), "chain") - transform(b64test, eb64test, chain) - compare(b64test, eb64test) - os.remove(eb64test) -end - - -local function padcheck(original, encoded) - local e = (mime.b64(original)) - local d = (mime.unb64(encoded)) - if e ~= encoded then fail("encoding failed") end - if d ~= original then fail("decoding failed") end -end - -local function chunkcheck(original, encoded) - local len = string.len(original) - for i = 0, len do - local a = string.sub(original, 1, i) - local b = string.sub(original, i+1) - local e, r = mime.b64(a, b) - local f = (mime.b64(r)) - if (e .. (f or "") ~= encoded) then fail(e .. (f or "")) end - end -end - -local function padding_b64test() -io.write("testing b64 padding: ") - padcheck("a", "YQ==") - padcheck("ab", "YWI=") - padcheck("abc", "YWJj") - padcheck("abcd", "YWJjZA==") - padcheck("abcde", "YWJjZGU=") - padcheck("abcdef", "YWJjZGVm") - padcheck("abcdefg", "YWJjZGVmZw==") - padcheck("abcdefgh", "YWJjZGVmZ2g=") - padcheck("abcdefghi", "YWJjZGVmZ2hp") - padcheck("abcdefghij", "YWJjZGVmZ2hpag==") - chunkcheck("abcdefgh", "YWJjZGVmZ2g=") - chunkcheck("abcdefghi", "YWJjZGVmZ2hp") - chunkcheck("abcdefghij", "YWJjZGVmZ2hpag==") - print("ok") -end - -local function test_b64lowlevel() -io.write("testing b64 low-level: ") - local a, b - a, b = mime.b64("", "") - assert(a == "" and b == "") - a, b = mime.b64(nil, "blablabla") - assert(a == nil and b == nil) - a, b = mime.b64("", nil) - assert(a == nil and b == nil) - a, b = mime.unb64("", "") - assert(a == "" and b == "") - a, b = mime.unb64(nil, "blablabla") - assert(a == nil and b == nil) - a, b = mime.unb64("", nil) - assert(a == nil and b == nil) - local binary=string.char(0x00,0x44,0x1D,0x14,0x0F,0xF4,0xDA,0x11,0xA9,0x78,0x00,0x14,0x38,0x50,0x60,0xCE) - local encoded = mime.b64(binary) - local decoded=mime.unb64(encoded) - assert(binary == decoded) - print("ok") -end - -local t = socket.gettime() - -create_b64test() -identity_test() -encode_b64test() -decode_b64test() -compare_b64test() -cleanup_b64test() -padding_b64test() -test_b64lowlevel() - -create_qptest() -encode_qptest() -decode_qptest() -compare_qptest() -encode_qptest("binary") -decode_qptest() -compare_qptest() -cleanup_qptest() - - -print(string.format("done in %.2fs", socket.gettime() - t)) diff --git a/src/deps/src/luasocket/test/smtptest.lua b/src/deps/src/luasocket/test/smtptest.lua deleted file mode 100644 index 9d060543a..000000000 --- a/src/deps/src/luasocket/test/smtptest.lua +++ /dev/null @@ -1,259 +0,0 @@ -local sent = {} - -local from = "diego@localhost" -local server = "localhost" -local rcpt = "luasocket@localhost" - -local files = { - "/var/spool/mail/luasocket", - "/var/spool/mail/luasock1", - "/var/spool/mail/luasock2", - "/var/spool/mail/luasock3", -} - -local t = socket.time() -local err - -dofile("mbox.lua") -local parse = mbox.parse -dofile("testsupport.lua") - -local total = function() - local t = 0 - for i = 1, #sent do - t = t + sent[i].count - end - return t -end - -local similar = function(s1, s2) - return - string.lower(string.gsub(s1, "%s", "")) == - string.lower(string.gsub(s2, "%s", "")) -end - -local fail = function(s) - s = s or "failed!" - print(s) - os.exit() -end - -local readfile = function(name) - local f = io.open(name, "r") - if not f then - fail("unable to open file!") - return nil - end - local s = f:read("*a") - f:close() - return s -end - -local empty = function() - for i,v in ipairs(files) do - local f = io.open(v, "w") - if not f then - fail("unable to open file!") - end - f:close() - end -end - -local get = function() - local s = "" - for i,v in ipairs(files) do - s = s .. "\n" .. readfile(v) - end - return s -end - -local check_headers = function(sent, got) - sent = sent or {} - got = got or {} - for i,v in pairs(sent) do - if not similar(v, got[i]) then fail("header " .. v .. "failed!") end - end -end - -local check_body = function(sent, got) - sent = sent or "" - got = got or "" - if not similar(sent, got) then fail("bodies differ!") end -end - -local check = function(sent, m) - io.write("checking ", m.headers.title, ": ") - for i = 1, #sent do - local s = sent[i] - if s.title == m.headers.title and s.count > 0 then - check_headers(s.headers, m.headers) - check_body(s.body, m.body) - s.count = s.count - 1 - print("ok") - return - end - end - fail("not found") -end - -local insert = function(sent, message) - if type(message.rcpt) == "table" then - message.count = #message.rcpt - else message.count = 1 end - message.headers = message.headers or {} - message.headers.title = message.title - table.insert(sent, message) -end - -local mark = function() - local time = socket.time() - return { time = time } -end - -local wait = function(sentinel, n) - local to - io.write("waiting for ", n, " messages: ") - while 1 do - local mbox = parse(get()) - if n == #mbox then break end - if socket.time() - sentinel.time > 50 then - to = 1 - break - end - socket.sleep(1) - io.write(".") - io.stdout:flush() - end - if to then fail("timeout") - else print("ok") end -end - -local stuffed_body = [[ -This message body needs to be -stuffed because it has a dot -. -by itself on a line. -Otherwise the mailer would -think that the dot -. -is the end of the message -and the remaining text would cause -a lot of trouble. -]] - -insert(sent, { - from = from, - rcpt = { - "luasocket@localhost", - "luasock3@dell-diego.cs.princeton.edu", - "luasock1@dell-diego.cs.princeton.edu" - }, - body = "multiple rcpt body", - title = "multiple rcpt", -}) - -insert(sent, { - from = from, - rcpt = { - "luasock2@localhost", - "luasock3", - "luasock1" - }, - headers = { - header1 = "header 1", - header2 = "header 2", - header3 = "header 3", - header4 = "header 4", - header5 = "header 5", - header6 = "header 6", - }, - body = stuffed_body, - title = "complex message", -}) - -insert(sent, { - from = from, - rcpt = rcpt, - server = server, - body = "simple message body", - title = "simple message" -}) - -insert(sent, { - from = from, - rcpt = rcpt, - server = server, - body = stuffed_body, - title = "stuffed message body" -}) - -insert(sent, { - from = from, - rcpt = rcpt, - headers = { - header1 = "header 1", - header2 = "header 2", - header3 = "header 3", - header4 = "header 4", - header5 = "header 5", - header6 = "header 6", - }, - title = "multiple headers" -}) - -insert(sent, { - from = from, - rcpt = rcpt, - title = "minimum message" -}) - -io.write("testing host not found: ") -local c, e = socket.connect("wrong.host", 25) -local ret, err = socket.smtp.mail{ - from = from, - rcpt = rcpt, - server = "wrong.host" -} -if ret or e ~= err then fail("wrong error message") -else print("ok") end - -io.write("testing invalid from: ") -local ret, err = socket.smtp.mail{ - from = ' " " (( _ * ', - rcpt = rcpt, -} -if ret or not err then fail("wrong error message") -else print(err) end - -io.write("testing no rcpt: ") -local ret, err = socket.smtp.mail{ - from = from, -} -if ret or not err then fail("wrong error message") -else print(err) end - -io.write("clearing mailbox: ") -empty() -print("ok") - -io.write("sending messages: ") -for i = 1, #sent do - ret, err = socket.smtp.mail(sent[i]) - if not ret then fail(err) end - io.write("+") - io.stdout:flush() -end -print("ok") - -wait(mark(), total()) - -io.write("parsing mailbox: ") -local mbox = parse(get()) -print(#mbox .. " messages found!") - -for i = 1, #mbox do - check(sent, mbox[i]) -end - -print("passed all tests") -print(string.format("done in %.2fs", socket.time() - t)) diff --git a/src/deps/src/luasocket/test/stufftest.lua b/src/deps/src/luasocket/test/stufftest.lua deleted file mode 100644 index 490053f28..000000000 --- a/src/deps/src/luasocket/test/stufftest.lua +++ /dev/null @@ -1,21 +0,0 @@ -local mime = require("mime") - -function test_dot(original, right) - local result, n = mime.dot(2, original) - assert(result == right, "->" .. result .. "<-") - print("ok") -end - -function test_stuff(original, right) - local result, n = mime.dot(2, original) - assert(result == right, "->" .. result .. "<-") - print("ok") -end - -test_dot("abc", "abc") -test_dot("", "") -test_dot("\r\n", "\r\n") -test_dot("\r\n.", "\r\n..") -test_dot(".\r\n.", "..\r\n..") -test_dot(".\r\n.", "..\r\n..") -test_dot("abcd.\r\n.", "abcd.\r\n..") diff --git a/src/deps/src/luasocket/test/tcp-getoptions b/src/deps/src/luasocket/test/tcp-getoptions deleted file mode 100644 index fbcc8846b..000000000 --- a/src/deps/src/luasocket/test/tcp-getoptions +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env lua - -local socket = require"socket" - -port = 8765 - -function pcalltest(msg, o, opt) - local a = { pcall(o.getoption, o, opt) } - if a[1] then - print(msg, opt, unpack(a)) - else - print(msg, opt, 'fail: ' .. a[2]) - end -end - -function options(o) - print("options for", o) - - for _, opt in ipairs{ - "keepalive", "reuseaddr", - "tcp-nodelay", "tcp-keepidle", "tcp-keepcnt", "tcp-keepintvl"} do - pcalltest("getoption", o, opt) - end - - r = o:getoption'linger' - if r then - print("getoption", "linger", - "on", r.on, - "timeout", r.timeout) - else - print("getoption", "linger", "no result") - end -end - -local m = socket.tcp() - -options(m) - -assert(m:bind("*", port)) -assert(m:listen()) - -options(m) - -m:close() - -local m = socket.bind("*", port) - -options(m) - -local c = socket.connect("localhost", port) - -options(c) - -local s = m:accept() - -options(s) - diff --git a/src/deps/src/luasocket/test/test_bind.lua b/src/deps/src/luasocket/test/test_bind.lua deleted file mode 100644 index 93c42d729..000000000 --- a/src/deps/src/luasocket/test/test_bind.lua +++ /dev/null @@ -1,6 +0,0 @@ -local socket = require "socket" -local u = socket.udp() assert(u:setsockname("*", 5088)) u:close() -local u = socket.udp() assert(u:setsockname("*", 0)) u:close() -local t = socket.tcp() assert(t:bind("*", 5088)) t:close() -local t = socket.tcp() assert(t:bind("*", 0)) t:close() -print("done!") \ No newline at end of file diff --git a/src/deps/src/luasocket/test/test_getaddrinfo.lua b/src/deps/src/luasocket/test/test_getaddrinfo.lua deleted file mode 100644 index 4b52ff924..000000000 --- a/src/deps/src/luasocket/test/test_getaddrinfo.lua +++ /dev/null @@ -1,15 +0,0 @@ -local socket = require "socket" -local addresses = assert(socket.dns.getaddrinfo("localhost")) -assert(type(addresses) == 'table') - -local ipv4mask = "^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?$" - -for i, alt in ipairs(addresses) do - if alt.family == 'inet' then - assert(type(alt.addr) == 'string') - assert(alt.addr:find(ipv4mask)) - assert(alt.addr == '127.0.0.1') - end -end - -print("done!") diff --git a/src/deps/src/luasocket/test/test_socket_error.lua b/src/deps/src/luasocket/test/test_socket_error.lua deleted file mode 100644 index 1b4b601ca..000000000 --- a/src/deps/src/luasocket/test/test_socket_error.lua +++ /dev/null @@ -1,31 +0,0 @@ -local socket = require "socket" - -local host, port = "127.0.0.1", "5462" - -assert(socket.bind(host, port)):close() - -local sock = socket.tcp() -sock:settimeout(0) - -local ok, err = sock:connect(host, port) -assert(not ok) -assert('timeout' == err) - -for i = 1, 10 do - -- select pass even if socket has error - local _, rec, err = socket.select(nil, {sock}, 1) - local _, ss = next(rec) - if ss then - assert(ss == sock) - else - assert('timeout' == err, 'unexpected error :' .. tostring(err)) - end - err = sock:getoption("error") -- i get 'connection refused' on WinXP - if err then - print("Passed! Error is '" .. err .. "'.") - os.exit(0) - end -end - -print("Fail! No error detected!") -os.exit(1) diff --git a/src/deps/src/luasocket/test/testclnt.lua b/src/deps/src/luasocket/test/testclnt.lua deleted file mode 100644 index 170e1878b..000000000 --- a/src/deps/src/luasocket/test/testclnt.lua +++ /dev/null @@ -1,803 +0,0 @@ -local socket = require"socket" - -host = host or "localhost" -port = port or "8383" - -function printf(...) - io.stderr:write(string.format(...)) -end - -function pass(...) - printf(...) - io.stderr:write("\n") -end - -function fail(...) - io.stderr:write("ERROR: ") - printf(...) - io.stderr:write("!\n") - os.exit() -end - -function warn(...) - local s = string.format(...) - io.stderr:write("WARNING: ", s, "\n") -end - -function remote(...) - local s = string.format(...) - s = string.gsub(s, "\n", ";") - s = string.gsub(s, "%s+", " ") - s = string.gsub(s, "^%s*", "") - control:send(s .. "\n") - control:receive() -end - -function test(test) - io.stderr:write("----------------------------------------------\n", - "testing: ", test, "\n", - "----------------------------------------------\n") -end - -function check_timeout(tm, sl, elapsed, err, opp, mode, alldone) - if tm < sl then - if opp == "send" then - if not err then warn("must be buffered") - elseif err == "timeout" then pass("proper timeout") - else fail("unexpected error '%s'", err) end - else - if err ~= "timeout" then fail("should have timed out") - else pass("proper timeout") end - end - else - if mode == "total" then - if elapsed > tm then - if err ~= "timeout" then fail("should have timed out") - else pass("proper timeout") end - elseif elapsed < tm then - if err then fail(err) - else pass("ok") end - else - if alldone then - if err then fail("unexpected error '%s'", err) - else pass("ok") end - else - if err ~= "timeout" then fail(err) - else pass("proper timeoutk") end - end - end - else - if err then fail(err) - else pass("ok") end - end - end -end - -if not socket._DEBUG then - fail("Please define LUASOCKET_DEBUG and recompile LuaSocket") -end - -io.stderr:write("----------------------------------------------\n", -"LuaSocket Test Procedures\n", -"----------------------------------------------\n") - -start = socket.gettime() - -function reconnect() - if data then data:close() end - remote [[ - if data then data:close() data = nil end - data = server:accept() - data:setoption("tcp-nodelay", true) - ]] - data, err = socket.connect(host, port) - if not data then fail(err) end - data:setoption("tcp-nodelay", true) -end - -printf("attempting control connection...") -control, err = socket.connect(host, port) -if err then fail(err) -else pass("connected!") end -control:setoption("tcp-nodelay", true) - ------------------------------------------------------------------------- -function test_methods(sock, methods) - for _, v in pairs(methods) do - if type(sock[v]) ~= "function" then - fail(sock.class .. " method '" .. v .. "' not registered") - end - end - pass(sock.class .. " methods are ok") -end - ------------------------------------------------------------------------- -function test_mixed(len) - reconnect() - io.stderr:write("length " .. len .. ": ") - local inter = math.ceil(len/4) - local p1 = "unix " .. string.rep("x", inter) .. "line\n" - local p2 = "dos " .. string.rep("y", inter) .. "line\r\n" - local p3 = "raw " .. string.rep("z", inter) .. "bytes" - local p4 = "end" .. string.rep("w", inter) .. "bytes" - local bp1, bp2, bp3, bp4 -remote (string.format("str = data:receive(%d)", - string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4))) - sent, err = data:send(p1..p2..p3..p4) - if err then fail(err) end -remote "data:send(str); data:close()" - bp1, err = data:receive() - if err then fail(err) end - bp2, err = data:receive() - if err then fail(err) end - bp3, err = data:receive(string.len(p3)) - if err then fail(err) end - bp4, err = data:receive("*a") - if err then fail(err) end - if bp1.."\n" == p1 and bp2.."\r\n" == p2 and bp3 == p3 and bp4 == p4 then - pass("patterns match") - else fail("patterns don't match") end -end - ------------------------------------------------------------------------- -if not math.mod then - math.mod = math.fmod -end -function test_asciiline(len) - reconnect() - io.stderr:write("length " .. len .. ": ") - local str, str10, back, err - str = string.rep("x", math.mod(len, 10)) - str10 = string.rep("aZb.c#dAe?", math.floor(len/10)) - str = str .. str10 -remote "str = data:receive()" - sent, err = data:send(str.."\n") - if err then fail(err) end -remote "data:send(str ..'\\n')" - back, err = data:receive() - if err then fail(err) end - if back == str then pass("lines match") - else fail("lines don't match") end -end - ------------------------------------------------------------------------- -function test_rawline(len) - reconnect() - io.stderr:write("length " .. len .. ": ") - local str, str10, back, err - str = string.rep(string.char(47), math.mod(len, 10)) - str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100), - math.floor(len/10)) - str = str .. str10 -remote "str = data:receive()" - sent, err = data:send(str.."\n") - if err then fail(err) end -remote "data:send(str..'\\n')" - back, err = data:receive() - if err then fail(err) end - if back == str then pass("lines match") - else fail("lines don't match") end -end - ------------------------------------------------------------------------- -function test_raw(len) - reconnect() - io.stderr:write("length " .. len .. ": ") - local half = math.floor(len/2) - local s1, s2, back, err - s1 = string.rep("x", half) - s2 = string.rep("y", len-half) -remote (string.format("str = data:receive(%d)", len)) - sent, err = data:send(s1) - if err then fail(err) end - sent, err = data:send(s2) - if err then fail(err) end -remote "data:send(str)" - back, err = data:receive(len) - if err then fail(err) end - if back == s1..s2 then pass("blocks match") - else fail("blocks don't match") end -end - ------------------------------------------------------------------------- -function test_totaltimeoutreceive(len, tm, sl) - reconnect() - local str, err, partial - printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = string.rep('a', %d) - data:send(str) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - data:send(str) - ]], 2*tm, len, sl, sl)) - data:settimeout(tm, "total") -local t = socket.gettime() - str, err, partial, elapsed = data:receive(2*len) - check_timeout(tm, sl, elapsed, err, "receive", "total", - string.len(str or partial) == 2*len) -end - ------------------------------------------------------------------------- -function test_totaltimeoutsend(len, tm, sl) - reconnect() - local str, err, total - printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = data:receive(%d) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - str = data:receive(%d) - ]], 2*tm, len, sl, sl, len)) - data:settimeout(tm, "total") - str = string.rep("a", 2*len) - total, err, partial, elapsed = data:send(str) - check_timeout(tm, sl, elapsed, err, "send", "total", - total == 2*len) -end - ------------------------------------------------------------------------- -function test_blockingtimeoutreceive(len, tm, sl) - reconnect() - local str, err, partial - printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = string.rep('a', %d) - data:send(str) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - data:send(str) - ]], 2*tm, len, sl, sl)) - data:settimeout(tm) - str, err, partial, elapsed = data:receive(2*len) - check_timeout(tm, sl, elapsed, err, "receive", "blocking", - string.len(str or partial) == 2*len) -end - ------------------------------------------------------------------------- -function test_blockingtimeoutsend(len, tm, sl) - reconnect() - local str, err, total - printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = data:receive(%d) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - str = data:receive(%d) - ]], 2*tm, len, sl, sl, len)) - data:settimeout(tm) - str = string.rep("a", 2*len) - total, err, partial, elapsed = data:send(str) - check_timeout(tm, sl, elapsed, err, "send", "blocking", - total == 2*len) -end - ------------------------------------------------------------------------- -function empty_connect() - printf("empty connect: ") - reconnect() - if data then data:close() data = nil end - remote [[ - if data then data:close() data = nil end - data = server:accept() - ]] - data, err = socket.connect("", port) - if not data then - pass("ok") - data = socket.connect(host, port) - else - pass("gethostbyname returns localhost on empty string...") - end -end - ------------------------------------------------------------------------- -function isclosed(c) - return c:getfd() == -1 or c:getfd() == (2^32-1) -end - -function active_close() - local tcp = socket.tcp4() - if isclosed(tcp) then fail("should not be closed") end - tcp:close() - if not isclosed(tcp) then fail("should be closed") end - tcp = socket.tcp() - if not isclosed(tcp) then fail("should be closed") end - tcp = nil - local udp = socket.udp4() - if isclosed(udp) then fail("should not be closed") end - udp:close() - if not isclosed(udp) then fail("should be closed") end - udp = socket.udp() - if not isclosed(udp) then fail("should be closed") end - udp = nil - pass("ok") -end - ------------------------------------------------------------------------- -function test_closed() - local back, partial, err - local str = 'little string' - reconnect() - printf("trying read detection: ") - remote (string.format ([[ - data:send('%s') - data:close() - data = nil - ]], str)) - -- try to get a line - back, err, partial = data:receive() - if not err then fail("should have gotten 'closed'.") - elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.") - elseif str ~= partial then fail("didn't receive partial result.") - else pass("graceful 'closed' received") end - reconnect() - printf("trying write detection: ") - remote [[ - data:close() - data = nil - ]] - total, err, partial = data:send(string.rep("ugauga", 100000)) - if not err then - pass("failed: output buffer is at least %d bytes long!", total) - elseif err ~= "closed" then - fail("got '"..err.."' instead of 'closed'.") - else - pass("graceful 'closed' received after %d bytes were sent", partial) - end -end - ------------------------------------------------------------------------- -function test_selectbugs() - local r, s, e = socket.select(nil, nil, 0.1) - assert(type(r) == "table" and type(s) == "table" and - (e == "timeout" or e == "error")) - pass("both nil: ok") - local udp = socket.udp() - udp:close() - r, s, e = socket.select({ udp }, { udp }, 0.1) - assert(type(r) == "table" and type(s) == "table" and - (e == "timeout" or e == "error")) - pass("closed sockets: ok") - e = pcall(socket.select, "wrong", 1, 0.1) - assert(e == false, tostring(e)) - e = pcall(socket.select, {}, 1, 0.1) - assert(e == false, tostring(e)) - pass("invalid input: ok") - local toomany = {} - for i = 1, socket._SETSIZE+1 do - toomany[#toomany+1] = socket.udp4() - end - if #toomany > socket._SETSIZE then - local e = pcall(socket.select, toomany, nil, 0.1) - assert(e == false, tostring(e)) - pass("too many sockets (" .. #toomany .. "): ok") - else - pass("unable to create enough sockets (max was "..#toomany..")") - pass("try using ulimit") - end - for _, c in ipairs(toomany) do c:close() end -end - ------------------------------------------------------------------------- -function accept_timeout() - printf("accept with timeout (if it hangs, it failed): ") - local s, e = socket.bind("*", 0, 0) - assert(s, e) - local t = socket.gettime() - s:settimeout(1) - local c, e = s:accept() - assert(not c, "should not accept") - assert(e == "timeout", string.format("wrong error message (%s)", e)) - t = socket.gettime() - t - assert(t < 2, string.format("took to long to give up (%gs)", t)) - s:close() - pass("good") -end - ------------------------------------------------------------------------- -function connect_timeout() - printf("connect with timeout (if it hangs, it failed!): ") - local t = socket.gettime() - local c, e = socket.tcp() - assert(c, e) - c:settimeout(0.1) - local t = socket.gettime() - local r, e = c:connect("10.0.0.1", 81) - assert(not r, "should not connect") - assert(socket.gettime() - t < 2, "took too long to give up.") - c:close() - pass("ok") -end - ------------------------------------------------------------------------- -function accept_errors() - printf("not listening: ") - local d, e = socket.bind("*", 0) - assert(d, e); - local c, e = socket.tcp(); - assert(c, e); - d:setfd(c:getfd()) - d:settimeout(2) - local r, e = d:accept() - assert(not r and e) - pass("ok") - printf("not supported: ") - local c, e = socket.udp() - assert(c, e); - d:setfd(c:getfd()) - local r, e = d:accept() - assert(not r and e) - pass("ok") -end - ------------------------------------------------------------------------- -function connect_errors() - printf("connection refused: ") - local c, e = socket.connect("localhost", 1); - assert(not c and e) - pass("ok") - printf("host not found: ") - local c, e = socket.connect("host.is.invalid", 1); - assert(not c and e, e) - pass("ok") -end - ------------------------------------------------------------------------- -function rebind_test() - local c ,c1 = socket.bind("127.0.0.1", 0) - if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end - assert(c,c1) - local i, p = c:getsockname() - local s, e = socket.tcp() - assert(s, e) - s:setoption("reuseaddr", false) - r, e = s:bind(i, p) - assert(not r, "managed to rebind!") - assert(e) - pass("ok") -end - ------------------------------------------------------------------------- -function getstats_test() - reconnect() - local t = 0 - for i = 1, 25 do - local c = math.random(1, 100) - remote (string.format ([[ - str = data:receive(%d) - data:send(str) - ]], c)) - data:send(string.rep("a", c)) - data:receive(c) - t = t + c - local r, s, a = data:getstats() - assert(r == t, "received count failed" .. tostring(r) - .. "/" .. tostring(t)) - assert(s == t, "sent count failed" .. tostring(s) - .. "/" .. tostring(t)) - end - pass("ok") -end - - ------------------------------------------------------------------------- -function test_nonblocking(size) - reconnect() - printf("testing " .. 2*size .. " bytes: ") -remote(string.format([[ - data:send(string.rep("a", %d)) - socket.sleep(0.5) - data:send(string.rep("b", %d) .. "\n") -]], size, size)) - local err = "timeout" - local part = "" - local str - data:settimeout(0) - while 1 do - str, err, part = data:receive("*l", part) - if err ~= "timeout" then break end - end - assert(str == (string.rep("a", size) .. string.rep("b", size))) - reconnect() -remote(string.format([[ - str = data:receive(%d) - socket.sleep(0.5) - str = data:receive(2*%d, str) - data:send(str) -]], size, size)) - data:settimeout(0) - local start = 0 - while 1 do - ret, err, start = data:send(str, start+1) - if err ~= "timeout" then break end - end - data:send("\n") - data:settimeout(-1) - local back = data:receive(2*size) - assert(back == str, "'" .. back .. "' vs '" .. str .. "'") - pass("ok") -end - ------------------------------------------------------------------------- -function test_readafterclose() - local back, partial, err - local str = 'little string' - reconnect() - printf("trying repeated '*a' pattern") - remote (string.format ([[ - data:send('%s') - data:close() - data = nil - ]], str)) - back, err, partial = data:receive("*a") - assert(back == str, "unexpected data read") - back, err, partial = data:receive("*a") - assert(back == nil and err == "closed", "should have returned 'closed'") - pass("ok") - reconnect() - printf("trying active close before '*a'") - remote (string.format ([[ - data:close() - data = nil - ]])) - data:close() - back, err, partial = data:receive("*a") - assert(back == nil and err == "closed", "should have returned 'closed'") - pass("ok") - reconnect() - printf("trying active close before '*l'") - remote (string.format ([[ - data:close() - data = nil - ]])) - data:close() - back, err, partial = data:receive() - assert(back == nil and err == "closed", "should have returned 'closed'") - pass("ok") - reconnect() - printf("trying active close before raw 1") - remote (string.format ([[ - data:close() - data = nil - ]])) - data:close() - back, err, partial = data:receive(1) - assert(back == nil and err == "closed", "should have returned 'closed'") - pass("ok") - reconnect() - printf("trying active close before raw 0") - remote (string.format ([[ - data:close() - data = nil - ]])) - data:close() - back, err, partial = data:receive(0) - assert(back == nil and err == "closed", "should have returned 'closed'") - pass("ok") -end - ------------------------------------------------------------------------- -function test_writeafterclose() - local str = 'little string' - reconnect() - remote (string.format ([[ - data:close() - data = nil - ]])) - local sent, err, errsent - while not err do - sent, err, errsent, time = data:send(str) - end - assert(err == "closed", "got " .. err .. " instead of 'closed'") - pass("ok") -end - ------------------------------------------------------------------------- - -function test_partialrecv() - local str = 'little string' - reconnect() -remote([[ - data:send("7890") -]]) - data:settimeout(1) - back, err = data:receive(10, "123456") - assert(back == "1234567890", "failed on exact mixed length") - back, err = data:receive(8, "87654321") - assert(back == "87654321", "failed on exact length") - back, err = data:receive(4, "87654321") - assert(back == "87654321", "failed on smaller length") - pass("ok") -end - ------------------------------------------------------------------------- -test("method registration") - -local tcp_methods = { - "accept", - "bind", - "close", - "connect", - "dirty", - "getfamily", - "getfd", - "getoption", - "getpeername", - "getsockname", - "getstats", - "setstats", - "listen", - "receive", - "send", - "setfd", - "setoption", - "setpeername", - "setsockname", - "settimeout", - "shutdown", -} -test_methods(socket.tcp(), tcp_methods) -do local sock = socket.tcp6() -if sock then test_methods(socket.tcp6(), tcp_methods) -else io.stderr:write("Warning! IPv6 does not support!\n") end -end - -local udp_methods = { - "close", - "dirty", - "getfamily", - "getfd", - "getoption", - "getpeername", - "getsockname", - "receive", - "receivefrom", - "send", - "sendto", - "setfd", - "setoption", - "setpeername", - "setsockname", - "settimeout" -} - ------------------------------------------------------------------------- -test_methods(socket.udp(), udp_methods) -do local sock = socket.tcp6() -if sock then test_methods(socket.udp6(), udp_methods) -else io.stderr:write("Warning! IPv6 does not support!\n") end -end - -test("closed connection detection: ") -test_closed() - -test("partial receive") -test_partialrecv() - -test("select function") -test_selectbugs() - -test("read after close") -test_readafterclose() - -test("write after close") -test_writeafterclose() - -test("connect function") -connect_timeout() -empty_connect() -connect_errors() - -test("rebinding: ") -rebind_test() - -test("active close: ") -active_close() - -test("accept function: ") -accept_timeout() -accept_errors() - -test("getstats test") -getstats_test() - -test("character line") -test_asciiline(1) -test_asciiline(17) -test_asciiline(200) -test_asciiline(4091) -test_asciiline(80199) -test_asciiline(8000000) -test_asciiline(80199) -test_asciiline(4091) -test_asciiline(200) -test_asciiline(17) -test_asciiline(1) - -test("mixed patterns") -test_mixed(1) -test_mixed(17) -test_mixed(200) -test_mixed(4091) -test_mixed(801990) -test_mixed(4091) -test_mixed(200) -test_mixed(17) -test_mixed(1) - -test("binary line") -test_rawline(1) -test_rawline(17) -test_rawline(200) -test_rawline(4091) -test_rawline(80199) -test_rawline(8000000) -test_rawline(80199) -test_rawline(4091) -test_rawline(200) -test_rawline(17) -test_rawline(1) - -test("raw transfer") -test_raw(1) -test_raw(17) -test_raw(200) -test_raw(4091) -test_raw(80199) -test_raw(8000000) -test_raw(80199) -test_raw(4091) -test_raw(200) -test_raw(17) -test_raw(1) - -test("non-blocking transfer") -test_nonblocking(1) -test_nonblocking(17) -test_nonblocking(200) -test_nonblocking(4091) -test_nonblocking(80199) -test_nonblocking(800000) -test_nonblocking(80199) -test_nonblocking(4091) -test_nonblocking(200) -test_nonblocking(17) -test_nonblocking(1) - -test("total timeout on send") -test_totaltimeoutsend(800091, 1, 3) -test_totaltimeoutsend(800091, 2, 3) -test_totaltimeoutsend(800091, 5, 2) -test_totaltimeoutsend(800091, 3, 1) - -test("total timeout on receive") -test_totaltimeoutreceive(800091, 1, 3) -test_totaltimeoutreceive(800091, 2, 3) -test_totaltimeoutreceive(800091, 3, 2) -test_totaltimeoutreceive(800091, 3, 1) - -test("blocking timeout on send") -test_blockingtimeoutsend(800091, 1, 3) -test_blockingtimeoutsend(800091, 2, 3) -test_blockingtimeoutsend(800091, 3, 2) -test_blockingtimeoutsend(800091, 3, 1) - -test("blocking timeout on receive") -test_blockingtimeoutreceive(800091, 1, 3) -test_blockingtimeoutreceive(800091, 2, 3) -test_blockingtimeoutreceive(800091, 3, 2) -test_blockingtimeoutreceive(800091, 3, 1) - -test("shutting server down") -reconnect() -remote("os.exit()") - -test(string.format("done in %.2fs", socket.gettime() - start)) diff --git a/src/deps/src/luasocket/test/testmesg.lua b/src/deps/src/luasocket/test/testmesg.lua deleted file mode 100644 index 8c086d511..000000000 --- a/src/deps/src/luasocket/test/testmesg.lua +++ /dev/null @@ -1,96 +0,0 @@ --- load the smtp support and its friends -local smtp = require("socket.smtp") -local mime = require("mime") -local ltn12 = require("ltn12") - -function filter(s) - if s then io.write(s) end - return s -end - -source = smtp.message { - headers = { ['content-type'] = 'multipart/alternative' }, - body = { - [1] = { - headers = { ['Content-type'] = 'text/html' }, - body = " Hi, there... " - }, - [2] = { - headers = { ['content-type'] = 'text/plain' }, - body = "Hi, there..." - } - } -} - -r, e = smtp.send{ - rcpt = {"", - "" }, - from = "", - source = ltn12.source.chain(source, filter), - --server = "mail.cs.princeton.edu" - server = "localhost", - port = 2525 -} - -print(r, e) - --- creates a source to send a message with two parts. The first part is --- plain text, the second part is a PNG image, encoded as base64. -source = smtp.message{ - headers = { - -- Remember that headers are *ignored* by smtp.send. - from = "Sicrano ", - to = "Fulano ", - subject = "Here is a message with attachments" - }, - body = { - preamble = "If your client doesn't understand attachments, \r\n" .. - "it will still display the preamble and the epilogue.\r\n" .. - "Preamble might show up even in a MIME enabled client.", - -- first part: No headers means plain text, us-ascii. - -- The mime.eol low-level filter normalizes end-of-line markers. - [1] = { - body = mime.eol(0, [[ - Lines in a message body should always end with CRLF. - The smtp module will *NOT* perform translation. It will - perform necessary stuffing, though. - ]]) - }, - -- second part: Headers describe content the to be an image, - -- sent under the base64 transfer content encoding. - -- Notice that nothing happens until the message is sent. Small - -- chunks are loaded into memory and translation happens on the fly. - [2] = { - headers = { - ["ConTenT-tYpE"] = 'image/png; name="luasocket.png"', - ["content-disposition"] = 'attachment; filename="luasocket.png"', - ["content-description"] = 'our logo', - ["content-transfer-encoding"] = "BASE64" - }, - body = ltn12.source.chain( - ltn12.source.file(io.open("luasocket.png", "rb")), - ltn12.filter.chain( - mime.encode("base64"), - mime.wrap() - ) - ) - }, - epilogue = "This might also show up, but after the attachments" - } -} - - -r, e = smtp.send{ - rcpt = {"", - "" }, - from = "", - source = ltn12.source.chain(source, filter), - --server = "mail.cs.princeton.edu", - --port = 25 - server = "localhost", - port = 2525 -} - -print(r, e) - - diff --git a/src/deps/src/luasocket/test/testsrvr.lua b/src/deps/src/luasocket/test/testsrvr.lua deleted file mode 100644 index 1eb2d5b1f..000000000 --- a/src/deps/src/luasocket/test/testsrvr.lua +++ /dev/null @@ -1,20 +0,0 @@ -socket = require("socket"); -host = host or "localhost"; -port = port or "8383"; -server = assert(socket.bind(host, port)); -ack = "\n"; -while 1 do - print("server: waiting for client connection..."); - control = assert(server:accept()); - while 1 do - command, emsg = control:receive(); - if emsg == "closed" then - control:close() - break - end - assert(command, emsg) - assert(control:send(ack)); - print(command); - ((loadstring or load)(command))(); - end -end diff --git a/src/deps/src/luasocket/test/testsupport.lua b/src/deps/src/luasocket/test/testsupport.lua deleted file mode 100644 index 4360b6b3e..000000000 --- a/src/deps/src/luasocket/test/testsupport.lua +++ /dev/null @@ -1,37 +0,0 @@ -function readfile(name) - local f = io.open(name, "rb") - if not f then return nil end - local s = f:read("*a") - f:close() - return s -end - -function similar(s1, s2) - return string.lower(string.gsub(s1 or "", "%s", "")) == - string.lower(string.gsub(s2 or "", "%s", "")) -end - -function fail(msg) - msg = msg or "failed" - error(msg, 2) -end - -function compare(input, output) - local original = readfile(input) - local recovered = readfile(output) - if original ~= recovered then fail("comparison failed") - else print("ok") end -end - -local G = _G -local set = rawset -local warn = print - -local setglobal = function(table, key, value) - warn("changed " .. key) - set(table, key, value) -end - -setmetatable(G, { - __newindex = setglobal -}) diff --git a/src/deps/src/luasocket/test/tftptest.lua b/src/deps/src/luasocket/test/tftptest.lua deleted file mode 100644 index 35078e836..000000000 --- a/src/deps/src/luasocket/test/tftptest.lua +++ /dev/null @@ -1,20 +0,0 @@ --- load tftpclnt.lua -local tftp = require("socket.tftp") - --- needs tftp server running on localhost, with root pointing to --- a directory with index.html in it - -function readfile(file) - local f = io.open(file, "r") - if not f then return nil end - local a = f:read("*a") - f:close() - return a -end - -host = host or "diego.student.princeton.edu" -retrieved, err = tftp.get("tftp://" .. host .."/index.html") -assert(not err, err) -original = readfile("test/index.html") -assert(original == retrieved, "files differ!") -print("passed") diff --git a/src/deps/src/luasocket/test/udp-zero-length-send b/src/deps/src/luasocket/test/udp-zero-length-send deleted file mode 100644 index 9038c999a..000000000 --- a/src/deps/src/luasocket/test/udp-zero-length-send +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env lua - ---[[ -Show that luasocket returns an error message on zero-length UDP sends, -even though the send is valid, and in fact the UDP packet is sent -to the peer: - -% sudo tcpdump -i lo -n -tcpdump: verbose output suppressed, use -v or -vv for full protocol decode -listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes -13:40:16.652808 IP 127.0.0.1.56573 > 127.0.0.1.5432: UDP, length 0 - -]] - -socket = require"socket" - -s = assert(socket.udp()) -r = assert(socket.udp()) -assert(r:setsockname("*", 5432)) -assert(s:setpeername("127.0.0.1", 5432)) - -ssz, emsg = s:send("") - -print(ssz == 0 and "OK" or "FAIL",[[send:("")]], ssz, emsg) - diff --git a/src/deps/src/luasocket/test/udp-zero-length-send-recv b/src/deps/src/luasocket/test/udp-zero-length-send-recv deleted file mode 100644 index 064ca5216..000000000 --- a/src/deps/src/luasocket/test/udp-zero-length-send-recv +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env lua - ---[[ -Show that luasocket returns an error message on zero-length UDP sends, -even though the send is valid, and in fact the UDP packet is sent -to the peer: - -% sudo tcpdump -i lo -n -tcpdump: verbose output suppressed, use -v or -vv for full protocol decode -listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes -13:40:16.652808 IP 127.0.0.1.56573 > 127.0.0.1.5432: UDP, length 0 - -]] - -socket = require"socket" - -s = assert(socket.udp()) -r = assert(socket.udp()) -assert(r:setsockname("*", 5432)) -assert(s:setpeername("127.0.0.1", 5432)) - -ok, emsg = s:send("") -if ok ~= 0 then - print("send of zero failed with:", ok, emsg) -end - -assert(r:settimeout(2)) - -ok, emsg = r:receive() - -if not ok or string.len(ok) ~= 0 then - print("fail - receive of zero failed with:", ok, emsg) - os.exit(1) -end - -print"ok" - diff --git a/src/deps/src/luasocket/test/udpconnectclnt.lua b/src/deps/src/luasocket/test/udpconnectclnt.lua deleted file mode 100644 index ad6ab6a45..000000000 --- a/src/deps/src/luasocket/test/udpconnectclnt.lua +++ /dev/null @@ -1,19 +0,0 @@ -local socket = require"socket" -local udp = socket.udp -local localhost = "127.0.0.1" -local port = assert(arg[1], "missing port argument") - -se = udp(); se:setoption("reuseaddr", true) -se:setsockname(localhost, 5062) -print("se", se:getsockname()) -sc = udp(); sc:setoption("reuseaddr", true) -sc:setsockname(localhost, 5061) -print("sc", sc:getsockname()) - -se:sendto("this is a test from se", localhost, port) -socket.sleep(1) -sc:sendto("this is a test from sc", localhost, port) -socket.sleep(1) -se:sendto("this is a test from se", localhost, port) -socket.sleep(1) -sc:sendto("this is a test from sc", localhost, port) diff --git a/src/deps/src/luasocket/test/udpconnectsrvr.lua b/src/deps/src/luasocket/test/udpconnectsrvr.lua deleted file mode 100644 index 5a9772ec6..000000000 --- a/src/deps/src/luasocket/test/udpconnectsrvr.lua +++ /dev/null @@ -1,16 +0,0 @@ -local socket = require"socket" -local udp = socket.udp -local localhost = "127.0.0.1" -local s = assert(udp()) -assert(tostring(s):find("udp{unconnected}")) -print("setpeername", s:setpeername(localhost, 5061)) -print("getsockname", s:getsockname()) -assert(tostring(s):find("udp{connected}")) -print(s:receive()) -print("setpeername", s:setpeername("*")) -print("getsockname", s:getsockname()) -s:sendto("a", localhost, 12345) -print("getsockname", s:getsockname()) -assert(tostring(s):find("udp{unconnected}")) -print(s:receivefrom()) -s:close() diff --git a/src/deps/src/luasocket/test/unixdgramclnt.lua b/src/deps/src/luasocket/test/unixdgramclnt.lua deleted file mode 100644 index 9bd60f7f7..000000000 --- a/src/deps/src/luasocket/test/unixdgramclnt.lua +++ /dev/null @@ -1,9 +0,0 @@ -socket = require"socket" -socket.unix = require"socket.unix" -c = assert(socket.unix.dgram()) -print(c:bind("/tmp/bar")) -while 1 do - local l = io.read("*l") - assert(c:sendto(l, "/tmp/foo")) - print(assert(c:receivefrom())) -end diff --git a/src/deps/src/luasocket/test/unixdgramsrvr.lua b/src/deps/src/luasocket/test/unixdgramsrvr.lua deleted file mode 100644 index 4c11f552c..000000000 --- a/src/deps/src/luasocket/test/unixdgramsrvr.lua +++ /dev/null @@ -1,9 +0,0 @@ - socket = require"socket" - socket.unix = require"socket.unix" - u = assert(socket.unix.dgram()) - assert(u:bind("/tmp/foo")) - while 1 do - x, r = assert(u:receivefrom()) - print(x, r) - assert(u:sendto(">" .. x, r)) - end diff --git a/src/deps/src/luasocket/test/unixstreamclnt.lua b/src/deps/src/luasocket/test/unixstreamclnt.lua deleted file mode 100644 index 4f2e1e3c1..000000000 --- a/src/deps/src/luasocket/test/unixstreamclnt.lua +++ /dev/null @@ -1,8 +0,0 @@ -socket = require"socket" -socket.unix = require"socket.unix" -c = assert(socket.unix.stream()) -assert(c:connect("/tmp/foo")) -while 1 do - local l = io.read() - assert(c:send(l .. "\n")) -end diff --git a/src/deps/src/luasocket/test/unixstreamsrvr.lua b/src/deps/src/luasocket/test/unixstreamsrvr.lua deleted file mode 100644 index 0a5c644be..000000000 --- a/src/deps/src/luasocket/test/unixstreamsrvr.lua +++ /dev/null @@ -1,9 +0,0 @@ - socket = require"socket" - socket.unix = require"socket.unix" - u = assert(socket.unix.stream()) - assert(u:bind("/tmp/foo")) - assert(u:listen()) - c = assert(u:accept()) - while 1 do - print(assert(c:receive())) - end diff --git a/src/deps/src/luasocket/test/upload.html b/src/deps/src/luasocket/test/upload.html deleted file mode 100644 index b4674a885..000000000 --- a/src/deps/src/luasocket/test/upload.html +++ /dev/null @@ -1,15 +0,0 @@ - - -POST test - - - -
-
- -

- -

-
- - diff --git a/src/deps/src/luasocket/test/urltest.lua b/src/deps/src/luasocket/test/urltest.lua deleted file mode 100644 index 9a3c470a2..000000000 --- a/src/deps/src/luasocket/test/urltest.lua +++ /dev/null @@ -1,738 +0,0 @@ -local socket = require("socket") -socket.url = require("socket.url") -dofile("testsupport.lua") - -local check_build_url = function(parsed) - local built = socket.url.build(parsed) - if built ~= parsed.url then - print("built is different from expected") - print(built) - print(expected) - os.exit() - end -end - -local check_protect = function(parsed, path, unsafe) - local built = socket.url.build_path(parsed, unsafe) - if built ~= path then - print(built, path) - print("path composition failed.") - os.exit() - end -end - -local check_invert = function(url) - local parsed = socket.url.parse(url) - parsed.path = socket.url.build_path(socket.url.parse_path(parsed.path)) - local rebuilt = socket.url.build(parsed) - if rebuilt ~= url then - print(url, rebuilt) - print("original and rebuilt are different") - os.exit() - end -end - -local check_parse_path = function(path, expect) - local parsed = socket.url.parse_path(path) - for i = 1, math.max(#parsed, #expect) do - if parsed[i] ~= expect[i] then - print(path) - os.exit() - end - end - if expect.is_directory ~= parsed.is_directory then - print(path) - print("is_directory mismatch") - os.exit() - end - if expect.is_absolute ~= parsed.is_absolute then - print(path) - print("is_absolute mismatch") - os.exit() - end - local built = socket.url.build_path(expect) - if built ~= path then - print(built, path) - print("path composition failed.") - os.exit() - end -end - -local check_absolute_url = function(base, relative, absolute) - local res = socket.url.absolute(base, relative) - if res ~= absolute then - io.write("absolute: In test for base='", base, "', rel='", relative, "' expected '", - absolute, "' but got '", res, "'\n") - os.exit() - end -end - -local check_parse_url = function(gaba) - local url = gaba.url - gaba.url = nil - local parsed = socket.url.parse(url) - for i, v in pairs(gaba) do - if v ~= parsed[i] then - io.write("parse: In test for '", url, "' expected ", i, " = '", - v, "' but got '", tostring(parsed[i]), "'\n") - for i,v in pairs(parsed) do print(i,v) end - os.exit() - end - end - for i, v in pairs(parsed) do - if v ~= gaba[i] then - io.write("parse: In test for '", url, "' expected ", i, " = '", - tostring(gaba[i]), "' but got '", v, "'\n") - for i,v in pairs(parsed) do print(i,v) end - os.exit() - end - end -end - -print("testing URL parsing") -check_parse_url{ - url = "scheme://user:pass$%?#wd@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:pass$%?#wd@host:port", - host = "host", - port = "port", - userinfo = "user:pass$%?#wd", - password = "pass$%?#wd", - user = "user", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} -check_parse_url{ - url = "scheme://user:pass?#wd@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:pass?#wd@host:port", - host = "host", - port = "port", - userinfo = "user:pass?#wd", - password = "pass?#wd", - user = "user", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} -check_parse_url{ - url = "scheme://user:pass-wd@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:pass-wd@host:port", - host = "host", - port = "port", - userinfo = "user:pass-wd", - password = "pass-wd", - user = "user", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} -check_parse_url{ - url = "scheme://user:pass#wd@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:pass#wd@host:port", - host = "host", - port = "port", - userinfo = "user:pass#wd", - password = "pass#wd", - user = "user", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} -check_parse_url{ - url = "scheme://user:pass#wd@host:port/path;params?query", - scheme = "scheme", - authority = "user:pass#wd@host:port", - host = "host", - port = "port", - userinfo = "user:pass#wd", - password = "pass#wd", - user = "user", - path = "/path", - params = "params", - query = "query", -} -check_parse_url{ - url = "scheme://userinfo@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:password@host:port", - host = "host", - port = "port", - userinfo = "user:password", - user = "user", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment", -} - -check_parse_url{ - url = "scheme://userinfo@host:port/path;params?query#", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - query = "query", - fragment = "" -} - -check_parse_url{ - url = "scheme://userinfo@host:port/path;params?#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - query = "", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://userinfo@host:port/path;params#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://userinfo@host:port/path;?query#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://userinfo@host:port/path?query#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://userinfo@host:port/;params?query#fragment", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/", - params = "params", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://userinfo@host:port", - scheme = "scheme", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", -} - -check_parse_url{ - url = "//userinfo@host:port/path;params?query#fragment", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "//userinfo@host:port/path", - authority = "userinfo@host:port", - host = "host", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", -} - -check_parse_url{ - url = "//userinfo@host/path", - authority = "userinfo@host", - host = "host", - userinfo = "userinfo", - user = "userinfo", - path = "/path", -} - -check_parse_url{ - url = "//user:password@host/path", - authority = "user:password@host", - host = "host", - userinfo = "user:password", - password = "password", - user = "user", - path = "/path", -} - -check_parse_url{ - url = "//user:@host/path", - authority = "user:@host", - host = "host", - userinfo = "user:", - password = "", - user = "user", - path = "/path", -} - -check_parse_url{ - url = "//user@host:port/path", - authority = "user@host:port", - host = "host", - userinfo = "user", - user = "user", - port = "port", - path = "/path", -} - -check_parse_url{ - url = "//host:port/path", - authority = "host:port", - port = "port", - host = "host", - path = "/path", -} - -check_parse_url{ - url = "//host/path", - authority = "host", - host = "host", - path = "/path", -} - -check_parse_url{ - url = "//host", - authority = "host", - host = "host", -} - -check_parse_url{ - url = "/path", - path = "/path", -} - -check_parse_url{ - url = "path", - path = "path", -} - --- IPv6 tests - -check_parse_url{ - url = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html", - scheme = "http", - host = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210", - authority = "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80", - port = "80", - path = "/index.html" -} - -check_parse_url{ - url = "http://[1080:0:0:0:8:800:200C:417A]/index.html", - scheme = "http", - host = "1080:0:0:0:8:800:200C:417A", - authority = "[1080:0:0:0:8:800:200C:417A]", - path = "/index.html" -} - -check_parse_url{ - url = "http://[3ffe:2a00:100:7031::1]", - scheme = "http", - host = "3ffe:2a00:100:7031::1", - authority = "[3ffe:2a00:100:7031::1]", -} - -check_parse_url{ - url = "http://[1080::8:800:200C:417A]/foo", - scheme = "http", - host = "1080::8:800:200C:417A", - authority = "[1080::8:800:200C:417A]", - path = "/foo" -} - -check_parse_url{ - url = "http://[::192.9.5.5]/ipng", - scheme = "http", - host = "::192.9.5.5", - authority = "[::192.9.5.5]", - path = "/ipng" -} - -check_parse_url{ - url = "http://[::FFFF:129.144.52.38]:80/index.html", - scheme = "http", - host = "::FFFF:129.144.52.38", - port = "80", - authority = "[::FFFF:129.144.52.38]:80", - path = "/index.html" -} - -check_parse_url{ - url = "http://[2010:836B:4179::836B:4179]", - scheme = "http", - host = "2010:836B:4179::836B:4179", - authority = "[2010:836B:4179::836B:4179]", -} - -check_parse_url{ - url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment", - authority = "userinfo@[::FFFF:129.144.52.38]:port", - host = "::FFFF:129.144.52.38", - port = "port", - userinfo = "userinfo", - user = "userinfo", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_parse_url{ - url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:password@[::192.9.5.5]:port", - host = "::192.9.5.5", - port = "port", - userinfo = "user:password", - user = "user", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -print("testing URL building") -check_build_url { - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - host = "host", - port = "port", - user = "user", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url{ - url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment", - host = "::FFFF:129.144.52.38", - port = "port", - user = "userinfo", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url{ - url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment", - scheme = "scheme", - host = "::192.9.5.5", - port = "port", - user = "user", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://user:password@host/path;params?query#fragment", - scheme = "scheme", - host = "host", - user = "user", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://user@host/path;params?query#fragment", - scheme = "scheme", - host = "host", - user = "user", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://host/path;params?query#fragment", - scheme = "scheme", - host = "host", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://host/path;params#fragment", - scheme = "scheme", - host = "host", - path = "/path", - params = "params", - fragment = "fragment" -} - -check_build_url { - url = "scheme://host/path#fragment", - scheme = "scheme", - host = "host", - path = "/path", - fragment = "fragment" -} - -check_build_url { - url = "scheme://host/path", - scheme = "scheme", - host = "host", - path = "/path", -} - -check_build_url { - url = "//host/path", - host = "host", - path = "/path", -} - -check_build_url { - url = "/path", - path = "/path", -} - -check_build_url { - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - host = "host", - port = "port", - user = "user", - userinfo = "not used", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - host = "host", - port = "port", - user = "user", - userinfo = "not used", - authority = "not used", - password = "password", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - host = "host", - port = "port", - userinfo = "user:password", - authority = "not used", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - -check_build_url { - url = "scheme://user:password@host:port/path;params?query#fragment", - scheme = "scheme", - authority = "user:password@host:port", - path = "/path", - params = "params", - query = "query", - fragment = "fragment" -} - --- standard RFC tests -print("testing absolute resolution") -check_absolute_url("http://a/b/c/d;p?q#f", "g:h", "g:h") -check_absolute_url("http://a/b/c/d;p?q#f", "g", "http://a/b/c/g") -check_absolute_url("http://a/b/c/d;p?q#f", "./g", "http://a/b/c/g") -check_absolute_url("http://a/b/c/d;p?q#f", "g/", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "/g", "http://a/g") -check_absolute_url("http://a/b/c/d;p?q#f", "//g", "http://g") -check_absolute_url("http://a/b/c/d;p?q#f", "?y", "http://a/b/c/d;p?y") -check_absolute_url("http://a/b/c/d;p?q#f", "g?y", "http://a/b/c/g?y") -check_absolute_url("http://a/b/c/d;p?q#f", "g?y/./x", "http://a/b/c/g?y/x") -check_absolute_url("http://a/b/c/d;p?q#f", "#s", "http://a/b/c/d;p?q#s") -check_absolute_url("http://a/b/c/d;p?q#f", "g#s", "http://a/b/c/g#s") -check_absolute_url("http://a/b/c/d;p?q#f", "g#s/./x", "http://a/b/c/g#s/x") -check_absolute_url("http://a/b/c/d;p?q#f", "g?y#s", "http://a/b/c/g?y#s") -check_absolute_url("http://a/b/c/d;p?q#f", ";x", "http://a/b/c/d;x") -check_absolute_url("http://a/b/c/d;p?q#f", "g;x", "http://a/b/c/g;x") -check_absolute_url("http://a/b/c/d;p?q#f", "g;x?y#s", "http://a/b/c/g;x?y#s") -check_absolute_url("http://a/b/c/d;p?q#f", ".", "http://a/b/c/") -check_absolute_url("http://a/b/c/d;p?q#f", "./", "http://a/b/c/") -check_absolute_url("http://a/b/c/d;p?q#f", "./g", "http://a/b/c/g") -check_absolute_url("http://a/b/c/d;p?q#f", "./g/", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "././g", "http://a/b/c/g") -check_absolute_url("http://a/b/c/d;p?q#f", "././g/", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "g/.", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "g/./", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "g/./.", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "g/././", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "./.", "http://a/b/c/") -check_absolute_url("http://a/b/c/d;p?q#f", "././.", "http://a/b/c/") -check_absolute_url("http://a/b/c/d;p?q#f", "././g/./.", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "..", "http://a/b/") -check_absolute_url("http://a/b/c/d;p?q#f", "../", "http://a/b/") -check_absolute_url("http://a/b/c/d;p?q#f", "../g", "http://a/b/g") -check_absolute_url("http://a/b/c/d;p?q#f", "../..", "http://a/") -check_absolute_url("http://a/b/c/d;p?q#f", "../../", "http://a/") -check_absolute_url("http://a/b/c/d;p?q#f", "../../g", "http://a/g") -check_absolute_url("http://a/b/c/d;p?q#f", "../../../g", "http://a/g") -check_absolute_url("http://a/b/c/d;p?q#f", "", "http://a/b/c/d;p?q#f") -check_absolute_url("http://a/b/c/d;p?q#f", "/./g", "http://a/g") -check_absolute_url("http://a/b/c/d;p?q#f", "/../g", "http://a/g") -check_absolute_url("http://a/b/c/d;p?q#f", "g.", "http://a/b/c/g.") -check_absolute_url("http://a/b/c/d;p?q#f", ".g", "http://a/b/c/.g") -check_absolute_url("http://a/b/c/d;p?q#f", "g..", "http://a/b/c/g..") -check_absolute_url("http://a/b/c/d;p?q#f", "..g", "http://a/b/c/..g") -check_absolute_url("http://a/b/c/d;p?q#f", "./../g", "http://a/b/g") -check_absolute_url("http://a/b/c/d;p?q#f", "./g/.", "http://a/b/c/g/") -check_absolute_url("http://a/b/c/d;p?q#f", "g/./h", "http://a/b/c/g/h") -check_absolute_url("http://a/b/c/d;p?q#f", "g/../h", "http://a/b/c/h") - -check_absolute_url("http://a/b/c/d:p?q#f/", "../g/", "http://a/b/g/") -check_absolute_url("http://a/b/c/d:p?q#f/", "../g", "http://a/b/g") -check_absolute_url("http://a/b/c/d:p?q#f/", "../.g/", "http://a/b/.g/") -check_absolute_url("http://a/b/c/d:p?q#f/", "../.g", "http://a/b/.g") -check_absolute_url("http://a/b/c/d:p?q#f/", "../.g.h/", "http://a/b/.g.h/") -check_absolute_url("http://a/b/c/d:p?q#f/", "../.g.h", "http://a/b/.g.h") - -check_absolute_url("http://a/b/c/d:p?q#f/", "g.h/", "http://a/b/c/g.h/") -check_absolute_url("http://a/b/c/d:p?q#f/", "../g.h/", "http://a/b/g.h/") -check_absolute_url("http://a/", "../g.h/", "http://a/g.h/") - --- extra tests -check_absolute_url("//a/b/c/d;p?q#f", "d/e/f", "//a/b/c/d/e/f") -check_absolute_url("/a/b/c/d;p?q#f", "d/e/f", "/a/b/c/d/e/f") -check_absolute_url("a/b/c/d", "d/e/f", "a/b/c/d/e/f") -check_absolute_url("a/b/c/d/../", "d/e/f", "a/b/c/d/e/f") -check_absolute_url("http://velox.telemar.com.br", "/dashboard/index.html", - "http://velox.telemar.com.br/dashboard/index.html") -check_absolute_url("http://example.com/", "../.badhost.com/", "http://example.com/.badhost.com/") -check_absolute_url("http://example.com/", "...badhost.com/", "http://example.com/...badhost.com/") -check_absolute_url("http://example.com/a/b/c/d/", "../q", "http://example.com/a/b/c/q") -check_absolute_url("http://example.com/a/b/c/d/", "../../q", "http://example.com/a/b/q") -check_absolute_url("http://example.com/a/b/c/d/", "../../../q", "http://example.com/a/q") -check_absolute_url("http://example.com", ".badhost.com", "http://example.com/.badhost.com") -check_absolute_url("http://example.com/a/b/c/d/", "..//../../../q", "http://example.com/a/q") -check_absolute_url("http://example.com/a/b/c/d/", "..//a/../../../../q", "http://example.com/a/q") -check_absolute_url("http://example.com/a/b/c/d/", "..//a/..//../../../q", "http://example.com/a/b/q") -check_absolute_url("http://example.com/a/b/c/d/", "..//a/..///../../../../q", "http://example.com/a/b/q") -check_absolute_url("http://example.com/a/b/c/d/", "../x/a/../y/z/../../../../q", "http://example.com/a/b/q") - -print("testing path parsing and composition") -check_parse_path("/eu/tu/ele", { "eu", "tu", "ele"; is_absolute = 1 }) -check_parse_path("/eu/", { "eu"; is_absolute = 1, is_directory = 1 }) -check_parse_path("eu/tu/ele/nos/vos/eles/", - { "eu", "tu", "ele", "nos", "vos", "eles"; is_directory = 1}) -check_parse_path("/", { is_absolute = 1, is_directory = 1}) -check_parse_path("", { }) -check_parse_path("eu%01/%02tu/e%03l%04e/nos/vos%05/e%12les/", - { "eu\1", "\2tu", "e\3l\4e", "nos", "vos\5", "e\18les"; is_directory = 1}) -check_parse_path("eu/tu", { "eu", "tu" }) - -print("testing path protection") -check_protect({ "eu", "-_.!~*'():@&=+$,", "tu" }, "eu/-_.!~*'():@&=+$,/tu") -check_protect({ "eu ", "~diego" }, "eu%20/~diego") -check_protect({ "/eu>", "", "/ tm then - if err ~= "timeout" then fail("should have timed out") - else pass("proper timeout") end - elseif elapsed < tm then - if err then fail(err) - else pass("ok") end - else - if alldone then - if err then fail("unexpected error '%s'", err) - else pass("ok") end - else - if err ~= "timeout" then fail(err) - else pass("proper timeoutk") end - end - end - else - if err then fail(err) - else pass("ok") end - end - end -end - -if not socket._DEBUG then - fail("Please define LUASOCKET_DEBUG and recompile LuaSocket") -end - -io.stderr:write("----------------------------------------------\n", -"LuaSocket Test Procedures\n", -"----------------------------------------------\n") - -start = socket.gettime() - -function reconnect() - io.stderr:write("attempting data connection... ") - if data then data:close() end - remote [[ - i = i or 1 - if data then data:close() data = nil end - print("accepting") - data = server:accept() - i = i + 1 - print("done " .. i) - ]] - data, err = uconnect(host, port) - if not data then fail(err) - else pass("connected!") end -end - -pass("attempting control connection...") -control, err = uconnect(host, port) -if err then fail(err) -else pass("connected!") end - ------------------------------------------------------------------------- -function test_methods(sock, methods) - for _, v in pairs(methods) do - if type(sock[v]) ~= "function" then - fail(sock.class .. " method '" .. v .. "' not registered") - end - end - pass(sock.class .. " methods are ok") -end - ------------------------------------------------------------------------- -function test_mixed(len) - reconnect() - local inter = math.ceil(len/4) - local p1 = "unix " .. string.rep("x", inter) .. "line\n" - local p2 = "dos " .. string.rep("y", inter) .. "line\r\n" - local p3 = "raw " .. string.rep("z", inter) .. "bytes" - local p4 = "end" .. string.rep("w", inter) .. "bytes" - local bp1, bp2, bp3, bp4 -remote (string.format("str = data:receive(%d)", - string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4))) - sent, err = data:send(p1..p2..p3..p4) - if err then fail(err) end -remote "data:send(str); data:close()" - bp1, err = data:receive() - if err then fail(err) end - bp2, err = data:receive() - if err then fail(err) end - bp3, err = data:receive(string.len(p3)) - if err then fail(err) end - bp4, err = data:receive("*a") - if err then fail(err) end - if bp1.."\n" == p1 and bp2.."\r\n" == p2 and bp3 == p3 and bp4 == p4 then - pass("patterns match") - else fail("patterns don't match") end -end - ------------------------------------------------------------------------- -function test_asciiline(len) - reconnect() - local str, str10, back, err - str = string.rep("x", math.mod(len, 10)) - str10 = string.rep("aZb.c#dAe?", math.floor(len/10)) - str = str .. str10 -remote "str = data:receive()" - sent, err = data:send(str.."\n") - if err then fail(err) end -remote "data:send(str ..'\\n')" - back, err = data:receive() - if err then fail(err) end - if back == str then pass("lines match") - else fail("lines don't match") end -end - ------------------------------------------------------------------------- -function test_rawline(len) - reconnect() - local str, str10, back, err - str = string.rep(string.char(47), math.mod(len, 10)) - str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100), - math.floor(len/10)) - str = str .. str10 -remote "str = data:receive()" - sent, err = data:send(str.."\n") - if err then fail(err) end -remote "data:send(str..'\\n')" - back, err = data:receive() - if err then fail(err) end - if back == str then pass("lines match") - else fail("lines don't match") end -end - ------------------------------------------------------------------------- -function test_raw(len) - reconnect() - local half = math.floor(len/2) - local s1, s2, back, err - s1 = string.rep("x", half) - s2 = string.rep("y", len-half) -remote (string.format("str = data:receive(%d)", len)) - sent, err = data:send(s1) - if err then fail(err) end - sent, err = data:send(s2) - if err then fail(err) end -remote "data:send(str)" - back, err = data:receive(len) - if err then fail(err) end - if back == s1..s2 then pass("blocks match") - else fail("blocks don't match") end -end - ------------------------------------------------------------------------- -function test_totaltimeoutreceive(len, tm, sl) - reconnect() - local str, err, partial - pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = string.rep('a', %d) - data:send(str) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - data:send(str) - ]], 2*tm, len, sl, sl)) - data:settimeout(tm, "total") -local t = socket.gettime() - str, err, partial, elapsed = data:receive(2*len) - check_timeout(tm, sl, elapsed, err, "receive", "total", - string.len(str or partial) == 2*len) -end - ------------------------------------------------------------------------- -function test_totaltimeoutsend(len, tm, sl) - reconnect() - local str, err, total - pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = data:receive(%d) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - str = data:receive(%d) - ]], 2*tm, len, sl, sl, len)) - data:settimeout(tm, "total") - str = string.rep("a", 2*len) - total, err, partial, elapsed = data:send(str) - check_timeout(tm, sl, elapsed, err, "send", "total", - total == 2*len) -end - ------------------------------------------------------------------------- -function test_blockingtimeoutreceive(len, tm, sl) - reconnect() - local str, err, partial - pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = string.rep('a', %d) - data:send(str) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - data:send(str) - ]], 2*tm, len, sl, sl)) - data:settimeout(tm) - str, err, partial, elapsed = data:receive(2*len) - check_timeout(tm, sl, elapsed, err, "receive", "blocking", - string.len(str or partial) == 2*len) -end - ------------------------------------------------------------------------- -function test_blockingtimeoutsend(len, tm, sl) - reconnect() - local str, err, total - pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl) - remote (string.format ([[ - data:settimeout(%d) - str = data:receive(%d) - print('server: sleeping for %ds') - socket.sleep(%d) - print('server: woke up') - str = data:receive(%d) - ]], 2*tm, len, sl, sl, len)) - data:settimeout(tm) - str = string.rep("a", 2*len) - total, err, partial, elapsed = data:send(str) - check_timeout(tm, sl, elapsed, err, "send", "blocking", - total == 2*len) -end - ------------------------------------------------------------------------- -function empty_connect() - reconnect() - if data then data:close() data = nil end - remote [[ - if data then data:close() data = nil end - data = server:accept() - ]] - data, err = socket.connect("", port) - if not data then - pass("ok") - data = socket.connect(host, port) - else - pass("gethostbyname returns localhost on empty string...") - end -end - ------------------------------------------------------------------------- -function isclosed(c) - return c:getfd() == -1 or c:getfd() == (2^32-1) -end - -function active_close() - reconnect() - if isclosed(data) then fail("should not be closed") end - data:close() - if not isclosed(data) then fail("should be closed") end - data = nil - local udp = socket.udp() - if isclosed(udp) then fail("should not be closed") end - udp:close() - if not isclosed(udp) then fail("should be closed") end - pass("ok") -end - ------------------------------------------------------------------------- -function test_closed() - local back, partial, err - local str = 'little string' - reconnect() - pass("trying read detection") - remote (string.format ([[ - data:send('%s') - data:close() - data = nil - ]], str)) - -- try to get a line - back, err, partial = data:receive() - if not err then fail("should have gotten 'closed'.") - elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.") - elseif str ~= partial then fail("didn't receive partial result.") - else pass("graceful 'closed' received") end - reconnect() - pass("trying write detection") - remote [[ - data:close() - data = nil - ]] - total, err, partial = data:send(string.rep("ugauga", 100000)) - if not err then - pass("failed: output buffer is at least %d bytes long!", total) - elseif err ~= "closed" then - fail("got '"..err.."' instead of 'closed'.") - else - pass("graceful 'closed' received after %d bytes were sent", partial) - end -end - ------------------------------------------------------------------------- -function test_selectbugs() - local r, s, e = socket.select(nil, nil, 0.1) - assert(type(r) == "table" and type(s) == "table" and - (e == "timeout" or e == "error")) - pass("both nil: ok") - local udp = socket.udp() - udp:close() - r, s, e = socket.select({ udp }, { udp }, 0.1) - assert(type(r) == "table" and type(s) == "table" and - (e == "timeout" or e == "error")) - pass("closed sockets: ok") - e = pcall(socket.select, "wrong", 1, 0.1) - assert(e == false) - e = pcall(socket.select, {}, 1, 0.1) - assert(e == false) - pass("invalid input: ok") -end - ------------------------------------------------------------------------- -function accept_timeout() - io.stderr:write("accept with timeout (if it hangs, it failed): ") - local s, e = socket.bind("*", 0, 0) - assert(s, e) - local t = socket.gettime() - s:settimeout(1) - local c, e = s:accept() - assert(not c, "should not accept") - assert(e == "timeout", string.format("wrong error message (%s)", e)) - t = socket.gettime() - t - assert(t < 2, string.format("took to long to give up (%gs)", t)) - s:close() - pass("good") -end - ------------------------------------------------------------------------- -function connect_timeout() - io.stderr:write("connect with timeout (if it hangs, it failed!): ") - local t = socket.gettime() - local c, e = socket.tcp() - assert(c, e) - c:settimeout(0.1) - local t = socket.gettime() - local r, e = c:connect("127.0.0.2", 80) - assert(not r, "should not connect") - assert(socket.gettime() - t < 2, "took too long to give up.") - c:close() - print("ok") -end - ------------------------------------------------------------------------- -function accept_errors() - io.stderr:write("not listening: ") - local d, e = socket.bind("*", 0) - assert(d, e); - local c, e = socket.tcp(); - assert(c, e); - d:setfd(c:getfd()) - d:settimeout(2) - local r, e = d:accept() - assert(not r and e) - print("ok: ", e) - io.stderr:write("not supported: ") - local c, e = socket.udp() - assert(c, e); - d:setfd(c:getfd()) - local r, e = d:accept() - assert(not r and e) - print("ok: ", e) -end - ------------------------------------------------------------------------- -function connect_errors() - io.stderr:write("connection refused: ") - local c, e = socket.connect("localhost", 1); - assert(not c and e) - print("ok: ", e) - io.stderr:write("host not found: ") - local c, e = socket.connect("host.is.invalid", 1); - assert(not c and e, e) - print("ok: ", e) -end - ------------------------------------------------------------------------- -function rebind_test() - local c = socket.bind("localhost", 0) - local i, p = c:getsockname() - local s, e = socket.tcp() - assert(s, e) - s:setoption("reuseaddr", false) - r, e = s:bind("localhost", p) - assert(not r, "managed to rebind!") - assert(e) - print("ok: ", e) -end - ------------------------------------------------------------------------- -function getstats_test() - reconnect() - local t = 0 - for i = 1, 25 do - local c = math.random(1, 100) - remote (string.format ([[ - str = data:receive(%d) - data:send(str) - ]], c)) - data:send(string.rep("a", c)) - data:receive(c) - t = t + c - local r, s, a = data:getstats() - assert(r == t, "received count failed" .. tostring(r) - .. "/" .. tostring(t)) - assert(s == t, "sent count failed" .. tostring(s) - .. "/" .. tostring(t)) - end - print("ok") -end - - ------------------------------------------------------------------------- -function test_nonblocking(size) - reconnect() -print("Testing " .. 2*size .. " bytes") -remote(string.format([[ - data:send(string.rep("a", %d)) - socket.sleep(0.5) - data:send(string.rep("b", %d) .. "\n") -]], size, size)) - local err = "timeout" - local part = "" - local str - data:settimeout(0) - while 1 do - str, err, part = data:receive("*l", part) - if err ~= "timeout" then break end - end - assert(str == (string.rep("a", size) .. string.rep("b", size))) - reconnect() -remote(string.format([[ - str = data:receive(%d) - socket.sleep(0.5) - str = data:receive(%d, str) - data:send(str) -]], size, size)) - data:settimeout(0) - local start = 0 - while 1 do - ret, err, start = data:send(str, start+1) - if err ~= "timeout" then break end - end - data:send("\n") - data:settimeout(-1) - local back = data:receive(2*size) - assert(back == str, "'" .. back .. "' vs '" .. str .. "'") - print("ok") -end - ------------------------------------------------------------------------- - -test("method registration") -test_methods(socket.unix(), { - "accept", - "bind", - "close", - "connect", - "dirty", - "getfd", - "getstats", - "setstats", - "listen", - "receive", - "send", - "setfd", - "setoption", - "setpeername", - "setsockname", - "settimeout", - "shutdown", -}) - -test("connect function") ---connect_timeout() ---empty_connect() ---connect_errors() - ---test("rebinding: ") ---rebind_test() - -test("active close: ") -active_close() - -test("closed connection detection: ") -test_closed() - -test("accept function: ") -accept_timeout() -accept_errors() - -test("getstats test") -getstats_test() - -test("character line") -test_asciiline(1) -test_asciiline(17) -test_asciiline(200) -test_asciiline(4091) -test_asciiline(80199) -test_asciiline(8000000) -test_asciiline(80199) -test_asciiline(4091) -test_asciiline(200) -test_asciiline(17) -test_asciiline(1) - -test("mixed patterns") -test_mixed(1) -test_mixed(17) -test_mixed(200) -test_mixed(4091) -test_mixed(801990) -test_mixed(4091) -test_mixed(200) -test_mixed(17) -test_mixed(1) - -test("binary line") -test_rawline(1) -test_rawline(17) -test_rawline(200) -test_rawline(4091) -test_rawline(80199) -test_rawline(8000000) -test_rawline(80199) -test_rawline(4091) -test_rawline(200) -test_rawline(17) -test_rawline(1) - -test("raw transfer") -test_raw(1) -test_raw(17) -test_raw(200) -test_raw(4091) -test_raw(80199) -test_raw(8000000) -test_raw(80199) -test_raw(4091) -test_raw(200) -test_raw(17) -test_raw(1) - -test("non-blocking transfer") -test_nonblocking(1) -test_nonblocking(17) -test_nonblocking(200) -test_nonblocking(4091) -test_nonblocking(80199) -test_nonblocking(8000000) -test_nonblocking(80199) -test_nonblocking(4091) -test_nonblocking(200) -test_nonblocking(17) -test_nonblocking(1) - -test("total timeout on send") -test_totaltimeoutsend(800091, 1, 3) -test_totaltimeoutsend(800091, 2, 3) -test_totaltimeoutsend(800091, 5, 2) -test_totaltimeoutsend(800091, 3, 1) - -test("total timeout on receive") -test_totaltimeoutreceive(800091, 1, 3) -test_totaltimeoutreceive(800091, 2, 3) -test_totaltimeoutreceive(800091, 3, 2) -test_totaltimeoutreceive(800091, 3, 1) - -test("blocking timeout on send") -test_blockingtimeoutsend(800091, 1, 3) -test_blockingtimeoutsend(800091, 2, 3) -test_blockingtimeoutsend(800091, 3, 2) -test_blockingtimeoutsend(800091, 3, 1) - -test("blocking timeout on receive") -test_blockingtimeoutreceive(800091, 1, 3) -test_blockingtimeoutreceive(800091, 2, 3) -test_blockingtimeoutreceive(800091, 3, 2) -test_blockingtimeoutreceive(800091, 3, 1) - -test(string.format("done in %.2fs", socket.gettime() - start)) diff --git a/src/deps/src/luasocket/test/utestsrvr.lua b/src/deps/src/luasocket/test/utestsrvr.lua deleted file mode 100644 index b6e424605..000000000 --- a/src/deps/src/luasocket/test/utestsrvr.lua +++ /dev/null @@ -1,17 +0,0 @@ -socket=require("socket"); -os.remove("/tmp/luasocket") -socket.unix = require("socket.unix"); -host = host or "luasocket"; -server = assert(socket.unix()) -assert(server:bind(host)) -assert(server:listen(5)) -ack = "\n"; -while 1 do - print("server: waiting for client connection..."); - control = assert(server:accept()); - while 1 do - command = assert(control:receive()); - assert(control:send(ack)); - ((loadstring or load)(command))(); - end -end