diff options
author | isaacs <i@izs.me> | 2012-09-25 19:28:55 +0400 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-09-25 19:29:05 +0400 |
commit | 83d39c8d535559bb7287c2a670ba256c5e9cb627 (patch) | |
tree | 9c23ad63d4f0ea29192b65da76a11cf95c1fbd1d /deps | |
parent | d5e9895ce0fb708e35216753999b951bae571f39 (diff) |
npm: upgrade to 1.1.62
Diffstat (limited to 'deps')
556 files changed, 525 insertions, 42780 deletions
diff --git a/deps/npm/LICENSE b/deps/npm/LICENSE index 3702d8a05b6..c0f51a741b9 100644 --- a/deps/npm/LICENSE +++ b/deps/npm/LICENSE @@ -1,4 +1,4 @@ -Copyright 2009-2012, Isaac Z. Schlueter (the "Original Author") +Copyright (c) Isaac Z. Schlueter (the "Original Author") All rights reserved. MIT +no-false-attribs License @@ -42,23 +42,24 @@ Original Author, when distributed with the Software. part of the Node.js project, and is neither owned by nor officially affiliated with Joyent, Inc. -Packages published in the npm registry are not part of npm -itself, are the sole property of their respective maintainers, -and are not covered by this license. +Packages published in the npm registry (other than the Software and +its included dependencies) are not part of npm itself, are the sole +property of their respective maintainers, and are not covered by +this license. "npm Logo" created by Mathias Pettersson and Brian Hammond, used with permission. "Gubblebum Blocky" font -Copyright (c) 2007 by Tjarda Koster, http://jelloween.deviantart.com +Copyright (c) by Tjarda Koster, http://jelloween.deviantart.com included for use in the npm website and documentation, used with permission. -This program uses "node-uuid", Copyright (c) 2010 Robert Kieffer, -according to the terms of the MIT license. - -This program uses "request", Copyright (c) 2011 Mikeal Rogers, +This program uses "request", Copyright (c) Mikeal Rogers, according to the terms of the Apache license. -This program uses "mkdirp", Copyright (c) 2010 James Halliday, +This program uses "mkdirp", Copyright (c) James Halliday, according to the terms of the MIT/X11 license. + +This program uses "opener", Copyright (c) Domenic Denicola, +according to the terms of the DWTFPL2 license. diff --git a/deps/npm/Makefile b/deps/npm/Makefile index 8a856e9fa47..6ee80d57b12 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -120,10 +120,10 @@ doc-publish: doc html/api/ \ node@npmjs.org:/home/node/npm-www/api rsync -vazu --stats --no-implied-dirs --delete \ - html/webfonts/ \ + html/static/webfonts/ \ node@npmjs.org:/home/node/npm-www/static/webfonts rsync -vazu --stats --no-implied-dirs --delete \ - html/style.css \ + html/static/style.css \ node@npmjs.org:/home/node/npm-www/static/ zip-publish: release diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html index 01c4871baee..93a6261c81d 100644 --- a/deps/npm/html/api/bin.html +++ b/deps/npm/html/api/bin.html @@ -19,7 +19,7 @@ <p>This function should not be used programmatically. Instead, just refer to the <code>npm.bin</code> member.</p> </div> -<p id="footer">bin — npm@1.1.61</p> +<p id="footer">bin — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/bugs.html b/deps/npm/html/api/bugs.html index e5f18be4af0..ef7d5c9661a 100644 --- a/deps/npm/html/api/bugs.html +++ b/deps/npm/html/api/bugs.html @@ -25,7 +25,7 @@ optional version number.</p> <p>This command will launch a browser, so this command may not be the most friendly for programmatic use.</p> </div> -<p id="footer">bugs — npm@1.1.61</p> +<p id="footer">bugs — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/commands.html b/deps/npm/html/api/commands.html index ce4feb961d9..a75ef8e7058 100644 --- a/deps/npm/html/api/commands.html +++ b/deps/npm/html/api/commands.html @@ -28,7 +28,7 @@ usage, or <code>man 3 npm-<command></code> for programmatic usage.</p> <ul><li><a href="../doc/index.html">index(1)</a></li></ul> </div> -<p id="footer">commands — npm@1.1.61</p> +<p id="footer">commands — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/config.html b/deps/npm/html/api/config.html index b982101bfc8..0ab4cf7b274 100644 --- a/deps/npm/html/api/config.html +++ b/deps/npm/html/api/config.html @@ -33,7 +33,7 @@ functions instead.</p> <ul><li><a href="../api/npm.html">npm(3)</a></li></ul> </div> -<p id="footer">config — npm@1.1.61</p> +<p id="footer">config — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/deprecate.html b/deps/npm/html/api/deprecate.html index 7b043c1585f..891524f9725 100644 --- a/deps/npm/html/api/deprecate.html +++ b/deps/npm/html/api/deprecate.html @@ -30,7 +30,7 @@ install the package.</p></li></ul> <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> </div> -<p id="footer">deprecate — npm@1.1.61</p> +<p id="footer">deprecate — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/docs.html b/deps/npm/html/api/docs.html index 5fbefe1da5c..9a1bbecd72c 100644 --- a/deps/npm/html/api/docs.html +++ b/deps/npm/html/api/docs.html @@ -25,7 +25,7 @@ optional version number.</p> <p>This command will launch a browser, so this command may not be the most friendly for programmatic use.</p> </div> -<p id="footer">docs — npm@1.1.61</p> +<p id="footer">docs — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/edit.html b/deps/npm/html/api/edit.html index da08088571a..46aa06b77a4 100644 --- a/deps/npm/html/api/edit.html +++ b/deps/npm/html/api/edit.html @@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p> <p>Since this command opens an editor in a new process, be careful about where and how this is used.</p> </div> -<p id="footer">edit — npm@1.1.61</p> +<p id="footer">edit — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/explore.html b/deps/npm/html/api/explore.html index 9f612996721..47f845f8d5b 100644 --- a/deps/npm/html/api/explore.html +++ b/deps/npm/html/api/explore.html @@ -24,7 +24,7 @@ sure to use <code>npm rebuild <pkg></code> if you make any changes.</p> <p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p> </div> -<p id="footer">explore — npm@1.1.61</p> +<p id="footer">explore — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/help-search.html b/deps/npm/html/api/help-search.html index 44618260d46..cc9c533253a 100644 --- a/deps/npm/html/api/help-search.html +++ b/deps/npm/html/api/help-search.html @@ -32,7 +32,7 @@ Name of the file that matched</li></ul> <p>The silent parameter is not neccessary not used, but it may in the future.</p> </div> -<p id="footer">help-search — npm@1.1.61</p> +<p id="footer">help-search — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/init.html b/deps/npm/html/api/init.html index a7b2fc2089a..53bd1bda8bf 100644 --- a/deps/npm/html/api/init.html +++ b/deps/npm/html/api/init.html @@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p> <p><a href="../doc/json.html">json(1)</a></p> </div> -<p id="footer">init — npm@1.1.61</p> +<p id="footer">init — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/install.html b/deps/npm/html/api/install.html index f05d33ab4e6..dad72bdec53 100644 --- a/deps/npm/html/api/install.html +++ b/deps/npm/html/api/install.html @@ -25,7 +25,7 @@ the name of a package to be installed.</p> <p>Finally, 'callback' is a function that will be called when all packages have been installed or when an error has been encountered.</p> </div> -<p id="footer">install — npm@1.1.61</p> +<p id="footer">install — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/link.html b/deps/npm/html/api/link.html index dc6169a6fc5..14f8bfe7b73 100644 --- a/deps/npm/html/api/link.html +++ b/deps/npm/html/api/link.html @@ -39,7 +39,7 @@ npm.commands.link('redis', cb) # link-install the package</code></pre> <p>Now, any changes to the redis package will be reflected in the package in the current working directory</p> </div> -<p id="footer">link — npm@1.1.61</p> +<p id="footer">link — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/load.html b/deps/npm/html/api/load.html index 9788652039c..d69ca410923 100644 --- a/deps/npm/html/api/load.html +++ b/deps/npm/html/api/load.html @@ -32,7 +32,7 @@ config object.</p> <p>For a list of all the available command-line configs, see <code>npm help config</code></p> </div> -<p id="footer">load — npm@1.1.61</p> +<p id="footer">load — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/ls.html b/deps/npm/html/api/ls.html index 564ac3f4167..b77d93ca776 100644 --- a/deps/npm/html/api/ls.html +++ b/deps/npm/html/api/ls.html @@ -59,7 +59,7 @@ project.</p> This means that if a submodule a same dependency as a parent module, then the dependency will only be output once.</p> </div> -<p id="footer">ls — npm@1.1.61</p> +<p id="footer">ls — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/npm.html b/deps/npm/html/api/npm.html index 5c4c09c0ebd..d44c8a36441 100644 --- a/deps/npm/html/api/npm.html +++ b/deps/npm/html/api/npm.html @@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) { <h2 id="VERSION">VERSION</h2> -<p>1.1.61</p> +<p>1.1.62</p> <h2 id="DESCRIPTION">DESCRIPTION</h2> @@ -91,7 +91,7 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p> <pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre> </div> -<p id="footer">npm — npm@1.1.61</p> +<p id="footer">npm — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/outdated.html b/deps/npm/html/api/outdated.html index c6164e06a0b..f447d527a4a 100644 --- a/deps/npm/html/api/outdated.html +++ b/deps/npm/html/api/outdated.html @@ -19,7 +19,7 @@ currently outdated.</p> <p>If the 'packages' parameter is left out, npm will check all packages.</p> </div> -<p id="footer">outdated — npm@1.1.61</p> +<p id="footer">outdated — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/owner.html b/deps/npm/html/api/owner.html index dd72ba46113..81fb987e67b 100644 --- a/deps/npm/html/api/owner.html +++ b/deps/npm/html/api/owner.html @@ -34,7 +34,7 @@ that is not implemented at this time.</p> <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> </div> -<p id="footer">owner — npm@1.1.61</p> +<p id="footer">owner — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/pack.html b/deps/npm/html/api/pack.html index 3141ae1b2e4..da4dfe1982c 100644 --- a/deps/npm/html/api/pack.html +++ b/deps/npm/html/api/pack.html @@ -25,7 +25,7 @@ overwritten the second time.</p> <p>If no arguments are supplied, then npm packs the current package folder.</p> </div> -<p id="footer">pack — npm@1.1.61</p> +<p id="footer">pack — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/prefix.html b/deps/npm/html/api/prefix.html index b1f101bd724..b7fb53014f9 100644 --- a/deps/npm/html/api/prefix.html +++ b/deps/npm/html/api/prefix.html @@ -21,7 +21,7 @@ <p>This function is not useful programmatically</p> </div> -<p id="footer">prefix — npm@1.1.61</p> +<p id="footer">prefix — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/prune.html b/deps/npm/html/api/prune.html index 15b7a7e1a8d..d0992db1b88 100644 --- a/deps/npm/html/api/prune.html +++ b/deps/npm/html/api/prune.html @@ -23,7 +23,7 @@ <p>Extraneous packages are packages that are not listed on the parent package's dependencies list.</p> </div> -<p id="footer">prune — npm@1.1.61</p> +<p id="footer">prune — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/publish.html b/deps/npm/html/api/publish.html index c3cd3a37ccf..161164d841c 100644 --- a/deps/npm/html/api/publish.html +++ b/deps/npm/html/api/publish.html @@ -32,7 +32,7 @@ the registry. Overwrites when the "force" environment variable is set <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul> </div> -<p id="footer">publish — npm@1.1.61</p> +<p id="footer">publish — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/rebuild.html b/deps/npm/html/api/rebuild.html index 8a102b921ec..85fe0db41ed 100644 --- a/deps/npm/html/api/rebuild.html +++ b/deps/npm/html/api/rebuild.html @@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package wil <p>See <code>npm help build</code></p> </div> -<p id="footer">rebuild — npm@1.1.61</p> +<p id="footer">rebuild — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/restart.html b/deps/npm/html/api/restart.html index 9ffdf30839c..7e003b6d227 100644 --- a/deps/npm/html/api/restart.html +++ b/deps/npm/html/api/restart.html @@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p> <ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> </div> -<p id="footer">restart — npm@1.1.61</p> +<p id="footer">restart — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/root.html b/deps/npm/html/api/root.html index 12a92a44cc0..efac5fb9a1a 100644 --- a/deps/npm/html/api/root.html +++ b/deps/npm/html/api/root.html @@ -21,7 +21,7 @@ <p>This function is not useful programmatically.</p> </div> -<p id="footer">root — npm@1.1.61</p> +<p id="footer">root — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/run-script.html b/deps/npm/html/api/run-script.html index 21c9475c626..40ada1820a9 100644 --- a/deps/npm/html/api/run-script.html +++ b/deps/npm/html/api/run-script.html @@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p> <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> </div> -<p id="footer">run-script — npm@1.1.61</p> +<p id="footer">run-script — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/search.html b/deps/npm/html/api/search.html index 6d4414385ac..c8f0aafae40 100644 --- a/deps/npm/html/api/search.html +++ b/deps/npm/html/api/search.html @@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensi and doesn't try to read your mind (it doesn't do any verb tense matching or the like).</p> </div> -<p id="footer">search — npm@1.1.61</p> +<p id="footer">search — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/shrinkwrap.html b/deps/npm/html/api/shrinkwrap.html index 73e5e7fb4b3..a244df2d771 100644 --- a/deps/npm/html/api/shrinkwrap.html +++ b/deps/npm/html/api/shrinkwrap.html @@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p> <p>Finally, 'callback' is a function that will be called when the shrinkwrap has been saved.</p> </div> -<p id="footer">shrinkwrap — npm@1.1.61</p> +<p id="footer">shrinkwrap — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/start.html b/deps/npm/html/api/start.html index 3c2cbab955b..1be0ac15611 100644 --- a/deps/npm/html/api/start.html +++ b/deps/npm/html/api/start.html @@ -19,7 +19,7 @@ <p>npm can run tests on multiple packages. Just specify multiple packages in the <code>packages</code> parameter.</p> </div> -<p id="footer">start — npm@1.1.61</p> +<p id="footer">start — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/stop.html b/deps/npm/html/api/stop.html index 6127e56a1bc..f8ab1c92da6 100644 --- a/deps/npm/html/api/stop.html +++ b/deps/npm/html/api/stop.html @@ -19,7 +19,7 @@ <p>npm can run stop on multiple packages. Just specify multiple packages in the <code>packages</code> parameter.</p> </div> -<p id="footer">stop — npm@1.1.61</p> +<p id="footer">stop — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/submodule.html b/deps/npm/html/api/submodule.html index 61d26543549..906080264e3 100644 --- a/deps/npm/html/api/submodule.html +++ b/deps/npm/html/api/submodule.html @@ -33,7 +33,7 @@ dependencies into the submodule folder.</p> <ul><li>npm help json</li><li>git help submodule</li></ul> </div> -<p id="footer">submodule — npm@1.1.61</p> +<p id="footer">submodule — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/tag.html b/deps/npm/html/api/tag.html index e45783b2f2f..28ecc709b91 100644 --- a/deps/npm/html/api/tag.html +++ b/deps/npm/html/api/tag.html @@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be used. For more information about how to set this config, check <code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p> </div> -<p id="footer">tag — npm@1.1.61</p> +<p id="footer">tag — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/test.html b/deps/npm/html/api/test.html index f226f16d0bd..1a5e0de3478 100644 --- a/deps/npm/html/api/test.html +++ b/deps/npm/html/api/test.html @@ -22,7 +22,7 @@ true.</p> <p>npm can run tests on multiple packages. Just specify multiple packages in the <code>packages</code> parameter.</p> </div> -<p id="footer">test — npm@1.1.61</p> +<p id="footer">test — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/uninstall.html b/deps/npm/html/api/uninstall.html index 19c42640c52..94522b3660b 100644 --- a/deps/npm/html/api/uninstall.html +++ b/deps/npm/html/api/uninstall.html @@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p> <p>Finally, 'callback' is a function that will be called when all packages have been uninstalled or when an error has been encountered.</p> </div> -<p id="footer">uninstall — npm@1.1.61</p> +<p id="footer">uninstall — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/unpublish.html b/deps/npm/html/api/unpublish.html index 5d9857ea572..6d853f44fb5 100644 --- a/deps/npm/html/api/unpublish.html +++ b/deps/npm/html/api/unpublish.html @@ -26,7 +26,7 @@ is what is meant.</p> <p>If no version is specified, or if all versions are removed then the root package entry is removed from the registry entirely.</p> </div> -<p id="footer">unpublish — npm@1.1.61</p> +<p id="footer">unpublish — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/update.html b/deps/npm/html/api/update.html index 5f255709fdf..3e74a9ad31e 100644 --- a/deps/npm/html/api/update.html +++ b/deps/npm/html/api/update.html @@ -18,7 +18,7 @@ <p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p> </div> -<p id="footer">update — npm@1.1.61</p> +<p id="footer">update — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/version.html b/deps/npm/html/api/version.html index 386e2fd95ed..f4b6c1eb9a4 100644 --- a/deps/npm/html/api/version.html +++ b/deps/npm/html/api/version.html @@ -24,7 +24,7 @@ fail if the repo is not clean.</p> parameter. The difference, however, is this function will fail if it does not have exactly one element. The only element should be a version number.</p> </div> -<p id="footer">version — npm@1.1.61</p> +<p id="footer">version — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/view.html b/deps/npm/html/api/view.html index 29ba0a685e4..2ad1286004f 100644 --- a/deps/npm/html/api/view.html +++ b/deps/npm/html/api/view.html @@ -99,7 +99,7 @@ the field name.</p> <p>corresponding to the list of fields selected.</p> </div> -<p id="footer">view — npm@1.1.61</p> +<p id="footer">view — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/api/whoami.html b/deps/npm/html/api/whoami.html index 82aaeb88f95..af35edf52fe 100644 --- a/deps/npm/html/api/whoami.html +++ b/deps/npm/html/api/whoami.html @@ -21,7 +21,7 @@ <p>This function is not useful programmatically</p> </div> -<p id="footer">whoami — npm@1.1.61</p> +<p id="footer">whoami — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index cb27261a062..b1f27124f2c 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -240,7 +240,7 @@ will no doubt tell you to put the output in a gist or email.</p> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul> </div> -<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.61</p> +<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/adduser.html b/deps/npm/html/doc/adduser.html index acc0266f198..ef57475bfc7 100644 --- a/deps/npm/html/doc/adduser.html +++ b/deps/npm/html/doc/adduser.html @@ -39,7 +39,7 @@ authorize on a new machine.</p> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul> </div> -<p id="footer">adduser — npm@1.1.61</p> +<p id="footer">adduser — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/bin.html b/deps/npm/html/doc/bin.html index 134198f71d4..82157f69063 100644 --- a/deps/npm/html/doc/bin.html +++ b/deps/npm/html/doc/bin.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">bin — npm@1.1.61</p> +<p id="footer">bin — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/bugs.html b/deps/npm/html/doc/bugs.html index c637d28aa81..09261872f39 100644 --- a/deps/npm/html/doc/bugs.html +++ b/deps/npm/html/doc/bugs.html @@ -36,7 +36,7 @@ config param.</p> <ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> </div> -<p id="footer">bugs — npm@1.1.61</p> +<p id="footer">bugs — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/build.html b/deps/npm/html/doc/build.html index 82277ff8d90..113038b064b 100644 --- a/deps/npm/html/doc/build.html +++ b/deps/npm/html/doc/build.html @@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul> <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> </div> -<p id="footer">build — npm@1.1.61</p> +<p id="footer">build — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/bundle.html b/deps/npm/html/doc/bundle.html index 1b37b0151af..b33c4330843 100644 --- a/deps/npm/html/doc/bundle.html +++ b/deps/npm/html/doc/bundle.html @@ -20,7 +20,7 @@ install packages into the local space.</p> <ul><li><a href="../doc/install.html">install(1)</a></li></ul> </div> -<p id="footer">bundle — npm@1.1.61</p> +<p id="footer">bundle — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/cache.html b/deps/npm/html/doc/cache.html index 39c9092c69e..4766b6b430f 100644 --- a/deps/npm/html/doc/cache.html +++ b/deps/npm/html/doc/cache.html @@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul> </div> -<p id="footer">cache — npm@1.1.61</p> +<p id="footer">cache — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/changelog.html b/deps/npm/html/doc/changelog.html index af186b1a8f0..22a78c8915c 100644 --- a/deps/npm/html/doc/changelog.html +++ b/deps/npm/html/doc/changelog.html @@ -65,7 +65,7 @@ <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul> </div> -<p id="footer">changelog — npm@1.1.61</p> +<p id="footer">changelog — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/coding-style.html b/deps/npm/html/doc/coding-style.html index 7ab84d40421..370181d55d6 100644 --- a/deps/npm/html/doc/coding-style.html +++ b/deps/npm/html/doc/coding-style.html @@ -180,7 +180,7 @@ set to anything."</p> <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> </div> -<p id="footer">coding-style — npm@1.1.61</p> +<p id="footer">coding-style — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/completion.html b/deps/npm/html/doc/completion.html index 8661b8242e1..91717ac9eef 100644 --- a/deps/npm/html/doc/completion.html +++ b/deps/npm/html/doc/completion.html @@ -33,7 +33,7 @@ completions based on the arguments.</p> <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> </div> -<p id="footer">completion — npm@1.1.61</p> +<p id="footer">completion — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/config.html b/deps/npm/html/doc/config.html index d8ce82a5d79..273bc9343d7 100644 --- a/deps/npm/html/doc/config.html +++ b/deps/npm/html/doc/config.html @@ -756,7 +756,7 @@ then answer "no" to any prompt.</p> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> </div> -<p id="footer">config — npm@1.1.61</p> +<p id="footer">config — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/dedupe.html b/deps/npm/html/doc/dedupe.html index 4a61e39f055..dd4c13e3ca8 100644 --- a/deps/npm/html/doc/dedupe.html +++ b/deps/npm/html/doc/dedupe.html @@ -57,7 +57,7 @@ registry.</p> <ul><li><a href="../doc/ls.html">ls(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> </div> -<p id="footer">dedupe — npm@1.1.61</p> +<p id="footer">dedupe — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/deprecate.html b/deps/npm/html/doc/deprecate.html index 6cbab62c3c5..065ae2c53a8 100644 --- a/deps/npm/html/doc/deprecate.html +++ b/deps/npm/html/doc/deprecate.html @@ -29,7 +29,7 @@ something like this:</p> <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> </div> -<p id="footer">deprecate — npm@1.1.61</p> +<p id="footer">deprecate — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/developers.html b/deps/npm/html/doc/developers.html index 964d90c6f17..a0ea585fa24 100644 --- a/deps/npm/html/doc/developers.html +++ b/deps/npm/html/doc/developers.html @@ -160,7 +160,7 @@ from a fresh checkout.</p> <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> </div> -<p id="footer">developers — npm@1.1.61</p> +<p id="footer">developers — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/disputes.html b/deps/npm/html/doc/disputes.html index 9a496ce03f4..15c3cdfab20 100644 --- a/deps/npm/html/doc/disputes.html +++ b/deps/npm/html/doc/disputes.html @@ -80,7 +80,7 @@ license statement)</li><li>Illegal content.</li></ol> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> </div> -<p id="footer">disputes — npm@1.1.61</p> +<p id="footer">disputes — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/docs.html b/deps/npm/html/doc/docs.html index 9f2e7fe7d48..d909746de23 100644 --- a/deps/npm/html/doc/docs.html +++ b/deps/npm/html/doc/docs.html @@ -37,7 +37,7 @@ config param.</p> <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> </div> -<p id="footer">docs — npm@1.1.61</p> +<p id="footer">docs — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/edit.html b/deps/npm/html/doc/edit.html index bb979e71695..d8863fe3c9f 100644 --- a/deps/npm/html/doc/edit.html +++ b/deps/npm/html/doc/edit.html @@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">edit — npm@1.1.61</p> +<p id="footer">edit — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/explore.html b/deps/npm/html/doc/explore.html index c2839ff0700..b2be2dfdf75 100644 --- a/deps/npm/html/doc/explore.html +++ b/deps/npm/html/doc/explore.html @@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul> <ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> </div> -<p id="footer">explore — npm@1.1.61</p> +<p id="footer">explore — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/faq.html b/deps/npm/html/doc/faq.html index c66b89d4110..9a97c5ba5cf 100644 --- a/deps/npm/html/doc/faq.html +++ b/deps/npm/html/doc/faq.html @@ -250,7 +250,7 @@ There is not sufficient need to impose namespace rules on everyone.</p> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> </div> -<p id="footer">faq — npm@1.1.61</p> +<p id="footer">faq — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/folders.html b/deps/npm/html/doc/folders.html index e60ea6bc757..5c38a16bdf7 100644 --- a/deps/npm/html/doc/folders.html +++ b/deps/npm/html/doc/folders.html @@ -205,7 +205,7 @@ cannot be found elsewhere. See <code><a href="../doc/json.html">json(1)</a></co <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul> </div> -<p id="footer">folders — npm@1.1.61</p> +<p id="footer">folders — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/help-search.html b/deps/npm/html/doc/help-search.html index 24d3faf11d7..46a57ed51e7 100644 --- a/deps/npm/html/doc/help-search.html +++ b/deps/npm/html/doc/help-search.html @@ -38,7 +38,7 @@ where the terms were found in the documentation.</p> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul> </div> -<p id="footer">help-search — npm@1.1.61</p> +<p id="footer">help-search — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/help.html b/deps/npm/html/doc/help.html index ab960dd175b..367b30afb4b 100644 --- a/deps/npm/html/doc/help.html +++ b/deps/npm/html/doc/help.html @@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul> </div> -<p id="footer">help — npm@1.1.61</p> +<p id="footer">help — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html index fe72394d3a5..78a2bd219d3 100644 --- a/deps/npm/html/doc/index.html +++ b/deps/npm/html/doc/index.html @@ -388,7 +388,7 @@ <p> Display npm username</p> </div> -<p id="footer">index — npm@1.1.61</p> +<p id="footer">index — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/init.html b/deps/npm/html/doc/init.html index d2ae25c5280..71d39d597b6 100644 --- a/deps/npm/html/doc/init.html +++ b/deps/npm/html/doc/init.html @@ -29,7 +29,7 @@ without a really good reason to do so.</p> <ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul> </div> -<p id="footer">init — npm@1.1.61</p> +<p id="footer">init — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/install.html b/deps/npm/html/doc/install.html index c5bf0480525..fea636a0c5c 100644 --- a/deps/npm/html/doc/install.html +++ b/deps/npm/html/doc/install.html @@ -133,7 +133,7 @@ affects a real use-case, it will be investigated.</p> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul> </div> -<p id="footer">install — npm@1.1.61</p> +<p id="footer">install — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/json.html b/deps/npm/html/doc/json.html index 1bfeafa05ec..03597245256 100644 --- a/deps/npm/html/doc/json.html +++ b/deps/npm/html/doc/json.html @@ -525,7 +525,7 @@ overridden.</p> <ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul> </div> -<p id="footer">json — npm@1.1.61</p> +<p id="footer">json — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/link.html b/deps/npm/html/doc/link.html index 00af34f7ac7..78ed6c76362 100644 --- a/deps/npm/html/doc/link.html +++ b/deps/npm/html/doc/link.html @@ -58,7 +58,7 @@ installation target into your project's <code>node_modules</code> folder.</p <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">link — npm@1.1.61</p> +<p id="footer">link — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/ls.html b/deps/npm/html/doc/ls.html index 85a2e761ebb..227dae41883 100644 --- a/deps/npm/html/doc/ls.html +++ b/deps/npm/html/doc/ls.html @@ -25,7 +25,7 @@ limit the results to only the paths to the packages named. Note that nested packages will <em>also</em> show the paths to the specified packages. For example, running <code>npm ls promzard</code> in npm's source tree will show:</p> -<pre><code>npm@1.1.61 /path/to/npm +<pre><code>npm@1.1.62 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5</code></pre> @@ -64,7 +64,7 @@ project.</p> <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul> </div> -<p id="footer">ls — npm@1.1.61</p> +<p id="footer">ls — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/npm.html b/deps/npm/html/doc/npm.html index 67c8aaa3f01..0f3b45b09ae 100644 --- a/deps/npm/html/doc/npm.html +++ b/deps/npm/html/doc/npm.html @@ -14,7 +14,7 @@ <h2 id="VERSION">VERSION</h2> -<p>1.1.61</p> +<p>1.1.62</p> <h2 id="DESCRIPTION">DESCRIPTION</h2> @@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p> <ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul> </div> -<p id="footer">npm — npm@1.1.61</p> +<p id="footer">npm — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/outdated.html b/deps/npm/html/doc/outdated.html index 4d7dd840807..27258ed37d9 100644 --- a/deps/npm/html/doc/outdated.html +++ b/deps/npm/html/doc/outdated.html @@ -21,7 +21,7 @@ packages are currently outdated.</p> <ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> </div> -<p id="footer">outdated — npm@1.1.61</p> +<p id="footer">outdated — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/owner.html b/deps/npm/html/doc/owner.html index 000b425b7fd..143776ffd91 100644 --- a/deps/npm/html/doc/owner.html +++ b/deps/npm/html/doc/owner.html @@ -34,7 +34,7 @@ that is not implemented at this time.</p> <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> </div> -<p id="footer">owner — npm@1.1.61</p> +<p id="footer">owner — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/pack.html b/deps/npm/html/doc/pack.html index 4dd7fe53c40..f8c26afe3c7 100644 --- a/deps/npm/html/doc/pack.html +++ b/deps/npm/html/doc/pack.html @@ -29,7 +29,7 @@ overwritten the second time.</p> <ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">pack — npm@1.1.61</p> +<p id="footer">pack — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/prefix.html b/deps/npm/html/doc/prefix.html index f4c0ecd6af2..f0456195498 100644 --- a/deps/npm/html/doc/prefix.html +++ b/deps/npm/html/doc/prefix.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">prefix — npm@1.1.61</p> +<p id="footer">prefix — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/prune.html b/deps/npm/html/doc/prune.html index fddff0b220c..f68c9dce384 100644 --- a/deps/npm/html/doc/prune.html +++ b/deps/npm/html/doc/prune.html @@ -25,7 +25,7 @@ package's dependencies list.</p> <ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> </div> -<p id="footer">prune — npm@1.1.61</p> +<p id="footer">prune — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/publish.html b/deps/npm/html/doc/publish.html index 613b2fb7b4e..d60202a4c12 100644 --- a/deps/npm/html/doc/publish.html +++ b/deps/npm/html/doc/publish.html @@ -29,7 +29,7 @@ the registry. Overwrites when the "--force" flag is set.</p> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul> </div> -<p id="footer">publish — npm@1.1.61</p> +<p id="footer">publish — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/rebuild.html b/deps/npm/html/doc/rebuild.html index 6ea0e01f2b3..b030e1fb366 100644 --- a/deps/npm/html/doc/rebuild.html +++ b/deps/npm/html/doc/rebuild.html @@ -25,7 +25,7 @@ the new binary.</p> <ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> </div> -<p id="footer">rebuild — npm@1.1.61</p> +<p id="footer">rebuild — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/registry.html b/deps/npm/html/doc/registry.html index 0b4cac912dc..ea2e6f36f20 100644 --- a/deps/npm/html/doc/registry.html +++ b/deps/npm/html/doc/registry.html @@ -97,7 +97,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> </div> -<p id="footer">registry — npm@1.1.61</p> +<p id="footer">registry — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/removing-npm.html b/deps/npm/html/doc/removing-npm.html index c4201a7001c..3768a0e3c1b 100644 --- a/deps/npm/html/doc/removing-npm.html +++ b/deps/npm/html/doc/removing-npm.html @@ -58,7 +58,7 @@ modules. To track those down, you can do the following:</p> <ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul> </div> -<p id="footer">removing-npm — npm@1.1.61</p> +<p id="footer">removing-npm — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/restart.html b/deps/npm/html/doc/restart.html index ed509ea34c9..de43a95c2af 100644 --- a/deps/npm/html/doc/restart.html +++ b/deps/npm/html/doc/restart.html @@ -24,7 +24,7 @@ the "start" script.</p> <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> </div> -<p id="footer">restart — npm@1.1.61</p> +<p id="footer">restart — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/root.html b/deps/npm/html/doc/root.html index 627a9c9281d..a9879d4c07c 100644 --- a/deps/npm/html/doc/root.html +++ b/deps/npm/html/doc/root.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">root — npm@1.1.61</p> +<p id="footer">root — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/run-script.html b/deps/npm/html/doc/run-script.html index f05942e0712..12b81dbde00 100644 --- a/deps/npm/html/doc/run-script.html +++ b/deps/npm/html/doc/run-script.html @@ -23,7 +23,7 @@ called directly, as well.</p> <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> </div> -<p id="footer">run-script — npm@1.1.61</p> +<p id="footer">run-script — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/scripts.html b/deps/npm/html/doc/scripts.html index 896bd939b5f..8c656e8a3b2 100644 --- a/deps/npm/html/doc/scripts.html +++ b/deps/npm/html/doc/scripts.html @@ -177,7 +177,7 @@ will sudo the npm command in question.</li></ul> <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> </div> -<p id="footer">scripts — npm@1.1.61</p> +<p id="footer">scripts — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/search.html b/deps/npm/html/doc/search.html index 87d23dd7d23..33c66ef44db 100644 --- a/deps/npm/html/doc/search.html +++ b/deps/npm/html/doc/search.html @@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul> </div> -<p id="footer">search — npm@1.1.61</p> +<p id="footer">search — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/semver.html b/deps/npm/html/doc/semver.html index e6c277d1ba6..0e0794f5914 100644 --- a/deps/npm/html/doc/semver.html +++ b/deps/npm/html/doc/semver.html @@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul> <ul><li><a href="../doc/json.html">json(1)</a></li></ul> </div> -<p id="footer">semver — npm@1.1.61</p> +<p id="footer">semver — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/shrinkwrap.html b/deps/npm/html/doc/shrinkwrap.html index db8d64fb743..e47606ef240 100644 --- a/deps/npm/html/doc/shrinkwrap.html +++ b/deps/npm/html/doc/shrinkwrap.html @@ -169,7 +169,7 @@ versions.</p> <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> </div> -<p id="footer">shrinkwrap — npm@1.1.61</p> +<p id="footer">shrinkwrap — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/star.html b/deps/npm/html/doc/star.html index ab6ac0133eb..93c6aa9346c 100644 --- a/deps/npm/html/doc/star.html +++ b/deps/npm/html/doc/star.html @@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p> <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> </div> -<p id="footer">star — npm@1.1.61</p> +<p id="footer">star — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/start.html b/deps/npm/html/doc/start.html index 3b454215dc4..e40c5f1f82f 100644 --- a/deps/npm/html/doc/start.html +++ b/deps/npm/html/doc/start.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> </div> -<p id="footer">start — npm@1.1.61</p> +<p id="footer">start — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/stop.html b/deps/npm/html/doc/stop.html index d50e70f9a4a..2d331dda8c2 100644 --- a/deps/npm/html/doc/stop.html +++ b/deps/npm/html/doc/stop.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul> </div> -<p id="footer">stop — npm@1.1.61</p> +<p id="footer">stop — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/submodule.html b/deps/npm/html/doc/submodule.html index 4f1f5503850..d1cef58e759 100644 --- a/deps/npm/html/doc/submodule.html +++ b/deps/npm/html/doc/submodule.html @@ -33,7 +33,7 @@ dependencies into the submodule folder.</p> <ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul> </div> -<p id="footer">submodule — npm@1.1.61</p> +<p id="footer">submodule — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/tag.html b/deps/npm/html/doc/tag.html index d84582daf19..2ba9b8a8a3d 100644 --- a/deps/npm/html/doc/tag.html +++ b/deps/npm/html/doc/tag.html @@ -21,7 +21,7 @@ <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">tag — npm@1.1.61</p> +<p id="footer">tag — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/test.html b/deps/npm/html/doc/test.html index 2b34c25751f..bc8a43293fe 100644 --- a/deps/npm/html/doc/test.html +++ b/deps/npm/html/doc/test.html @@ -23,7 +23,7 @@ true.</p> <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> </div> -<p id="footer">test — npm@1.1.61</p> +<p id="footer">test — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/uninstall.html b/deps/npm/html/doc/uninstall.html index ec55f9609d7..aeccf8d17c1 100644 --- a/deps/npm/html/doc/uninstall.html +++ b/deps/npm/html/doc/uninstall.html @@ -22,7 +22,7 @@ on its behalf.</p> <ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> </div> -<p id="footer">uninstall — npm@1.1.61</p> +<p id="footer">uninstall — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/unpublish.html b/deps/npm/html/doc/unpublish.html index eaeb8f0f465..354ac7a0cb1 100644 --- a/deps/npm/html/doc/unpublish.html +++ b/deps/npm/html/doc/unpublish.html @@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p> <ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> </div> -<p id="footer">unpublish — npm@1.1.61</p> +<p id="footer">unpublish — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/update.html b/deps/npm/html/doc/update.html index b93942c3b2c..5c7d60d083e 100644 --- a/deps/npm/html/doc/update.html +++ b/deps/npm/html/doc/update.html @@ -23,7 +23,7 @@ <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> </div> -<p id="footer">update — npm@1.1.61</p> +<p id="footer">update — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/version.html b/deps/npm/html/doc/version.html index 611b45ee3db..d3eea5f839b 100644 --- a/deps/npm/html/doc/version.html +++ b/deps/npm/html/doc/version.html @@ -40,7 +40,7 @@ in your git config for this to work properly.</p> <ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul> </div> -<p id="footer">version — npm@1.1.61</p> +<p id="footer">version — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/view.html b/deps/npm/html/doc/view.html index 27681fc5048..e87e7dfeafc 100644 --- a/deps/npm/html/doc/view.html +++ b/deps/npm/html/doc/view.html @@ -88,7 +88,7 @@ the field name.</p> <ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul> </div> -<p id="footer">view — npm@1.1.61</p> +<p id="footer">view — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/html/doc/whoami.html b/deps/npm/html/doc/whoami.html index f885520861f..d8909e98391 100644 --- a/deps/npm/html/doc/whoami.html +++ b/deps/npm/html/doc/whoami.html @@ -20,7 +20,7 @@ <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> </div> -<p id="footer">whoami — npm@1.1.61</p> +<p id="footer">whoami — npm@1.1.62</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/lib/bugs.js b/deps/npm/lib/bugs.js index 3f9de12315f..fa66dc3e419 100644 --- a/deps/npm/lib/bugs.js +++ b/deps/npm/lib/bugs.js @@ -7,6 +7,7 @@ var exec = require("./utils/exec.js") , npm = require("./npm.js") , registry = npm.registry , log = require("npmlog") + , opener = require("opener") bugs.completion = function (opts, cb) { if (opts.conf.argv.remain.length > 2) return cb() @@ -22,41 +23,22 @@ function bugs (args, cb) { if (er) return cb(er) var bugs = d.bugs , repo = d.repository || d.repositories + , url if (bugs) { - if (typeof bugs === "string") return open(bugs, cb) - if (bugs.url) return open(bugs.url, cb) - } - if (repo) { + url = (typeof bugs === "string") ? bugs : bugs.url + } else if (repo) { if (Array.isArray(repo)) repo = repo.shift() if (repo.hasOwnProperty("url")) repo = repo.url log.verbose("repository", repo) if (repo && repo.match(/^(https?:\/\/|git(:\/\/|@))github.com/)) { - return open(repo.replace(/^git(@|:\/\/)/, "http://") - .replace(/^https?:\/\/github.com:/, "github.com/") - .replace(/\.git$/, '')+"/issues", cb) + url = repo.replace(/^git(@|:\/\/)/, "https://") + .replace(/^https?:\/\/github.com:/, "https://github.com/") + .replace(/\.git$/, '')+"/issues" } } - return open("http://search.npmjs.org/#/" + d.name, cb) + if (!url) { + url = "https://npmjs.org/package/" + d.name + } + opener(url, { command: npm.config.get("browser") }, cb) }) } - -function open (url, cb) { - var args = [url] - , browser = npm.config.get("browser") - - if (process.platform === "win32" && browser === "start") { - args = [ "/c", "start" ].concat(args) - browser = "cmd" - } - - if (!browser) { - var er = ["the 'browser' config is not set. Try doing this:" - ," npm config set browser google-chrome" - ,"or:" - ," npm config set browser lynx"].join("\n") - return cb(er) - } - - exec(browser, args, process.env, false, function () {}) - cb() -} diff --git a/deps/npm/lib/docs.js b/deps/npm/lib/docs.js index 72c1869b9b6..ffa91aa6bde 100644 --- a/deps/npm/lib/docs.js +++ b/deps/npm/lib/docs.js @@ -14,6 +14,7 @@ var exec = require("./utils/exec.js") , npm = require("./npm.js") , registry = npm.registry , log = require("npmlog") + , opener = require("opener") function docs (args, cb) { if (!args.length) return cb(docs.usage) @@ -22,37 +23,8 @@ function docs (args, cb) { if (er) return cb(er) var homepage = d.homepage , repo = d.repository || d.repositories - if (homepage) return open(homepage, cb) - if (repo) { - if (Array.isArray(repo)) repo = repo.shift() - if (repo.hasOwnProperty("url")) repo = repo.url - log.verbose("repository", repo) - if (repo) { - return open(repo.replace(/^git(@|:\/\/)/, 'http://') - .replace(/\.git$/, '')+"#readme", cb) - } - } - return open("http://search.npmjs.org/#/" + d.name, cb) + , url = homepage ? homepage + : "https://npmjs.org/package/" + d.name + opener(url, { command: npm.config.get("browser") }, cb) }) } - -function open (url, cb) { - var args = [url] - , browser = npm.config.get("browser") - - if (process.platform === "win32" && browser === "start") { - args = [ "/c", "start" ].concat(args) - browser = "cmd" - } - - if (!browser) { - var er = ["the 'browser' config is not set. Try doing this:" - ," npm config set browser google-chrome" - ,"or:" - ," npm config set browser lynx"].join("\n") - return cb(er) - } - - exec(browser, args, process.env, false, function () {}) - cb() -} diff --git a/deps/npm/lib/help.js b/deps/npm/lib/help.js index 495db8381ae..a8b1f2d4d2f 100644 --- a/deps/npm/lib/help.js +++ b/deps/npm/lib/help.js @@ -13,6 +13,7 @@ var fs = require("graceful-fs") , exec = require("./utils/exec.js") , npm = require("./npm.js") , log = require("npmlog") + , opener = require("opener") function help (args, cb) { var num = 1 @@ -63,18 +64,7 @@ function help (args, cb) { break case "browser": - var b = npm.config.get("browser") - if (!b) { - return cb(new Error("viewer=browser and no browser set.")) - } - console.log("Opening HTML in default browser...") - process.nextTick(cb) - // windows is SO weird. - if (process.platform === "win32") { - exec("cmd", ["/c", htmlPath], env, false, function () {}) - } else { - exec(b, [htmlPath], env, false, function () {}) - } + opener(htmlPath, { command: npm.config.get("browser") }, cb) break default: diff --git a/deps/npm/lib/ls.js b/deps/npm/lib/ls.js index 96068bfa57b..8a4d6277f2b 100644 --- a/deps/npm/lib/ls.js +++ b/deps/npm/lib/ls.js @@ -36,6 +36,7 @@ function ls (args, silent, cb) { readInstalled(dir, npm.config.get("depth"), function (er, data) { var bfs = bfsify(data, args) , lite = getLite(bfs) + if (er || silent) return cb(er, data, lite) var long = npm.config.get("long") @@ -58,7 +59,12 @@ function ls (args, silent, cb) { out = makeArchy(bfs, long, dir) } console.log(out) - cb(null, data, lite) + + // if any errors were found, then complain and exit status 1 + if (lite.problems && lite.problems.length) { + er = lite.problems.join('\n') + } + cb(er, data, lite) }) } @@ -210,7 +216,6 @@ function makeArchy_ (data, long, dir, depth, parent, d) { if (depth < npm.config.get("depth")) { // just missing var p = parent.link || parent.path - log.warn("unmet dependency", "%s in %s", d+" "+data, p) var unmet = "UNMET DEPENDENCY" if (color) { unmet = "\033[31;40m" + unmet + "\033[0m" @@ -303,7 +308,6 @@ function makeParseable_ (data, long, dir, depth, parent, d) { if (typeof data === "string") { if (data.depth < npm.config.get("depth")) { var p = parent.link || parent.path - log.warn("unmet dependency", "%s in %s", d+" "+data, p) data = npm.config.get("long") ? path.resolve(parent.path, "node_modules", d) + ":"+d+"@"+JSON.stringify(data)+":INVALID:MISSING" diff --git a/deps/npm/man/man1/ls.1 b/deps/npm/man/man1/ls.1 index 04f5b6bce63..3c1f48fb125 100644 --- a/deps/npm/man/man1/ls.1 +++ b/deps/npm/man/man1/ls.1 @@ -29,7 +29,7 @@ For example, running \fBnpm ls promzard\fR in npm\'s source tree will show: .IP "" 4 . .nf -npm@1.1.61 /path/to/npm +npm@1.1.62 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 . diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 6e9a40cb965..52199582d2f 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -14,7 +14,7 @@ npm <command> [args] .fi . .SH "VERSION" -1.1.61 +1.1.62 . .SH "DESCRIPTION" npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3 index a4b0daf8550..104ab96ff35 100644 --- a/deps/npm/man/man3/npm.3 +++ b/deps/npm/man/man3/npm.3 @@ -21,7 +21,7 @@ npm\.load(configObject, function (er, npm) { .fi . .SH "VERSION" -1.1.61 +1.1.62 . .SH "DESCRIPTION" This is the API documentation for npm\. diff --git a/deps/npm/node_modules/couch-login/couch-login.js b/deps/npm/node_modules/couch-login/couch-login.js index be037f0f219..a2b3234391f 100644 --- a/deps/npm/node_modules/couch-login/couch-login.js +++ b/deps/npm/node_modules/couch-login/couch-login.js @@ -2,6 +2,7 @@ var request = require('request') , url = require('url') , crypto = require('crypto') , YEAR = (1000 * 60 * 60 * 24 * 365) +, BASIC = {} module.exports = CouchLogin @@ -13,11 +14,28 @@ function CouchLogin (couch, tok) { if (!couch) throw new Error( "Need to pass a couch url to CouchLogin constructor") - // having auth completely defeats the purpose + if (couch instanceof CouchLogin) + couch = couch.couch + couch = url.parse(couch) + if (couch.auth) { + var a = couch.auth.split(':') + var name = a.shift() + var password = a.join(':') + this.name = name + if (password) + this.auth = new Buffer(name + ':' + password).toString('base64') + } else { + this.auth = null + this.name = null + } delete couch.auth - if (tok === 'anonymous') tok = NaN + if (tok === 'anonymous') + tok = NaN + else if (tok === 'basic') + tok = BASIC + this.token = tok this.couch = url.format(couch) this.proxy = null @@ -97,9 +115,16 @@ function makeReq (meth, body, f) { return function madeReq (p, d, cb) { , u = url.resolve(this.couch, p) , req = { uri: u, headers: h, json: true, body: d, method: meth } - if (this.token) { + if (this.token === BASIC) { + if (!this.auth) + return process.nextTick(cb.bind(this, new Error( + 'Using basic auth and no auth provided'))) + else + h.authorization = 'Basic ' + this.auth + } else if (this.token) { h.cookie = 'AuthSession=' + this.token.AuthSession } + if (this.proxy) { req.proxy = this.proxy } @@ -113,8 +138,19 @@ function makeReq (meth, body, f) { return function madeReq (p, d, cb) { }} function login (auth, cb) { + if (this.token === BASIC) { + this.auth = new Buffer(auth.name + ':' + auth.password).toString('base64') + this.name = auth.name + return process.nextTick(cb, null, { statusCode: 200 }, { ok: true }) + } var a = { name: auth.name, password: auth.password } - makeReq('post', true, true).call(this, '/_session', a, cb) + var req = makeReq('post', true, true) + req.call(this, '/_session', a, function (er, cr, data) { + if (er || (cr && cr.statusCode >= 400)) + return cb(er, cr, data) + this.name = auth.name + cb(er, cr, data) + }) } function changePass (auth, cb) { @@ -145,8 +181,12 @@ function changePass (auth, cb) { data.date = new Date().toISOString() this.put(u + '?rev=' + data._rev, data, function (er, res, data) { - if (er || res.statusCode >= 400) return cb(er, res, data) - this.login(auth, cb) + console.error('back from changepass', er, data, this.name) + if (er || res.statusCode >= 400) + return cb(er, res, data) + if (this.name && this.name !== auth.name) + return cb(er, res, data) + return this.login(auth, cb) }.bind(this)) }.bind(this)) } @@ -176,17 +216,18 @@ function deleteAccount (name, cb) { function signup (auth, cb) { - if (this.token) return this.logout(function (er, res, data) { - if (er || res.statusCode !== 200) { - return cb(er, res, data) - } + if (this.token && this.token !== BASIC) + return this.logout(function (er, res, data) { + if (er || res.statusCode !== 200) { + return cb(er, res, data) + } - if (this.token) { - return cb(new Error('failed to delete token'), res, data) - } + if (this.token) { + return cb(new Error('failed to delete token'), res, data) + } - this.signup(auth, cb) - }.bind(this)) + this.signup(auth, cb) + }.bind(this)) // make a new user record. var newSalt = crypto.randomBytes(30).toString('hex') @@ -221,6 +262,10 @@ function signup (auth, cb) { } function addToken (res) { + // not doing the whole login session cookie thing. + if (this.token === BASIC) + return + // attach the token, if a new one was provided. var sc = res.headers['set-cookie'] if (!sc) return @@ -294,6 +339,7 @@ function logout (cb) { } function valid (token) { + if (token === BASIC) return true if (!token) return false if (!token.hasOwnProperty('expires')) return true return token.expires > Date.now() diff --git a/deps/npm/node_modules/couch-login/package.json b/deps/npm/node_modules/couch-login/package.json index 7d62b739f6b..9ccd561b5ba 100644 --- a/deps/npm/node_modules/couch-login/package.json +++ b/deps/npm/node_modules/couch-login/package.json @@ -6,7 +6,7 @@ }, "name": "couch-login", "description": "A module for doing logged-in requests to a couchdb server", - "version": "0.1.10", + "version": "0.1.12", "repository": { "type": "git", "url": "git://github.com/isaacs/couch-login.git" @@ -22,6 +22,6 @@ "tap": "~0.2.4" }, "readme": "# couch-login\n\nThis module lets you log into couchdb to get a session token, then make\nrequests using that session. It is basically just a thin wrapper around\n[@mikeal's request module](https://github.com/mikeal/request).\n\nThis is handy if you want a user to take actions in a couchdb database\non behalf of a user, without having to store their couchdb username and\npassword anywhere. (You do need to store the AuthSession token\nsomewhere, though.)\n\n## Usage\n\n```javascript\nvar CouchLogin = require('couch-login')\n\n// Nothing about this module is http-server specific of course.\n// You could also use it to do authenticated requests against\n// a couchdb using sessions and storing the token somewhere else.\n\nhttp.createServer(function (req, res) {\n var couch = new CouchLogin('http://my-couch.iriscouch.com:5984/')\n\n // .. look up the token in the user's session or whatever ..\n // Look at couch.decorate(req, res) for more on doing that\n // automatically, below.\n\n if (sessionToken) {\n // this user already logged in.\n couch.token = sessionToken\n\n // now we can do things on their behalf, like:\n // 1. View their session info.\n // like doing request.get({ uri: couch + '/_session', ... })\n // but with the cookie and whatnot\n\n couch.get('/_session', function (er, resp, data) {\n // er = some kind of communication error.\n // resp = response object from the couchdb request.\n // data = parsed JSON response body.\n if (er || resp.statusCode !== 200) {\n res.statusCode = resp.statusCode || 403\n return res.end('Invalid login or something')\n }\n\n // now we have the session info, we know who this user is.\n // hitting couchdb for this on every request is kinda costly,\n // so maybe you should store the username wherever you're storing\n // the sessionToken. RedSess is a good util for this, if you're\n // into redis. And if you're not into redis, you're crazy,\n // because it is awesome.\n\n // now let's get the user record.\n // note that this will 404 for anyone other than the user,\n // unless they're a server admin.\n couch.get('/_users/org.couchdb.user:' + data.userCtx.name, etc)\n\n // PUTs and DELETEs will also use their session, of course, so\n // your validate_doc_update's will see their info in userCtx\n })\n\n } else {\n // don't have a sessionToken.\n // get a username and password from the post body or something.\n // maybe redirect to a /login page or something to ask for that.\n var login = { name: name, password: password }\n couch.login(login, function (er, resp, data) {\n // again, er is an error, resp is the response obj, data is the json\n if (er || resp.statusCode !== 200) {\n res.statusCode = resp.statusCode || 403\n return res.end('Invalid login or something')\n }\n\n // the data is something like\n // {\"ok\":true,\"name\":\"testuser\",\"roles\":[]}\n // and couch.token is the token you'll need to save somewhere.\n\n // at this point, you can start making authenticated requests to\n // couchdb, or save data in their session, or do whatever it is\n // that you need to do.\n\n res.statusCode = 200\n res.write(\"Who's got two thumbs and just logged you into couch?\\n\")\n setTimeout(function () {\n res.end(\"THIS GUY!\")\n }, 500)\n })\n }\n})\n```\n\n## Class: CouchLogin\n### new CouchLogin(couchdbUrl, token)\n\nCreate a new CouchLogin object bound to the couchdb url.\n\nIn addition to these, the `get`, `post`, `put`, and `del` methods all\nproxy to the associated method on [request](https://github.com/mikeal/request).\n\nHowever, as you'll note in the example above, only the pathname portion\nof the url is required. Urls will be appended to the couchdb url passed\ninto the constructor.\n\nIf you have to talk to more than one couchdb, then you'll need more than\none CouchLogin object, for somewhat obvious reasons.\n\nAll callbacks get called with the following arguments, which are exactly\nidentical to the arguments passed to a `request` callback.\n\n* `er` {Error | null} Set if a communication error happens.\n* `resp` {HTTP Response} The response from the request to couchdb\n* `data` {Object} The parsed JSON data from couch\n\nIf the token is the string \"anonymous\", then it will not attempt to log\nin before making requests. If the token is not \"anonymous\", then it\nmust be an object with the appropriate fields.\n\n### couch.token\n\n* {Object}\n\nAn object representing the couchdb session token. (Basically just a\ncookie and a timeout.)\n\nIf the token has already timed out, then setting it will have no effect.\n\n### couch.tokenSet\n\nIf set, this method is called whenever the token is saved.\n\nFor example, you could assign a function to this method to save the\ntoken into a redis session, a cookie, or in some other database.\n\nTakes a callback which should be called when the token is saved.\n\n### couch.tokenGet\n\nIf set, this method is called to look up the token on demand.\n\nThe inverse of couch.tokenSet. Takes a callback which is called with\nthe `cb(er || null, token)`.\n\n### couch.tokenDel\n\nIf set, this method is called to delete the token when it should be\ndiscarded.\n\nRelated to tokenGet and tokenSet. Takes a callback which should be\ncalled when the token is deleted.\n\n### couch.anonymous()\n\nReturn a new CouchLogin object that points at the same couchdb server,\nbut doesn't try to log in before making requests.\n\nThis is handy for situations where the user is not logged in at the\nmoment, but a request needs to be made anyway, and does not require\nauthorization.\n\n### couch.login(auth, callback)\n\n* `auth` {Object} The login details\n * `name` {String}\n * `password` {String}\n* `callback` {Function}\n\nWhen the callback is called, the `couch.token` will already have been\nset (assuming it worked!), so subsequent requests will be done as that\nuser.\n\n### couch.get(path, callback)\n\nGET the supplied path from the couchdb using the credentials on the\ntoken.\n\nFails if the token is invalid or expired.\n\n### couch.del(path, callback)\n\nDELETE the supplied path from the couchdb using the credentials on the\ntoken.\n\nFails if the token is invalid or expired.\n\n### couch.post(path, data, callback)\n\nPOST the data to the supplied path in the couchdb, using the credentials\non the token.\n\nFails if the token is invalid or expired.\n\n### couch.put(path, data, callback)\n\nPUT the data to the supplied path in the couchdb, using the credentials\non the token.\n\nFails if the token is invalid or expired.\n\n### couch.changePass(newAuth, callback)\n\nMust already be logged in. Updates the `_users` document with new salt\nand hash, and re-logs in with the new credentials. Callback is called\nwith the same arguments as login, or the first step of the process that\nfailed.\n\n### couch.signup(userData, callback)\n\nCreate a new user account. The userData must contain at least a `name`\nand `password` field. Any additional data will be copied to the user\nrecord. The `_id`, `name`, `roles`, `type`, `password_sha`, `salt`, and\n`date` fields are generated.\n\nAlso signs in as the newly created user, on successful account creation.\n\n### couch.deleteAccount(name, callback)\n\nDeletes a user account. If not logged in as the user, or a server\nadmin, then the request will fail.\n\nNote that this immediately invalidates any session tokens for the\ndeleted user account. If you are deleting the user's record, then you\nought to follow this with `couch.logout(callback)` so that it won't try\nto re-use the invalid session.\n\n### couch.logout(callback)\n\nDelete the session out of couchdb. This makes the token permanently\ninvalid, and deletes it.\n\n### couch.decorate(req, res)\n\nSet up `req.couch` and `res.couch` as references to this couch login\ninstance.\n\nAdditionall, if `req.session` or `res.session` is set, then it'll call\n`session.get('couch_token', cb)` as the tokenGet method,\n`session.set('couch_token', token, cb)` as the tokenSet method, and\n`session.del('couch_token', cb)` as the tokenDel method.\n\nThis works really nice with\n[RedSess](https://github.com/isaacs/redsess).\n", - "_id": "couch-login@0.1.10", + "_id": "couch-login@0.1.12", "_from": "couch-login@~0.1.9" } diff --git a/deps/npm/node_modules/couch-login/test/basic.js b/deps/npm/node_modules/couch-login/test/basic.js index fb280624a27..660a24a0fd0 100644 --- a/deps/npm/node_modules/couch-login/test/basic.js +++ b/deps/npm/node_modules/couch-login/test/basic.js @@ -284,3 +284,16 @@ tap.test('sign up as new user', function (t) { }) }) }) + +tap.test('using basic auth', function (t) { + var c = new CouchLogin(couch.couch, 'basic') + c.login(auth, function () { + c.get('/_users/org.couchdb.user:testuser', function (er, res, data) { + if (er) + throw er + okStatus(t, res) + t.ok(data, 'data') + t.end() + }) + }) +}) diff --git a/deps/npm/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/graceful-fs/graceful-fs.js index 5d136c27f96..be9951eacd5 100644 --- a/deps/npm/node_modules/graceful-fs/graceful-fs.js +++ b/deps/npm/node_modules/graceful-fs/graceful-fs.js @@ -65,10 +65,8 @@ function open (path, flags, mode, cb) { fs.openSync = function (path, flags, mode) { var ret - try { - ret = originalOpenSync.call(fs, path, flags, mode) - fs._curOpen ++ - } finally {} + ret = originalOpenSync.call(fs, path, flags, mode) + fs._curOpen ++ return ret } @@ -261,7 +259,6 @@ if (!fs.lchown) { - // on Windows, A/V software can lock the directory, causing this // to fail with an EACCES or EPERM if the directory contains newly // created files. Try again on failure, for up to 1 second. @@ -279,3 +276,37 @@ if (process.platform === "win32") { }) } } + + +// if read() returns EAGAIN, then just try it again. +var read = fs.read +fs.read = function (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return read.call(fs, fd, buffer, offset, length, position, callback) +} + +var readSync = fs.readSync +fs.readSync = function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } +} diff --git a/deps/npm/node_modules/graceful-fs/package.json b/deps/npm/node_modules/graceful-fs/package.json index 4f513626d53..30f4c40bad1 100644 --- a/deps/npm/node_modules/graceful-fs/package.json +++ b/deps/npm/node_modules/graceful-fs/package.json @@ -6,7 +6,7 @@ }, "name": "graceful-fs", "description": "fs monkey-patching to avoid EMFILE and other problems", - "version": "1.1.10", + "version": "1.1.14", "repository": { "type": "git", "url": "git://github.com/isaacs/node-graceful-fs.git" @@ -15,11 +15,9 @@ "engines": { "node": ">=0.4.0" }, - "devDependencies": {}, "directories": { "test": "test" }, - "dependencies": {}, "scripts": { "test": "tap test/*.js" }, @@ -32,6 +30,6 @@ ], "license": "BSD", "readme": "Just like node's `fs` module, but it does an incremental back-off when\nEMFILE is encountered.\n\nUseful in asynchronous situations where one needs to try to open lots\nand lots of files.\n", - "_id": "graceful-fs@1.1.10", + "_id": "graceful-fs@1.1.14", "_from": "graceful-fs@~1.1.1" } diff --git a/deps/npm/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js index 8b6ed8c2e12..4bec3e27d3f 100644 --- a/deps/npm/node_modules/lru-cache/lib/lru-cache.js +++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js @@ -1,6 +1,6 @@ ;(function () { // closure for web browsers -if (module) { +if (typeof module === 'object' && module.exports) { module.exports = LRUCache } else { // just set the global for non-node platforms. @@ -21,7 +21,7 @@ function LRUCache (options) { var max if (typeof options === 'number') { max = options - options = {max: max} + options = { max: max } } max = options.max @@ -33,6 +33,7 @@ function LRUCache (options) { lengthCalculator = naiveLength } if (!max || !(typeof max === "number") || max <= 0 ) { + // a little bit silly. maybe this should throw? max = Infinity } @@ -40,9 +41,8 @@ function LRUCache (options) { var dispose = options.dispose - var cache = {} // hash of items by key - , lruList = {} // list of items in order of use recency - , lru = 0 // least recently used + var cache = Object.create(null) // hash of items by key + , lruList = Object.create(null) // list of items in order of use recency , mru = 0 // most recently used , length = 0 // number of items in the list , itemCount = 0 @@ -67,16 +67,16 @@ function LRUCache (options) { if (typeof lC !== "function") { lengthCalculator = naiveLength length = itemCount - Object.keys(cache).forEach(function (key) { + for (var key in cache) { cache[key].length = 1 - }) + } } else { lengthCalculator = lC length = 0 - Object.keys(cache).forEach(function (key) { + for (var key in cache) { cache[key].length = lengthCalculator(cache[key].value) length += cache[key].length - }) + } } if (length > max) trim() @@ -98,13 +98,12 @@ function LRUCache (options) { this.reset = function () { if (dispose) { - Object.keys(cache).forEach(function (k) { + for (var k in cache) { dispose(k, cache[k].value) - }) + } } cache = {} lruList = {} - lru = 0 mru = 0 length = 0 itemCount = 0 @@ -126,16 +125,15 @@ function LRUCache (options) { return true } - var hit = { - key:key, - value:value, - lu:mru++, - length:lengthCalculator(value), - now: (maxAge) ? Date.now() : 0 - } + var len = lengthCalculator(value) + var age = maxAge ? Date.now() : 0 + var hit = new Entry(key, value, mru++, len, age) // oversized objects fall out of cache automatically. - if (hit.length > max) return false + if (hit.length > max) { + if (dispose) dispose(key, value) + return false + } length += hit.length lruList[hit.lu] = cache[key] = hit @@ -153,7 +151,6 @@ function LRUCache (options) { return } delete lruList[hit.lu] - if (hit.lu === lru) lruWalk() hit.lu = mru ++ lruList[hit.lu] = hit return hit.value @@ -165,31 +162,30 @@ function LRUCache (options) { if (dispose) dispose(key, hit.value) delete cache[key] delete lruList[hit.lu] - if (hit.lu === lru) lruWalk() length -= hit.length itemCount -- } - function lruWalk () { - // lru has been deleted, hop up to the next hit. - for (var key in lruList) { - return key - } - } - function trim () { if (length <= max) return - var prune = Object.keys(lruList) - for (var i = 0; i < prune.length && length > max; i ++) { - var hit = lruList[prune[i]] + for (var k in lruList) { + if (length <= max) break; + var hit = lruList[k] if (dispose) dispose(hit.key, hit.value) length -= hit.length delete cache[ hit.key ] - delete lruList[prune[i]] + delete lruList[k] } - - lruWalk() } } +// classy, since V8 prefers predictable objects. +function Entry (key, value, mru, len, age) { + this.key = key + this.value = value + this.lu = mru + this.length = len + this.now = age +} + })() diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index 9428d83fb0b..d62dda3745d 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "2.0.2", + "version": "2.0.4", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me" @@ -52,6 +52,6 @@ } ], "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum number of items. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n", - "_id": "lru-cache@2.0.2", + "_id": "lru-cache@2.0.4", "_from": "lru-cache@~2.0.0" } diff --git a/deps/npm/node_modules/lru-cache/test/basic.js b/deps/npm/node_modules/lru-cache/test/basic.js index d04af0bbcbe..420027200f1 100644 --- a/deps/npm/node_modules/lru-cache/test/basic.js +++ b/deps/npm/node_modules/lru-cache/test/basic.js @@ -246,3 +246,22 @@ test("disposal function", function(t) { t.equal(disposed, 3) t.end() }) + +test("disposal function on too big of item", function(t) { + var disposed = false + var cache = new LRU({ + max: 1, + length: function (k) { + return k.length + }, + dispose: function (k, n) { + disposed = n + } + }) + var obj = [ 1, 2 ] + + t.equal(disposed, false) + cache.set("obj", obj) + t.equal(disposed, obj) + t.end() +}) diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md index 857c8c06d9e..4185d1121a4 100644 --- a/deps/npm/node_modules/node-gyp/README.md +++ b/deps/npm/node_modules/node-gyp/README.md @@ -36,7 +36,7 @@ You will also need to install: * `make` * A proper C/C++ compiler toolchain, like GCC * On Windows: - * [Python][windows-python] ([`v2.7.2`][windows-python-v2.7.2] recommended, `v3.x.x` not yet supported) + * [Python][windows-python] ([`v2.7.3`][windows-python-v2.7.3] recommended, `v3.x.x` is not supported) * Microsoft Visual C++ ([Express][msvc] version works well) * For 64-bit builds of node and native modules you will _also_ need the [Windows 7 64-bit SDK][win7sdk] @@ -147,6 +147,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. [windows-python]: http://www.python.org/getit/windows -[windows-python-v2.7.2]: http://www.python.org/download/releases/2.7.2#download +[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download [msvc]: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express [win7sdk]: http://www.microsoft.com/download/en/details.aspx?displayLang=en&id=8279 diff --git a/deps/npm/node_modules/node-gyp/lib/configure.js b/deps/npm/node_modules/node-gyp/lib/configure.js index 3e165afa3d3..816b836f95f 100644 --- a/deps/npm/node_modules/node-gyp/lib/configure.js +++ b/deps/npm/node_modules/node-gyp/lib/configure.js @@ -93,6 +93,10 @@ function configure (gyp, argv, callback) { } log.verbose('check python version', '`%s -c "import platform; print platform.python_version();"` returned: %j', python, stdout) var version = stdout.trim() + if (~version.indexOf('+')) { + log.silly('stripping "+" sign(s) from version') + version = version.replace(/\+/g, '') + } if (semver.gte(version, '2.5.0') && semver.lt(version, '3.0.0')) { getNodeDir() } else { diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js index f90b0fd091d..cdf1bea89e1 100644 --- a/deps/npm/node_modules/node-gyp/lib/install.js +++ b/deps/npm/node_modules/node-gyp/lib/install.js @@ -86,6 +86,8 @@ function install (gyp, argv, callback) { if (err.code == 'ENOENT') { log.verbose('install', 'version not already installed, continuing with install', version) go() + } else if (err.code == 'EACCES') { + eaccesFallback() } else { cb(err) } @@ -157,21 +159,7 @@ function install (gyp, argv, callback) { mkdir(devDir, function (err, created) { if (err) { if (err.code == 'EACCES') { - // this EACCES fallback is a workaround for npm's `sudo` behavior, where - // it drops the permissions before invoking any child processes (like - // node-gyp). So what happens is the "nobody" user doesn't have - // permission to create the dev dir. As a fallback, make the tmpdir() be - // the dev dir for this installation. This is not ideal, but at least - // the compilation will succeed... - var tmpdir = osenv.tmpdir() - gyp.devDir = path.resolve(tmpdir, '.node-gyp') - log.warn(err.code, 'user "%s" does not have permission to create dev dir "%s"', osenv.user(), devDir) - log.warn(err.code, 'attempting to reinstall using temporary dev dir "%s"', gyp.devDir) - if (process.cwd() == tmpdir) { - log.verbose('tmpdir == cwd', 'automatically will remove dev files after to save disk space') - gyp.todo.push({ name: 'remove', args: argv }) - } - gyp.commands.install(argv, cb) + eaccesFallback() } else { cb(err) } @@ -380,6 +368,27 @@ function install (gyp, argv, callback) { ) } + /** + * The EACCES fallback is a workaround for npm's `sudo` behavior, where + * it drops the permissions before invoking any child processes (like + * node-gyp). So what happens is the "nobody" user doesn't have + * permission to create the dev dir. As a fallback, make the tmpdir() be + * the dev dir for this installation. This is not ideal, but at least + * the compilation will succeed... + */ + + function eaccesFallback () { + var tmpdir = osenv.tmpdir() + gyp.devDir = path.resolve(tmpdir, '.node-gyp') + log.warn('EACCES', 'user "%s" does not have permission to access the dev dir "%s"', osenv.user(), devDir) + log.warn('EACCES', 'attempting to reinstall using temporary dev dir "%s"', gyp.devDir) + if (process.cwd() == tmpdir) { + log.verbose('tmpdir == cwd', 'automatically will remove dev files after to save disk space') + gyp.todo.push({ name: 'remove', args: argv }) + } + gyp.commands.install(argv, cb) + } + } diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json index 4ca7de82583..4ad0339c2eb 100644 --- a/deps/npm/node_modules/node-gyp/package.json +++ b/deps/npm/node_modules/node-gyp/package.json @@ -10,7 +10,7 @@ "bindings", "gyp" ], - "version": "0.6.8", + "version": "0.6.11", "installVersion": 9, "author": { "name": "Nathan Rajlich", @@ -44,7 +44,7 @@ "engines": { "node": ">= 0.6.0" }, - "readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js, which takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.6`, `0.7`,..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n * On Unix:\n * `python`\n * `make`\n * A proper C/C++ compiler toolchain, like GCC\n * On Windows:\n * [Python][windows-python] ([`v2.7.2`][windows-python-v2.7.2] recommended, `v3.x.x` not yet supported)\n * Microsoft Visual C++ ([Express][msvc] version works well)\n * For 64-bit builds of node and native modules you will _also_ need the [Windows 7 64-bit SDK][win7sdk]\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` json\n{\n \"targets\": [\n {\n \"target_name\": \"binding\",\n \"sources\": [ \"src/binding.cc\" ]\n }\n ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command** | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build` | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean` | Removes any the `build` dir if it exists\n| `configure` | Generates project build files for the current platform\n| `rebuild` | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install` | Installs node development header files for the given version\n| `list` | Lists the currently installed node development file versions\n| `remove` | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.2]: http://www.python.org/download/releases/2.7.2#download\n[msvc]: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express\n[win7sdk]: http://www.microsoft.com/download/en/details.aspx?displayLang=en&id=8279\n", - "_id": "node-gyp@0.6.8", + "readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js, which takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.6`, `0.7`,..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n * On Unix:\n * `python`\n * `make`\n * A proper C/C++ compiler toolchain, like GCC\n * On Windows:\n * [Python][windows-python] ([`v2.7.3`][windows-python-v2.7.3] recommended, `v3.x.x` is not supported)\n * Microsoft Visual C++ ([Express][msvc] version works well)\n * For 64-bit builds of node and native modules you will _also_ need the [Windows 7 64-bit SDK][win7sdk]\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` json\n{\n \"targets\": [\n {\n \"target_name\": \"binding\",\n \"sources\": [ \"src/binding.cc\" ]\n }\n ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command** | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build` | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean` | Removes any the `build` dir if it exists\n| `configure` | Generates project build files for the current platform\n| `rebuild` | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install` | Installs node development header files for the given version\n| `list` | Lists the currently installed node development file versions\n| `remove` | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download\n[msvc]: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express\n[win7sdk]: http://www.microsoft.com/download/en/details.aspx?displayLang=en&id=8279\n", + "_id": "node-gyp@0.6.11", "_from": "node-gyp@~0.6.4" } diff --git a/deps/npm/node_modules/npmconf/LICENSE b/deps/npm/node_modules/npmconf/LICENSE new file mode 100644 index 00000000000..0c44ae716db --- /dev/null +++ b/deps/npm/node_modules/npmconf/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/deps/npm/node_modules/npmconf/config-defs.js b/deps/npm/node_modules/npmconf/config-defs.js index 857f4af3de2..7a6f56bda9e 100644 --- a/deps/npm/node_modules/npmconf/config-defs.js +++ b/deps/npm/node_modules/npmconf/config-defs.js @@ -107,10 +107,7 @@ Object.defineProperty(exports, "defaults", {get: function () { return defaults = { "always-auth" : false - // are there others? - , browser : process.platform === "darwin" ? "open" - : process.platform === "win32" ? "start" - : "google-chrome" + , browser : null , ca : // the npm CA certificate. [ "-----BEGIN CERTIFICATE-----\n"+ @@ -268,7 +265,7 @@ Object.defineProperty(exports, "defaults", {get: function () { exports.types = { "always-auth" : Boolean - , browser : String + , browser : [null, String] , ca: [null, String, Array] , cache : path , "cache-lock-stale": Number diff --git a/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json b/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json index 98ff78d2029..6ee30e7d292 100644 --- a/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json +++ b/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json @@ -24,5 +24,8 @@ }, "readme": "A list of objects, bound by their prototype chain.\n\nUsed in npm's config stuff.\n", "_id": "proto-list@1.2.2", + "dist": { + "shasum": "48b88798261ec2c4a785720cdfec6200d57d3326" + }, "_from": "proto-list@~1.2.1" } diff --git a/deps/npm/node_modules/npmconf/package.json b/deps/npm/node_modules/npmconf/package.json index ea9ac99299f..8d7bd42b6bb 100644 --- a/deps/npm/node_modules/npmconf/package.json +++ b/deps/npm/node_modules/npmconf/package.json @@ -1,6 +1,6 @@ { "name": "npmconf", - "version": "0.0.15", + "version": "0.0.16", "description": "The config thing npm uses", "main": "npmconf.js", "directories": { @@ -36,6 +36,6 @@ }, "license": "BSD", "readme": "# npmconf\n\nThe config thing npm uses\n\nIf you are interested in interacting with the config settings that npm\nuses, then use this module.\n\nHowever, if you are writing a new Node.js program, and want\nconfiguration functionality similar to what npm has, but for your\nown thing, then I'd recommend using [rc](https://github.com/dominictarr/rc),\nwhich is probably what you want.\n\nIf I were to do it all over again, that's what I'd do for npm. But,\nalas, there are many systems depending on many of the particulars of\nnpm's configuration setup, so it's not worth the cost of changing.\n\n## USAGE\n\n```javascript\nvar npmconf = require('npmconf')\n\n// pass in the cli options that you read from the cli\n// or whatever top-level configs you want npm to use for now.\nnpmconf.load({some:'configs'}, function (er, conf) {\n // do stuff with conf\n conf.get('some', 'cli') // 'configs'\n conf.get('username') // 'joebobwhatevers'\n conf.set('foo', 'bar', 'user')\n conf.save('user', function (er) {\n // foo = bar is now saved to ~/.npmrc or wherever\n })\n})\n```\n", - "_id": "npmconf@0.0.15", - "_from": "npmconf@0" + "_id": "npmconf@0.0.16", + "_from": "npmconf@latest" } diff --git a/deps/npm/node_modules/opener/LICENSE.txt b/deps/npm/node_modules/opener/LICENSE.txt new file mode 100644 index 00000000000..60008853930 --- /dev/null +++ b/deps/npm/node_modules/opener/LICENSE.txt @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2012 Domenic Denicola <domenic@domenicdenicola.com>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/deps/npm/node_modules/opener/README.md b/deps/npm/node_modules/opener/README.md new file mode 100644 index 00000000000..fc643654456 --- /dev/null +++ b/deps/npm/node_modules/opener/README.md @@ -0,0 +1,44 @@ +# It Opens Stuff
+
+That is, in your desktop environment. This will make *actual windows pop up*, with stuff in them:
+
+```bash
+npm install opener -g
+
+opener http://google.com
+opener ./my-file.txt
+opener firefox
+opener npm run lint
+```
+
+Also if you want to use it programmatically you can do that too:
+
+```js
+var opener = require("opener");
+
+opener("http://google.com");
+opener("./my-file.txt");
+opener("firefox");
+opener("npm run lint");
+```
+
+## Use It for Good
+
+Like opening the user's browser with a test harness in your package's test script:
+
+```json
+{
+ "scripts": {
+ "test": "opener ./test/runner.html"
+ },
+ "devDependencies": {
+ "opener": "*"
+ }
+}
+```
+
+## Why
+
+Because Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least
+[according to some guy on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all
+three. Like Node.js. And Opener.
diff --git a/deps/npm/node_modules/opener/opener.js b/deps/npm/node_modules/opener/opener.js new file mode 100755 index 00000000000..5477da52b64 --- /dev/null +++ b/deps/npm/node_modules/opener/opener.js @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +"use strict"; + +var childProcess = require("child_process"); + +function opener(args, options, callback) { + // http://stackoverflow.com/q/1480971/3191, but see below for Windows. + var command = process.platform === "win32" ? "cmd" : + process.platform === "darwin" ? "open" : + "xdg-open"; + + if (typeof args === "string") { + args = [args]; + } + + if (typeof options === "function") { + callback = options; + options = {}; + } + + if (options && typeof options === "object" && options.command) { + if (process.platform === "win32") { + // *always* use cmd on windows + args = [options.command].concat(args); + } else { + command = options.command; + } + } + + if (process.platform === "win32") { + // On Windows, we really want to use the "start" command. But, the rules regarding arguments with spaces, and + // escaping them with quotes, can get really arcane. So the easiest way to deal with this is to pass off the + // responsibility to "cmd /c", which has that logic built in. + // + // Furthermore, if "cmd /c" double-quoted the first parameter, then "start" will interpret it as a window title, + // so we need to add a dummy empty-string window title: http://stackoverflow.com/a/154090/3191 + args = ["/c", "start", '""'].concat(args); + } + + childProcess.execFile(command, args, options, callback); +} + +// Export `opener` for programmatic access. +// You might use this to e.g. open a website: `opener("http://google.com")` +module.exports = opener; + +// If we're being called from the command line, just execute, using the command-line arguments. +if (require.main && require.main.id === module.id) { + opener(process.argv.slice(2), function (error) { + if (error) { + throw error; + } + }); +} diff --git a/deps/npm/node_modules/opener/package.json b/deps/npm/node_modules/opener/package.json new file mode 100644 index 00000000000..0d18470bd62 --- /dev/null +++ b/deps/npm/node_modules/opener/package.json @@ -0,0 +1,34 @@ +{ + "name": "opener", + "description": "Opens stuff, like webpages and files and executables, cross-platform", + "version": "1.3.0", + "author": { + "name": "Domenic Denicola", + "email": "domenic@domenicdenicola.com", + "url": "http://domenicdenicola.com" + }, + "license": "WTFPL", + "repository": { + "type": "git", + "url": "git://github.com/domenic/opener.git" + }, + "bugs": { + "url": "http://github.com/domenic/opener/issues" + }, + "main": "opener.js", + "bin": { + "opener": "opener.js" + }, + "scripts": { + "lint": "jshint opener.js" + }, + "devDependencies": { + "jshint": ">= 0.9.0" + }, + "readme": "# It Opens Stuff\r\n\r\nThat is, in your desktop environment. This will make *actual windows pop up*, with stuff in them:\r\n\r\n```bash\r\nnpm install opener -g\r\n\r\nopener http://google.com\r\nopener ./my-file.txt\r\nopener firefox\r\nopener npm run lint\r\n```\r\n\r\nAlso if you want to use it programmatically you can do that too:\r\n\r\n```js\r\nvar opener = require(\"opener\");\r\n\r\nopener(\"http://google.com\");\r\nopener(\"./my-file.txt\");\r\nopener(\"firefox\");\r\nopener(\"npm run lint\");\r\n```\r\n\r\n## Use It for Good\r\n\r\nLike opening the user's browser with a test harness in your package's test script:\r\n\r\n```json\r\n{\r\n \"scripts\": {\r\n \"test\": \"opener ./test/runner.html\"\r\n },\r\n \"devDependencies\": {\r\n \"opener\": \"*\"\r\n }\r\n}\r\n```\r\n\r\n## Why\r\n\r\nBecause Windows has `start`, Macs have `open`, and *nix has `xdg-open`. At least\r\n[according to some guy on StackOverflow](http://stackoverflow.com/q/1480971/3191). And I like things that work on all\r\nthree. Like Node.js. And Opener.\r\n", + "_id": "opener@1.3.0", + "dist": { + "shasum": "d72b4b2e61b0a4ca7822a7554070620002fb90d9" + }, + "_from": "opener@latest" +} diff --git a/deps/npm/package.json b/deps/npm/package.json index 67543612c92..8f92f42189f 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.61", + "version": "1.1.62", "name": "npm", "publishConfig": { "proprietary-attribs": false @@ -68,7 +68,8 @@ "retry": "~0.6.0", "couch-login": "~0.1.9", "once": "~1.1.1", - "npmconf": "0" + "npmconf": "0", + "opener": "~1.3.0" }, "bundleDependencies": [ "semver", @@ -105,7 +106,8 @@ "retry", "couch-login", "once", - "npmconf" + "npmconf", + "opener" ], "devDependencies": { "ronn": "~0.3.6", @@ -117,7 +119,7 @@ }, "scripts": { "test": "node ./test/run.js && tap test/tap/*.js", - "prepublish": "npm prune ; make -j4 doc", + "prepublish": "npm prune ; rm -rf test/*/*/node_modules ; make -j4 doc", "dumpconf": "env | grep npm | sort | uniq", "echo": "node bin/npm-cli.js" }, diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/AUTHORS b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/AUTHORS deleted file mode 100644 index 26d86593ffe..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/AUTHORS +++ /dev/null @@ -1,9 +0,0 @@ -# contributors sorted by whether or not they're me. -Isaac Z. Schlueter <i@izs.me> -Stein Martin Hustad <stein@hustad.com> -Mikeal Rogers <mikeal.rogers@gmail.com> -Laurie Harper <laurie@holoweb.net> -Jann Horn <jann@Jann-PC.fritz.box> -Elijah Insua <tmpvar@gmail.com> -Henry Rawas <henryr@schakra.com> -Justin Makeig <jmpublic@makeig.com> diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/LICENSE b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/LICENSE deleted file mode 100644 index 05a4010949c..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/README.md b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/README.md deleted file mode 100644 index 9c63dc44c30..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/README.md +++ /dev/null @@ -1,213 +0,0 @@ -# sax js - -A sax-style parser for XML and HTML. - -Designed with [node](http://nodejs.org/) in mind, but should work fine in -the browser or other CommonJS implementations. - -## What This Is - -* A very simple tool to parse through an XML string. -* A stepping stone to a streaming HTML parser. -* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML - docs. - -## What This Is (probably) Not - -* An HTML Parser - That's a fine goal, but this isn't it. It's just - XML. -* A DOM Builder - You can use it to build an object model out of XML, - but it doesn't do that out of the box. -* XSLT - No DOM = no querying. -* 100% Compliant with (some other SAX implementation) - Most SAX - implementations are in Java and do a lot more than this does. -* An XML Validator - It does a little validation when in strict mode, but - not much. -* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic - masochism. -* A DTD-aware Thing - Fetching DTDs is a much bigger job. - -## Regarding `<!DOCTYPE`s and `<!ENTITY`s - -The parser will handle the basic XML entities in text nodes and attribute -values: `& < > ' "`. It's possible to define additional -entities in XML by putting them in the DTD. This parser doesn't do anything -with that. If you want to listen to the `ondoctype` event, and then fetch -the doctypes, and read the entities and add them to `parser.ENTITIES`, then -be my guest. - -Unknown entities will fail in strict mode, and in loose mode, will pass -through unmolested. - -## Usage - - var sax = require("./lib/sax"), - strict = true, // set to false for html-mode - parser = sax.parser(strict); - - parser.onerror = function (e) { - // an error happened. - }; - parser.ontext = function (t) { - // got some text. t is the string of text. - }; - parser.onopentag = function (node) { - // opened a tag. node has "name" and "attributes" - }; - parser.onattribute = function (attr) { - // an attribute. attr has "name" and "value" - }; - parser.onend = function () { - // parser stream is done, and ready to have more stuff written to it. - }; - - parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close(); - - // stream usage - // takes the same options as the parser - var saxStream = require("sax").createStream(strict, options) - saxStream.on("error", function (e) { - // unhandled errors will throw, since this is a proper node - // event emitter. - console.error("error!", e) - // clear the error - this._parser.error = null - this._parser.resume() - }) - saxStream.on("opentag", function (node) { - // same object as above - }) - // pipe is supported, and it's readable/writable - // same chunks coming in also go out. - fs.createReadStream("file.xml") - .pipe(saxStream) - .pipe(fs.createReadStream("file-copy.xml")) - - - -## Arguments - -Pass the following arguments to the parser function. All are optional. - -`strict` - Boolean. Whether or not to be a jerk. Default: `false`. - -`opt` - Object bag of settings regarding string formatting. All default to `false`. - -Settings supported: - -* `trim` - Boolean. Whether or not to trim text and comment nodes. -* `normalize` - Boolean. If true, then turn any whitespace into a single - space. -* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode, - rather than uppercasing them. -* `xmlns` - Boolean. If true, then namespaces are supported. - -## Methods - -`write` - Write bytes onto the stream. You don't have to do this all at -once. You can keep writing as much as you want. - -`close` - Close the stream. Once closed, no more data may be written until -it is done processing the buffer, which is signaled by the `end` event. - -`resume` - To gracefully handle errors, assign a listener to the `error` -event. Then, when the error is taken care of, you can call `resume` to -continue parsing. Otherwise, the parser will not continue while in an error -state. - -## Members - -At all times, the parser object will have the following members: - -`line`, `column`, `position` - Indications of the position in the XML -document where the parser currently is looking. - -`startTagPosition` - Indicates the position where the current tag starts. - -`closed` - Boolean indicating whether or not the parser can be written to. -If it's `true`, then wait for the `ready` event to write again. - -`strict` - Boolean indicating whether or not the parser is a jerk. - -`opt` - Any options passed into the constructor. - -`tag` - The current tag being dealt with. - -And a bunch of other stuff that you probably shouldn't touch. - -## Events - -All events emit with a single argument. To listen to an event, assign a -function to `on<eventname>`. Functions get executed in the this-context of -the parser object. The list of supported events are also in the exported -`EVENTS` array. - -When using the stream interface, assign handlers using the EventEmitter -`on` function in the normal fashion. - -`error` - Indication that something bad happened. The error will be hanging -out on `parser.error`, and must be deleted before parsing can continue. By -listening to this event, you can keep an eye on that kind of stuff. Note: -this happens *much* more in strict mode. Argument: instance of `Error`. - -`text` - Text node. Argument: string of text. - -`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string. - -`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument: -object with `name` and `body` members. Attributes are not parsed, as -processing instructions have implementation dependent semantics. - -`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>` -would trigger this kind of event. This is a weird thing to support, so it -might go away at some point. SAX isn't intended to be used to parse SGML, -after all. - -`opentag` - An opening tag. Argument: object with `name` and `attributes`. -In non-strict mode, tag names are uppercased, unless the `lowercasetags` -option is set. If the `xmlns` option is set, then it will contain -namespace binding information on the `ns` member, and will have a -`local`, `prefix`, and `uri` member. - -`closetag` - A closing tag. In loose mode, tags are auto-closed if their -parent closes. In strict mode, well-formedness is enforced. Note that -self-closing tags will have `closeTag` emitted immediately after `openTag`. -Argument: tag name. - -`attribute` - An attribute node. Argument: object with `name` and `value`, -and also namespace information if the `xmlns` option flag is set. - -`comment` - A comment node. Argument: the string of the comment. - -`opencdata` - The opening tag of a `<![CDATA[` block. - -`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get -quite large, this event may fire multiple times for a single block, if it -is broken up into multiple `write()`s. Argument: the string of random -character data. - -`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block. - -`opennamespace` - If the `xmlns` option is set, then this event will -signal the start of a new namespace binding. - -`closenamespace` - If the `xmlns` option is set, then this event will -signal the end of a namespace binding. - -`end` - Indication that the closed stream has ended. - -`ready` - Indication that the stream has reset, and is ready to be written -to. - -`noscript` - In non-strict mode, `<script>` tags trigger a `"script"` -event, and their contents are not checked for special xml characters. -If you pass `noscript: true`, then this behavior is suppressed. - -## Reporting Problems - -It's best to write a failing test if you find an issue. I will always -accept pull requests with failing tests if they demonstrate intended -behavior, but it is very hard to figure out what issue you're describing -without a test. Writing a test is also the best way for you yourself -to figure out if you really understand the issue you think you have with -sax-js. diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/big-not-pretty.xml b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/big-not-pretty.xml deleted file mode 100644 index fb5265dde1a..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/big-not-pretty.xml +++ /dev/null @@ -1,8002 +0,0 @@ -<big> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> -</big> diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/example.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/example.js deleted file mode 100644 index e7f81e6480e..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/example.js +++ /dev/null @@ -1,41 +0,0 @@ - -var fs = require("fs"), - sys = require("sys"), - path = require("path"), - xml = fs.cat(path.join(__dirname, "test.xml")), - sax = require("../lib/sax"), - strict = sax.parser(true), - loose = sax.parser(false, {trim:true}), - inspector = function (ev) { return function (data) { - // sys.error(""); - // sys.error(ev+": "+sys.inspect(data)); - // for (var i in data) sys.error(i+ " "+sys.inspect(data[i])); - // sys.error(this.line+":"+this.column); - }}; - -xml.addCallback(function (xml) { - // strict.write(xml); - - sax.EVENTS.forEach(function (ev) { - loose["on"+ev] = inspector(ev); - }); - loose.onend = function () { - // sys.error("end"); - // sys.error(sys.inspect(loose)); - }; - - // do this one char at a time to verify that it works. - // (function () { - // if (xml) { - // loose.write(xml.substr(0,1000)); - // xml = xml.substr(1000); - // process.nextTick(arguments.callee); - // } else loose.close(); - // })(); - - for (var i = 0; i < 1000; i ++) { - loose.write(xml); - loose.close(); - } - -}); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/get-products.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/get-products.js deleted file mode 100644 index 9e8d74aacd0..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/get-products.js +++ /dev/null @@ -1,58 +0,0 @@ -// pull out /GeneralSearchResponse/categories/category/items/product tags -// the rest we don't care about. - -var sax = require("../lib/sax.js") -var fs = require("fs") -var path = require("path") -var xmlFile = path.resolve(__dirname, "shopping.xml") -var util = require("util") -var http = require("http") - -fs.readFile(xmlFile, function (er, d) { - http.createServer(function (req, res) { - if (er) throw er - var xmlstr = d.toString("utf8") - - var parser = sax.parser(true) - var products = [] - var product = null - var currentTag = null - - parser.onclosetag = function (tagName) { - if (tagName === "product") { - products.push(product) - currentTag = product = null - return - } - if (currentTag && currentTag.parent) { - var p = currentTag.parent - delete currentTag.parent - currentTag = p - } - } - - parser.onopentag = function (tag) { - if (tag.name !== "product" && !product) return - if (tag.name === "product") { - product = tag - } - tag.parent = currentTag - tag.children = [] - tag.parent && tag.parent.children.push(tag) - currentTag = tag - } - - parser.ontext = function (text) { - if (currentTag) currentTag.children.push(text) - } - - parser.onend = function () { - var out = util.inspect(products, false, 3, true) - res.writeHead(200, {"content-type":"application/json"}) - res.end("{\"ok\":true}") - // res.end(JSON.stringify(products)) - } - - parser.write(xmlstr).end() - }).listen(1337) -}) diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/hello-world.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/hello-world.js deleted file mode 100644 index cbfa5184ecd..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/hello-world.js +++ /dev/null @@ -1,4 +0,0 @@ -require("http").createServer(function (req, res) { - res.writeHead(200, {"content-type":"application/json"}) - res.end(JSON.stringify({ok: true})) -}).listen(1337) diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/not-pretty.xml b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/not-pretty.xml deleted file mode 100644 index 9592852d0c0..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/not-pretty.xml +++ /dev/null @@ -1,8 +0,0 @@ -<root> - something<else> blerm <slurm - - - attrib = - "blorg" ></else><!-- COMMENT! - ---><![CDATA[processing...]]> <selfclosing tag="blr>""/> a bit down here</root> diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/pretty-print.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/pretty-print.js deleted file mode 100644 index cd6aca9e1cb..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/pretty-print.js +++ /dev/null @@ -1,74 +0,0 @@ -var sax = require("../lib/sax") - , printer = sax.createStream(false, {lowercasetags:true, trim:true}) - , fs = require("fs") - -function entity (str) { - return str.replace('"', '"') -} - -printer.tabstop = 2 -printer.level = 0 -printer.indent = function () { - print("\n") - for (var i = this.level; i > 0; i --) { - for (var j = this.tabstop; j > 0; j --) { - print(" ") - } - } -} -printer.on("opentag", function (tag) { - this.indent() - this.level ++ - print("<"+tag.name) - for (var i in tag.attributes) { - print(" "+i+"=\""+entity(tag.attributes[i])+"\"") - } - print(">") -}) - -printer.on("text", ontext) -printer.on("doctype", ontext) -function ontext (text) { - this.indent() - print(text) -} - -printer.on("closetag", function (tag) { - this.level -- - this.indent() - print("</"+tag+">") -}) - -printer.on("cdata", function (data) { - this.indent() - print("<![CDATA["+data+"]]>") -}) - -printer.on("comment", function (comment) { - this.indent() - print("<!--"+comment+"-->") -}) - -printer.on("error", function (error) { - console.error(error) - throw error -}) - -if (!process.argv[2]) { - throw new Error("Please provide an xml file to prettify\n"+ - "TODO: read from stdin or take a file") -} -var xmlfile = require("path").join(process.cwd(), process.argv[2]) -var fstr = fs.createReadStream(xmlfile, { encoding: "utf8" }) - -function print (c) { - if (!process.stdout.write(c)) { - fstr.pause() - } -} - -process.stdout.on("drain", function () { - fstr.resume() -}) - -fstr.pipe(printer) diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/shopping.xml b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/shopping.xml deleted file mode 100644 index 223c6c66562..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/shopping.xml +++ /dev/null @@ -1,2 +0,0 @@ - -<GeneralSearchResponse xmlns="urn:types.partner.api.shopping.com"><serverDetail><apiEnv>sandbox</apiEnv><apiVersion>3.1 r31.Kadu4DC.phase3</apiVersion><buildNumber>5778</buildNumber><buildTimestamp>2011.10.06 15:37:23 PST</buildTimestamp><requestId>p2.a121bc2aaf029435dce6</requestId><timestamp>2011-10-21T18:38:45.982-04:00</timestamp><responseTime>P0Y0M0DT0H0M0.169S</responseTime></serverDetail><exceptions exceptionCount="1"><exception type="warning"><code>1112</code><message>You are currently using the SDC API sandbox environment! No clicks to merchant URLs from this response will be paid. Please change the host of your API requests to 'publisher.api.shopping.com' when you have finished development and testing</message></exception></exceptions><clientTracking height="19" type="logo" width="106"><sourceURL>http://statTest.dealtime.com/pixel/noscript?PV_EvnTyp=APPV&APPV_APITSP=10%2F21%2F11_06%3A38%3A45_PM&APPV_DSPRQSID=p2.a121bc2aaf029435dce6&APPV_IMGURL=http://img.shopping.com/sc/glb/sdc_logo_106x19.gif&APPV_LI_LNKINID=7000610&APPV_LI_SBMKYW=nikon&APPV_MTCTYP=1000&APPV_PRTID=2002&APPV_BrnID=14804</sourceURL><hrefURL>http://www.shopping.com/digital-cameras/products</hrefURL><titleText>Digital Cameras</titleText><altText>Digital Cameras</altText></clientTracking><searchHistory><categorySelection id="3"><name>Electronics</name><categoryURL>http://www.shopping.com/xCH-electronics-nikon~linkin_id-7000610?oq=nikon</categoryURL></categorySelection><categorySelection id="449"><name>Cameras and Photography</name><categoryURL>http://www.shopping.com/xCH-cameras_and_photography-nikon~linkin_id-7000610?oq=nikon</categoryURL></categorySelection><categorySelection id="7185"><name>Digital Cameras</name><categoryURL>http://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610</categoryURL></categorySelection><dynamicNavigationHistory><keywordSearch dropped="false" modified="false"><originalKeyword>nikon</originalKeyword><resultKeyword>nikon</resultKeyword></keywordSearch></dynamicNavigationHistory></searchHistory><categories matchedCategoryCount="1" returnedCategoryCount="1"><category id="7185"><name>Digital Cameras</name><categoryURL>http://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610</categoryURL><items matchedItemCount="322" pageNumber="1" returnedItemCount="5"><product id="101677489"><name>Nikon D3100 Digital Camera</name><shortDescription>14.2 Megapixel, SLR Camera, 3 in. LCD Screen, With High Definition Video, Weight: 1 lb.</shortDescription><fullDescription>The Nikon D3100 digital SLR camera speaks to the growing ranks of enthusiastic D-SLR users and aspiring photographers by providing an easy-to-use and affordable entrance to the world of Nikon D-SLR’s. The 14.2-megapixel D3100 has powerful features, such as the enhanced Guide Mode that makes it easy to unleash creative potential and capture memories with still images and full HD video. Like having a personal photo tutor at your fingertips, this unique feature provides a simple graphical interface on the camera’s LCD that guides users by suggesting and/or adjusting camera settings to achieve the desired end result images. The D3100 is also the world’s first D-SLR to introduce full time auto focus (AF) in Live View and D-Movie mode to effortlessly achieve the critical focus needed when shooting Full HD 1080p video.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="500" width="606"><sourceURL>http://di1.shopping.com/images/pi/93/bc/04/101677489-606x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></images><rating><reviewCount>9</reviewCount><rating>4.56</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_4.5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D3100/reviews~linkin_id-7000610</reviewURL></rating><minPrice>429.00</minPrice><maxPrice>1360.00</maxPrice><productOffersURL>http://www.shopping.com/Nikon-D3100/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D3100/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="64" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="-ZW6BMZqz6fbS-aULwga_g==" smartBuy="false" used="false"><name>Nikon D3100 Digital SLR Camera with 18-55mm NIKKOR VR Lens</name><description>The Nikon D3100 Digital SLR Camera is an affordable compact and lightweight photographic power-house. It features the all-purpose 18-55mm VR lens a high-resolution 14.2 MP CMOS sensor along with a feature set that's comprehensive yet easy to navigate - the intuitive onboard learn-as-you grow guide mode allows the photographer to understand what the 3100 can do quickly and easily. Capture beautiful pictures and amazing Full HD 1080p movies with sound and full-time autofocus. Availabilty: In Stock!</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="350" width="350"><sourceURL>http://di102.shopping.com/images/di/2d/5a/57/36424d5a717a366662532d61554c7767615f67-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Free Shipping with Any Purchase!</storeNotes><basePrice currency="USD">529.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">799.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=-ZW6BMZqz6fbS-aULwga_g%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F343.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+Digital+SLR+Camera+with+18-55mm+NIKKOR+VR+Lens&dlprc=529.0&crn=&istrsmrc=1&isathrsl=0&AR=1&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=1&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="475674" trusted="true"><name>FumFie</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475674.gif</sourceURL></logo><phoneNumber>866 666 9198</phoneNumber><ratingInfo><reviewCount>560</reviewCount><rating>4.27</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>F343C5</sku></offer><offer featured="false" id="md1e9lD8vdOu4FHQfJqKng==" smartBuy="false" used="false"><name>Nikon Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR, Cameras</name><description>Nikon D3100 14.2MP Digital SLR Camera with 18-55mm f/3.5-5.6 AF-S DX VR</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="352" width="385"><sourceURL>http://di109.shopping.com/images/di/6d/64/31/65396c443876644f7534464851664a714b6e67-385x352-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">549.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">549.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=779&BEFID=7185&aon=%5E1&MerchantID=305814&crawler_id=305814&dealId=md1e9lD8vdOu4FHQfJqKng%3D%3D&url=http%3A%2F%2Fwww.electronics-expo.com%2Findex.php%3Fpage%3Ditem%26id%3DNIKD3100%26source%3DSideCar%26scpid%3D8%26scid%3Dscsho318727%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Nikon+D3100+14.2MP+Digital+SLR+Camera+with+18-55mm+f%2F3.5-5.6+AF-S+DX+VR%2C+Cameras&dlprc=549.0&crn=&istrsmrc=1&isathrsl=0&AR=9&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=9&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=771&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="305814" trusted="true"><name>Electronics Expo</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/305814.gif</sourceURL></logo><phoneNumber>1-888-707-EXPO</phoneNumber><ratingInfo><reviewCount>371</reviewCount><rating>3.90</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_4.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_electronics_expo~MRD-305814~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>NIKD3100</sku></offer><offer featured="false" id="yYuaXnDFtCY7rDUjkY2aaw==" smartBuy="false" used="false"><name>Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black</name><description>Split-second shutter response captures shots other cameras may have missed Helps eliminate the frustration of shutter delay! 14.2-megapixels for enlargements worth framing and hanging. Takes breathtaking 1080p HD movies. ISO sensitivity from 100-1600 for bright or dimly lit settings. 3.0in. color LCD for beautiful, wide-angle framing and viewing. In-camera image editing lets you retouch with no PC. Automatic scene modes include Child, Sports, Night Portrait and more. Accepts SDHC memory cards. Nikon D3100 14.2-Megapixel Digital SLR Camera With 18-55mm Zoom-Nikkor Lens, Black is one of many Digital SLR Cameras available through Office Depot. Made by Nikon.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="250" width="250"><sourceURL>http://di109.shopping.com/images/di/79/59/75/61586e4446744359377244556a6b5932616177-250x250-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">549.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">699.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=698&BEFID=7185&aon=%5E1&MerchantID=467671&crawler_id=467671&dealId=yYuaXnDFtCY7rDUjkY2aaw%3D%3D&url=http%3A%2F%2Flink.mercent.com%2Fredirect.ashx%3Fmr%3AmerchantID%3DOfficeDepot%26mr%3AtrackingCode%3DCEC9669E-6ABC-E011-9F24-0019B9C043EB%26mr%3AtargetUrl%3Dhttp%3A%2F%2Fwww.officedepot.com%2Fa%2Fproducts%2F486292%2FNikon-D3100-142-Megapixel-Digital-SLR%2F%253fcm_mmc%253dMercent-_-Shopping-_-Cameras_and_Camcorders-_-486292&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+14.2-Megapixel+Digital+SLR+Camera+With+18-55mm+Zoom-Nikkor+Lens%2C+Black&dlprc=549.99&crn=&istrsmrc=1&isathrsl=0&AR=10&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=10&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=690&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="467671" trusted="true"><name>Office Depot</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/467671.gif</sourceURL></logo><phoneNumber>1-800-GO-DEPOT</phoneNumber><ratingInfo><reviewCount>135</reviewCount><rating>2.37</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_office_depot_4158555~MRD-467671~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>486292</sku></offer><offer featured="false" id="Rl56U7CuiTYsH4MGZ02lxQ==" smartBuy="false" used="false"><name>Nikon® D3100™ 14.2MP Digital SLR with 18-55mm Lens</name><description>The Nikon D3100 DSLR will surprise you with its simplicity and impress you with superb results.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di103.shopping.com/images/di/52/6c/35/36553743756954597348344d475a30326c7851-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">549.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">549.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=Rl56U7CuiTYsH4MGZ02lxQ%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D903483107%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D3100%E2%84%A2+14.2MP+Digital+SLR+with+18-55mm+Lens&dlprc=549.99&crn=&istrsmrc=0&isathrsl=0&AR=11&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=11&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>9614867</sku></offer><offer featured="false" id="huS6xZKDKaKMTMP71eI6DA==" smartBuy="false" used="false"><name>Nikon D3100 SLR w/Nikon 18-55mm VR & 55-200mm VR Lenses</name><description>14.2 Megapixels3" LCDLive ViewHD 1080p Video w/ Sound & Autofocus11-point Autofocus3 Frames per Second ShootingISO 100 to 3200 (Expand to 12800-Hi2)Self Cleaning SensorEXPEED 2, Image Processing EngineScene Recognition System</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="345" width="345"><sourceURL>http://di105.shopping.com/images/di/68/75/53/36785a4b444b614b4d544d5037316549364441-345x345-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">695.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">695.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=huS6xZKDKaKMTMP71eI6DA%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D32983%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D3100+SLR+w%2FNikon+18-55mm+VR+%26+55-200mm+VR+Lenses&dlprc=695.0&crn=&istrsmrc=0&isathrsl=0&AR=15&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=101677489&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=15&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>32983</sku></offer></offers></product><product id="95397883"><name>Nikon COOLPIX S203 Digital Camera</name><shortDescription>10 Megapixel, Ultra-Compact Camera, 2.5 in. LCD Screen, 3x Optical Zoom, With Video Capability, Weight: 0.23 lb.</shortDescription><fullDescription>With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="499" width="500"><sourceURL>http://di1.shopping.com/images/pi/c4/ef/1b/95397883-500x499-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=2</sourceURL></image></images><rating><reviewCount>0</reviewCount></rating><minPrice>139.00</minPrice><maxPrice>139.00</maxPrice><productOffersURL>http://www.shopping.com/Nikon-Coolpix-S203/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-Coolpix-S203/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="1" pageNumber="1" returnedOfferCount="1"><offer featured="false" id="sBd2JnIEPM-A_lBAM1RZgQ==" smartBuy="false" used="false"><name>Nikon Coolpix S203 Digital Camera (Red)</name><description>With 10.34 mega pixel, electronic VR vibration reduction, 5-level brightness adjustment, 3x optical zoom, and TFT LCD, Nikon Coolpix s203 fulfills all the demands of any photographer. The digital camera has an inbuilt memory of 44MB and an external memory slot made for all kinds of SD (Secure Digital) cards.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di108.shopping.com/images/di/73/42/64/324a6e4945504d2d415f6c42414d31525a6751-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Fantastic prices with ease & comfort of Amazon.com!</storeNotes><basePrice currency="USD">139.00</basePrice><shippingCost currency="USD">9.50</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=sBd2JnIEPM-A_lBAM1RZgQ%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB002T964IM%2Fref%3Dasc_df_B002T964IM1751618%3Fsmid%3DA22UHVNXG98FAT%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB002T964IM&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S203+Digital+Camera+%28Red%29&dlprc=139.0&crn=&istrsmrc=0&isathrsl=0&AR=63&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=95397883&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=63&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=518&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="301531" trusted="false"><name>Amazon Marketplace</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/301531.gif</sourceURL></logo><ratingInfo><reviewCount>213</reviewCount><rating>2.73</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>B002T964IM</sku></offer></offers></product><product id="106834268"><name>Nikon S3100 Digital Camera</name><shortDescription>14.5 Megapixel, Compact Camera, 2.7 in. LCD Screen, 5x Optical Zoom, With High Definition Video, Weight: 0.23 lb.</shortDescription><fullDescription>This digital camera features a wide-angle optical Zoom-NIKKOR glass lens that allows you to capture anything from landscapes to portraits to action shots. The high-definition movie mode with one-touch recording makes it easy to capture video clips.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="387" width="507"><sourceURL>http://di1.shopping.com/images/pi/66/2d/33/106834268-507x387-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=3</sourceURL></image></images><rating><reviewCount>1</reviewCount><rating>2.00</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_2.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/nikon-s3100/reviews~linkin_id-7000610</reviewURL></rating><minPrice>99.95</minPrice><maxPrice>134.95</maxPrice><productOffersURL>http://www.shopping.com/nikon-s3100/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/nikon-s3100/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="67" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="UUyGoqV8r0-xrkn-rnGNbg==" smartBuy="false" used="false"><name>CoolPix S3100 14 Megapixel Compact Digital Camera- Red</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - red</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di111.shopping.com/images/di/55/55/79/476f71563872302d78726b6e2d726e474e6267-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=UUyGoqV8r0-xrkn-rnGNbg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJ3Yx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmDAJeU1oyGG0GcBdhGwUGCAVqYF9SO0xSN1sZdmA7dmMdBQAJB24qX1NbQxI6AjA2ME5dVFULPDsGPFcQTTdaLTA6SR0OFlQvPAwMDxYcYlxIVkcoLTcCDA%3D%3D%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=CoolPix+S3100+14+Megapixel+Compact+Digital+Camera-+Red&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=28&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=28&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337013000</sku></offer><offer featured="false" id="X87AwXlW1dXoMXk4QQDToQ==" smartBuy="false" used="false"><name>COOLPIX S3100 Pink</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - pink</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di111.shopping.com/images/di/58/38/37/4177586c573164586f4d586b34515144546f51-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=X87AwXlW1dXoMXk4QQDToQ%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJxYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGsPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Pink&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=31&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=31&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337015000</sku></offer><offer featured="false" id="nvFwnpfA4rlA1Dbksdsa0w==" smartBuy="false" used="false"><name>Nikon Coolpix S3100 14.0 MP Digital Camera - Silver</name><description>Nikon Coolpix S3100 14.0 MP Digital Camera - Silver</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="270" width="270"><sourceURL>http://di109.shopping.com/images/di/6e/76/46/776e70664134726c413144626b736473613077-270x270-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">109.97</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">109.97</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=803&BEFID=7185&aon=%5E&MerchantID=475774&crawler_id=475774&dealId=nvFwnpfA4rlA1Dbksdsa0w%3D%3D&url=http%3A%2F%2Fwww.thewiz.com%2Fcatalog%2Fproduct.jsp%3FmodelNo%3DS3100SILVER%26gdftrk%3DgdfV2677_a_7c996_a_7c4049_a_7c26262&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+Coolpix+S3100+14.0+MP+Digital+Camera+-+Silver&dlprc=109.97&crn=&istrsmrc=0&isathrsl=0&AR=33&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=33&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=797&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="475774" trusted="false"><name>TheWiz.com</name><logo available="false" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475774.gif</sourceURL></logo><phoneNumber>877-542-6988</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>26262</sku></offer><offer featured="false" id="5GtaN2NeryKwps-Se2l-4g==" smartBuy="false" used="false"><name>Nikon� COOLPIX� S3100 14MP Digital Camera (Silver)</name><description>The Nikon COOLPIX S3100 is the easy way to share your life and stay connected.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di102.shopping.com/images/di/35/47/74/614e324e6572794b7770732d5365326c2d3467-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">119.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">119.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=5GtaN2NeryKwps-Se2l-4g%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D848064082%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C3%AF%C2%BF%C2%BD+COOLPIX%C3%AF%C2%BF%C2%BD+S3100+14MP+Digital+Camera+%28Silver%29&dlprc=119.99&crn=&istrsmrc=0&isathrsl=0&AR=37&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=37&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=509&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>10101095</sku></offer><offer featured="false" id="a43m0RXulX38zCnQjU59jw==" smartBuy="false" used="false"><name>COOLPIX S3100 Yellow</name><description>Nikon Coolpix S3100 - Digital camera - compact - 14.0 Mpix - optical zoom: 5 x - supported memory: SD, SDXC, SDHC - yellow</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di107.shopping.com/images/di/61/34/33/6d305258756c5833387a436e516a5535396a77-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">119.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.95</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">139.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=a43m0RXulX38zCnQjU59jw%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBJpFHJwYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcUFxDEGoPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=COOLPIX+S3100+Yellow&dlprc=119.95&crn=&istrsmrc=1&isathrsl=0&AR=38&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=106834268&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=38&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=0&code=&acode=583&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00337014000</sku></offer></offers></product><product id="99671132"><name>Nikon D90 Digital Camera</name><shortDescription>12.3 Megapixel, Point and Shoot Camera, 3 in. LCD Screen, With Video Capability, Weight: 1.36 lb.</shortDescription><fullDescription>Untitled Document Nikon D90 SLR Digital Camera With 28-80mm 75-300mm Lens Kit The Nikon D90 SLR Digital Camera, with its 12.3-megapixel DX-format CMOS, 3" High resolution LCD display, Scene Recognition System, Picture Control, Active D-Lighting, and one-button Live View, provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="255" width="499"><sourceURL>http://di1.shopping.com/images/pi/52/fb/d3/99671132-499x255-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=4</sourceURL></image></images><rating><reviewCount>7</reviewCount><rating>5.00</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/reviews~linkin_id-7000610</reviewURL></rating><minPrice>689.00</minPrice><maxPrice>2299.00</maxPrice><productOffersURL>http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D90-with-18-270mm-Lens/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="43" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="GU5JJkpUAxe5HujB7fkwAA==" smartBuy="false" used="false"><name>Nikon® D90 12.3MP Digital SLR Camera (Body Only)</name><description>The Nikon D90 will make you rethink what a digital SLR camera can achieve.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di106.shopping.com/images/di/47/55/35/4a4a6b70554178653548756a4237666b774141-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1015.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1015.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=GU5JJkpUAxe5HujB7fkwAA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D851830266%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=1015.99&crn=&istrsmrc=0&isathrsl=0&AR=14&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=14&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>10148659</sku></offer><offer featured="false" id="XhURuSC-spBbTIDfo4qfzQ==" smartBuy="false" used="false"><name>Nikon D90 SLR Digital Camera (Camera Body)</name><description>The Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CCD 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View provides photo enthusiasts with the image quality and performance they need to pursue their own vision while still being intuitive enough for use as an everyday camera. In addition the D90 introduces the D-Movie mode allowing for the first time an interchangeable lens SLR camera that is capable of recording 720p HD movie clips. Availabilty: In Stock</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="350" width="350"><sourceURL>http://di109.shopping.com/images/di/58/68/55/527553432d73704262544944666f3471667a51-350x350-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Free Shipping with Any Purchase!</storeNotes><basePrice currency="USD">689.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">900.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=647&BEFID=7185&aon=%5E1&MerchantID=475674&crawler_id=475674&dealId=XhURuSC-spBbTIDfo4qfzQ%3D%3D&url=http%3A%2F%2Fwww.fumfie.com%2Fproduct%2F169.5%2Fshopping-com%3F&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+Digital+Camera+%28Camera+Body%29&dlprc=689.0&crn=&istrsmrc=1&isathrsl=0&AR=16&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=16&cid=&semid1=&semid2=&IsLps=0&CC=1&SL=1&FS=1&code=&acode=658&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="475674" trusted="true"><name>FumFie</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/475674.gif</sourceURL></logo><phoneNumber>866 666 9198</phoneNumber><ratingInfo><reviewCount>560</reviewCount><rating>4.27</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_fumfie~MRD-475674~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>F169C5</sku></offer><offer featured="false" id="o0Px_XLWDbrxAYRy3rCmyQ==" smartBuy="false" used="false"><name>Nikon D90 SLR w/Nikon 18-105mm VR & 55-200mm VR Lenses</name><description>12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di101.shopping.com/images/di/6f/30/50/785f584c5744627278415952793372436d7951-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1189.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1189.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=o0Px_XLWDbrxAYRy3rCmyQ%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30619%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+%26+55-200mm+VR+Lenses&dlprc=1189.0&crn=&istrsmrc=0&isathrsl=0&AR=20&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=20&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>30619</sku></offer><offer featured="false" id="4HgbWJSJ8ssgIf8B0MXIwA==" smartBuy="false" used="false"><name>Nikon D90 12.3 Megapixel Digital SLR Camera (Body Only)</name><description>Fusing 12.3 megapixel image quality and a cinematic 24fps D-Movie Mode, the Nikon D90 exceeds the demands of passionate photographers. Coupled with Nikon's EXPEED image processing technologies and NIKKOR optics, breathtaking image fidelity is assured. Combined with fast 0.15ms power-up and split-second 65ms shooting lag, dramatic action and decisive moments are captured easily. Effective 4-frequency, ultrasonic sensor cleaning frees image degrading dust particles from the sensor's optical low pass filter.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di110.shopping.com/images/di/34/48/67/62574a534a3873736749663842304d58497741-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>FREE FEDEX 2-3 DAY DELIVERY</storeNotes><basePrice currency="USD">899.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">899.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=269&BEFID=7185&aon=%5E&MerchantID=9296&crawler_id=811558&dealId=4HgbWJSJ8ssgIf8B0MXIwA%3D%3D&url=http%3A%2F%2Fwww.pcnation.com%2Foptics-gallery%2Fdetails.asp%3Faffid%3D305%26item%3D2N145P&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3+Megapixel+Digital+SLR+Camera+%28Body+Only%29&dlprc=899.95&crn=&istrsmrc=1&isathrsl=0&AR=21&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=21&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=257&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="9296" trusted="true"><name>PCNation</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/9296.gif</sourceURL></logo><phoneNumber>800-470-7079</phoneNumber><ratingInfo><reviewCount>1622</reviewCount><rating>4.43</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_pcnation_9689~MRD-9296~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>2N145P</sku></offer><offer featured="false" id="UNDa3uMDZXOnvD_7sTILYg==" smartBuy="false" used="false"><name>Nikon D90 12.3MP Digital SLR Camera (Body Only)</name><description>Fusing 12.3-megapixel image quality inherited from the award-winning D300 with groundbreaking features, the D90's breathtaking, low-noise image quality is further advanced with EXPEED image processing. Split-second shutter response and continuous shooting at up to 4.5 frames-per-second provide the power to capture fast action and precise moments perfectly, while Nikon's exclusive Scene Recognition System contributes to faster 11-area autofocus performance, finer white balance detection and more. The D90 delivers the control passionate photographers demand, utilizing comprehensive exposure functions and the intelligence of 3D Color Matrix Metering II. Stunning results come to life on a 3-inch 920,000-dot color LCD monitor, providing accurate image review, Live View composition and brilliant playback of the D90's cinematic-quality 24-fps HD D-Movie mode.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di102.shopping.com/images/di/55/4e/44/6133754d445a584f6e76445f377354494c5967-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Fantastic prices with ease & comfort of Amazon.com!</storeNotes><basePrice currency="USD">780.00</basePrice><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">780.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=566&BEFID=7185&aon=%5E1&MerchantID=301531&crawler_id=1903313&dealId=UNDa3uMDZXOnvD_7sTILYg%3D%3D&url=http%3A%2F%2Fwww.amazon.com%2Fdp%2FB001ET5U92%2Fref%3Dasc_df_B001ET5U921751618%3Fsmid%3DAHF4SYKP09WBH%26tag%3Ddealtime-ce-mp01feed-20%26linkCode%3Dasn%26creative%3D395105%26creativeASIN%3DB001ET5U92&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+12.3MP+Digital+SLR+Camera+%28Body+Only%29&dlprc=780.0&crn=&istrsmrc=0&isathrsl=0&AR=29&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=99671132&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=29&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=520&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="301531" trusted="false"><name>Amazon Marketplace</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/301531.gif</sourceURL></logo><ratingInfo><reviewCount>213</reviewCount><rating>2.73</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_amazon_marketplace_9689~MRD-301531~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>B001ET5U92</sku></offer></offers></product><product id="70621646"><name>Nikon D90 Digital Camera with 18-105mm lens</name><shortDescription>12.9 Megapixel, SLR Camera, 3 in. LCD Screen, 5.8x Optical Zoom, With Video Capability, Weight: 2.3 lb.</shortDescription><fullDescription>Its 12.3 megapixel DX-format CMOS image sensor and EXPEED image processing system offer outstanding image quality across a wide ISO light sensitivity range. Live View mode lets you compose and shoot via the high-resolution 3-inch LCD monitor, and an advanced Scene Recognition System and autofocus performance help capture images with astounding accuracy. Movies can be shot in Motion JPEG format using the D-Movie function. The camera’s large image sensor ensures exceptional movie image quality and you can create dramatic effects by shooting with a wide range of interchangeable NIKKOR lenses, from wide-angle to macro to fisheye, or by adjusting the lens aperture and experimenting with depth-of-field. The D90 – designed to fuel your passion for photography.</fullDescription><images><image available="true" height="100" width="100"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="489" width="490"><sourceURL>http://di1.shopping.com/images/pi/57/6a/4f/70621646-490x489-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=2&c=1&l=7000610&t=111021183845&r=5</sourceURL></image></images><rating><reviewCount>32</reviewCount><rating>4.81</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/pr/sdc_stars_sm_5.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/reviews~linkin_id-7000610</reviewURL></rating><minPrice>849.95</minPrice><maxPrice>1599.95</maxPrice><productOffersURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/prices~linkin_id-7000610</productOffersURL><productSpecsURL>http://www.shopping.com/Nikon-D90-with-18-105mm-lens/info~linkin_id-7000610</productSpecsURL><offers matchedOfferCount="25" pageNumber="1" returnedOfferCount="5"><offer featured="false" id="3o5e1VghgJPfhLvT1JFKTA==" smartBuy="false" used="false"><name>Nikon D90 18-105mm VR Lens</name><description>The Nikon D90 SLR Digital Camera with its 12.3-megapixel DX-format CMOS 3" High resolution LCD display Scene Recognition System Picture Control Active D-Lighting and one-button Live View prov</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image><image available="true" height="260" width="260"><sourceURL>http://di111.shopping.com/images/di/33/6f/35/6531566768674a5066684c7654314a464b5441-260x260-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=1</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">849.95</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">849.95</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=419&BEFID=7185&aon=%5E1&MerchantID=9390&crawler_id=1905054&dealId=3o5e1VghgJPfhLvT1JFKTA%3D%3D&url=http%3A%2F%2Fwww.ajrichard.com%2FNikon-D90-18-105mm-VR-Lens%2Fp-292%3Frefid%3DShopping%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+18-105mm+VR+Lens&dlprc=849.95&crn=&istrsmrc=0&isathrsl=0&AR=2&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=2&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=425&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="9390" trusted="false"><name>AJRichard</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/9390.gif</sourceURL></logo><phoneNumber>1-888-871-1256</phoneNumber><ratingInfo><reviewCount>3124</reviewCount><rating>4.48</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_ajrichard~MRD-9390~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>292</sku></offer><offer featured="false" id="_lYWj_jbwfsSkfcwUcDuww==" smartBuy="false" used="false"><name>Nikon D90 SLR w/Nikon 18-105mm VR Lens</name><description>12.3 MegapixelDX Format CMOS Sensor3" VGA LCD DisplayLive ViewSelf Cleaning SensorD-Movie ModeHigh Sensitivity (ISO 3200)4.5 fps BurstIn-Camera Image Editing</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image><image available="true" height="500" width="500"><sourceURL>http://di108.shopping.com/images/di/5f/6c/59/576a5f6a62776673536b666377556344757777-500x500-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=2</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">909.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">909.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=371&BEFID=7185&aon=%5E1&MerchantID=487342&crawler_id=487342&dealId=_lYWj_jbwfsSkfcwUcDuww%3D%3D&url=http%3A%2F%2Fwww.rythercamera.com%2Fcatalog%2Fproduct_info.php%3Fcsv%3Dsh%26products_id%3D30971%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+SLR+w%2FNikon+18-105mm+VR+Lens&dlprc=909.0&crn=&istrsmrc=0&isathrsl=0&AR=3&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=3&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=1&code=&acode=379&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="487342" trusted="false"><name>RytherCamera.com</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/487342.gif</sourceURL></logo><phoneNumber>1-877-644-7593</phoneNumber><ratingInfo><reviewCount>0</reviewCount></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>30971</sku></offer><offer featured="false" id="1KCclCGuWvty2XKU9skadg==" smartBuy="false" used="false"><name>25448/D90 12.3 Megapixel Digital Camera 18-105mm Zoom Lens w/ 3" Screen - Black</name><description>Nikon D90 - Digital camera - SLR - 12.3 Mpix - Nikon AF-S DX 18-105mm lens - optical zoom: 5.8 x - supported memory: SD, SDHC</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image><image available="true" height="400" width="400"><sourceURL>http://di110.shopping.com/images/di/31/4b/43/636c4347755776747932584b5539736b616467-400x400-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=3</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Get 30 days FREE SHIPPING w/ ShipVantage</storeNotes><basePrice currency="USD">1199.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">8.20</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1199.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=578&BEFID=7185&aon=%5E1&MerchantID=485615&crawler_id=485615&dealId=1KCclCGuWvty2XKU9skadg%3D%3D&url=http%3A%2F%2Fsears.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1NbQBRtFXpzYx0CTAICI2BbH1lEFmgKP3QvUVpEREdlfUAUHAQPLVpFTVdtJzxAHUNYW3AhQBM0QhFvEXAbYh8EAAVmb2JcVlhCGGkPc3QDEkFZVQ0WFhdRW0MWbgYWDlxzdGMdAVQWRi0xDAwPFhw9TSobb05eWVVYKzsLTFVVQi5RICs3SA8MU1s2MQQKD1wf%26nAID%3D13736960%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=25448%2FD90+12.3+Megapixel+Digital+Camera+18-105mm+Zoom+Lens+w%2F+3%22+Screen+-+Black&dlprc=1199.0&crn=&istrsmrc=1&isathrsl=0&AR=4&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=4&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=586&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="485615" trusted="true"><name>Sears</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/485615.gif</sourceURL></logo><phoneNumber>1-800-349-4358</phoneNumber><ratingInfo><reviewCount>888</reviewCount><rating>2.85</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_3.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_sears_4189479~MRD-485615~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>00353197000</sku></offer><offer featured="false" id="3-VOSfVV5Jo7HlA4kJtanA==" smartBuy="false" used="false"><name>Nikon® D90 12.3MP Digital SLR with 18-105mm Lens</name><description>The Nikon D90 will make you rethink what a digital SLR camera can achieve.</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="300" width="300"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image><image available="true" height="220" width="220"><sourceURL>http://di101.shopping.com/images/di/33/2d/56/4f53665656354a6f37486c41346b4a74616e41-220x220-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=4</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><basePrice currency="USD">1350.99</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">6.05</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1350.99</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=504&BEFID=7185&aon=%5E1&MerchantID=332477&crawler_id=332477&dealId=3-VOSfVV5Jo7HlA4kJtanA%3D%3D&url=http%3A%2F%2Ftracking.searchmarketing.com%2Fgsic.asp%3Faid%3D982673361%26&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon%C2%AE+D90+12.3MP+Digital+SLR+with+18-105mm+Lens&dlprc=1350.99&crn=&istrsmrc=0&isathrsl=0&AR=5&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=5&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=0&FS=0&code=&acode=496&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="332477" trusted="false"><name>RadioShack</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/332477.gif</sourceURL></logo><ratingInfo><reviewCount>24</reviewCount><rating>2.25</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_25.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_radioshack_9689~MRD-332477~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>11148905</sku></offer><offer featured="false" id="kQnB6rS4AjN5dx5h2_631g==" smartBuy="false" used="false"><name>Nikon D90 Kit 12.3-megapixel Digital SLR with 18-105mm VR Lens</name><description>Photographers, take your passion further!Now is the time for new creativity, and to rethink what a digital SLR camera can achieve. It's time for the D90, a camera with everything you would expect from Nikon's next-generation D-SLRs, and some unexpected surprises, as well. The stunning image quality is inherited from the D300, Nikon's DX-format flagship. The D90 also has Nikon's unmatched ergonomics and high performance, and now takes high-quality movies with beautifully cinematic results. The world of photography has changed, and with the D90 in your hands, it's time to make your own rules.AF-S DX NIKKOR 18-105mm f/3.5-5.6G ED VR LensWide-ratio 5.8x zoom Compact, versatile and ideal for a broad range of shooting situations, ranging from interiors and landscapes to beautiful portraits� a perfect everyday zoom. Nikon VR (Vibration Reduction) image stabilization Vibration Reduction is engineered specifically for each VR NIKKOR lens and enables handheld shooting at up to 3 shutter speeds slower than would</description><categoryId>7185</categoryId><manufacturer>Nikon</manufacturer><imageList><image available="true" height="100" width="100"><sourceURL>http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-100x100-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="200" width="200"><sourceURL>http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-200x200-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="300" width="300"><sourceURL>http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x300-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="false" height="400" width="400"><sourceURL>http://img.shopping.com/sc/ds/no_image_100X100.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image><image available="true" height="232" width="300"><sourceURL>http://di110.shopping.com/images/di/6b/51/6e/4236725334416a4e3564783568325f36333167-300x232-0-0.jpg?p=p2.a121bc2aaf029435dce6&a=1&c=1&l=7000610&t=111021183845&r=5</sourceURL></image></imageList><stockStatus>in-stock</stockStatus><storeNotes>Shipping Included!</storeNotes><basePrice currency="USD">1050.00</basePrice><tax checkSite="true"></tax><shippingCost currency="USD">0.00</shippingCost><totalPrice checkSite="true"></totalPrice><originalPrice currency="USD">1199.00</originalPrice><offerURL>http://statTest.dealtime.com/DealFrame/DealFrame.cmp?bm=135&BEFID=7185&aon=%5E1&MerchantID=313162&crawler_id=313162&dealId=kQnB6rS4AjN5dx5h2_631g%3D%3D&url=http%3A%2F%2Fonecall.rdr.channelintelligence.com%2Fgo.asp%3FfVhzOGNRAAQIASNiE1pZSxNoWHFwLx8GTAICa2ZeH1sPXTZLNzRpAh1HR0BxPQEGCBJNMhFHUElsFCFCVkVTTHAcBggEHQ4aHXNpGERGH3RQODsbAgdechJtbBt8fx8JAwhtZFAzJj1oGgIWCxRlNyFOUV9UUGIxBgo0T0IyTSYqJ0RWHw4QPCIBAAQXRGMDICg6TllZVBhh%26nAID%3D13736960&linkin_id=7000610&Issdt=111021183845&searchID=p2.a121bc2aaf029435dce6&DealName=Nikon+D90+Kit+12.3-megapixel+Digital+SLR+with+18-105mm+VR+Lens&dlprc=1050.0&crn=&istrsmrc=1&isathrsl=0&AR=6&NG=20&NDP=200&PN=1&ST=7&DB=sdcprod&MT=phx-pkadudc2&FPT=DSP&NDS=&NMS=&MRS=&PD=70621646&brnId=14804&IsFtr=0&IsSmart=0&DMT=&op=&CM=&DlLng=1&RR=6&cid=&semid1=&semid2=&IsLps=0&CC=0&SL=1&FS=1&code=&acode=143&category=&HasLink=&frameId=&ND=&MN=&PT=&prjID=&GR=&lnkId=&VK=</offerURL><store authorizedReseller="false" id="313162" trusted="true"><name>OneCall</name><logo available="true" height="31" width="88"><sourceURL>http://img.shopping.com/cctool/merch_logos/313162.gif</sourceURL></logo><phoneNumber>1.800.398.0766</phoneNumber><ratingInfo><reviewCount>180</reviewCount><rating>4.44</rating><ratingImage height="18" width="91"><sourceURL>http://img.shopping.com/sc/mr/sdc_checks_45.gif</sourceURL></ratingImage><reviewURL>http://www.shopping.com/xMR-store_onecall_9689~MRD-313162~S-1~linkin_id-7000610</reviewURL></ratingInfo><countryFlag height="11" width="18"><sourceURL>http://img.shopping.com/sc/glb/flag/US.gif</sourceURL><countryCode>US</countryCode></countryFlag></store><sku>92826</sku></offer></offers></product></items><attributes matchedAttributeCount="5" returnedAttributeCount="5"><attribute id="Dynamic_Price_Range"><name>Price range</name><attributeURL>http://www.shopping.com/digital-cameras/nikon/products?oq=nikon&linkin_id=7000610</attributeURL><attributeValues matchedValueCount="2" returnedValueCount="2"><attributeValue id="price_range_24_4012" matchingItemsCount="1"><name>$24 - $4012</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon/products?minPrice=24&maxPrice=4012&linkin_id=7000610</attributeValueURL></attributeValue><attributeValue id="price_range_4012_7999" matchingItemsCount="1"><name>$4012 - $7999</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon/products?minPrice=4012&maxPrice=7999&linkin_id=7000610</attributeValueURL></attributeValue></attributeValues></attribute><attribute id="9688_brand"><name>Brand</name><attributeURL>http://www.shopping.com/digital-cameras/nikon/products~all-9688-brand~MS-1?oq=nikon&linkin_id=7000610</attributeURL><attributeValues matchedValueCount="7" returnedValueCount="5"><attributeValue id="brand_nikon" matchingItemsCount="2261"><name>Nikon</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+brand-nikon/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="9688_brand_crane" matchingItemsCount="17"><name>Crane</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+9688-brand-crane/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="ikelite" matchingItemsCount="2"><name>Ikelite</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+ikelite/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="bower" matchingItemsCount="1"><name>Bower</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+bower/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="brand_fuji" matchingItemsCount="2"><name>FUJIFILM</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+brand-fuji/products~linkin_id-7000610</attributeValueURL></attributeValue></attributeValues></attribute><attribute id="store"><name>Store</name><attributeURL>http://www.shopping.com/digital-cameras/nikon/products~all-store~MS-1?oq=nikon&linkin_id=7000610</attributeURL><attributeValues matchedValueCount="35" returnedValueCount="5"><attributeValue id="store_amazon_marketplace_9689" matchingItemsCount="808"><name>Amazon Marketplace</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+store-amazon-marketplace-9689/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="store_amazon" matchingItemsCount="83"><name>Amazon</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+store-amazon/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="store_adorama" matchingItemsCount="81"><name>Adorama</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+store-adorama/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="store_j_r_music_and_computer_world" matchingItemsCount="78"><name>J&R Music and Computer World</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+store-j-r-music-and-computer-world/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="store_rythercamera_com" matchingItemsCount="78"><name>RytherCamera.com</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+store-rythercamera-com/products~linkin_id-7000610</attributeValueURL></attributeValue></attributeValues></attribute><attribute id="21885_resolution"><name>Resolution</name><attributeURL>http://www.shopping.com/digital-cameras/nikon/products~all-21885-resolution~MS-1?oq=nikon&linkin_id=7000610</attributeURL><attributeValues matchedValueCount="13" returnedValueCount="5"><attributeValue id="under_4_megapixel" matchingItemsCount="3"><name>Under 4 Megapixel</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+under-4-megapixel/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="5_megapixel_digital_cameras" matchingItemsCount="1085"><name>At least 5 Megapixel</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+5-megapixel-digital-cameras/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="6_megapixel_digital_cameras" matchingItemsCount="1080"><name>At least 6 Megapixel</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+6-megapixel-digital-cameras/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="7_megapixel_digital_cameras" matchingItemsCount="1066"><name>At least 7 Megapixel</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+7-megapixel-digital-cameras/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="8_megapixel_digital_cameras" matchingItemsCount="1056"><name>At least 8 Megapixel</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+8-megapixel-digital-cameras/products~linkin_id-7000610</attributeValueURL></attributeValue></attributeValues></attribute><attribute id="32804-features"><name>Features</name><attributeURL>http://www.shopping.com/digital-cameras/nikon/products~all-32804-features~MS-1?oq=nikon&linkin_id=7000610</attributeURL><attributeValues matchedValueCount="12" returnedValueCount="5"><attributeValue id="32804_features_shockproof" matchingItemsCount="7"><name>Shockproof</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+32804-features-shockproof/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="32804_features_waterproof" matchingItemsCount="32"><name>Waterproof</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+32804-features-waterproof/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="32804_features_freezeproof" matchingItemsCount="7"><name>Freezeproof</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+32804-features-freezeproof/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="32804_features_dust_proof" matchingItemsCount="23"><name>Dust proof</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+32804-features-dust-proof/products~linkin_id-7000610</attributeValueURL></attributeValue><attributeValue id="32804_features_image_stabilization" matchingItemsCount="797"><name>Image Stabilization</name><attributeValueURL>http://www.shopping.com/digital-cameras/nikon+32804-features-image-stabilization/products~linkin_id-7000610</attributeValueURL></attributeValue></attributeValues></attribute></attributes><contentType>hybrid</contentType></category></categories><relatedTerms><term>digital camera</term><term>g1</term><term>sony</term><term>camera</term><term>canon</term><term>nikon</term><term>kodak digital camera</term><term>kodak</term><term>sony cybershot</term><term>kodak easyshare digital camera</term><term>nikon coolpix</term><term>olympus</term><term>pink digital camera</term><term>canon powershot</term></relatedTerms></GeneralSearchResponse>
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/strict.dtd b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/strict.dtd deleted file mode 100644 index b27455943fc..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/strict.dtd +++ /dev/null @@ -1,870 +0,0 @@ -<!-- - This is HTML 4.01 Strict DTD, which excludes the presentation - attributes and elements that W3C expects to phase out as - support for style sheets matures. Authors should use the Strict - DTD when possible, but may use the Transitional DTD when support - for presentation attribute and elements is required. - - HTML 4 includes mechanisms for style sheets, scripting, - embedding objects, improved support for right to left and mixed - direction text, and enhancements to forms for improved - accessibility for people with disabilities. - - Draft: $Date: 1999/12/24 23:37:48 $ - - Authors: - Dave Raggett <dsr@w3.org> - Arnaud Le Hors <lehors@w3.org> - Ian Jacobs <ij@w3.org> - - Further information about HTML 4.01 is available at: - - http://www.w3.org/TR/1999/REC-html401-19991224 - - - The HTML 4.01 specification includes additional - syntactic constraints that cannot be expressed within - the DTDs. - ---> -<!-- - Typical usage: - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" - "http://www.w3.org/TR/html4/strict.dtd"> - <html> - <head> - ... - </head> - <body> - ... - </body> - </html> - - The URI used as a system identifier with the public identifier allows - the user agent to download the DTD and entity sets as needed. - - The FPI for the Transitional HTML 4.01 DTD is: - - "-//W3C//DTD HTML 4.01 Transitional//EN" - - This version of the transitional DTD is: - - http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd - - If you are writing a document that includes frames, use - the following FPI: - - "-//W3C//DTD HTML 4.01 Frameset//EN" - - This version of the frameset DTD is: - - http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd - - Use the following (relative) URIs to refer to - the DTDs and entity definitions of this specification: - - "strict.dtd" - "loose.dtd" - "frameset.dtd" - "HTMLlat1.ent" - "HTMLsymbol.ent" - "HTMLspecial.ent" - ---> - -<!--================== Imported Names ====================================--> -<!-- Feature Switch for frameset documents --> -<!ENTITY % HTML.Frameset "IGNORE"> - -<!ENTITY % ContentType "CDATA" - -- media type, as per [RFC2045] - --> - -<!ENTITY % ContentTypes "CDATA" - -- comma-separated list of media types, as per [RFC2045] - --> - -<!ENTITY % Charset "CDATA" - -- a character encoding, as per [RFC2045] - --> - -<!ENTITY % Charsets "CDATA" - -- a space-separated list of character encodings, as per [RFC2045] - --> - -<!ENTITY % LanguageCode "NAME" - -- a language code, as per [RFC1766] - --> - -<!ENTITY % Character "CDATA" - -- a single character from [ISO10646] - --> - -<!ENTITY % LinkTypes "CDATA" - -- space-separated list of link types - --> - -<!ENTITY % MediaDesc "CDATA" - -- single or comma-separated list of media descriptors - --> - -<!ENTITY % URI "CDATA" - -- a Uniform Resource Identifier, - see [URI] - --> - -<!ENTITY % Datetime "CDATA" -- date and time information. ISO date format --> - - -<!ENTITY % Script "CDATA" -- script expression --> - -<!ENTITY % StyleSheet "CDATA" -- style sheet data --> - - - -<!ENTITY % Text "CDATA"> - - -<!-- Parameter Entities --> - -<!ENTITY % head.misc "SCRIPT|STYLE|META|LINK|OBJECT" -- repeatable head elements --> - -<!ENTITY % heading "H1|H2|H3|H4|H5|H6"> - -<!ENTITY % list "UL | OL"> - -<!ENTITY % preformatted "PRE"> - - -<!--================ Character mnemonic entities =========================--> - -<!ENTITY % HTMLlat1 PUBLIC - "-//W3C//ENTITIES Latin1//EN//HTML" - "HTMLlat1.ent"> -%HTMLlat1; - -<!ENTITY % HTMLsymbol PUBLIC - "-//W3C//ENTITIES Symbols//EN//HTML" - "HTMLsymbol.ent"> -%HTMLsymbol; - -<!ENTITY % HTMLspecial PUBLIC - "-//W3C//ENTITIES Special//EN//HTML" - "HTMLspecial.ent"> -%HTMLspecial; -<!--=================== Generic Attributes ===============================--> - -<!ENTITY % coreattrs - "id ID #IMPLIED -- document-wide unique id -- - class CDATA #IMPLIED -- space-separated list of classes -- - style %StyleSheet; #IMPLIED -- associated style info -- - title %Text; #IMPLIED -- advisory title --" - > - -<!ENTITY % i18n - "lang %LanguageCode; #IMPLIED -- language code -- - dir (ltr|rtl) #IMPLIED -- direction for weak/neutral text --" - > - -<!ENTITY % events - "onclick %Script; #IMPLIED -- a pointer button was clicked -- - ondblclick %Script; #IMPLIED -- a pointer button was double clicked-- - onmousedown %Script; #IMPLIED -- a pointer button was pressed down -- - onmouseup %Script; #IMPLIED -- a pointer button was released -- - onmouseover %Script; #IMPLIED -- a pointer was moved onto -- - onmousemove %Script; #IMPLIED -- a pointer was moved within -- - onmouseout %Script; #IMPLIED -- a pointer was moved away -- - onkeypress %Script; #IMPLIED -- a key was pressed and released -- - onkeydown %Script; #IMPLIED -- a key was pressed down -- - onkeyup %Script; #IMPLIED -- a key was released --" - > - -<!-- Reserved Feature Switch --> -<!ENTITY % HTML.Reserved "IGNORE"> - -<!-- The following attributes are reserved for possible future use --> -<![ %HTML.Reserved; [ -<!ENTITY % reserved - "datasrc %URI; #IMPLIED -- a single or tabular Data Source -- - datafld CDATA #IMPLIED -- the property or column name -- - dataformatas (plaintext|html) plaintext -- text or html --" - > -]]> - -<!ENTITY % reserved ""> - -<!ENTITY % attrs "%coreattrs; %i18n; %events;"> - - -<!--=================== Text Markup ======================================--> - -<!ENTITY % fontstyle - "TT | I | B | BIG | SMALL"> - -<!ENTITY % phrase "EM | STRONG | DFN | CODE | - SAMP | KBD | VAR | CITE | ABBR | ACRONYM" > - -<!ENTITY % special - "A | IMG | OBJECT | BR | SCRIPT | MAP | Q | SUB | SUP | SPAN | BDO"> - -<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON"> - -<!-- %inline; covers inline or "text-level" elements --> -<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;"> - -<!ELEMENT (%fontstyle;|%phrase;) - - (%inline;)*> -<!ATTLIST (%fontstyle;|%phrase;) - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!ELEMENT (SUB|SUP) - - (%inline;)* -- subscript, superscript --> -<!ATTLIST (SUB|SUP) - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!ELEMENT SPAN - - (%inline;)* -- generic language/style container --> -<!ATTLIST SPAN - %attrs; -- %coreattrs, %i18n, %events -- - %reserved; -- reserved for possible future use -- - > - -<!ELEMENT BDO - - (%inline;)* -- I18N BiDi over-ride --> -<!ATTLIST BDO - %coreattrs; -- id, class, style, title -- - lang %LanguageCode; #IMPLIED -- language code -- - dir (ltr|rtl) #REQUIRED -- directionality -- - > - - -<!ELEMENT BR - O EMPTY -- forced line break --> -<!ATTLIST BR - %coreattrs; -- id, class, style, title -- - > - -<!--================== HTML content models ===============================--> - -<!-- - HTML has two basic content models: - - %inline; character level elements and text strings - %block; block-like elements e.g. paragraphs and lists ---> - -<!ENTITY % block - "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | - BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS"> - -<!ENTITY % flow "%block; | %inline;"> - -<!--=================== Document Body ====================================--> - -<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body --> -<!ATTLIST BODY - %attrs; -- %coreattrs, %i18n, %events -- - onload %Script; #IMPLIED -- the document has been loaded -- - onunload %Script; #IMPLIED -- the document has been removed -- - > - -<!ELEMENT ADDRESS - - (%inline;)* -- information on author --> -<!ATTLIST ADDRESS - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!ELEMENT DIV - - (%flow;)* -- generic language/style container --> -<!ATTLIST DIV - %attrs; -- %coreattrs, %i18n, %events -- - %reserved; -- reserved for possible future use -- - > - - -<!--================== The Anchor Element ================================--> - -<!ENTITY % Shape "(rect|circle|poly|default)"> -<!ENTITY % Coords "CDATA" -- comma-separated list of lengths --> - -<!ELEMENT A - - (%inline;)* -(A) -- anchor --> -<!ATTLIST A - %attrs; -- %coreattrs, %i18n, %events -- - charset %Charset; #IMPLIED -- char encoding of linked resource -- - type %ContentType; #IMPLIED -- advisory content type -- - name CDATA #IMPLIED -- named link end -- - href %URI; #IMPLIED -- URI for linked resource -- - hreflang %LanguageCode; #IMPLIED -- language code -- - rel %LinkTypes; #IMPLIED -- forward link types -- - rev %LinkTypes; #IMPLIED -- reverse link types -- - accesskey %Character; #IMPLIED -- accessibility key character -- - shape %Shape; rect -- for use with client-side image maps -- - coords %Coords; #IMPLIED -- for use with client-side image maps -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - > - -<!--================== Client-side image maps ============================--> - -<!-- These can be placed in the same document or grouped in a - separate document although this isn't yet widely supported --> - -<!ELEMENT MAP - - ((%block;) | AREA)+ -- client-side image map --> -<!ATTLIST MAP - %attrs; -- %coreattrs, %i18n, %events -- - name CDATA #REQUIRED -- for reference by usemap -- - > - -<!ELEMENT AREA - O EMPTY -- client-side image map area --> -<!ATTLIST AREA - %attrs; -- %coreattrs, %i18n, %events -- - shape %Shape; rect -- controls interpretation of coords -- - coords %Coords; #IMPLIED -- comma-separated list of lengths -- - href %URI; #IMPLIED -- URI for linked resource -- - nohref (nohref) #IMPLIED -- this region has no action -- - alt %Text; #REQUIRED -- short description -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - accesskey %Character; #IMPLIED -- accessibility key character -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - > - -<!--================== The LINK Element ==================================--> - -<!-- - Relationship values can be used in principle: - - a) for document specific toolbars/menus when used - with the LINK element in document head e.g. - start, contents, previous, next, index, end, help - b) to link to a separate style sheet (rel=stylesheet) - c) to make a link to a script (rel=script) - d) by stylesheets to control how collections of - html nodes are rendered into printed documents - e) to make a link to a printable version of this document - e.g. a postscript or pdf version (rel=alternate media=print) ---> - -<!ELEMENT LINK - O EMPTY -- a media-independent link --> -<!ATTLIST LINK - %attrs; -- %coreattrs, %i18n, %events -- - charset %Charset; #IMPLIED -- char encoding of linked resource -- - href %URI; #IMPLIED -- URI for linked resource -- - hreflang %LanguageCode; #IMPLIED -- language code -- - type %ContentType; #IMPLIED -- advisory content type -- - rel %LinkTypes; #IMPLIED -- forward link types -- - rev %LinkTypes; #IMPLIED -- reverse link types -- - media %MediaDesc; #IMPLIED -- for rendering on these media -- - > - -<!--=================== Images ===========================================--> - -<!-- Length defined in strict DTD for cellpadding/cellspacing --> -<!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length --> -<!ENTITY % MultiLength "CDATA" -- pixel, percentage, or relative --> - -<![ %HTML.Frameset; [ -<!ENTITY % MultiLengths "CDATA" -- comma-separated list of MultiLength --> -]]> - -<!ENTITY % Pixels "CDATA" -- integer representing length in pixels --> - - -<!-- To avoid problems with text-only UAs as well as - to make image content understandable and navigable - to users of non-visual UAs, you need to provide - a description with ALT, and avoid server-side image maps --> -<!ELEMENT IMG - O EMPTY -- Embedded image --> -<!ATTLIST IMG - %attrs; -- %coreattrs, %i18n, %events -- - src %URI; #REQUIRED -- URI of image to embed -- - alt %Text; #REQUIRED -- short description -- - longdesc %URI; #IMPLIED -- link to long description - (complements alt) -- - name CDATA #IMPLIED -- name of image for scripting -- - height %Length; #IMPLIED -- override height -- - width %Length; #IMPLIED -- override width -- - usemap %URI; #IMPLIED -- use client-side image map -- - ismap (ismap) #IMPLIED -- use server-side image map -- - > - -<!-- USEMAP points to a MAP element which may be in this document - or an external document, although the latter is not widely supported --> - -<!--==================== OBJECT ======================================--> -<!-- - OBJECT is used to embed objects as part of HTML pages - PARAM elements should precede other content. SGML mixed content - model technicality precludes specifying this formally ... ---> - -<!ELEMENT OBJECT - - (PARAM | %flow;)* - -- generic embedded object --> -<!ATTLIST OBJECT - %attrs; -- %coreattrs, %i18n, %events -- - declare (declare) #IMPLIED -- declare but don't instantiate flag -- - classid %URI; #IMPLIED -- identifies an implementation -- - codebase %URI; #IMPLIED -- base URI for classid, data, archive-- - data %URI; #IMPLIED -- reference to object's data -- - type %ContentType; #IMPLIED -- content type for data -- - codetype %ContentType; #IMPLIED -- content type for code -- - archive CDATA #IMPLIED -- space-separated list of URIs -- - standby %Text; #IMPLIED -- message to show while loading -- - height %Length; #IMPLIED -- override height -- - width %Length; #IMPLIED -- override width -- - usemap %URI; #IMPLIED -- use client-side image map -- - name CDATA #IMPLIED -- submit as part of form -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - %reserved; -- reserved for possible future use -- - > - -<!ELEMENT PARAM - O EMPTY -- named property value --> -<!ATTLIST PARAM - id ID #IMPLIED -- document-wide unique id -- - name CDATA #REQUIRED -- property name -- - value CDATA #IMPLIED -- property value -- - valuetype (DATA|REF|OBJECT) DATA -- How to interpret value -- - type %ContentType; #IMPLIED -- content type for value - when valuetype=ref -- - > - - -<!--=================== Horizontal Rule ==================================--> - -<!ELEMENT HR - O EMPTY -- horizontal rule --> -<!ATTLIST HR - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--=================== Paragraphs =======================================--> - -<!ELEMENT P - O (%inline;)* -- paragraph --> -<!ATTLIST P - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--=================== Headings =========================================--> - -<!-- - There are six levels of headings from H1 (the most important) - to H6 (the least important). ---> - -<!ELEMENT (%heading;) - - (%inline;)* -- heading --> -<!ATTLIST (%heading;) - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--=================== Preformatted Text ================================--> - -<!-- excludes markup for images and changes in font size --> -<!ENTITY % pre.exclusion "IMG|OBJECT|BIG|SMALL|SUB|SUP"> - -<!ELEMENT PRE - - (%inline;)* -(%pre.exclusion;) -- preformatted text --> -<!ATTLIST PRE - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--===================== Inline Quotes ==================================--> - -<!ELEMENT Q - - (%inline;)* -- short inline quotation --> -<!ATTLIST Q - %attrs; -- %coreattrs, %i18n, %events -- - cite %URI; #IMPLIED -- URI for source document or msg -- - > - -<!--=================== Block-like Quotes ================================--> - -<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation --> -<!ATTLIST BLOCKQUOTE - %attrs; -- %coreattrs, %i18n, %events -- - cite %URI; #IMPLIED -- URI for source document or msg -- - > - -<!--=================== Inserted/Deleted Text ============================--> - - -<!-- INS/DEL are handled by inclusion on BODY --> -<!ELEMENT (INS|DEL) - - (%flow;)* -- inserted text, deleted text --> -<!ATTLIST (INS|DEL) - %attrs; -- %coreattrs, %i18n, %events -- - cite %URI; #IMPLIED -- info on reason for change -- - datetime %Datetime; #IMPLIED -- date and time of change -- - > - -<!--=================== Lists ============================================--> - -<!-- definition lists - DT for term, DD for its definition --> - -<!ELEMENT DL - - (DT|DD)+ -- definition list --> -<!ATTLIST DL - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!ELEMENT DT - O (%inline;)* -- definition term --> -<!ELEMENT DD - O (%flow;)* -- definition description --> -<!ATTLIST (DT|DD) - %attrs; -- %coreattrs, %i18n, %events -- - > - - -<!ELEMENT OL - - (LI)+ -- ordered list --> -<!ATTLIST OL - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!-- Unordered Lists (UL) bullet styles --> -<!ELEMENT UL - - (LI)+ -- unordered list --> -<!ATTLIST UL - %attrs; -- %coreattrs, %i18n, %events -- - > - - - -<!ELEMENT LI - O (%flow;)* -- list item --> -<!ATTLIST LI - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--================ Forms ===============================================--> -<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> -<!ATTLIST FORM - %attrs; -- %coreattrs, %i18n, %events -- - action %URI; #REQUIRED -- server-side form handler -- - method (GET|POST) GET -- HTTP method used to submit the form-- - enctype %ContentType; "application/x-www-form-urlencoded" - accept %ContentTypes; #IMPLIED -- list of MIME types for file upload -- - name CDATA #IMPLIED -- name of form for scripting -- - onsubmit %Script; #IMPLIED -- the form was submitted -- - onreset %Script; #IMPLIED -- the form was reset -- - accept-charset %Charsets; #IMPLIED -- list of supported charsets -- - > - -<!-- Each label must not contain more than ONE field --> -<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text --> -<!ATTLIST LABEL - %attrs; -- %coreattrs, %i18n, %events -- - for IDREF #IMPLIED -- matches field ID value -- - accesskey %Character; #IMPLIED -- accessibility key character -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - > - -<!ENTITY % InputType - "(TEXT | PASSWORD | CHECKBOX | - RADIO | SUBMIT | RESET | - FILE | HIDDEN | IMAGE | BUTTON)" - > - -<!-- attribute name required for all but submit and reset --> -<!ELEMENT INPUT - O EMPTY -- form control --> -<!ATTLIST INPUT - %attrs; -- %coreattrs, %i18n, %events -- - type %InputType; TEXT -- what kind of widget is needed -- - name CDATA #IMPLIED -- submit as part of form -- - value CDATA #IMPLIED -- Specify for radio buttons and checkboxes -- - checked (checked) #IMPLIED -- for radio buttons and check boxes -- - disabled (disabled) #IMPLIED -- unavailable in this context -- - readonly (readonly) #IMPLIED -- for text and passwd -- - size CDATA #IMPLIED -- specific to each type of field -- - maxlength NUMBER #IMPLIED -- max chars for text fields -- - src %URI; #IMPLIED -- for fields with images -- - alt CDATA #IMPLIED -- short description -- - usemap %URI; #IMPLIED -- use client-side image map -- - ismap (ismap) #IMPLIED -- use server-side image map -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - accesskey %Character; #IMPLIED -- accessibility key character -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - onselect %Script; #IMPLIED -- some text was selected -- - onchange %Script; #IMPLIED -- the element value was changed -- - accept %ContentTypes; #IMPLIED -- list of MIME types for file upload -- - %reserved; -- reserved for possible future use -- - > - -<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector --> -<!ATTLIST SELECT - %attrs; -- %coreattrs, %i18n, %events -- - name CDATA #IMPLIED -- field name -- - size NUMBER #IMPLIED -- rows visible -- - multiple (multiple) #IMPLIED -- default is single selection -- - disabled (disabled) #IMPLIED -- unavailable in this context -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - onchange %Script; #IMPLIED -- the element value was changed -- - %reserved; -- reserved for possible future use -- - > - -<!ELEMENT OPTGROUP - - (OPTION)+ -- option group --> -<!ATTLIST OPTGROUP - %attrs; -- %coreattrs, %i18n, %events -- - disabled (disabled) #IMPLIED -- unavailable in this context -- - label %Text; #REQUIRED -- for use in hierarchical menus -- - > - -<!ELEMENT OPTION - O (#PCDATA) -- selectable choice --> -<!ATTLIST OPTION - %attrs; -- %coreattrs, %i18n, %events -- - selected (selected) #IMPLIED - disabled (disabled) #IMPLIED -- unavailable in this context -- - label %Text; #IMPLIED -- for use in hierarchical menus -- - value CDATA #IMPLIED -- defaults to element content -- - > - -<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field --> -<!ATTLIST TEXTAREA - %attrs; -- %coreattrs, %i18n, %events -- - name CDATA #IMPLIED - rows NUMBER #REQUIRED - cols NUMBER #REQUIRED - disabled (disabled) #IMPLIED -- unavailable in this context -- - readonly (readonly) #IMPLIED - tabindex NUMBER #IMPLIED -- position in tabbing order -- - accesskey %Character; #IMPLIED -- accessibility key character -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - onselect %Script; #IMPLIED -- some text was selected -- - onchange %Script; #IMPLIED -- the element value was changed -- - %reserved; -- reserved for possible future use -- - > - -<!-- - #PCDATA is to solve the mixed content problem, - per specification only whitespace is allowed there! - --> -<!ELEMENT FIELDSET - - (#PCDATA,LEGEND,(%flow;)*) -- form control group --> -<!ATTLIST FIELDSET - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!ELEMENT LEGEND - - (%inline;)* -- fieldset legend --> - -<!ATTLIST LEGEND - %attrs; -- %coreattrs, %i18n, %events -- - accesskey %Character; #IMPLIED -- accessibility key character -- - > - -<!ELEMENT BUTTON - - - (%flow;)* -(A|%formctrl;|FORM|FIELDSET) - -- push button --> -<!ATTLIST BUTTON - %attrs; -- %coreattrs, %i18n, %events -- - name CDATA #IMPLIED - value CDATA #IMPLIED -- sent to server when submitted -- - type (button|submit|reset) submit -- for use as form button -- - disabled (disabled) #IMPLIED -- unavailable in this context -- - tabindex NUMBER #IMPLIED -- position in tabbing order -- - accesskey %Character; #IMPLIED -- accessibility key character -- - onfocus %Script; #IMPLIED -- the element got the focus -- - onblur %Script; #IMPLIED -- the element lost the focus -- - %reserved; -- reserved for possible future use -- - > - -<!--======================= Tables =======================================--> - -<!-- IETF HTML table standard, see [RFC1942] --> - -<!-- - The BORDER attribute sets the thickness of the frame around the - table. The default units are screen pixels. - - The FRAME attribute specifies which parts of the frame around - the table should be rendered. The values are not the same as - CALS to avoid a name clash with the VALIGN attribute. - - The value "border" is included for backwards compatibility with - <TABLE BORDER> which yields frame=border and border=implied - For <TABLE BORDER=1> you get border=1 and frame=implied. In this - case, it is appropriate to treat this as frame=border for backwards - compatibility with deployed browsers. ---> -<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)"> - -<!-- - The RULES attribute defines which rules to draw between cells: - - If RULES is absent then assume: - "none" if BORDER is absent or BORDER=0 otherwise "all" ---> - -<!ENTITY % TRules "(none | groups | rows | cols | all)"> - -<!-- horizontal placement of table relative to document --> -<!ENTITY % TAlign "(left|center|right)"> - -<!-- horizontal alignment attributes for cell contents --> -<!ENTITY % cellhalign - "align (left|center|right|justify|char) #IMPLIED - char %Character; #IMPLIED -- alignment char, e.g. char=':' -- - charoff %Length; #IMPLIED -- offset for alignment char --" - > - -<!-- vertical alignment attributes for cell contents --> -<!ENTITY % cellvalign - "valign (top|middle|bottom|baseline) #IMPLIED" - > - -<!ELEMENT TABLE - - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> -<!ELEMENT CAPTION - - (%inline;)* -- table caption --> -<!ELEMENT THEAD - O (TR)+ -- table header --> -<!ELEMENT TFOOT - O (TR)+ -- table footer --> -<!ELEMENT TBODY O O (TR)+ -- table body --> -<!ELEMENT COLGROUP - O (COL)* -- table column group --> -<!ELEMENT COL - O EMPTY -- table column --> -<!ELEMENT TR - O (TH|TD)+ -- table row --> -<!ELEMENT (TH|TD) - O (%flow;)* -- table header cell, table data cell--> - -<!ATTLIST TABLE -- table element -- - %attrs; -- %coreattrs, %i18n, %events -- - summary %Text; #IMPLIED -- purpose/structure for speech output-- - width %Length; #IMPLIED -- table width -- - border %Pixels; #IMPLIED -- controls frame width around table -- - frame %TFrame; #IMPLIED -- which parts of frame to render -- - rules %TRules; #IMPLIED -- rulings between rows and cols -- - cellspacing %Length; #IMPLIED -- spacing between cells -- - cellpadding %Length; #IMPLIED -- spacing within cells -- - %reserved; -- reserved for possible future use -- - datapagesize CDATA #IMPLIED -- reserved for possible future use -- - > - - -<!ATTLIST CAPTION - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!-- -COLGROUP groups a set of COL elements. It allows you to group -several semantically related columns together. ---> -<!ATTLIST COLGROUP - %attrs; -- %coreattrs, %i18n, %events -- - span NUMBER 1 -- default number of columns in group -- - width %MultiLength; #IMPLIED -- default width for enclosed COLs -- - %cellhalign; -- horizontal alignment in cells -- - %cellvalign; -- vertical alignment in cells -- - > - -<!-- - COL elements define the alignment properties for cells in - one or more columns. - - The WIDTH attribute specifies the width of the columns, e.g. - - width=64 width in screen pixels - width=0.5* relative width of 0.5 - - The SPAN attribute causes the attributes of one - COL element to apply to more than one column. ---> -<!ATTLIST COL -- column groups and properties -- - %attrs; -- %coreattrs, %i18n, %events -- - span NUMBER 1 -- COL attributes affect N columns -- - width %MultiLength; #IMPLIED -- column width specification -- - %cellhalign; -- horizontal alignment in cells -- - %cellvalign; -- vertical alignment in cells -- - > - -<!-- - Use THEAD to duplicate headers when breaking table - across page boundaries, or for static headers when - TBODY sections are rendered in scrolling panel. - - Use TFOOT to duplicate footers when breaking table - across page boundaries, or for static footers when - TBODY sections are rendered in scrolling panel. - - Use multiple TBODY sections when rules are needed - between groups of table rows. ---> -<!ATTLIST (THEAD|TBODY|TFOOT) -- table section -- - %attrs; -- %coreattrs, %i18n, %events -- - %cellhalign; -- horizontal alignment in cells -- - %cellvalign; -- vertical alignment in cells -- - > - -<!ATTLIST TR -- table row -- - %attrs; -- %coreattrs, %i18n, %events -- - %cellhalign; -- horizontal alignment in cells -- - %cellvalign; -- vertical alignment in cells -- - > - - -<!-- Scope is simpler than headers attribute for common tables --> -<!ENTITY % Scope "(row|col|rowgroup|colgroup)"> - -<!-- TH is for headers, TD for data, but for cells acting as both use TD --> -<!ATTLIST (TH|TD) -- header or data cell -- - %attrs; -- %coreattrs, %i18n, %events -- - abbr %Text; #IMPLIED -- abbreviation for header cell -- - axis CDATA #IMPLIED -- comma-separated list of related headers-- - headers IDREFS #IMPLIED -- list of id's for header cells -- - scope %Scope; #IMPLIED -- scope covered by header cells -- - rowspan NUMBER 1 -- number of rows spanned by cell -- - colspan NUMBER 1 -- number of cols spanned by cell -- - %cellhalign; -- horizontal alignment in cells -- - %cellvalign; -- vertical alignment in cells -- - > - - -<!--================ Document Head =======================================--> -<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" --> -<!ENTITY % head.content "TITLE & BASE?"> - -<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head --> -<!ATTLIST HEAD - %i18n; -- lang, dir -- - profile %URI; #IMPLIED -- named dictionary of meta info -- - > - -<!-- The TITLE element is not considered part of the flow of text. - It should be displayed, for example as the page header or - window title. Exactly one title is required per document. - --> -<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- document title --> -<!ATTLIST TITLE %i18n> - - -<!ELEMENT BASE - O EMPTY -- document base URI --> -<!ATTLIST BASE - href %URI; #REQUIRED -- URI that acts as base URI -- - > - -<!ELEMENT META - O EMPTY -- generic metainformation --> -<!ATTLIST META - %i18n; -- lang, dir, for use with content -- - http-equiv NAME #IMPLIED -- HTTP response header name -- - name NAME #IMPLIED -- metainformation name -- - content CDATA #REQUIRED -- associated information -- - scheme CDATA #IMPLIED -- select form of content -- - > - -<!ELEMENT STYLE - - %StyleSheet -- style info --> -<!ATTLIST STYLE - %i18n; -- lang, dir, for use with title -- - type %ContentType; #REQUIRED -- content type of style language -- - media %MediaDesc; #IMPLIED -- designed for use with these media -- - title %Text; #IMPLIED -- advisory title -- - > - -<!ELEMENT SCRIPT - - %Script; -- script statements --> -<!ATTLIST SCRIPT - charset %Charset; #IMPLIED -- char encoding of linked resource -- - type %ContentType; #REQUIRED -- content type of script language -- - src %URI; #IMPLIED -- URI for an external script -- - defer (defer) #IMPLIED -- UA may defer execution of script -- - event CDATA #IMPLIED -- reserved for possible future use -- - for %URI; #IMPLIED -- reserved for possible future use -- - > - -<!ELEMENT NOSCRIPT - - (%block;)+ - -- alternate content container for non script-based rendering --> -<!ATTLIST NOSCRIPT - %attrs; -- %coreattrs, %i18n, %events -- - > - -<!--================ Document Structure ==================================--> -<!ENTITY % html.content "HEAD, BODY"> - -<!ELEMENT HTML O O (%html.content;) -- document root element --> -<!ATTLIST HTML - %i18n; -- lang, dir -- - > diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/switch-bench.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/switch-bench.js deleted file mode 100755 index 4d3cf141911..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/switch-bench.js +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/local/bin/node-bench - -var Promise = require("events").Promise; - -var xml = require("posix").cat("test.xml").wait(), - path = require("path"), - sax = require("../lib/sax"), - saxT = require("../lib/sax-trampoline"), - - parser = sax.parser(false, {trim:true}), - parserT = saxT.parser(false, {trim:true}), - - sys = require("sys"); - - -var count = exports.stepsPerLap = 500, - l = xml.length, - runs = 0; -exports.countPerLap = 1000; -exports.compare = { - "switch" : function () { - // sys.debug("switch runs: "+runs++); - // for (var x = 0; x < l; x += 1000) { - // parser.write(xml.substr(x, 1000)) - // } - // for (var i = 0; i < count; i ++) { - parser.write(xml); - parser.close(); - // } - // done(); - }, - trampoline : function () { - // sys.debug("trampoline runs: "+runs++); - // for (var x = 0; x < l; x += 1000) { - // parserT.write(xml.substr(x, 1000)) - // } - // for (var i = 0; i < count; i ++) { - parserT.write(xml); - parserT.close(); - // } - // done(); - }, -}; - -sys.debug("rock and roll...");
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.html b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.html deleted file mode 100644 index 61f8f1ab91c..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.html +++ /dev/null @@ -1,15 +0,0 @@ -<!doctype html> - -<html lang="en"> -<head> - <title>testing the parser</title> -</head> -<body> - -<p>hello - -<script> - -</script> -</body> -</html> diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.xml b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.xml deleted file mode 100644 index 801292d7f27..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/examples/test.xml +++ /dev/null @@ -1,1254 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE RootElement [ - <!ENTITY e SYSTEM "001.ent"> -]> -<RootElement param="value"> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> - <FirstElement> - Some Text - </FirstElement> - <?some_pi some_attr="some_value"?> - <!-- this is a comment -- but this isnt part of the comment --> - <!-- this is a comment == and this is a part of the comment --> - <!-- this is a comment > and this is also part of the thing --> - <!invalid comment> - <![CDATA[ this is random stuff. & and < and > are ok in here. ]]> - <SecondElement param2="something"> - Pre-Text & <Inline>Inlined text</Inline> Post-text. -  - </SecondElement> -</RootElement>
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/lib/sax.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/lib/sax.js deleted file mode 100644 index 17fb08e7a50..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/lib/sax.js +++ /dev/null @@ -1,1006 +0,0 @@ -// wrapper for non-node envs -;(function (sax) { - -sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } -sax.SAXParser = SAXParser -sax.SAXStream = SAXStream -sax.createStream = createStream - -// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. -// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), -// since that's the earliest that a buffer overrun could occur. This way, checks are -// as rare as required, but as often as necessary to ensure never crossing this bound. -// Furthermore, buffers are only tested at most once per write(), so passing a very -// large string into write() might have undesirable effects, but this is manageable by -// the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme -// edge case, result in creating at most one complete copy of the string passed in. -// Set to Infinity to have unlimited buffers. -sax.MAX_BUFFER_LENGTH = 64 * 1024 - -var buffers = [ - "comment", "sgmlDecl", "textNode", "tagName", "doctype", - "procInstName", "procInstBody", "entity", "attribName", - "attribValue", "cdata", "script" -] - -sax.EVENTS = // for discoverability. - [ "text" - , "processinginstruction" - , "sgmldeclaration" - , "doctype" - , "comment" - , "attribute" - , "opentag" - , "closetag" - , "opencdata" - , "cdata" - , "closecdata" - , "error" - , "end" - , "ready" - , "script" - , "opennamespace" - , "closenamespace" - ] - -function SAXParser (strict, opt) { - if (!(this instanceof SAXParser)) return new SAXParser(strict, opt) - - var parser = this - clearBuffers(parser) - parser.q = parser.c = "" - parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH - parser.opt = opt || {} - parser.tagCase = parser.opt.lowercasetags ? "toLowerCase" : "toUpperCase" - parser.tags = [] - parser.closed = parser.closedRoot = parser.sawRoot = false - parser.tag = parser.error = null - parser.strict = !!strict - parser.noscript = !!(strict || parser.opt.noscript) - parser.state = S.BEGIN - parser.ENTITIES = Object.create(sax.ENTITIES) - parser.attribList = [] - - // namespaces form a prototype chain. - // it always points at the current tag, - // which protos to its parent tag. - if (parser.opt.xmlns) parser.ns = Object.create(rootNS) - - // mostly just for error reporting - parser.position = parser.line = parser.column = 0 - emit(parser, "onready") -} - -if (!Object.create) Object.create = function (o) { - function f () { this.__proto__ = o } - f.prototype = o - return new f -} - -if (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) { - return o.__proto__ -} - -if (!Object.keys) Object.keys = function (o) { - var a = [] - for (var i in o) if (o.hasOwnProperty(i)) a.push(i) - return a -} - -function checkBufferLength (parser) { - var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) - , maxActual = 0 - for (var i = 0, l = buffers.length; i < l; i ++) { - var len = parser[buffers[i]].length - if (len > maxAllowed) { - // Text/cdata nodes can get big, and since they're buffered, - // we can get here under normal conditions. - // Avoid issues by emitting the text node now, - // so at least it won't get any bigger. - switch (buffers[i]) { - case "textNode": - closeText(parser) - break - - case "cdata": - emitNode(parser, "oncdata", parser.cdata) - parser.cdata = "" - break - - case "script": - emitNode(parser, "onscript", parser.script) - parser.script = "" - break - - default: - error(parser, "Max buffer length exceeded: "+buffers[i]) - } - } - maxActual = Math.max(maxActual, len) - } - // schedule the next check for the earliest possible buffer overrun. - parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual) - + parser.position -} - -function clearBuffers (parser) { - for (var i = 0, l = buffers.length; i < l; i ++) { - parser[buffers[i]] = "" - } -} - -SAXParser.prototype = - { end: function () { end(this) } - , write: write - , resume: function () { this.error = null; return this } - , close: function () { return this.write(null) } - , end: function () { return this.write(null) } - } - -try { - var Stream = require("stream").Stream -} catch (ex) { - var Stream = function () {} -} - - -var streamWraps = sax.EVENTS.filter(function (ev) { - return ev !== "error" && ev !== "end" -}) - -function createStream (strict, opt) { - return new SAXStream(strict, opt) -} - -function SAXStream (strict, opt) { - if (!(this instanceof SAXStream)) return new SAXStream(strict, opt) - - Stream.apply(me) - - this._parser = new SAXParser(strict, opt) - this.writable = true - this.readable = true - - - var me = this - - this._parser.onend = function () { - me.emit("end") - } - - this._parser.onerror = function (er) { - me.emit("error", er) - - // if didn't throw, then means error was handled. - // go ahead and clear error, so we can write again. - me._parser.error = null - } - - streamWraps.forEach(function (ev) { - Object.defineProperty(me, "on" + ev, { - get: function () { return me._parser["on" + ev] }, - set: function (h) { - if (!h) { - me.removeAllListeners(ev) - return me._parser["on"+ev] = h - } - me.on(ev, h) - }, - enumerable: true, - configurable: false - }) - }) -} - -SAXStream.prototype = Object.create(Stream.prototype, - { constructor: { value: SAXStream } }) - -SAXStream.prototype.write = function (data) { - this._parser.write(data.toString()) - this.emit("data", data) - return true -} - -SAXStream.prototype.end = function (chunk) { - if (chunk && chunk.length) this._parser.write(chunk.toString()) - this._parser.end() - return true -} - -SAXStream.prototype.on = function (ev, handler) { - var me = this - if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) { - me._parser["on"+ev] = function () { - var args = arguments.length === 1 ? [arguments[0]] - : Array.apply(null, arguments) - args.splice(0, 0, ev) - me.emit.apply(me, args) - } - } - - return Stream.prototype.on.call(me, ev, handler) -} - - - -// character classes and tokens -var whitespace = "\r\n\t " - // this really needs to be replaced with character classes. - // XML allows all manner of ridiculous numbers and digits. - , number = "0124356789" - , letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - // (Letter | "_" | ":") - , nameStart = letter+"_:" - , nameBody = nameStart+number+"-." - , quote = "'\"" - , entity = number+letter+"#" - , attribEnd = whitespace + ">" - , CDATA = "[CDATA[" - , DOCTYPE = "DOCTYPE" - , XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace" - , XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/" - , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } - -// turn all the string character sets into character class objects. -whitespace = charClass(whitespace) -number = charClass(number) -letter = charClass(letter) -nameStart = charClass(nameStart) -nameBody = charClass(nameBody) -quote = charClass(quote) -entity = charClass(entity) -attribEnd = charClass(attribEnd) - -function charClass (str) { - return str.split("").reduce(function (s, c) { - s[c] = true - return s - }, {}) -} - -function is (charclass, c) { - return charclass[c] -} - -function not (charclass, c) { - return !charclass[c] -} - -var S = 0 -sax.STATE = -{ BEGIN : S++ -, TEXT : S++ // general stuff -, TEXT_ENTITY : S++ // & and such. -, OPEN_WAKA : S++ // < -, SGML_DECL : S++ // <!BLARG -, SGML_DECL_QUOTED : S++ // <!BLARG foo "bar -, DOCTYPE : S++ // <!DOCTYPE -, DOCTYPE_QUOTED : S++ // <!DOCTYPE "//blah -, DOCTYPE_DTD : S++ // <!DOCTYPE "//blah" [ ... -, DOCTYPE_DTD_QUOTED : S++ // <!DOCTYPE "//blah" [ "foo -, COMMENT_STARTING : S++ // <!- -, COMMENT : S++ // <!-- -, COMMENT_ENDING : S++ // <!-- blah - -, COMMENT_ENDED : S++ // <!-- blah -- -, CDATA : S++ // <![CDATA[ something -, CDATA_ENDING : S++ // ] -, CDATA_ENDING_2 : S++ // ]] -, PROC_INST : S++ // <?hi -, PROC_INST_BODY : S++ // <?hi there -, PROC_INST_QUOTED : S++ // <?hi "there -, PROC_INST_ENDING : S++ // <?hi "there" ? -, OPEN_TAG : S++ // <strong -, OPEN_TAG_SLASH : S++ // <strong / -, ATTRIB : S++ // <a -, ATTRIB_NAME : S++ // <a foo -, ATTRIB_NAME_SAW_WHITE : S++ // <a foo _ -, ATTRIB_VALUE : S++ // <a foo= -, ATTRIB_VALUE_QUOTED : S++ // <a foo="bar -, ATTRIB_VALUE_UNQUOTED : S++ // <a foo=bar -, ATTRIB_VALUE_ENTITY_Q : S++ // <foo bar=""" -, ATTRIB_VALUE_ENTITY_U : S++ // <foo bar=" -, CLOSE_TAG : S++ // </a -, CLOSE_TAG_SAW_WHITE : S++ // </a > -, SCRIPT : S++ // <script> ... -, SCRIPT_ENDING : S++ // <script> ... < -} - -sax.ENTITIES = -{ "apos" : "'" -, "quot" : "\"" -, "amp" : "&" -, "gt" : ">" -, "lt" : "<" -} - -for (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S - -// shorthand -S = sax.STATE - -function emit (parser, event, data) { - parser[event] && parser[event](data) -} - -function emitNode (parser, nodeType, data) { - if (parser.textNode) closeText(parser) - emit(parser, nodeType, data) -} - -function closeText (parser) { - parser.textNode = textopts(parser.opt, parser.textNode) - if (parser.textNode) emit(parser, "ontext", parser.textNode) - parser.textNode = "" -} - -function textopts (opt, text) { - if (opt.trim) text = text.trim() - if (opt.normalize) text = text.replace(/\s+/g, " ") - return text -} - -function error (parser, er) { - closeText(parser) - er += "\nLine: "+parser.line+ - "\nColumn: "+parser.column+ - "\nChar: "+parser.c - er = new Error(er) - parser.error = er - emit(parser, "onerror", er) - return parser -} - -function end (parser) { - if (parser.state !== S.TEXT) error(parser, "Unexpected end") - closeText(parser) - parser.c = "" - parser.closed = true - emit(parser, "onend") - SAXParser.call(parser, parser.strict, parser.opt) - return parser -} - -function strictFail (parser, message) { - if (parser.strict) error(parser, message) -} - -function newTag (parser) { - if (!parser.strict) parser.tagName = parser.tagName[parser.tagCase]() - var parent = parser.tags[parser.tags.length - 1] || parser - , tag = parser.tag = { name : parser.tagName, attributes : {} } - - // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar" - if (parser.opt.xmlns) tag.ns = parent.ns - parser.attribList.length = 0 -} - -function qname (name) { - var i = name.indexOf(":") - , qualName = i < 0 ? [ "", name ] : name.split(":") - , prefix = qualName[0] - , local = qualName[1] - - // <x "xmlns"="http://foo"> - if (name === "xmlns") { - prefix = "xmlns" - local = "" - } - - return { prefix: prefix, local: local } -} - -function attrib (parser) { - if (parser.opt.xmlns) { - var qn = qname(parser.attribName) - , prefix = qn.prefix - , local = qn.local - - if (prefix === "xmlns") { - // namespace binding attribute; push the binding into scope - if (local === "xml" && parser.attribValue !== XML_NAMESPACE) { - strictFail( parser - , "xml: prefix must be bound to " + XML_NAMESPACE + "\n" - + "Actual: " + parser.attribValue ) - } else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) { - strictFail( parser - , "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\n" - + "Actual: " + parser.attribValue ) - } else { - var tag = parser.tag - , parent = parser.tags[parser.tags.length - 1] || parser - if (tag.ns === parent.ns) { - tag.ns = Object.create(parent.ns) - } - tag.ns[local] = parser.attribValue - } - } - - // defer onattribute events until all attributes have been seen - // so any new bindings can take effect; preserve attribute order - // so deferred events can be emitted in document order - parser.attribList.push([parser.attribName, parser.attribValue]) - } else { - // in non-xmlns mode, we can emit the event right away - parser.tag.attributes[parser.attribName] = parser.attribValue - emitNode( parser - , "onattribute" - , { name: parser.attribName - , value: parser.attribValue } ) - } - - parser.attribName = parser.attribValue = "" -} - -function openTag (parser, selfClosing) { - if (parser.opt.xmlns) { - // emit namespace binding events - var tag = parser.tag - - // add namespace info to tag - var qn = qname(parser.tagName) - tag.prefix = qn.prefix - tag.local = qn.local - tag.uri = tag.ns[qn.prefix] || qn.prefix - - if (tag.prefix && !tag.uri) { - strictFail(parser, "Unbound namespace prefix: " - + JSON.stringify(parser.tagName)) - } - - var parent = parser.tags[parser.tags.length - 1] || parser - if (tag.ns && parent.ns !== tag.ns) { - Object.keys(tag.ns).forEach(function (p) { - emitNode( parser - , "onopennamespace" - , { prefix: p , uri: tag.ns[p] } ) - }) - } - - // handle deferred onattribute events - for (var i = 0, l = parser.attribList.length; i < l; i ++) { - var nv = parser.attribList[i] - var name = nv[0] - , value = nv[1] - , qualName = qname(name) - , prefix = qualName.prefix - , local = qualName.local - , uri = tag.ns[prefix] || "" - , a = { name: name - , value: value - , prefix: prefix - , local: local - , uri: uri - } - - // if there's any attributes with an undefined namespace, - // then fail on them now. - if (prefix && prefix != "xmlns" && !uri) { - strictFail(parser, "Unbound namespace prefix: " - + JSON.stringify(prefix)) - a.uri = prefix - } - parser.tag.attributes[name] = a - emitNode(parser, "onattribute", a) - } - parser.attribList.length = 0 - } - - // process the tag - parser.sawRoot = true - parser.tags.push(parser.tag) - emitNode(parser, "onopentag", parser.tag) - if (!selfClosing) { - // special case for <script> in non-strict mode. - if (!parser.noscript && parser.tagName.toLowerCase() === "script") { - parser.state = S.SCRIPT - } else { - parser.state = S.TEXT - } - parser.tag = null - parser.tagName = "" - } - parser.attribName = parser.attribValue = "" - parser.attribList.length = 0 -} - -function closeTag (parser) { - if (!parser.tagName) { - strictFail(parser, "Weird empty close tag.") - parser.textNode += "</>" - parser.state = S.TEXT - return - } - // first make sure that the closing tag actually exists. - // <a><b></c></b></a> will close everything, otherwise. - var t = parser.tags.length - var tagName = parser.tagName - if (!parser.strict) tagName = tagName[parser.tagCase]() - var closeTo = tagName - while (t --) { - var close = parser.tags[t] - if (close.name !== closeTo) { - // fail the first time in strict mode - strictFail(parser, "Unexpected close tag") - } else break - } - - // didn't find it. we already failed for strict, so just abort. - if (t < 0) { - strictFail(parser, "Unmatched closing tag: "+parser.tagName) - parser.textNode += "</" + parser.tagName + ">" - parser.state = S.TEXT - return - } - parser.tagName = tagName - var s = parser.tags.length - while (s --> t) { - var tag = parser.tag = parser.tags.pop() - parser.tagName = parser.tag.name - emitNode(parser, "onclosetag", parser.tagName) - - var x = {} - for (var i in tag.ns) x[i] = tag.ns[i] - - var parent = parser.tags[parser.tags.length - 1] || parser - if (parser.opt.xmlns && tag.ns !== parent.ns) { - // remove namespace bindings introduced by tag - Object.keys(tag.ns).forEach(function (p) { - var n = tag.ns[p] - emitNode(parser, "onclosenamespace", { prefix: p, uri: n }) - }) - } - } - if (t === 0) parser.closedRoot = true - parser.tagName = parser.attribValue = parser.attribName = "" - parser.attribList.length = 0 - parser.state = S.TEXT -} - -function parseEntity (parser) { - var entity = parser.entity.toLowerCase() - , num - , numStr = "" - if (parser.ENTITIES[entity]) return parser.ENTITIES[entity] - if (entity.charAt(0) === "#") { - if (entity.charAt(1) === "x") { - entity = entity.slice(2) - num = parseInt(entity, 16) - numStr = num.toString(16) - } else { - entity = entity.slice(1) - num = parseInt(entity, 10) - numStr = num.toString(10) - } - } - entity = entity.replace(/^0+/, "") - if (numStr.toLowerCase() !== entity) { - strictFail(parser, "Invalid character entity") - return "&"+parser.entity + ";" - } - return String.fromCharCode(num) -} - -function write (chunk) { - var parser = this - if (this.error) throw this.error - if (parser.closed) return error(parser, - "Cannot write after close. Assign an onready handler.") - if (chunk === null) return end(parser) - var i = 0, c = "" - while (parser.c = c = chunk.charAt(i++)) { - parser.position ++ - if (c === "\n") { - parser.line ++ - parser.column = 0 - } else parser.column ++ - switch (parser.state) { - - case S.BEGIN: - if (c === "<") parser.state = S.OPEN_WAKA - else if (not(whitespace,c)) { - // have to process this as a text node. - // weird, but happens. - strictFail(parser, "Non-whitespace before first tag.") - parser.textNode = c - parser.state = S.TEXT - } - continue - - case S.TEXT: - if (parser.sawRoot && !parser.closedRoot) { - var starti = i-1 - while (c && c!=="<" && c!=="&") { - c = chunk.charAt(i++) - if (c) { - parser.position ++ - if (c === "\n") { - parser.line ++ - parser.column = 0 - } else parser.column ++ - } - } - parser.textNode += chunk.substring(starti, i-1) - } - if (c === "<") parser.state = S.OPEN_WAKA - else { - if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot)) - strictFail("Text data outside of root node.") - if (c === "&") parser.state = S.TEXT_ENTITY - else parser.textNode += c - } - continue - - case S.SCRIPT: - // only non-strict - if (c === "<") { - parser.state = S.SCRIPT_ENDING - } else parser.script += c - continue - - case S.SCRIPT_ENDING: - if (c === "/") { - emitNode(parser, "onscript", parser.script) - parser.state = S.CLOSE_TAG - parser.script = "" - parser.tagName = "" - } else { - parser.script += "<" + c - parser.state = S.SCRIPT - } - continue - - case S.OPEN_WAKA: - // either a /, ?, !, or text is coming next. - if (c === "!") { - parser.state = S.SGML_DECL - parser.sgmlDecl = "" - } else if (is(whitespace, c)) { - // wait for it... - } else if (is(nameStart,c)) { - parser.startTagPosition = parser.position - 1 - parser.state = S.OPEN_TAG - parser.tagName = c - } else if (c === "/") { - parser.startTagPosition = parser.position - 1 - parser.state = S.CLOSE_TAG - parser.tagName = "" - } else if (c === "?") { - parser.state = S.PROC_INST - parser.procInstName = parser.procInstBody = "" - } else { - strictFail(parser, "Unencoded <") - parser.textNode += "<" + c - parser.state = S.TEXT - } - continue - - case S.SGML_DECL: - if ((parser.sgmlDecl+c).toUpperCase() === CDATA) { - emitNode(parser, "onopencdata") - parser.state = S.CDATA - parser.sgmlDecl = "" - parser.cdata = "" - } else if (parser.sgmlDecl+c === "--") { - parser.state = S.COMMENT - parser.comment = "" - parser.sgmlDecl = "" - } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) { - parser.state = S.DOCTYPE - if (parser.doctype || parser.sawRoot) strictFail(parser, - "Inappropriately located doctype declaration") - parser.doctype = "" - parser.sgmlDecl = "" - } else if (c === ">") { - emitNode(parser, "onsgmldeclaration", parser.sgmlDecl) - parser.sgmlDecl = "" - parser.state = S.TEXT - } else if (is(quote, c)) { - parser.state = S.SGML_DECL_QUOTED - parser.sgmlDecl += c - } else parser.sgmlDecl += c - continue - - case S.SGML_DECL_QUOTED: - if (c === parser.q) { - parser.state = S.SGML_DECL - parser.q = "" - } - parser.sgmlDecl += c - continue - - case S.DOCTYPE: - if (c === ">") { - parser.state = S.TEXT - emitNode(parser, "ondoctype", parser.doctype) - parser.doctype = true // just remember that we saw it. - } else { - parser.doctype += c - if (c === "[") parser.state = S.DOCTYPE_DTD - else if (is(quote, c)) { - parser.state = S.DOCTYPE_QUOTED - parser.q = c - } - } - continue - - case S.DOCTYPE_QUOTED: - parser.doctype += c - if (c === parser.q) { - parser.q = "" - parser.state = S.DOCTYPE - } - continue - - case S.DOCTYPE_DTD: - parser.doctype += c - if (c === "]") parser.state = S.DOCTYPE - else if (is(quote,c)) { - parser.state = S.DOCTYPE_DTD_QUOTED - parser.q = c - } - continue - - case S.DOCTYPE_DTD_QUOTED: - parser.doctype += c - if (c === parser.q) { - parser.state = S.DOCTYPE_DTD - parser.q = "" - } - continue - - case S.COMMENT: - if (c === "-") parser.state = S.COMMENT_ENDING - else parser.comment += c - continue - - case S.COMMENT_ENDING: - if (c === "-") { - parser.state = S.COMMENT_ENDED - parser.comment = textopts(parser.opt, parser.comment) - if (parser.comment) emitNode(parser, "oncomment", parser.comment) - parser.comment = "" - } else { - parser.comment += "-" + c - parser.state = S.COMMENT - } - continue - - case S.COMMENT_ENDED: - if (c !== ">") { - strictFail(parser, "Malformed comment") - // allow <!-- blah -- bloo --> in non-strict mode, - // which is a comment of " blah -- bloo " - parser.comment += "--" + c - parser.state = S.COMMENT - } else parser.state = S.TEXT - continue - - case S.CDATA: - if (c === "]") parser.state = S.CDATA_ENDING - else parser.cdata += c - continue - - case S.CDATA_ENDING: - if (c === "]") parser.state = S.CDATA_ENDING_2 - else { - parser.cdata += "]" + c - parser.state = S.CDATA - } - continue - - case S.CDATA_ENDING_2: - if (c === ">") { - if (parser.cdata) emitNode(parser, "oncdata", parser.cdata) - emitNode(parser, "onclosecdata") - parser.cdata = "" - parser.state = S.TEXT - } else if (c === "]") { - parser.cdata += "]" - } else { - parser.cdata += "]]" + c - parser.state = S.CDATA - } - continue - - case S.PROC_INST: - if (c === "?") parser.state = S.PROC_INST_ENDING - else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY - else parser.procInstName += c - continue - - case S.PROC_INST_BODY: - if (!parser.procInstBody && is(whitespace, c)) continue - else if (c === "?") parser.state = S.PROC_INST_ENDING - else if (is(quote, c)) { - parser.state = S.PROC_INST_QUOTED - parser.q = c - parser.procInstBody += c - } else parser.procInstBody += c - continue - - case S.PROC_INST_ENDING: - if (c === ">") { - emitNode(parser, "onprocessinginstruction", { - name : parser.procInstName, - body : parser.procInstBody - }) - parser.procInstName = parser.procInstBody = "" - parser.state = S.TEXT - } else { - parser.procInstBody += "?" + c - parser.state = S.PROC_INST_BODY - } - continue - - case S.PROC_INST_QUOTED: - parser.procInstBody += c - if (c === parser.q) { - parser.state = S.PROC_INST_BODY - parser.q = "" - } - continue - - case S.OPEN_TAG: - if (is(nameBody, c)) parser.tagName += c - else { - newTag(parser) - if (c === ">") openTag(parser) - else if (c === "/") parser.state = S.OPEN_TAG_SLASH - else { - if (not(whitespace, c)) strictFail( - parser, "Invalid character in tag name") - parser.state = S.ATTRIB - } - } - continue - - case S.OPEN_TAG_SLASH: - if (c === ">") { - openTag(parser, true) - closeTag(parser) - } else { - strictFail(parser, "Forward-slash in opening tag not followed by >") - parser.state = S.ATTRIB - } - continue - - case S.ATTRIB: - // haven't read the attribute name yet. - if (is(whitespace, c)) continue - else if (c === ">") openTag(parser) - else if (c === "/") parser.state = S.OPEN_TAG_SLASH - else if (is(nameStart, c)) { - parser.attribName = c - parser.attribValue = "" - parser.state = S.ATTRIB_NAME - } else strictFail(parser, "Invalid attribute name") - continue - - case S.ATTRIB_NAME: - if (c === "=") parser.state = S.ATTRIB_VALUE - else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE - else if (is(nameBody, c)) parser.attribName += c - else strictFail(parser, "Invalid attribute name") - continue - - case S.ATTRIB_NAME_SAW_WHITE: - if (c === "=") parser.state = S.ATTRIB_VALUE - else if (is(whitespace, c)) continue - else { - strictFail(parser, "Attribute without value") - parser.tag.attributes[parser.attribName] = "" - parser.attribValue = "" - emitNode(parser, "onattribute", - { name : parser.attribName, value : "" }) - parser.attribName = "" - if (c === ">") openTag(parser) - else if (is(nameStart, c)) { - parser.attribName = c - parser.state = S.ATTRIB_NAME - } else { - strictFail(parser, "Invalid attribute name") - parser.state = S.ATTRIB - } - } - continue - - case S.ATTRIB_VALUE: - if (is(whitespace, c)) continue - else if (is(quote, c)) { - parser.q = c - parser.state = S.ATTRIB_VALUE_QUOTED - } else { - strictFail(parser, "Unquoted attribute value") - parser.state = S.ATTRIB_VALUE_UNQUOTED - parser.attribValue = c - } - continue - - case S.ATTRIB_VALUE_QUOTED: - if (c !== parser.q) { - if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_Q - else parser.attribValue += c - continue - } - attrib(parser) - parser.q = "" - parser.state = S.ATTRIB - continue - - case S.ATTRIB_VALUE_UNQUOTED: - if (not(attribEnd,c)) { - if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U - else parser.attribValue += c - continue - } - attrib(parser) - if (c === ">") openTag(parser) - else parser.state = S.ATTRIB - continue - - case S.CLOSE_TAG: - if (!parser.tagName) { - if (is(whitespace, c)) continue - else if (not(nameStart, c)) strictFail(parser, - "Invalid tagname in closing tag.") - else parser.tagName = c - } - else if (c === ">") closeTag(parser) - else if (is(nameBody, c)) parser.tagName += c - else { - if (not(whitespace, c)) strictFail(parser, - "Invalid tagname in closing tag") - parser.state = S.CLOSE_TAG_SAW_WHITE - } - continue - - case S.CLOSE_TAG_SAW_WHITE: - if (is(whitespace, c)) continue - if (c === ">") closeTag(parser) - else strictFail("Invalid characters in closing tag") - continue - - case S.TEXT_ENTITY: - case S.ATTRIB_VALUE_ENTITY_Q: - case S.ATTRIB_VALUE_ENTITY_U: - switch(parser.state) { - case S.TEXT_ENTITY: - var returnState = S.TEXT, buffer = "textNode" - break - - case S.ATTRIB_VALUE_ENTITY_Q: - var returnState = S.ATTRIB_VALUE_QUOTED, buffer = "attribValue" - break - - case S.ATTRIB_VALUE_ENTITY_U: - var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = "attribValue" - break - } - if (c === ";") { - parser[buffer] += parseEntity(parser) - parser.entity = "" - parser.state = returnState - } - else if (is(entity, c)) parser.entity += c - else { - strictFail("Invalid character entity") - parser[buffer] += "&" + parser.entity + c - parser.entity = "" - parser.state = returnState - } - continue - - default: - throw new Error(parser, "Unknown state: " + parser.state) - } - } // while - // cdata blocks can get very big under normal conditions. emit and move on. - // if (parser.state === S.CDATA && parser.cdata) { - // emitNode(parser, "oncdata", parser.cdata) - // parser.cdata = "" - // } - if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser) - return parser -} - -})(typeof exports === "undefined" ? sax = {} : exports) diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/package.json b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/package.json deleted file mode 100644 index ca0118b5cfe..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "sax", - "description": "An evented streaming XML parser in JavaScript", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "version": "0.3.5", - "main": "lib/sax.js", - "license": { - "type": "MIT", - "url": "https://raw.github.com/isaacs/sax-js/master/LICENSE" - }, - "scripts": { - "test": "node test/index.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sax-js.git" - }, - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "_id": "sax@0.3.5", - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - { - "name": "Stein Martin Hustad", - "email": "stein@hustad.com" - }, - { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "Laurie Harper", - "email": "laurie@holoweb.net" - }, - { - "name": "Jann Horn", - "email": "jann@Jann-PC.fritz.box" - }, - { - "name": "Elijah Insua", - "email": "tmpvar@gmail.com" - }, - { - "name": "Henry Rawas", - "email": "henryr@schakra.com" - }, - { - "name": "Justin Makeig", - "email": "jmpublic@makeig.com" - } - ], - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.1.4", - "_nodeVersion": "v0.7.6-pre", - "_defaultsLoaded": true, - "dist": { - "shasum": "bd2b8a4a7fa694653a13c80f4afbf69f962d3fd0" - }, - "_from": "sax@*" -} diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/buffer-overrun.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/buffer-overrun.js deleted file mode 100644 index 8d12fac5092..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/buffer-overrun.js +++ /dev/null @@ -1,25 +0,0 @@ -// set this really low so that I don't have to put 64 MB of xml in here. -var sax = require("../lib/sax") -var bl = sax.MAX_BUFFER_LENGTH -sax.MAX_BUFFER_LENGTH = 5; - -require(__dirname).test({ - expect : [ - ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 15\nChar: "], - ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 30\nChar: "], - ["error", "Max buffer length exceeded: tagName\nLine: 0\nColumn: 45\nChar: "], - ["opentag", { - "name": "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ", - "attributes": {} - }], - ["text", "yo"], - ["closetag", "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"] - ] -}).write("<abcdefghijklmn") - .write("opqrstuvwxyzABC") - .write("DEFGHIJKLMNOPQR") - .write("STUVWXYZ>") - .write("yo") - .write("</abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>") - .close(); -sax.MAX_BUFFER_LENGTH = bl diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-chunked.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-chunked.js deleted file mode 100644 index ccd5ee68dc1..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-chunked.js +++ /dev/null @@ -1,11 +0,0 @@ - -require(__dirname).test({ - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", " this is character data "], - ["closecdata", undefined], - ["closetag", "R"] - ] -}).write("<r><![CDATA[ this is ").write("character data ").write("]]></r>").close(); - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-end-split.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-end-split.js deleted file mode 100644 index b41bd00e242..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-end-split.js +++ /dev/null @@ -1,15 +0,0 @@ - -require(__dirname).test({ - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", " this is "], - ["closecdata", undefined], - ["closetag", "R"] - ] -}) - .write("<r><![CDATA[ this is ]") - .write("]>") - .write("</r>") - .close(); - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-fake-end.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-fake-end.js deleted file mode 100644 index 07aeac4c210..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-fake-end.js +++ /dev/null @@ -1,28 +0,0 @@ - -var p = require(__dirname).test({ - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", "[[[[[[[[]]]]]]]]"], - ["closecdata", undefined], - ["closetag", "R"] - ] -}) -var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>" -for (var i = 0; i < x.length ; i ++) { - p.write(x.charAt(i)) -} -p.close(); - - -var p2 = require(__dirname).test({ - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", "[[[[[[[[]]]]]]]]"], - ["closecdata", undefined], - ["closetag", "R"] - ] -}) -var x = "<r><![CDATA[[[[[[[[[]]]]]]]]]]></r>" -p2.write(x).close(); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-multiple.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-multiple.js deleted file mode 100644 index dab20150bc2..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata-multiple.js +++ /dev/null @@ -1,15 +0,0 @@ - -require(__dirname).test({ - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", " this is "], - ["closecdata", undefined], - ["opencdata", undefined], - ["cdata", "character data "], - ["closecdata", undefined], - ["closetag", "R"] - ] -}).write("<r><![CDATA[ this is ]]>").write("<![CDA").write("T").write("A[") - .write("character data ").write("]]></r>").close(); - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata.js deleted file mode 100644 index 0f09cce95b1..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/cdata.js +++ /dev/null @@ -1,10 +0,0 @@ -require(__dirname).test({ - xml : "<r><![CDATA[ this is character data ]]></r>", - expect : [ - ["opentag", {"name": "R","attributes": {}}], - ["opencdata", undefined], - ["cdata", " this is character data "], - ["closecdata", undefined], - ["closetag", "R"] - ] -}); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/index.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/index.js deleted file mode 100644 index d4e1ef4f9c9..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/index.js +++ /dev/null @@ -1,86 +0,0 @@ -var globalsBefore = JSON.stringify(Object.keys(global)) - , util = require("util") - , assert = require("assert") - , fs = require("fs") - , path = require("path") - , sax = require("../lib/sax") - -exports.sax = sax - -// handy way to do simple unit tests -// if the options contains an xml string, it'll be written and the parser closed. -// otherwise, it's assumed that the test will write and close. -exports.test = function test (options) { - var xml = options.xml - , parser = sax.parser(options.strict, options.opt) - , expect = options.expect - , e = 0 - sax.EVENTS.forEach(function (ev) { - parser["on" + ev] = function (n) { - if (process.env.DEBUG) { - console.error({ expect: expect[e] - , actual: [ev, n] }) - } - if (e >= expect.length && (ev === "end" || ev === "ready")) return - assert.ok( e < expect.length, - "expectation #"+e+" "+util.inspect(expect[e])+"\n"+ - "Unexpected event: "+ev+" "+(n ? util.inspect(n) : "")) - var inspected = n instanceof Error ? "\n"+ n.message : util.inspect(n) - assert.equal(ev, expect[e][0], - "expectation #"+e+"\n"+ - "Didn't get expected event\n"+ - "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ - "actual: "+ev+" "+inspected+"\n") - if (ev === "error") assert.equal(n.message, expect[e][1]) - else assert.deepEqual(n, expect[e][1], - "expectation #"+e+"\n"+ - "Didn't get expected argument\n"+ - "expect: "+expect[e][0] + " " +util.inspect(expect[e][1])+"\n"+ - "actual: "+ev+" "+inspected+"\n") - e++ - if (ev === "error") parser.resume() - } - }) - if (xml) parser.write(xml).close() - return parser -} - -if (module === require.main) { - var running = true - , failures = 0 - - function fail (file, er) { - util.error("Failed: "+file) - util.error(er.stack || er.message) - failures ++ - } - - fs.readdir(__dirname, function (error, files) { - files = files.filter(function (file) { - return (/\.js$/.exec(file) && file !== 'index.js') - }) - var n = files.length - , i = 0 - console.log("0.." + n) - files.forEach(function (file) { - // run this test. - try { - require(path.resolve(__dirname, file)) - var globalsAfter = JSON.stringify(Object.keys(global)) - if (globalsAfter !== globalsBefore) { - var er = new Error("new globals introduced\n"+ - "expected: "+globalsBefore+"\n"+ - "actual: "+globalsAfter) - globalsBefore = globalsAfter - throw er - } - console.log("ok " + (++i) + " - " + file) - } catch (er) { - console.log("not ok "+ (++i) + " - " + file) - fail(file, er) - } - }) - if (!failures) return console.log("#all pass") - else return console.error(failures + " failure" + (failures > 1 ? "s" : "")) - }) -} diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-23.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-23.js deleted file mode 100644 index e7991b2a622..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-23.js +++ /dev/null @@ -1,43 +0,0 @@ - -require(__dirname).test - ( { xml : - "<compileClassesResponse>"+ - "<result>"+ - "<bodyCrc>653724009</bodyCrc>"+ - "<column>-1</column>"+ - "<id>01pG0000002KoSUIA0</id>"+ - "<line>-1</line>"+ - "<name>CalendarController</name>"+ - "<success>true</success>"+ - "</result>"+ - "</compileClassesResponse>" - - , expect : - [ [ "opentag", { name: "COMPILECLASSESRESPONSE", attributes: {} } ] - , [ "opentag", { name : "RESULT", attributes: {} } ] - , [ "opentag", { name: "BODYCRC", attributes: {} } ] - , [ "text", "653724009" ] - , [ "closetag", "BODYCRC" ] - , [ "opentag", { name: "COLUMN", attributes: {} } ] - , [ "text", "-1" ] - , [ "closetag", "COLUMN" ] - , [ "opentag", { name: "ID", attributes: {} } ] - , [ "text", "01pG0000002KoSUIA0" ] - , [ "closetag", "ID" ] - , [ "opentag", {name: "LINE", attributes: {} } ] - , [ "text", "-1" ] - , [ "closetag", "LINE" ] - , [ "opentag", {name: "NAME", attributes: {} } ] - , [ "text", "CalendarController" ] - , [ "closetag", "NAME" ] - , [ "opentag", {name: "SUCCESS", attributes: {} } ] - , [ "text", "true" ] - , [ "closetag", "SUCCESS" ] - , [ "closetag", "RESULT" ] - , [ "closetag", "COMPILECLASSESRESPONSE" ] - ] - , strict : false - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-30.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-30.js deleted file mode 100644 index c2cc809ba05..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-30.js +++ /dev/null @@ -1,24 +0,0 @@ -// https://github.com/isaacs/sax-js/issues/33 -require(__dirname).test - ( { xml : "<xml>\n"+ - "<!-- \n"+ - " comment with a single dash- in it\n"+ - "-->\n"+ - "<data/>\n"+ - "</xml>" - - , expect : - [ [ "opentag", { name: "xml", attributes: {} } ] - , [ "text", "\n" ] - , [ "comment", " \n comment with a single dash- in it\n" ] - , [ "text", "\n" ] - , [ "opentag", { name: "data", attributes: {} } ] - , [ "closetag", "data" ] - , [ "text", "\n" ] - , [ "closetag", "xml" ] - ] - , strict : true - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-35.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-35.js deleted file mode 100644 index 7c521c5e7f9..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-35.js +++ /dev/null @@ -1,15 +0,0 @@ -// https://github.com/isaacs/sax-js/issues/35 -require(__dirname).test - ( { xml : "<xml>

\n"+ - "</xml>" - - , expect : - [ [ "opentag", { name: "xml", attributes: {} } ] - , [ "text", "\r\r\n" ] - , [ "closetag", "xml" ] - ] - , strict : true - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-47.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-47.js deleted file mode 100644 index 911c7d0302f..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-47.js +++ /dev/null @@ -1,13 +0,0 @@ -// https://github.com/isaacs/sax-js/issues/47 -require(__dirname).test - ( { xml : '<a href="query.svc?x=1&y=2&z=3"/>' - , expect : [ - [ "attribute", { name:'href', value:"query.svc?x=1&y=2&z=3"} ], - [ "opentag", { name: "a", attributes: { href:"query.svc?x=1&y=2&z=3"} } ], - [ "closetag", "a" ] - ] - , strict : true - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-49.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-49.js deleted file mode 100644 index 29643258f38..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/issue-49.js +++ /dev/null @@ -1,31 +0,0 @@ -// https://github.com/isaacs/sax-js/issues/49 -require(__dirname).test - ( { xml : "<xml><script>hello world</script></xml>" - , expect : - [ [ "opentag", { name: "xml", attributes: {} } ] - , [ "opentag", { name: "script", attributes: {} } ] - , [ "text", "hello world" ] - , [ "closetag", "script" ] - , [ "closetag", "xml" ] - ] - , strict : false - , opt : { lowercasetags: true, noscript: true } - } - ) - -require(__dirname).test - ( { xml : "<xml><script><![CDATA[hello world]]></script></xml>" - , expect : - [ [ "opentag", { name: "xml", attributes: {} } ] - , [ "opentag", { name: "script", attributes: {} } ] - , [ "opencdata", undefined ] - , [ "cdata", "hello world" ] - , [ "closecdata", undefined ] - , [ "closetag", "script" ] - , [ "closetag", "xml" ] - ] - , strict : false - , opt : { lowercasetags: true, noscript: true } - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/parser-position.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/parser-position.js deleted file mode 100644 index e4a68b1e960..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/parser-position.js +++ /dev/null @@ -1,28 +0,0 @@ -var sax = require("../lib/sax"), - assert = require("assert") - -function testPosition(chunks, expectedEvents) { - var parser = sax.parser(); - expectedEvents.forEach(function(expectation) { - parser['on' + expectation[0]] = function() { - for (var prop in expectation[1]) { - assert.equal(parser[prop], expectation[1][prop]); - } - } - }); - chunks.forEach(function(chunk) { - parser.write(chunk); - }); -}; - -testPosition(['<div>abcdefgh</div>'], - [ ['opentag', { position: 5, startTagPosition: 1 }] - , ['text', { position: 19, startTagPosition: 14 }] - , ['closetag', { position: 19, startTagPosition: 14 }] - ]); - -testPosition(['<div>abcde','fgh</div>'], - [ ['opentag', { position: 5, startTagPosition: 1 }] - , ['text', { position: 19, startTagPosition: 14 }] - , ['closetag', { position: 19, startTagPosition: 14 }] - ]); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/script.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/script.js deleted file mode 100644 index 464c051a154..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/script.js +++ /dev/null @@ -1,12 +0,0 @@ -require(__dirname).test({ - xml : "<html><head><script>if (1 < 0) { console.log('elo there'); }</script></head></html>", - expect : [ - ["opentag", {"name": "HTML","attributes": {}}], - ["opentag", {"name": "HEAD","attributes": {}}], - ["opentag", {"name": "SCRIPT","attributes": {}}], - ["script", "if (1 < 0) { console.log('elo there'); }"], - ["closetag", "SCRIPT"], - ["closetag", "HEAD"], - ["closetag", "HTML"] - ] -}); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child-strict.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child-strict.js deleted file mode 100644 index ce9c045154e..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child-strict.js +++ /dev/null @@ -1,40 +0,0 @@ - -require(__dirname).test({ - xml : - "<root>"+ - "<child>" + - "<haha />" + - "</child>" + - "<monkey>" + - "=(|)" + - "</monkey>" + - "</root>", - expect : [ - ["opentag", { - "name": "root", - "attributes": {} - }], - ["opentag", { - "name": "child", - "attributes": {} - }], - ["opentag", { - "name": "haha", - "attributes": {} - }], - ["closetag", "haha"], - ["closetag", "child"], - ["opentag", { - "name": "monkey", - "attributes": {} - }], - ["text", "=(|)"], - ["closetag", "monkey"], - ["closetag", "root"], - ["end"], - ["ready"] - ], - strict : true, - opt : {} -}); - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child.js deleted file mode 100644 index bc6b52b8da3..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-child.js +++ /dev/null @@ -1,40 +0,0 @@ - -require(__dirname).test({ - xml : - "<root>"+ - "<child>" + - "<haha />" + - "</child>" + - "<monkey>" + - "=(|)" + - "</monkey>" + - "</root>", - expect : [ - ["opentag", { - "name": "ROOT", - "attributes": {} - }], - ["opentag", { - "name": "CHILD", - "attributes": {} - }], - ["opentag", { - "name": "HAHA", - "attributes": {} - }], - ["closetag", "HAHA"], - ["closetag", "CHILD"], - ["opentag", { - "name": "MONKEY", - "attributes": {} - }], - ["text", "=(|)"], - ["closetag", "MONKEY"], - ["closetag", "ROOT"], - ["end"], - ["ready"] - ], - strict : false, - opt : {} -}); - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-tag.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-tag.js deleted file mode 100644 index b2c57362985..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/self-closing-tag.js +++ /dev/null @@ -1,25 +0,0 @@ - -require(__dirname).test({ - xml : - "<root> "+ - "<haha /> "+ - "<haha/> "+ - "<monkey> "+ - "=(|) "+ - "</monkey>"+ - "</root> ", - expect : [ - ["opentag", {name:"ROOT", attributes:{}}], - ["opentag", {name:"HAHA", attributes:{}}], - ["closetag", "HAHA"], - ["opentag", {name:"HAHA", attributes:{}}], - ["closetag", "HAHA"], - // ["opentag", {name:"HAHA", attributes:{}}], - // ["closetag", "HAHA"], - ["opentag", {name:"MONKEY", attributes:{}}], - ["text", "=(|)"], - ["closetag", "MONKEY"], - ["closetag", "ROOT"] - ], - opt : { trim : true } -});
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/stray-ending.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/stray-ending.js deleted file mode 100644 index 6b0aa7f3d80..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/stray-ending.js +++ /dev/null @@ -1,17 +0,0 @@ -// stray ending tags should just be ignored in non-strict mode. -// https://github.com/isaacs/sax-js/issues/32 -require(__dirname).test - ( { xml : - "<a><b></c></b></a>" - , expect : - [ [ "opentag", { name: "A", attributes: {} } ] - , [ "opentag", { name: "B", attributes: {} } ] - , [ "text", "</c>" ] - , [ "closetag", "B" ] - , [ "closetag", "A" ] - ] - , strict : false - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/trailing-non-whitespace.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/trailing-non-whitespace.js deleted file mode 100644 index 3e1fb2ed5ce..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/trailing-non-whitespace.js +++ /dev/null @@ -1,17 +0,0 @@ - -require(__dirname).test({ - xml : "<span>Welcome,</span> to monkey land", - expect : [ - ["opentag", { - "name": "SPAN", - "attributes": {} - }], - ["text", "Welcome,"], - ["closetag", "SPAN"], - ["text", " to monkey land"], - ["end"], - ["ready"] - ], - strict : false, - opt : {} -}); diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/unquoted.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/unquoted.js deleted file mode 100644 index 79f1d0b06ce..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/unquoted.js +++ /dev/null @@ -1,17 +0,0 @@ -// unquoted attributes should be ok in non-strict mode -// https://github.com/isaacs/sax-js/issues/31 -require(__dirname).test - ( { xml : - "<span class=test hello=world></span>" - , expect : - [ [ "attribute", { name: "class", value: "test" } ] - , [ "attribute", { name: "hello", value: "world" } ] - , [ "opentag", { name: "SPAN", - attributes: { class: "test", hello: "world" } } ] - , [ "closetag", "SPAN" ] - ] - , strict : false - , opt : {} - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-issue-41.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-issue-41.js deleted file mode 100644 index 596d82b69a8..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-issue-41.js +++ /dev/null @@ -1,67 +0,0 @@ -var t = require(__dirname) - - , xmls = // should be the same both ways. - [ "<parent xmlns:a='http://ATTRIBUTE' a:attr='value' />" - , "<parent a:attr='value' xmlns:a='http://ATTRIBUTE' />" ] - - , ex1 = - [ [ "opennamespace" - , { prefix: "a" - , uri: "http://ATTRIBUTE" - } - ] - , [ "attribute" - , { name: "xmlns:a" - , value: "http://ATTRIBUTE" - , prefix: "xmlns" - , local: "a" - , uri: "http://www.w3.org/2000/xmlns/" - } - ] - , [ "attribute" - , { name: "a:attr" - , local: "attr" - , prefix: "a" - , uri: "http://ATTRIBUTE" - , value: "value" - } - ] - , [ "opentag" - , { name: "parent" - , uri: "" - , prefix: "" - , local: "parent" - , attributes: - { "a:attr": - { name: "a:attr" - , local: "attr" - , prefix: "a" - , uri: "http://ATTRIBUTE" - , value: "value" - } - , "xmlns:a": - { name: "xmlns:a" - , local: "a" - , prefix: "xmlns" - , uri: "http://www.w3.org/2000/xmlns/" - , value: "http://ATTRIBUTE" - } - } - , ns: {"a": "http://ATTRIBUTE"} - } - ] - , ["closetag", "parent"] - , ["closenamespace", { prefix: "a", uri: "http://ATTRIBUTE" }] - ] - - // swap the order of elements 2 and 1 - , ex2 = [ex1[0], ex1[2], ex1[1]].concat(ex1.slice(3)) - , expected = [ex1, ex2] - -xmls.forEach(function (x, i) { - t.test({ xml: x - , expect: expected[i] - , strict: true - , opt: { xmlns: true } - }) -}) diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-rebinding.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-rebinding.js deleted file mode 100644 index f464876bebc..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-rebinding.js +++ /dev/null @@ -1,59 +0,0 @@ - -require(__dirname).test - ( { xml : - "<root xmlns:x='x1' xmlns:y='y1' x:a='x1' y:a='y1'>"+ - "<rebind xmlns:x='x2'>"+ - "<check x:a='x2' y:a='y1'/>"+ - "</rebind>"+ - "<check x:a='x1' y:a='y1'/>"+ - "</root>" - - , expect : - [ [ "opennamespace", { prefix: "x", uri: "x1" } ] - , [ "opennamespace", { prefix: "y", uri: "y1" } ] - , [ "attribute", { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] - , [ "attribute", { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } ] - , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] - , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] - , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", - attributes: { "xmlns:x": { name: "xmlns:x", value: "x1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } - , "xmlns:y": { name: "xmlns:y", value: "y1", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "y" } - , "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } - , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, - ns: { x: 'x1', y: 'y1' } } ] - - , [ "opennamespace", { prefix: "x", uri: "x2" } ] - , [ "attribute", { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } ] - , [ "opentag", { name: "rebind", uri: "", prefix: "", local: "rebind", - attributes: { "xmlns:x": { name: "xmlns:x", value: "x2", uri: "http://www.w3.org/2000/xmlns/", prefix: "xmlns", local: "x" } }, - ns: { x: 'x2' } } ] - - , [ "attribute", { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } ] - , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] - , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", - attributes: { "x:a": { name: "x:a", value: "x2", uri: "x2", prefix: "x", local: "a" } - , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, - ns: { x: 'x2' } } ] - - , [ "closetag", "check" ] - - , [ "closetag", "rebind" ] - , [ "closenamespace", { prefix: "x", uri: "x2" } ] - - , [ "attribute", { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } ] - , [ "attribute", { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } ] - , [ "opentag", { name: "check", uri: "", prefix: "", local: "check", - attributes: { "x:a": { name: "x:a", value: "x1", uri: "x1", prefix: "x", local: "a" } - , "y:a": { name: "y:a", value: "y1", uri: "y1", prefix: "y", local: "a" } }, - ns: { x: 'x1', y: 'y1' } } ] - , [ "closetag", "check" ] - - , [ "closetag", "root" ] - , [ "closenamespace", { prefix: "x", uri: "x1" } ] - , [ "closenamespace", { prefix: "y", uri: "y1" } ] - ] - , strict : true - , opt : { xmlns: true } - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-strict.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-strict.js deleted file mode 100644 index 4ad615b227a..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-strict.js +++ /dev/null @@ -1,71 +0,0 @@ - -require(__dirname).test - ( { xml : - "<root>"+ - "<plain attr='normal'/>"+ - "<ns1 xmlns='uri:default'>"+ - "<plain attr='normal'/>"+ - "</ns1>"+ - "<ns2 xmlns:a='uri:nsa'>"+ - "<plain attr='normal'/>"+ - "<a:ns a:attr='namespaced'/>"+ - "</ns2>"+ - "</root>" - - , expect : - [ [ "opentag", { name: "root", prefix: "", local: "root", uri: "", - attributes: {}, ns: {} } ] - - , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] - , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", - attributes: { "attr": { name: "attr", value: "normal", uri: "", prefix: "", local: "attr", uri: "" } }, - ns: {} } ] - , [ "closetag", "plain" ] - - , [ "opennamespace", { prefix: "", uri: "uri:default" } ] - - , [ "attribute", { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } ] - , [ "opentag", { name: "ns1", prefix: "", local: "ns1", uri: "uri:default", - attributes: { "xmlns": { name: "xmlns", value: "uri:default", prefix: "xmlns", local: "", uri: "http://www.w3.org/2000/xmlns/" } }, - ns: { "": "uri:default" } } ] - - , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } ] - , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "uri:default", ns: { '': 'uri:default' }, - attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "uri:default" } } } ] - , [ "closetag", "plain" ] - - , [ "closetag", "ns1" ] - - , [ "closenamespace", { prefix: "", uri: "uri:default" } ] - - , [ "opennamespace", { prefix: "a", uri: "uri:nsa" } ] - - , [ "attribute", { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } ] - - , [ "opentag", { name: "ns2", prefix: "", local: "ns2", uri: "", - attributes: { "xmlns:a": { name: "xmlns:a", value: "uri:nsa", prefix: "xmlns", local: "a", uri: "http://www.w3.org/2000/xmlns/" } }, - ns: { a: "uri:nsa" } } ] - - , [ "attribute", { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } ] - , [ "opentag", { name: "plain", prefix: "", local: "plain", uri: "", - attributes: { "attr": { name: "attr", value: "normal", prefix: "", local: "attr", uri: "" } }, - ns: { a: 'uri:nsa' } } ] - , [ "closetag", "plain" ] - - , [ "attribute", { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } ] - , [ "opentag", { name: "a:ns", prefix: "a", local: "ns", uri: "uri:nsa", - attributes: { "a:attr": { name: "a:attr", value: "namespaced", prefix: "a", local: "attr", uri: "uri:nsa" } }, - ns: { a: 'uri:nsa' } } ] - , [ "closetag", "a:ns" ] - - , [ "closetag", "ns2" ] - - , [ "closenamespace", { prefix: "a", uri: "uri:nsa" } ] - - , [ "closetag", "root" ] - ] - , strict : true - , opt : { xmlns: true } - } - ) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-unbound.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-unbound.js deleted file mode 100644 index 2944b87e82a..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-unbound.js +++ /dev/null @@ -1,15 +0,0 @@ - -require(__dirname).test( - { strict : true - , opt : { xmlns: true } - , expect : - [ ["error", "Unbound namespace prefix: \"unbound\"\nLine: 0\nColumn: 28\nChar: >"] - - , [ "attribute", { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } ] - , [ "opentag", { name: "root", uri: "", prefix: "", local: "root", - attributes: { "unbound:attr": { name: "unbound:attr", value: "value", uri: "unbound", prefix: "unbound", local: "attr" } }, - ns: {} } ] - , [ "closetag", "root" ] - ] - } -).write("<root unbound:attr='value'/>") diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js deleted file mode 100644 index 16da771a580..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js +++ /dev/null @@ -1,35 +0,0 @@ -require(__dirname).test( - { xml : "<root xml:lang='en'/>" - , expect : - [ [ "attribute" - , { name: "xml:lang" - , local: "lang" - , prefix: "xml" - , uri: "http://www.w3.org/XML/1998/namespace" - , value: "en" - } - ] - , [ "opentag" - , { name: "root" - , uri: "" - , prefix: "" - , local: "root" - , attributes: - { "xml:lang": - { name: "xml:lang" - , local: "lang" - , prefix: "xml" - , uri: "http://www.w3.org/XML/1998/namespace" - , value: "en" - } - } - , ns: {} - } - ] - , ["closetag", "root"] - ] - , strict : true - , opt : { xmlns: true } - } -) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix.js deleted file mode 100644 index 9a1ce1b3407..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-prefix.js +++ /dev/null @@ -1,20 +0,0 @@ -require(__dirname).test( - { xml : "<xml:root/>" - , expect : - [ - [ "opentag" - , { name: "xml:root" - , uri: "http://www.w3.org/XML/1998/namespace" - , prefix: "xml" - , local: "root" - , attributes: {} - , ns: {} - } - ] - , ["closetag", "xml:root"] - ] - , strict : true - , opt : { xmlns: true } - } -) - diff --git a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-redefine.js b/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-redefine.js deleted file mode 100644 index 1eba9c71439..00000000000 --- a/deps/npm/test/packages/npm-test-optional-deps/node_modules/sax/test/xmlns-xml-default-redefine.js +++ /dev/null @@ -1,40 +0,0 @@ -require(__dirname).test( - { xml : "<xml:root xmlns:xml='ERROR'/>" - , expect : - [ ["error" - , "xml: prefix must be bound to http://www.w3.org/XML/1998/namespace\n" - + "Actual: ERROR\n" - + "Line: 0\nColumn: 27\nChar: '" - ] - , [ "attribute" - , { name: "xmlns:xml" - , local: "xml" - , prefix: "xmlns" - , uri: "http://www.w3.org/2000/xmlns/" - , value: "ERROR" - } - ] - , [ "opentag" - , { name: "xml:root" - , uri: "http://www.w3.org/XML/1998/namespace" - , prefix: "xml" - , local: "root" - , attributes: - { "xmlns:xml": - { name: "xmlns:xml" - , local: "xml" - , prefix: "xmlns" - , uri: "http://www.w3.org/2000/xmlns/" - , value: "ERROR" - } - } - , ns: {} - } - ] - , ["closetag", "xml:root"] - ] - , strict : true - , opt : { xmlns: true } - } -) - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/.travis.yml deleted file mode 100644 index 2d26206d58c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/LICENSE b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/LICENSE deleted file mode 100644 index 57c8a18efab..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/LICENSE +++ /dev/null @@ -1,63 +0,0 @@ -Some pieces from builtins/ taken from node core under this license: - ----- - -Copyright Joyent, Inc. and other Node contributors. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -USE OR OTHER DEALINGS IN THE SOFTWARE. - ----- - -buffer_ieee754.js has this license in it: - ----- - -Copyright (c) 2008, Fair Oaks Labs, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - -Modifications to writeIEEE754 to support negative zeroes made by Brian White - ----- diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/README.markdown deleted file mode 100644 index 80eed896787..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/README.markdown +++ /dev/null @@ -1,173 +0,0 @@ -browserify -========== - -Make node-style require() work in the browser with a server-side build step, -as if by magic! - -[![build status](https://secure.travis-ci.org/substack/node-browserify.png)](http://travis-ci.org/substack/node-browserify) - -![browserify!](http://substack.net/images/browserify/browserify.png) - -example -======= - -Just write an `entry.js` to start with some `require()`s in it: - -````javascript -// use relative requires -var foo = require('./foo'); -var bar = require('../lib/bar'); - -// or use modules installed by npm in node_modules/ -var domready = require('domready'); - -domready(function () { - var elem = document.getElementById('result'); - elem.textContent = foo(100) + bar('baz'); -}); -```` - -Now just use the `browserify` command to build a bundle starting at `entry.js`: - -``` -$ browserify entry.js -o bundle.js -``` - -All of the modules that `entry.js` needs are included in the final bundle from a -recursive walk using [detective](https://github.com/substack/node-detective). - -To use the bundle, just toss a `<script src="bundle.js"></script>` into your -html! - -usage -===== - -```` -Usage: browserify [entry files] {OPTIONS} - -Options: - --outfile, -o Write the browserify bundle to this file. - If unspecified, browserify prints to stdout. - --require, -r A module name or file to bundle.require() - Optionally use a colon separator to set the target. - --entry, -e An entry point of your app - --exports Export these core objects, comma-separated list - with any of: require, process. If unspecified, the - export behavior will be inferred. - - --ignore, -i Ignore a file - --alias, -a Register an alias with a colon separator: "to:from" - Example: --alias 'jquery:jquery-browserify' - --cache, -c Turn on caching at $HOME/.config/browserling/cache.json or use - a file for caching. - [default: true] - --debug, -d Switch on debugging mode with //@ sourceURL=...s. [boolean] - --plugin, -p Use a plugin. - Example: --plugin aliasify - --prelude Include the code that defines require() in this bundle. - [boolean] [default: true] - --watch, -w Watch for changes. The script will stay open and write updates - to the output every time any of the bundled files change. - This option only works in tandem with -o. - --verbose, -v Write out how many bytes were written in -o mode. This is - especially useful with --watch. - --help, -h Show this message - -```` - -compatability -============= - -Many [npm](http://npmjs.org) modules that don't do IO will just work after being -browserified. Others take more work. - -[coffee script](http://coffeescript.org/) should pretty much just work. -Just do `browserify entry.coffee` or `require('./foo.coffee')`. - -Many node built-in modules have been wrapped to work in the browser. -All you need to do is `require()` them like in node. - -* events -* path -* [vm](https://github.com/substack/vm-browserify) -* [http](https://github.com/substack/http-browserify) -* [crypto](https://github.com/dominictarr/crypto-browserify) -* assert -* url -* buffer -* buffer_ieee754 -* util -* querystring -* stream - -process -------- - -Browserify makes available a faux `process` object to modules with these -attributes: - -* nextTick(fn) - uses [the postMessage trick](http://dbaron.org/log/20100309-faster-timeouts) - for a faster `setTimeout(fn, 0)` if it can -* title - set to 'browser' for browser code, 'node' in regular node code -* browser - `true`, good for testing if you're in a browser or in node - -By default the process object is only available inside of files wrapped by -browserify. To expose it, use `--exports=process` - -__dirname ---------- - -The faux directory name, scrubbed of true directory information so as not to -expose your filesystem organization. - -__filename ----------- - -The faux file path, scrubbed of true path information so as not to expose your -filesystem organization. - -package.json -============ - -In order to resolve main files for projects, the package.json "main" field is -read. - -If a package.json has a "browserify" field, you can override the standard "main" -behavior with something special just for browsers. - -See [dnode's -package.json](https://github.com/substack/dnode/blob/9e24b97cf2ce931fbf6d7beb3731086b46bca887/package.json#L40) -for an example of using the "browserify" field. - -more -==== - -* [browserify recipes](https://github.com/substack/node-browserify/blob/master/doc/recipes.markdown#recipes) -* [browserify api reference](https://github.com/substack/node-browserify/blob/master/doc/methods.markdown#methods) -* [browserify cdn](http://browserify.nodejitsu.com/) - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install -g browserify -``` - -test -==== - -To run the node tests with tap, do: - -``` -npm test -``` - -To run the [testling](http://testling.com) tests, -create a [browserling](http://browserling.com) account then: - -``` -cd testling -./test.sh -``` diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/bin/cmd.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/bin/cmd.js deleted file mode 100755 index 9438be503db..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/bin/cmd.js +++ /dev/null @@ -1,162 +0,0 @@ -#!/usr/bin/env node - -var browserify = require('../'); -var fs = require('fs'); -var resolve = require('resolve'); - -var argv = require('optimist') - .usage('Usage: browserify [entry files] {OPTIONS}') - .wrap(80) - .option('outfile', { - alias : 'o', - desc : 'Write the browserify bundle to this file.\n' - + 'If unspecified, browserify prints to stdout.' - , - }) - .option('require', { - alias : 'r', - desc : 'A module name or file to bundle.require()\n' - + 'Optionally use a colon separator to set the target.' - , - }) - .option('entry', { - alias : 'e', - desc : 'An entry point of your app' - }) - .option('exports', { - desc : 'Export these core objects, comma-separated list\n' - + 'with any of: require, process. If unspecified, the\n' - + 'export behavior will be inferred.\n' - }) - .option('ignore', { - alias : 'i', - desc : 'Ignore a file' - }) - .option('alias', { - alias : 'a', - desc : 'Register an alias with a colon separator: "to:from"\n' - + "Example: --alias 'jquery:jquery-browserify'" - , - }) - .option('cache', { - alias : 'c', - desc : 'Turn on caching at $HOME/.config/browserling/cache.json ' - + 'or use a file for caching.\n', - default : true, - }) - .option('debug', { - alias : 'd', - desc : 'Switch on debugging mode with //@ sourceURL=...s.', - type : 'boolean' - }) - .option('plugin', { - alias : 'p', - desc : 'Use a plugin.\n' - + 'Example: --plugin aliasify' - , - }) - .option('prelude', { - default : true, - type : 'boolean', - desc : 'Include the code that defines require() in this bundle.' - }) - .option('watch', { - alias : 'w', - desc : 'Watch for changes. The script will stay open and write updates ' - + 'to the output every time any of the bundled files change.\n' - + 'This option only works in tandem with -o.' - , - }) - .option('verbose', { - alias : 'v', - desc : 'Write out how many bytes were written in -o mode. ' - + 'This is especially useful with --watch.' - , - }) - .option('help', { - alias : 'h', - desc : 'Show this message' - }) - .check(function (argv) { - if (argv.help) throw '' - if (process.argv.length <= 2) throw 'Specify a parameter.' - }) - .argv -; - -var bundle = browserify({ - watch : argv.watch, - cache : argv.cache, - debug : argv.debug, - exports : argv.exports && argv.exports.split(','), -}); - -bundle.on('syntaxError', function (err) { - console.error(err && err.stack || String(err)); - process.exit(1); -}); - -if (argv.noprelude || argv.prelude === false) { - bundle.files = []; - bundle.prepends = []; -} -if (argv.ignore) bundle.ignore(argv.ignore); - -([].concat(argv.plugin || [])).forEach(function (plugin) { - var resolved = resolve.sync(plugin, { basedir : process.cwd() }); - bundle.use(require(resolved)); -}); - -([].concat(argv.alias || [])).forEach(function (alias) { - if (!alias.match(/:/)) { - console.error('aliases require a colon separator'); - process.exit(); - } - bundle.alias.apply(bundle, alias.split(':')); -}); - -([].concat(argv.require || [])).forEach(function (req) { - if (req.match(/:/)) { - var s = req.split(':'); - bundle.require(s[0], { target : s[1] }); - return; - } - - if (!/^[.\/]/.test(req)) { - try { - var res = resolve.sync(req, { basedir : process.cwd() }); - } - catch (e) { - return bundle.require(req); - } - return bundle.require(res, { target : req }); - } - bundle.require(req); -}); - -(argv._.concat(argv.entry || [])).forEach(function (entry) { - bundle.addEntry(entry); -}); - -if (argv.outfile) { - function write () { - var src = bundle.bundle(); - fs.writeFile(argv.outfile, src, function () { - if (argv.verbose) { - console.log(Buffer(src).length + ' bytes written'); - } - }); - } - - write(); - if (argv.watch) bundle.on('bundle', write) -} -else { - var src = bundle.bundle(); - try { Function(src) } - catch (err) { - console.error(err.stack); - process.exit(1); - } - console.log(src); -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/__browserify_process.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/__browserify_process.js deleted file mode 100644 index ccafc0e167e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/__browserify_process.js +++ /dev/null @@ -1,48 +0,0 @@ -var process = module.exports = {}; - -process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; - -process.binding = function (name) { - if (name === 'evals') return (require)('vm') - else throw new Error('No such module. (Possibly not yet loaded)') -}; - -(function () { - var cwd = '/'; - var path; - process.cwd = function () { return cwd }; - process.chdir = function (dir) { - if (!path) path = require('path'); - cwd = path.resolve(dir, cwd); - }; -})(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/assert.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/assert.js deleted file mode 100644 index f93f7216aa1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/assert.js +++ /dev/null @@ -1,303 +0,0 @@ -// UTILITY -var util = require('util'); -var Buffer = require("buffer").Buffer; -var pSlice = Array.prototype.slice; - -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = module.exports = ok; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) - -assert.AssertionError = function AssertionError(options) { - this.name = 'AssertionError'; - this.message = options.message; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - var stackStartFunction = options.stackStartFunction || fail; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } -}; -util.inherits(assert.AssertionError, Error); - -function replacer(key, value) { - if (value === undefined) { - return '' + value; - } - if (typeof value === 'number' && (isNaN(value) || !isFinite(value))) { - return value.toString(); - } - if (typeof value === 'function' || value instanceof RegExp) { - return value.toString(); - } - return value; -} - -function truncate(s, n) { - if (typeof s == 'string') { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} - -assert.AssertionError.prototype.toString = function() { - if (this.message) { - return [this.name + ':', this.message].join(' '); - } else { - return [ - this.name + ':', - truncate(JSON.stringify(this.actual, replacer), 128), - this.operator, - truncate(JSON.stringify(this.expected, replacer), 128) - ].join(' '); - } -}; - -// assert.AssertionError instanceof Error - -assert.AssertionError.__proto__ = Error.prototype; - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -function ok(value, message) { - if (!!!value) fail(value, true, message, '==', assert.ok); -} -assert.ok = ok; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); - -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', assert.notEqual); - } -}; - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, 'deepEqual', assert.deepEqual); - } -}; - -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - - } else if (Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { - if (actual.length != expected.length) return false; - - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } - - return true; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull(value) { - return value === null || value === undefined; -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try { - var ka = Object.keys(a), - kb = Object.keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key])) return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); - } -}; - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', assert.strictEqual); - } -}; - -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', assert.notStrictEqual); - } -}; - -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } - - if (expected instanceof RegExp) { - return expected.test(actual); - } else if (actual instanceof expected) { - return true; - } else if (expected.call({}, actual) === true) { - return true; - } - - return false; -} - -function _throws(shouldThrow, block, expected, message) { - var actual; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); - - if (shouldThrow && !actual) { - fail('Missing expected exception' + message); - } - - if (!shouldThrow && expectedException(actual, expected)) { - fail('Got unwanted exception' + message); - } - - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; - -assert.ifError = function(err) { if (err) {throw err;}}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer.js deleted file mode 100644 index 5c14c5b12dd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer.js +++ /dev/null @@ -1,1130 +0,0 @@ -function SlowBuffer (size) { - this.length = size; -}; - -var assert = require('assert'); - -exports.INSPECT_MAX_BYTES = 50; - - -function toHex(n) { - if (n < 16) return '0' + n.toString(16); - return n.toString(16); -} - - -SlowBuffer.prototype.inspect = function() { - var out = [], - len = this.length; - for (var i = 0; i < len; i++) { - out[i] = toHex(this[i]); - if (i == exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...'; - break; - } - } - return '<SlowBuffer ' + out.join(' ') + '>'; -}; - - -SlowBuffer.prototype.hexSlice = function(start, end) { - var len = this.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; i++) { - out += toHex(this[i]); - } - return out; -}; - - -SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - start = +start || 0; - if (typeof end == 'undefined') end = this.length; - - // Fastpath empty strings - if (+end == start) { - return ''; - } - - switch (encoding) { - case 'hex': - return this.hexSlice(start, end); - - case 'utf8': - case 'utf-8': - return this.utf8Slice(start, end); - - case 'ascii': - return this.asciiSlice(start, end); - - case 'binary': - return this.binarySlice(start, end); - - case 'base64': - return this.base64Slice(start, end); - - case 'ucs2': - case 'ucs-2': - return this.ucs2Slice(start, end); - - default: - throw new Error('Unknown encoding'); - } -}; - - -SlowBuffer.prototype.hexWrite = function(string, offset, length) { - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2) { - throw new Error('Invalid hex string'); - } - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; i++) { - var byte = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(byte)) throw new Error('Invalid hex string'); - this[offset + i] = byte; - } - SlowBuffer._charsWritten = i * 2; - return i; -}; - - -SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - switch (encoding) { - case 'hex': - return this.hexWrite(string, offset, length); - - case 'utf8': - case 'utf-8': - return this.utf8Write(string, offset, length); - - case 'ascii': - return this.asciiWrite(string, offset, length); - - case 'binary': - return this.binaryWrite(string, offset, length); - - case 'base64': - return this.base64Write(string, offset, length); - - case 'ucs2': - case 'ucs-2': - return this.ucs2Write(string, offset, length); - - default: - throw new Error('Unknown encoding'); - } -}; - - -// slice(start, end) -SlowBuffer.prototype.slice = function(start, end) { - if (end === undefined) end = this.length; - - if (end > this.length) { - throw new Error('oob'); - } - if (start > end) { - throw new Error('oob'); - } - - return new Buffer(this, end - start, +start); -}; - - -function coerce(length) { - // Coerce length to a number (possibly NaN), round up - // in case it's fractional (e.g. 123.456) then do a - // double negate to coerce a NaN to 0. Easy, right? - length = ~~Math.ceil(+length); - return length < 0 ? 0 : length; -} - - -// Buffer - -function Buffer(subject, encoding, offset) { - if (!(this instanceof Buffer)) { - return new Buffer(subject, encoding, offset); - } - - var type; - - // Are we slicing? - if (typeof offset === 'number') { - this.length = coerce(encoding); - this.parent = subject; - this.offset = offset; - } else { - // Find the length - switch (type = typeof subject) { - case 'number': - this.length = coerce(subject); - break; - - case 'string': - this.length = Buffer.byteLength(subject, encoding); - break; - - case 'object': // Assume object is an array - this.length = coerce(subject.length); - break; - - default: - throw new Error('First argument needs to be a number, ' + - 'array or string.'); - } - - if (this.length > Buffer.poolSize) { - // Big buffer, just alloc one. - this.parent = new SlowBuffer(this.length); - this.offset = 0; - - } else { - // Small buffer. - if (!pool || pool.length - pool.used < this.length) allocPool(); - this.parent = pool; - this.offset = pool.used; - pool.used += this.length; - } - - // Treat array-ish objects as a byte array. - if (isArrayIsh(subject)) { - for (var i = 0; i < this.length; i++) { - this.parent[i + this.offset] = subject[i]; - } - } else if (type == 'string') { - // We are a string - this.length = this.write(subject, 0, encoding); - } - } - -} - -function isArrayIsh(subject) { - return Array.isArray(subject) || Buffer.isBuffer(subject) || - subject && typeof subject === 'object' && - typeof subject.length === 'number'; -} - -exports.SlowBuffer = SlowBuffer; -exports.Buffer = Buffer; - -Buffer.poolSize = 8 * 1024; -var pool; - -function allocPool() { - pool = new SlowBuffer(Buffer.poolSize); - pool.used = 0; -} - - -// Static methods -Buffer.isBuffer = function isBuffer(b) { - return b instanceof Buffer || b instanceof SlowBuffer; -}; - - -// Inspect -Buffer.prototype.inspect = function inspect() { - var out = [], - len = this.length; - - for (var i = 0; i < len; i++) { - out[i] = toHex(this.parent[i + this.offset]); - if (i == exports.INSPECT_MAX_BYTES) { - out[i + 1] = '...'; - break; - } - } - - return '<Buffer ' + out.join(' ') + '>'; -}; - - -Buffer.prototype.get = function get(i) { - if (i < 0 || i >= this.length) throw new Error('oob'); - return this.parent[this.offset + i]; -}; - - -Buffer.prototype.set = function set(i, v) { - if (i < 0 || i >= this.length) throw new Error('oob'); - return this.parent[this.offset + i] = v; -}; - - -// write(string, offset = 0, length = buffer.length-offset, encoding = 'utf8') -Buffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - var ret; - switch (encoding) { - case 'hex': - ret = this.parent.hexWrite(string, this.offset + offset, length); - break; - - case 'utf8': - case 'utf-8': - ret = this.parent.utf8Write(string, this.offset + offset, length); - break; - - case 'ascii': - ret = this.parent.asciiWrite(string, this.offset + offset, length); - break; - - case 'binary': - ret = this.parent.binaryWrite(string, this.offset + offset, length); - break; - - case 'base64': - // Warning: maxLength not taken into account in base64Write - ret = this.parent.base64Write(string, this.offset + offset, length); - break; - - case 'ucs2': - case 'ucs-2': - ret = this.parent.ucs2Write(string, this.offset + offset, length); - break; - - default: - throw new Error('Unknown encoding'); - } - - Buffer._charsWritten = SlowBuffer._charsWritten; - - return ret; -}; - - -// toString(encoding, start=0, end=buffer.length) -Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - if (typeof start == 'undefined' || start < 0) { - start = 0; - } else if (start > this.length) { - start = this.length; - } - - if (typeof end == 'undefined' || end > this.length) { - end = this.length; - } else if (end < 0) { - end = 0; - } - - start = start + this.offset; - end = end + this.offset; - - switch (encoding) { - case 'hex': - return this.parent.hexSlice(start, end); - - case 'utf8': - case 'utf-8': - return this.parent.utf8Slice(start, end); - - case 'ascii': - return this.parent.asciiSlice(start, end); - - case 'binary': - return this.parent.binarySlice(start, end); - - case 'base64': - return this.parent.base64Slice(start, end); - - case 'ucs2': - case 'ucs-2': - return this.parent.ucs2Slice(start, end); - - default: - throw new Error('Unknown encoding'); - } -}; - - -// byteLength -Buffer.byteLength = SlowBuffer.byteLength; - - -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function fill(value, start, end) { - value || (value = 0); - start || (start = 0); - end || (end = this.length); - - if (typeof value === 'string') { - value = value.charCodeAt(0); - } - if (!(typeof value === 'number') || isNaN(value)) { - throw new Error('value is not a number'); - } - - if (end < start) throw new Error('end < start'); - - // Fill 0 bytes; we're done - if (end === start) return 0; - if (this.length == 0) return 0; - - if (start < 0 || start >= this.length) { - throw new Error('start out of bounds'); - } - - if (end < 0 || end > this.length) { - throw new Error('end out of bounds'); - } - - return this.parent.fill(value, - start + this.offset, - end + this.offset); -}; - - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function(target, target_start, start, end) { - var source = this; - start || (start = 0); - end || (end = this.length); - target_start || (target_start = 0); - - if (end < start) throw new Error('sourceEnd < sourceStart'); - - // Copy 0 bytes; we're done - if (end === start) return 0; - if (target.length == 0 || source.length == 0) return 0; - - if (target_start < 0 || target_start >= target.length) { - throw new Error('targetStart out of bounds'); - } - - if (start < 0 || start >= source.length) { - throw new Error('sourceStart out of bounds'); - } - - if (end < 0 || end > source.length) { - throw new Error('sourceEnd out of bounds'); - } - - // Are we oob? - if (end > this.length) { - end = this.length; - } - - if (target.length - target_start < end - start) { - end = target.length - target_start + start; - } - - return this.parent.copy(target.parent, - target_start + target.offset, - start + this.offset, - end + this.offset); -}; - - -// slice(start, end) -Buffer.prototype.slice = function(start, end) { - if (end === undefined) end = this.length; - if (end > this.length) throw new Error('oob'); - if (start > end) throw new Error('oob'); - - return new Buffer(this.parent, end - start, +start + this.offset); -}; - - -// Legacy methods for backwards compatibility. - -Buffer.prototype.utf8Slice = function(start, end) { - return this.toString('utf8', start, end); -}; - -Buffer.prototype.binarySlice = function(start, end) { - return this.toString('binary', start, end); -}; - -Buffer.prototype.asciiSlice = function(start, end) { - return this.toString('ascii', start, end); -}; - -Buffer.prototype.utf8Write = function(string, offset) { - return this.write(string, offset, 'utf8'); -}; - -Buffer.prototype.binaryWrite = function(string, offset) { - return this.write(string, offset, 'binary'); -}; - -Buffer.prototype.asciiWrite = function(string, offset) { - return this.write(string, offset, 'ascii'); -}; - -Buffer.prototype.readUInt8 = function(offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to read beyond buffer length'); - } - - return buffer[offset]; -}; - -function readUInt16(buffer, offset, isBigEndian, noAssert) { - var val = 0; - - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (isBigEndian) { - val = buffer[offset] << 8; - val |= buffer[offset + 1]; - } else { - val = buffer[offset]; - val |= buffer[offset + 1] << 8; - } - - return val; -} - -Buffer.prototype.readUInt16LE = function(offset, noAssert) { - return readUInt16(this, offset, false, noAssert); -}; - -Buffer.prototype.readUInt16BE = function(offset, noAssert) { - return readUInt16(this, offset, true, noAssert); -}; - -function readUInt32(buffer, offset, isBigEndian, noAssert) { - var val = 0; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - if (isBigEndian) { - val = buffer[offset + 1] << 16; - val |= buffer[offset + 2] << 8; - val |= buffer[offset + 3]; - val = val + (buffer[offset] << 24 >>> 0); - } else { - val = buffer[offset + 2] << 16; - val |= buffer[offset + 1] << 8; - val |= buffer[offset]; - val = val + (buffer[offset + 3] << 24 >>> 0); - } - - return val; -} - -Buffer.prototype.readUInt32LE = function(offset, noAssert) { - return readUInt32(this, offset, false, noAssert); -}; - -Buffer.prototype.readUInt32BE = function(offset, noAssert) { - return readUInt32(this, offset, true, noAssert); -}; - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - */ -Buffer.prototype.readInt8 = function(offset, noAssert) { - var buffer = this; - var neg; - - if (!noAssert) { - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to read beyond buffer length'); - } - - neg = buffer[offset] & 0x80; - if (!neg) { - return (buffer[offset]); - } - - return ((0xff - buffer[offset] + 1) * -1); -}; - -function readInt16(buffer, offset, isBigEndian, noAssert) { - var neg, val; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to read beyond buffer length'); - } - - val = readUInt16(buffer, offset, isBigEndian, noAssert); - neg = val & 0x8000; - if (!neg) { - return val; - } - - return (0xffff - val + 1) * -1; -} - -Buffer.prototype.readInt16LE = function(offset, noAssert) { - return readInt16(this, offset, false, noAssert); -}; - -Buffer.prototype.readInt16BE = function(offset, noAssert) { - return readInt16(this, offset, true, noAssert); -}; - -function readInt32(buffer, offset, isBigEndian, noAssert) { - var neg, val; - - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - val = readUInt32(buffer, offset, isBigEndian, noAssert); - neg = val & 0x80000000; - if (!neg) { - return (val); - } - - return (0xffffffff - val + 1) * -1; -} - -Buffer.prototype.readInt32LE = function(offset, noAssert) { - return readInt32(this, offset, false, noAssert); -}; - -Buffer.prototype.readInt32BE = function(offset, noAssert) { - return readInt32(this, offset, true, noAssert); -}; - -function readFloat(buffer, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to read beyond buffer length'); - } - - return require('buffer_ieee754').readIEEE754(buffer, offset, isBigEndian, - 23, 4); -} - -Buffer.prototype.readFloatLE = function(offset, noAssert) { - return readFloat(this, offset, false, noAssert); -}; - -Buffer.prototype.readFloatBE = function(offset, noAssert) { - return readFloat(this, offset, true, noAssert); -}; - -function readDouble(buffer, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset + 7 < buffer.length, - 'Trying to read beyond buffer length'); - } - - return require('buffer_ieee754').readIEEE754(buffer, offset, isBigEndian, - 52, 8); -} - -Buffer.prototype.readDoubleLE = function(offset, noAssert) { - return readDouble(this, offset, false, noAssert); -}; - -Buffer.prototype.readDoubleBE = function(offset, noAssert) { - return readDouble(this, offset, true, noAssert); -}; - - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function verifuint(value, max) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value >= 0, - 'specified a negative value for writing an unsigned value'); - - assert.ok(value <= max, 'value is larger than maximum value for type'); - - assert.ok(Math.floor(value) === value, 'value has a fractional component'); -} - -Buffer.prototype.writeUInt8 = function(value, offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xff); - } - - buffer[offset] = value; -}; - -function writeUInt16(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xffff); - } - - if (isBigEndian) { - buffer[offset] = (value & 0xff00) >>> 8; - buffer[offset + 1] = value & 0x00ff; - } else { - buffer[offset + 1] = (value & 0xff00) >>> 8; - buffer[offset] = value & 0x00ff; - } -} - -Buffer.prototype.writeUInt16LE = function(value, offset, noAssert) { - writeUInt16(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeUInt16BE = function(value, offset, noAssert) { - writeUInt16(this, value, offset, true, noAssert); -}; - -function writeUInt32(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'trying to write beyond buffer length'); - - verifuint(value, 0xffffffff); - } - - if (isBigEndian) { - buffer[offset] = (value >>> 24) & 0xff; - buffer[offset + 1] = (value >>> 16) & 0xff; - buffer[offset + 2] = (value >>> 8) & 0xff; - buffer[offset + 3] = value & 0xff; - } else { - buffer[offset + 3] = (value >>> 24) & 0xff; - buffer[offset + 2] = (value >>> 16) & 0xff; - buffer[offset + 1] = (value >>> 8) & 0xff; - buffer[offset] = value & 0xff; - } -} - -Buffer.prototype.writeUInt32LE = function(value, offset, noAssert) { - writeUInt32(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeUInt32BE = function(value, offset, noAssert) { - writeUInt32(this, value, offset, true, noAssert); -}; - - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function verifsint(value, max, min) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value <= max, 'value larger than maximum allowed value'); - - assert.ok(value >= min, 'value smaller than minimum allowed value'); - - assert.ok(Math.floor(value) === value, 'value has a fractional component'); -} - -function verifIEEE754(value, max, min) { - assert.ok(typeof (value) == 'number', - 'cannot write a non-number as a number'); - - assert.ok(value <= max, 'value larger than maximum allowed value'); - - assert.ok(value >= min, 'value smaller than minimum allowed value'); -} - -Buffer.prototype.writeInt8 = function(value, offset, noAssert) { - var buffer = this; - - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7f, -0x80); - } - - if (value >= 0) { - buffer.writeUInt8(value, offset, noAssert); - } else { - buffer.writeUInt8(0xff + value + 1, offset, noAssert); - } -}; - -function writeInt16(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 1 < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7fff, -0x8000); - } - - if (value >= 0) { - writeUInt16(buffer, value, offset, isBigEndian, noAssert); - } else { - writeUInt16(buffer, 0xffff + value + 1, offset, isBigEndian, noAssert); - } -} - -Buffer.prototype.writeInt16LE = function(value, offset, noAssert) { - writeInt16(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeInt16BE = function(value, offset, noAssert) { - writeInt16(this, value, offset, true, noAssert); -}; - -function writeInt32(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to write beyond buffer length'); - - verifsint(value, 0x7fffffff, -0x80000000); - } - - if (value >= 0) { - writeUInt32(buffer, value, offset, isBigEndian, noAssert); - } else { - writeUInt32(buffer, 0xffffffff + value + 1, offset, isBigEndian, noAssert); - } -} - -Buffer.prototype.writeInt32LE = function(value, offset, noAssert) { - writeInt32(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeInt32BE = function(value, offset, noAssert) { - writeInt32(this, value, offset, true, noAssert); -}; - -function writeFloat(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 3 < buffer.length, - 'Trying to write beyond buffer length'); - - verifIEEE754(value, 3.4028234663852886e+38, -3.4028234663852886e+38); - } - - require('buffer_ieee754').writeIEEE754(buffer, value, offset, isBigEndian, - 23, 4); -} - -Buffer.prototype.writeFloatLE = function(value, offset, noAssert) { - writeFloat(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeFloatBE = function(value, offset, noAssert) { - writeFloat(this, value, offset, true, noAssert); -}; - -function writeDouble(buffer, value, offset, isBigEndian, noAssert) { - if (!noAssert) { - assert.ok(value !== undefined && value !== null, - 'missing value'); - - assert.ok(typeof (isBigEndian) === 'boolean', - 'missing or invalid endian'); - - assert.ok(offset !== undefined && offset !== null, - 'missing offset'); - - assert.ok(offset + 7 < buffer.length, - 'Trying to write beyond buffer length'); - - verifIEEE754(value, 1.7976931348623157E+308, -1.7976931348623157E+308); - } - - require('buffer_ieee754').writeIEEE754(buffer, value, offset, isBigEndian, - 52, 8); -} - -Buffer.prototype.writeDoubleLE = function(value, offset, noAssert) { - writeDouble(this, value, offset, false, noAssert); -}; - -Buffer.prototype.writeDoubleBE = function(value, offset, noAssert) { - writeDouble(this, value, offset, true, noAssert); -}; - -SlowBuffer.prototype.readUInt8 = Buffer.prototype.readUInt8; -SlowBuffer.prototype.readUInt16LE = Buffer.prototype.readUInt16LE; -SlowBuffer.prototype.readUInt16BE = Buffer.prototype.readUInt16BE; -SlowBuffer.prototype.readUInt32LE = Buffer.prototype.readUInt32LE; -SlowBuffer.prototype.readUInt32BE = Buffer.prototype.readUInt32BE; -SlowBuffer.prototype.readInt8 = Buffer.prototype.readInt8; -SlowBuffer.prototype.readInt16LE = Buffer.prototype.readInt16LE; -SlowBuffer.prototype.readInt16BE = Buffer.prototype.readInt16BE; -SlowBuffer.prototype.readInt32LE = Buffer.prototype.readInt32LE; -SlowBuffer.prototype.readInt32BE = Buffer.prototype.readInt32BE; -SlowBuffer.prototype.readFloatLE = Buffer.prototype.readFloatLE; -SlowBuffer.prototype.readFloatBE = Buffer.prototype.readFloatBE; -SlowBuffer.prototype.readDoubleLE = Buffer.prototype.readDoubleLE; -SlowBuffer.prototype.readDoubleBE = Buffer.prototype.readDoubleBE; -SlowBuffer.prototype.writeUInt8 = Buffer.prototype.writeUInt8; -SlowBuffer.prototype.writeUInt16LE = Buffer.prototype.writeUInt16LE; -SlowBuffer.prototype.writeUInt16BE = Buffer.prototype.writeUInt16BE; -SlowBuffer.prototype.writeUInt32LE = Buffer.prototype.writeUInt32LE; -SlowBuffer.prototype.writeUInt32BE = Buffer.prototype.writeUInt32BE; -SlowBuffer.prototype.writeInt8 = Buffer.prototype.writeInt8; -SlowBuffer.prototype.writeInt16LE = Buffer.prototype.writeInt16LE; -SlowBuffer.prototype.writeInt16BE = Buffer.prototype.writeInt16BE; -SlowBuffer.prototype.writeInt32LE = Buffer.prototype.writeInt32LE; -SlowBuffer.prototype.writeInt32BE = Buffer.prototype.writeInt32BE; -SlowBuffer.prototype.writeFloatLE = Buffer.prototype.writeFloatLE; -SlowBuffer.prototype.writeFloatBE = Buffer.prototype.writeFloatBE; -SlowBuffer.prototype.writeDoubleLE = Buffer.prototype.writeDoubleLE; -SlowBuffer.prototype.writeDoubleBE = Buffer.prototype.writeDoubleBE; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer_ieee754.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer_ieee754.js deleted file mode 100644 index fb295c0ab4a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/buffer_ieee754.js +++ /dev/null @@ -1,84 +0,0 @@ -exports.readIEEE754 = function(buffer, offset, isBE, mLen, nBytes) { - var e, m, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = isBE ? 0 : (nBytes - 1), - d = isBE ? 1 : -1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -exports.writeIEEE754 = function(buffer, value, offset, isBE, mLen, nBytes) { - var e, m, c, - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = isBE ? (nBytes - 1) : 0, - d = isBE ? -1 : 1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); - - buffer[offset + i - d] |= s * 128; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/events.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/events.js deleted file mode 100644 index bc9440a804f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/events.js +++ /dev/null @@ -1,171 +0,0 @@ -if (!process.EventEmitter) process.EventEmitter = function () {}; - -var EventEmitter = exports.EventEmitter = process.EventEmitter; -var isArray = typeof Array.isArray === 'function' - ? Array.isArray - : function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]' - } -; - -// By default EventEmitters will print a warning if more than -// 10 listeners are added to it. This is a useful default which -// helps finding memory leaks. -// -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -var defaultMaxListeners = 10; -EventEmitter.prototype.setMaxListeners = function(n) { - if (!this._events) this._events = {}; - this._events.maxListeners = n; -}; - - -EventEmitter.prototype.emit = function(type) { - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events || !this._events.error || - (isArray(this._events.error) && !this._events.error.length)) - { - if (arguments[1] instanceof Error) { - throw arguments[1]; // Unhandled 'error' event - } else { - throw new Error("Uncaught, unspecified 'error' event."); - } - return false; - } - } - - if (!this._events) return false; - var handler = this._events[type]; - if (!handler) return false; - - if (typeof handler == 'function') { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - var args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - return true; - - } else if (isArray(handler)) { - var args = Array.prototype.slice.call(arguments, 1); - - var listeners = handler.slice(); - for (var i = 0, l = listeners.length; i < l; i++) { - listeners[i].apply(this, args); - } - return true; - - } else { - return false; - } -}; - -// EventEmitter is defined in src/node_events.cc -// EventEmitter.prototype.emit() is also defined there. -EventEmitter.prototype.addListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('addListener only takes instances of Function'); - } - - if (!this._events) this._events = {}; - - // To avoid recursion in the case that type == "newListeners"! Before - // adding it to the listeners, first emit "newListeners". - this.emit('newListener', type, listener); - - if (!this._events[type]) { - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - } else if (isArray(this._events[type])) { - - // Check for listener leak - if (!this._events[type].warned) { - var m; - if (this._events.maxListeners !== undefined) { - m = this._events.maxListeners; - } else { - m = defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - console.trace(); - } - } - - // If we've already got an array, just append. - this._events[type].push(listener); - } else { - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - var self = this; - self.on(type, function g() { - self.removeListener(type, g); - listener.apply(this, arguments); - }); - - return this; -}; - -EventEmitter.prototype.removeListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('removeListener only takes instances of Function'); - } - - // does not use listeners(), so no side effect of creating _events[type] - if (!this._events || !this._events[type]) return this; - - var list = this._events[type]; - - if (isArray(list)) { - var i = list.indexOf(listener); - if (i < 0) return this; - list.splice(i, 1); - if (list.length == 0) - delete this._events[type]; - } else if (this._events[type] === listener) { - delete this._events[type]; - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - // does not use listeners(), so no side effect of creating _events[type] - if (type && this._events && this._events[type]) this._events[type] = null; - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - if (!this._events) this._events = {}; - if (!this._events[type]) this._events[type] = []; - if (!isArray(this._events[type])) { - this._events[type] = [this._events[type]]; - } - return this._events[type]; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/fs.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/fs.js deleted file mode 100644 index 5c9c0443bca..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/fs.js +++ /dev/null @@ -1 +0,0 @@ -// nothing to see here... no file methods for the browser diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/https.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/https.js deleted file mode 100644 index 4c6ac07d288..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/https.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('http'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/net.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/net.js deleted file mode 100644 index 65b3dba385b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/net.js +++ /dev/null @@ -1 +0,0 @@ -// todo diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/path.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/path.js deleted file mode 100644 index 839011fdd48..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/path.js +++ /dev/null @@ -1,134 +0,0 @@ -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/querystring.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/querystring.js deleted file mode 100644 index 069ff0b83e4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/querystring.js +++ /dev/null @@ -1,250 +0,0 @@ -var isArray = typeof Array.isArray === 'function' - ? Array.isArray - : function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]' - }; - -var objectKeys = Object.keys || function objectKeys(object) { - if (object !== Object(object)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in object) if (object.hasOwnProperty(key)) keys[keys.length] = key; - return keys; -} - - -/*! - * querystring - * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca> - * MIT Licensed - */ - -/** - * Library version. - */ - -exports.version = '0.3.1'; - -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Cache non-integer test regexp. - */ - -var notint = /[^0-9]/; - -/** - * Parse the given query `str`, returning an object. - * - * @param {String} str - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - - function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {}; - var t = {}; - for (var i in parent[key]) t[i] = parent[key][i]; - parent[key] = t; - return t; - } - - return String(str) - .split('&') - .reduce(function(ret, pair){ - try{ - pair = decodeURIComponent(pair.replace(/\+/g, ' ')); - } catch(e) { - // ignore - } - - var eql = pair.indexOf('=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(val.indexOf('=') + 1, val.length) - , parent = ret; - - // ?foo - if ('' == key) key = pair, val = ''; - - // nested - if (~key.indexOf(']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - - function parse(parts, parent, key) { - var part = parts.shift(); - - // end - if (!part) { - if (isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - obj = parent[key] = parent[key] || []; - if (']' == part) { - if (isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[objectKeys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~part.indexOf(']')) { - part = part.substr(0, part.length - 1); - if(notint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part); - // key - } else { - if(notint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part); - } - } - } - - parse(parts, parent, 'base'); - // optimize - } else { - if (notint.test(key) && isArray(parent.base)) { - var t = {}; - for(var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return ret; - }, {base: {}}).base; -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix; - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '[]')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = objectKeys(obj) - , key; - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (undefined === v) { - obj[key] = val; - } else if (isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/stream.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/stream.js deleted file mode 100644 index 4feb41045a4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/stream.js +++ /dev/null @@ -1,119 +0,0 @@ -var events = require('events'); -var util = require('util'); - -function Stream() { - events.EventEmitter.call(this); -} -util.inherits(Stream, events.EventEmitter); -module.exports = Stream; -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; - -Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once, and - // only when all sources have ended. - if (!dest._isStdio && (!options || options.end !== false)) { - dest._pipeCount = dest._pipeCount || 0; - dest._pipeCount++; - - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest._pipeCount--; - - // remove the listeners - cleanup(); - - if (dest._pipeCount > 0) { - // waiting for other incoming streams to end. - return; - } - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - dest._pipeCount--; - - // remove the listeners - cleanup(); - - if (dest._pipeCount > 0) { - // waiting for other incoming streams to end. - return; - } - - dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (this.listeners('error').length === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('end', cleanup); - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('end', cleanup); - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/sys.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/sys.js deleted file mode 100644 index 262f93b78f1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/sys.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tls.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tls.js deleted file mode 100644 index 65b3dba385b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tls.js +++ /dev/null @@ -1 +0,0 @@ -// todo diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tty.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tty.js deleted file mode 100644 index a674e0f7ae7..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/tty.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.isatty = function () {}; -exports.setRawMode = function () {}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/url.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/url.js deleted file mode 100644 index d623925eb43..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/url.js +++ /dev/null @@ -1,604 +0,0 @@ -var punycode = { encode : function (s) { return s } }; - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -function arrayIndexOf(array, subject) { - for (var i = 0, j = array.length; i < j; i++) { - if(array[i] == subject) return i; - } - return -1; -} - -var objectKeys = Object.keys || function objectKeys(object) { - if (object !== Object(object)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in object) if (object.hasOwnProperty(key)) keys[keys.length] = key; - return keys; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]+$/, - // RFC 2396: characters reserved for delimiting URLs. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '~', '[', ']', '`'].concat(delims), - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''], - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'] - .concat(unwise).concat(autoEscape), - nonAuthChars = ['/', '@', '?', '#'].concat(delims), - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z_-]{0,62}$/, - hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z_-]{0,62})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always have a path component. - pathedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && typeof(url) === 'object' && url.href) return url; - - if (typeof url !== 'string') { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var out = {}, - rest = url; - - // cut off any delimiters. - // This is to support parse stuff like "<http://foo.com>" - for (var i = 0, l = rest.length; i < l; i++) { - if (arrayIndexOf(delims, rest.charAt(i)) === -1) break; - } - if (i !== 0) rest = rest.substr(i); - - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - out.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - out.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // don't enforce full RFC correctness, just be unstupid about it. - - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the first @ sign, unless some non-auth character - // comes *before* the @-sign. - // URLs are obnoxious. - var atSign = arrayIndexOf(rest, '@'); - if (atSign !== -1) { - // there *may be* an auth - var hasAuth = true; - for (var i = 0, l = nonAuthChars.length; i < l; i++) { - var index = arrayIndexOf(rest, nonAuthChars[i]); - if (index !== -1 && index < atSign) { - // not a valid auth. Something like http://foo.com/bar@baz/ - hasAuth = false; - break; - } - } - if (hasAuth) { - // pluck off the auth portion. - out.auth = rest.substr(0, atSign); - rest = rest.substr(atSign + 1); - } - } - - var firstNonHost = -1; - for (var i = 0, l = nonHostChars.length; i < l; i++) { - var index = arrayIndexOf(rest, nonHostChars[i]); - if (index !== -1 && - (firstNonHost < 0 || index < firstNonHost)) firstNonHost = index; - } - - if (firstNonHost !== -1) { - out.host = rest.substr(0, firstNonHost); - rest = rest.substr(firstNonHost); - } else { - out.host = rest; - rest = ''; - } - - // pull out port. - var p = parseHost(out.host); - var keys = objectKeys(p); - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - out[key] = p[key]; - } - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - out.hostname = out.hostname || ''; - - // validate a little. - if (out.hostname.length > hostnameMaxLen) { - out.hostname = ''; - } else { - var hostparts = out.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - out.hostname = validParts.join('.'); - break; - } - } - } - } - - // hostnames are always lower case. - out.hostname = out.hostname.toLowerCase(); - - // IDNA Support: Returns a puny coded representation of "domain". - // It only converts the part of the domain name that - // has non ASCII characters. I.e. it dosent matter if - // you call it with a domain that already is in ASCII. - var domainArray = out.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - out.hostname = newOut.join('.'); - - out.host = (out.hostname || '') + - ((out.port) ? ':' + out.port : ''); - out.href += out.host; - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - - // Now make sure that delims never appear in a url. - var chop = rest.length; - for (var i = 0, l = delims.length; i < l; i++) { - var c = arrayIndexOf(rest, delims[i]); - if (c !== -1) { - chop = Math.min(c, chop); - } - } - rest = rest.substr(0, chop); - } - - - // chop off from the tail first. - var hash = arrayIndexOf(rest, '#'); - if (hash !== -1) { - // got a fragment string. - out.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = arrayIndexOf(rest, '?'); - if (qm !== -1) { - out.search = rest.substr(qm); - out.query = rest.substr(qm + 1); - if (parseQueryString) { - out.query = querystring.parse(out.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - out.search = ''; - out.query = {}; - } - if (rest) out.pathname = rest; - if (slashedProtocol[proto] && - out.hostname && !out.pathname) { - out.pathname = '/'; - } - - //to support http.request - if (out.pathname || out.search) { - out.path = (out.pathname ? out.pathname : '') + - (out.search ? out.search : ''); - } - - // finally, reconstruct the href based on what has been validated. - out.href = urlFormat(out); - return out; -} - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (typeof(obj) === 'string') obj = urlParse(obj); - - var auth = obj.auth || ''; - if (auth) { - auth = auth.split('@').join('%40'); - for (var i = 0, l = nonAuthChars.length; i < l; i++) { - var nAC = nonAuthChars[i]; - auth = auth.split(nAC).join(encodeURIComponent(nAC)); - } - auth += '@'; - } - - var protocol = obj.protocol || '', - host = (obj.host !== undefined) ? auth + obj.host : - obj.hostname !== undefined ? ( - auth + obj.hostname + - (obj.port ? ':' + obj.port : '') - ) : - false, - pathname = obj.pathname || '', - query = obj.query && - ((typeof obj.query === 'object' && - objectKeys(obj.query).length) ? - querystring.stringify(obj.query) : - '') || '', - search = obj.search || (query && ('?' + query)) || '', - hash = obj.hash || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (obj.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - return protocol + host + pathname + search + hash; -} - -function urlResolve(source, relative) { - return urlFormat(urlResolveObject(source, relative)); -} - -function urlResolveObject(source, relative) { - if (!source) return relative; - - source = urlParse(urlFormat(source), false, true); - relative = urlParse(urlFormat(relative), false, true); - - // hash is always overridden, no matter what. - source.hash = relative.hash; - - if (relative.href === '') { - source.href = urlFormat(source); - return source; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - relative.protocol = source.protocol; - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[relative.protocol] && - relative.hostname && !relative.pathname) { - relative.path = relative.pathname = '/'; - } - relative.href = urlFormat(relative); - return relative; - } - - if (relative.protocol && relative.protocol !== source.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - relative.href = urlFormat(relative); - return relative; - } - source.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - relative.pathname = relPath.join('/'); - } - source.pathname = relative.pathname; - source.search = relative.search; - source.query = relative.query; - source.host = relative.host || ''; - source.auth = relative.auth; - source.hostname = relative.hostname || relative.host; - source.port = relative.port; - //to support http.request - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.slashes = source.slashes || relative.slashes; - source.href = urlFormat(source); - return source; - } - - var isSourceAbs = (source.pathname && source.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host !== undefined || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (source.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = source.pathname && source.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = source.protocol && - !slashedProtocol[source.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // source.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - - delete source.hostname; - delete source.port; - if (source.host) { - if (srcPath[0] === '') srcPath[0] = source.host; - else srcPath.unshift(source.host); - } - delete source.host; - if (relative.protocol) { - delete relative.hostname; - delete relative.port; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - delete relative.host; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - source.host = (relative.host || relative.host === '') ? - relative.host : source.host; - source.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : source.hostname; - source.search = relative.search; - source.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - source.search = relative.search; - source.query = relative.query; - } else if ('search' in relative) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - source.hostname = source.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = source.host && arrayIndexOf(source.host, '@') > 0 ? - source.host.split('@') : false; - if (authInHost) { - source.auth = authInHost.shift(); - source.host = source.hostname = authInHost.shift(); - } - } - source.search = relative.search; - source.query = relative.query; - //to support http.request - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.href = urlFormat(source); - return source; - } - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - delete source.pathname; - //to support http.request - if (!source.search) { - source.path = '/' + source.search; - } else { - delete source.path; - } - source.href = urlFormat(source); - return source; - } - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (source.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - source.hostname = source.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = source.host && arrayIndexOf(source.host, '@') > 0 ? - source.host.split('@') : false; - if (authInHost) { - source.auth = authInHost.shift(); - source.host = source.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (source.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - source.pathname = srcPath.join('/'); - //to support request.http - if (source.pathname !== undefined || source.search !== undefined) { - source.path = (source.pathname ? source.pathname : '') + - (source.search ? source.search : ''); - } - source.auth = relative.auth || source.auth; - source.slashes = source.slashes || relative.slashes; - source.href = urlFormat(source); - return source; -} - -function parseHost(host) { - var out = {}; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - out.port = port.substr(1); - host = host.substr(0, host.length - port.length); - } - if (host) out.hostname = host; - return out; -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/util.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/util.js deleted file mode 100644 index e7bdad405e5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/builtins/util.js +++ /dev/null @@ -1,312 +0,0 @@ -var events = require('events'); - -exports.print = function () {}; -exports.puts = function () {}; -exports.debug = function() {}; - -exports.inspect = function(obj, showHidden, depth, colors) { - var seen = []; - - var stylize = function(str, styleType) { - // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics - var styles = - { 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] }; - - var style = - { 'special': 'cyan', - 'number': 'blue', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' }[styleType]; - - if (style) { - return '\033[' + styles[style][0] + 'm' + str + - '\033[' + styles[style][1] + 'm'; - } else { - return str; - } - }; - if (! colors) { - stylize = function(str, styleType) { return str; }; - } - - function format(value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (value && typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value !== exports && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - return value.inspect(recurseTimes); - } - - // Primitive types cannot have properties - switch (typeof value) { - case 'undefined': - return stylize('undefined', 'undefined'); - - case 'string': - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return stylize(simple, 'string'); - - case 'number': - return stylize('' + value, 'number'); - - case 'boolean': - return stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return stylize('null', 'null'); - } - - // Look up the keys of the object. - var visible_keys = Object_keys(value); - var keys = showHidden ? Object_getOwnPropertyNames(value) : visible_keys; - - // Functions without properties can be shortcutted. - if (typeof value === 'function' && keys.length === 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - var name = value.name ? ': ' + value.name : ''; - return stylize('[Function' + name + ']', 'special'); - } - } - - // Dates without properties can be shortcutted - if (isDate(value) && keys.length === 0) { - return stylize(value.toUTCString(), 'date'); - } - - var base, type, braces; - // Determine the object type - if (isArray(value)) { - type = 'Array'; - braces = ['[', ']']; - } else { - type = 'Object'; - braces = ['{', '}']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var n = value.name ? ': ' + value.name : ''; - base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; - } else { - base = ''; - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + value.toUTCString(); - } - - if (keys.length === 0) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - return stylize('[Object]', 'special'); - } - } - - seen.push(value); - - var output = keys.map(function(key) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = stylize('[Getter/Setter]', 'special'); - } else { - str = stylize('[Getter]', 'special'); - } - } else { - if (value.__lookupSetter__(key)) { - str = stylize('[Setter]', 'special'); - } - } - } - if (visible_keys.indexOf(key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (seen.indexOf(value[key]) < 0) { - if (recurseTimes === null) { - str = format(value[key]); - } else { - str = format(value[key], recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (isArray(value)) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (type === 'Array' && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = stylize(name, 'string'); - } - } - - return name + ': ' + str; - }); - - seen.pop(); - - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, 0); - - if (length > 50) { - output = braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - - } else { - output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } - - return output; - } - return format(obj, (typeof depth === 'undefined' ? 2 : depth)); -}; - - -function isArray(ar) { - return ar instanceof Array || - Array.isArray(ar) || - (ar && ar !== Object.prototype && isArray(ar.__proto__)); -} - - -function isRegExp(re) { - return re instanceof RegExp || - (typeof re === 'object' && Object.prototype.toString.call(re) === '[object RegExp]'); -} - - -function isDate(d) { - if (d instanceof Date) return true; - if (typeof d !== 'object') return false; - var properties = Date.prototype && Object_getOwnPropertyNames(Date.prototype); - var proto = d.__proto__ && Object_getOwnPropertyNames(d.__proto__); - return JSON.stringify(proto) === JSON.stringify(properties); -} - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - -exports.log = function (msg) {}; - -exports.pump = null; - -var Object_keys = Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key); - return res; -}; - -var Object_getOwnPropertyNames = Object.getOwnPropertyNames || function (obj) { - var res = []; - for (var key in obj) { - if (Object.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - -var Object_create = Object.create || function (prototype, properties) { - // from es5-shim - var object; - if (prototype === null) { - object = { '__proto__' : null }; - } - else { - if (typeof prototype !== 'object') { - throw new TypeError( - 'typeof prototype[' + (typeof prototype) + '] != \'object\'' - ); - } - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (typeof properties !== 'undefined' && Object.defineProperties) { - Object.defineProperties(object, properties); - } - return object; -}; - -exports.inherits = function(ctor, superCtor) { - ctor.super_ = superCtor; - ctor.prototype = Object_create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/methods.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/methods.markdown deleted file mode 100644 index d5423e34a76..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/methods.markdown +++ /dev/null @@ -1,177 +0,0 @@ -methods -======= - -This section documents the browserify api. - -````javascript -var browserify = require('browserify'); -```` - -var b = browserify(opts={}) ---------------------------- - -Return a new bundle object. - -`opts` may also contain these fields: - -* watch - set watches on files, see below -* cache - turn on caching for AST traversals, see below -* debug - turn on source mapping for debugging with `//@ sourceURL=...` -in browsers that support it -* exports - an array of the core items to export to the namespace. Available -items: 'require', 'process' - -If `opts` is a string, it is interpreted as a file to call `.addEntry()` with. - -### watch :: Boolean or Object - -Set watches on files and automatically rebundle when a file changes. - -This option defaults to false. If `opts.watch` is set to true, default watch -arguments are assumed or you can pass in an object to pass along as the second -parameter to `fs.watchFile()`. - -### cache :: Boolean or String - -If `cache` is a boolean, turn on caching at -`$HOME/.config/browserify/cache.json`. - -If `cache` is a string, turn on caching at the filename specified by `cache`. - -### bundle events - -`b` bundles will also emit events. - -#### 'syntaxError', err - -This event gets emitted when there is a syntax error somewhere in the build -process. If you don't listen for this event, the error will be printed to -stderr. - -#### 'bundle' - -In watch mode, this event is emitted when a new bundle has been generated. - -b.bundle() ----------- - -Return the bundled source as a string. - -By default, `require` is not exported to the environment if there are entry -files in the bundle but you can override that with `opts.exports`. - -`process` is only exported to the environment when `opts.exports` contains the -string `'process'`. - -b.require(file) ---------------- - -Require a file or files for inclusion in the bundle. - -If `file` is an array, require each element in it. - -If `file` is a non-array object, map an alias to a package name. -For instance to be able to map `require('jquery')` to the jquery-browserify -package, you can do: - -````javascript -b.require({ jquery : 'jquery-browserify' }) -```` - -and the same thing in middleware-form: - -````javascript -browserify({ require : { jquery : 'jquery-browserify' } }) -```` - -To mix alias objects with regular requires you could do: - -````javascript -browserify({ require : [ 'seq', { jquery : 'jquery-browserify' }, 'traverse' ]) -```` - -In practice you won't need to `b.require()` very many files since all the -`require()`s are read from each file that you require and automatically -included. - -b.ignore(file) --------------- - -Omit a file or files from being included by the AST walk to hunt down -`require()` statements. - -b.addEntry(file) ----------------- - -Append a file to the end of the bundle and execute it without having to -`require()` it. - -Specifying an entry point will let you `require()` other modules without having -to load the entry point in a `<script>` tag yourself. - -If entry is an Array, concatenate these files together and append to the end of -the bundle. - -b.filter(fn) ------------- - -Transform the source using the filter function `fn(src)`. The return value of -`fn` should be the new source. - -b.register(ext, fn) -------------------- - -Register a handler to wrap extensions. - -Wrap every file matching the extension `ext` with the function `fn`. - -For every `file` included into the bundle `fn` gets called for matching file -types as `fn.call(b, body, file)` for the bundle instance `b` and the file -content string `body`. `fn` should return the new wrapped contents. - -If `ext` is unspecified, execute the wrapper for every file. - -If `ext` is 'post', execute the wrapper on the entire bundle. - -If `ext` is 'pre', call the wrapper function with the bundle object before the -source is generated. - -If `ext` is an object, pull the extension from `ext.extension` and the wrapper -function `fn` from `ext.wrapper`. This makes it easy to write plugins like -[fileify](https://github.com/substack/node-fileify). - -Coffee script support is just implemented internally as a `.register()` -extension: - -````javascript -b.register('.coffee', function (body) { - return coffee.compile(body); -}); -```` - -b.use(fn) ---------- - -Use a middleware plugin, `fn`. `fn` is called with the instance object `b`. - -b.prepend(content) ------------------- - -Prepend unwrapped content to the beginning of the bundle. - -b.append(content) ------------------ - -Append unwrapped content to the end of the bundle. - -b.alias(to, from) ------------------ - -Alias a package name from another package name. - -b.modified ----------- - -Contains a Date object with the time the bundle was last modified. This field is -useful in conjunction with the `watch` field described in the `browserify()` to -generate unique `<script>` `src` values to force script reloading. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/recipes.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/recipes.markdown deleted file mode 100644 index b7da722b12d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/doc/recipes.markdown +++ /dev/null @@ -1,62 +0,0 @@ -recipes -======= - -Here are some recipe-style examples for getting started. - -use an npm module in the browser -================================ - -First install a module: - -``` -npm install traverse -``` - -Then write an `entry.js`: - -````javascript -var traverse = require('traverse'); -var obj = traverse({ a : 3, b : [ 4, 5 ] }).map(function (x) { - if (typeof x === 'number') this.update(x * 100) -}); -console.dir(obj); -```` - -now bundle it! - -``` -$ browserify entry.js -o bundle.js -``` - -then put it in your html - -``` html -<script src="bundle.js"></script> -``` - -and the entry.js will just run and `require('traverse')` will just work™. - -convert a node module into a browser require-able standalone file ------------------------------------------------------------------ - -Install the `traverse` package into `./node_modules`: - -``` -npm install traverse -``` - -Bundle everything up with browserify: - -``` -$ npm install -g browserify -$ browserify -r traverse -o bundle.js -``` - -Look at the files! There is a new one: `bundle.js`. Now go into HTML land: - -``` html -<script src="bundle.js"></script> -<script> - var traverse = require('traverse'); -</script> -``` diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/browserify.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/browserify.js deleted file mode 100644 index fd495dac290..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/browserify.js +++ /dev/null @@ -1,368 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - cwd = path.resolve('/', cwd); - var y = cwd || '/'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -require.define = function (filename, fn) { - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -require.define("path", function (require, module, exports, __dirname, __filename) { -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; - -}); - -require.define("/foo.js", function (require, module, exports, __dirname, __filename) { -var bar = require('./bar'); - -module.exports = function (x) { - return x * bar.coeff(x) + (x * 3 - 2) -}; - -}); - -require.define("/bar.js", function (require, module, exports, __dirname, __filename) { -exports.coeff = function (x) { - return Math.log(x) / Math.log(2) + 1; -}; - -}); - -require.define("/entry.js", function (require, module, exports, __dirname, __filename) { - var foo = require('./foo'); - -window.onload = function () { - document.getElementById('result').innerHTML = foo(100); -}; - -}); -require("/entry.js"); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/build.sh b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/build.sh deleted file mode 100755 index 17c69ac4c09..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -browserify js/entry.js -v -o browserify.js diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/index.html deleted file mode 100644 index 243ac26d6f2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> -<head> - <script type="text/javascript" src="/browserify.js"></script> -</head> -<body> - foo = - <span style='font-family: monospace' id="result"></span> -</body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/bar.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/bar.js deleted file mode 100644 index 7d6fd9ca270..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/bar.js +++ /dev/null @@ -1,3 +0,0 @@ -exports.coeff = function (x) { - return Math.log(x) / Math.log(2) + 1; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/entry.js deleted file mode 100644 index adf3b4ba1c6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/entry.js +++ /dev/null @@ -1,5 +0,0 @@ -var foo = require('./foo'); - -window.onload = function () { - document.getElementById('result').innerHTML = foo(100); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/foo.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/foo.js deleted file mode 100644 index ca0bc13ef14..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/js/foo.js +++ /dev/null @@ -1,5 +0,0 @@ -var bar = require('./bar'); - -module.exports = function (x) { - return x * bar.coeff(x) + (x * 3 - 2) -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/server.js deleted file mode 100755 index eea51eeebbe..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-build/server.js +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env node - -var connect = require('connect'); -var server = connect.createServer(); - -server.use(connect.static(__dirname)); -server.listen(8080); -console.log('Listening on :8080'); -console.log('Make sure to run ./build.sh to generate browserify.js'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/index.html deleted file mode 100644 index 243ac26d6f2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> -<head> - <script type="text/javascript" src="/browserify.js"></script> -</head> -<body> - foo = - <span style='font-family: monospace' id="result"></span> -</body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/bar.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/bar.js deleted file mode 100644 index 7d6fd9ca270..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/bar.js +++ /dev/null @@ -1,3 +0,0 @@ -exports.coeff = function (x) { - return Math.log(x) / Math.log(2) + 1; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/entry.js deleted file mode 100644 index adf3b4ba1c6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/entry.js +++ /dev/null @@ -1,5 +0,0 @@ -var foo = require('./foo'); - -window.onload = function () { - document.getElementById('result').innerHTML = foo(100); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/foo.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/foo.js deleted file mode 100644 index ca0bc13ef14..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/js/foo.js +++ /dev/null @@ -1,5 +0,0 @@ -var bar = require('./bar'); - -module.exports = function (x) { - return x * bar.coeff(x) + (x * 3 - 2) -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/server.js deleted file mode 100644 index eb2b84b8961..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/simple-middleware/server.js +++ /dev/null @@ -1,11 +0,0 @@ -var connect = require('connect'); -var server = connect.createServer(); -server.use(connect.static(__dirname)); - -var browserify = require('browserify'); -var bundle = browserify(__dirname + '/js/entry.js'); -server.use(bundle); - -var port = parseInt(process.argv[2] || 8080, 10); -server.listen(port); -console.log('Listening on :' + port); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/bundle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/bundle.js deleted file mode 100644 index 08b05bf6dcd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/bundle.js +++ /dev/null @@ -1,813 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - cwd = path.resolve('/', cwd); - var y = cwd || '/'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -require.define = function (filename, fn) { - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -require.define("path", function (require, module, exports, __dirname, __filename) { -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; - -}); - -require.define("http", function (require, module, exports, __dirname, __filename) { -module.exports = require("http-browserify") -}); - -require.define("/node_modules/http-browserify/package.json", function (require, module, exports, __dirname, __filename) { -module.exports = {"main":"index.js","browserify":"index.js"} -}); - -require.define("/node_modules/http-browserify/index.js", function (require, module, exports, __dirname, __filename) { -var http = module.exports; -var EventEmitter = require('events').EventEmitter; -var Request = require('./lib/request'); - -http.request = function (params, cb) { - if (!params) params = {}; - if (!params.host) params.host = window.location.host.split(':')[0]; - if (!params.port) params.port = window.location.port; - - var req = new Request(new xhrHttp, params); - if (cb) req.on('response', cb); - return req; -}; - -http.get = function (params, cb) { - params.method = 'GET'; - var req = http.request(params, cb); - req.end(); - return req; -}; - -var xhrHttp = (function () { - if (typeof window === 'undefined') { - throw new Error('no window object present'); - } - else if (window.XMLHttpRequest) { - return window.XMLHttpRequest; - } - else if (window.ActiveXObject) { - var axs = [ - 'Msxml2.XMLHTTP.6.0', - 'Msxml2.XMLHTTP.3.0', - 'Microsoft.XMLHTTP' - ]; - for (var i = 0; i < axs.length; i++) { - try { - var ax = new(window.ActiveXObject)(axs[i]); - return function () { - if (ax) { - var ax_ = ax; - ax = null; - return ax_; - } - else { - return new(window.ActiveXObject)(axs[i]); - } - }; - } - catch (e) {} - } - throw new Error('ajax not supported in this browser') - } - else { - throw new Error('ajax not supported in this browser'); - } -})(); - -}); - -require.define("events", function (require, module, exports, __dirname, __filename) { -if (!process.EventEmitter) process.EventEmitter = function () {}; - -var EventEmitter = exports.EventEmitter = process.EventEmitter; -var isArray = typeof Array.isArray === 'function' - ? Array.isArray - : function (xs) { - return Object.toString.call(xs) === '[object Array]' - } -; - -// By default EventEmitters will print a warning if more than -// 10 listeners are added to it. This is a useful default which -// helps finding memory leaks. -// -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -var defaultMaxListeners = 10; -EventEmitter.prototype.setMaxListeners = function(n) { - if (!this._events) this._events = {}; - this._events.maxListeners = n; -}; - - -EventEmitter.prototype.emit = function(type) { - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events || !this._events.error || - (isArray(this._events.error) && !this._events.error.length)) - { - if (arguments[1] instanceof Error) { - throw arguments[1]; // Unhandled 'error' event - } else { - throw new Error("Uncaught, unspecified 'error' event."); - } - return false; - } - } - - if (!this._events) return false; - var handler = this._events[type]; - if (!handler) return false; - - if (typeof handler == 'function') { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - var args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - return true; - - } else if (isArray(handler)) { - var args = Array.prototype.slice.call(arguments, 1); - - var listeners = handler.slice(); - for (var i = 0, l = listeners.length; i < l; i++) { - listeners[i].apply(this, args); - } - return true; - - } else { - return false; - } -}; - -// EventEmitter is defined in src/node_events.cc -// EventEmitter.prototype.emit() is also defined there. -EventEmitter.prototype.addListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('addListener only takes instances of Function'); - } - - if (!this._events) this._events = {}; - - // To avoid recursion in the case that type == "newListeners"! Before - // adding it to the listeners, first emit "newListeners". - this.emit('newListener', type, listener); - - if (!this._events[type]) { - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - } else if (isArray(this._events[type])) { - - // Check for listener leak - if (!this._events[type].warned) { - var m; - if (this._events.maxListeners !== undefined) { - m = this._events.maxListeners; - } else { - m = defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - console.trace(); - } - } - - // If we've already got an array, just append. - this._events[type].push(listener); - } else { - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - var self = this; - self.on(type, function g() { - self.removeListener(type, g); - listener.apply(this, arguments); - }); - - return this; -}; - -EventEmitter.prototype.removeListener = function(type, listener) { - if ('function' !== typeof listener) { - throw new Error('removeListener only takes instances of Function'); - } - - // does not use listeners(), so no side effect of creating _events[type] - if (!this._events || !this._events[type]) return this; - - var list = this._events[type]; - - if (isArray(list)) { - var i = list.indexOf(listener); - if (i < 0) return this; - list.splice(i, 1); - if (list.length == 0) - delete this._events[type]; - } else if (this._events[type] === listener) { - delete this._events[type]; - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - // does not use listeners(), so no side effect of creating _events[type] - if (type && this._events && this._events[type]) this._events[type] = null; - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - if (!this._events) this._events = {}; - if (!this._events[type]) this._events[type] = []; - if (!isArray(this._events[type])) { - this._events[type] = [this._events[type]]; - } - return this._events[type]; -}; - -}); - -require.define("/node_modules/http-browserify/lib/request.js", function (require, module, exports, __dirname, __filename) { -var EventEmitter = require('events').EventEmitter; -var Response = require('./response'); - -var Request = module.exports = function (xhr, params) { - var self = this; - self.xhr = xhr; - self.body = ''; - - var uri = params.host + ':' + params.port + (params.path || '/'); - - xhr.open( - params.method || 'GET', - (params.scheme || 'http') + '://' + uri, - true - ); - - if (params.headers) { - Object.keys(params.headers).forEach(function (key) { - if (!self.isSafeRequestHeader(key)) return; - var value = params.headers[key]; - if (Array.isArray(value)) { - value.forEach(function (v) { - xhr.setRequestHeader(key, v); - }); - } - else xhr.setRequestHeader(key, value) - }); - } - - var res = new Response; - res.on('ready', function () { - self.emit('response', res); - }); - - xhr.onreadystatechange = function () { - res.handle(xhr); - }; -}; - -Request.prototype = new EventEmitter; - -Request.prototype.setHeader = function (key, value) { - if ((Array.isArray && Array.isArray(value)) - || value instanceof Array) { - for (var i = 0; i < value.length; i++) { - this.xhr.setRequestHeader(key, value[i]); - } - } - else { - this.xhr.setRequestHeader(key, value); - } -}; - -Request.prototype.write = function (s) { - this.body += s; -}; - -Request.prototype.end = function (s) { - if (s !== undefined) this.write(s); - this.xhr.send(this.body); -}; - -// Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html -Request.unsafeHeaders = [ - "accept-charset", - "accept-encoding", - "access-control-request-headers", - "access-control-request-method", - "connection", - "content-length", - "cookie", - "cookie2", - "content-transfer-encoding", - "date", - "expect", - "host", - "keep-alive", - "origin", - "referer", - "te", - "trailer", - "transfer-encoding", - "upgrade", - "user-agent", - "via" -]; - -Request.prototype.isSafeRequestHeader = function (headerName) { - if (!headerName) return false; - return (Request.unsafeHeaders.indexOf(headerName.toLowerCase()) === -1) -}; - -}); - -require.define("/node_modules/http-browserify/lib/response.js", function (require, module, exports, __dirname, __filename) { -var EventEmitter = require('events').EventEmitter; - -var Response = module.exports = function (res) { - this.offset = 0; -}; - -Response.prototype = new EventEmitter; - -var capable = { - streaming : true, - status2 : true -}; - -function parseHeaders (res) { - var lines = res.getAllResponseHeaders().split(/\r?\n/); - var headers = {}; - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - if (line === '') continue; - - var m = line.match(/^([^:]+):\s*(.*)/); - if (m) { - var key = m[1].toLowerCase(), value = m[2]; - - if (headers[key] !== undefined) { - if ((Array.isArray && Array.isArray(headers[key])) - || headers[key] instanceof Array) { - headers[key].push(value); - } - else { - headers[key] = [ headers[key], value ]; - } - } - else { - headers[key] = value; - } - } - else { - headers[line] = true; - } - } - return headers; -} - -Response.prototype.getHeader = function (key) { - return this.headers[key.toLowerCase()]; -}; - -Response.prototype.handle = function (res) { - if (res.readyState === 2 && capable.status2) { - try { - this.statusCode = res.status; - this.headers = parseHeaders(res); - } - catch (err) { - capable.status2 = false; - } - - if (capable.status2) { - this.emit('ready'); - } - } - else if (capable.streaming && res.readyState === 3) { - try { - if (!this.statusCode) { - this.statusCode = res.status; - this.headers = parseHeaders(res); - this.emit('ready'); - } - } - catch (err) {} - - try { - this.write(res); - } - catch (err) { - capable.streaming = false; - } - } - else if (res.readyState === 4) { - if (!this.statusCode) { - this.statusCode = res.status; - this.emit('ready'); - } - this.write(res); - - if (res.error) { - this.emit('error', res.responseText); - } - else this.emit('end'); - } -}; - -Response.prototype.write = function (res) { - if (res.responseText.length > this.offset) { - this.emit('data', res.responseText.slice(this.offset)); - this.offset = res.responseText.length; - } -}; - -}); - -require.define("/entry.js", function (require, module, exports, __dirname, __filename) { - var http = require('http'); - -$(function () { - var opts = { - host : window.location.hostname, - port : window.location.port, - path : '/count' - }; - - http.get(opts, function (res) { - res.on('data', function (buf) { - $('<div>') - .text(buf) - .appendTo($('#count')) - ; - }); - - res.on('end', function () { - $('<div>') - .text('__END__') - .appendTo($('#count')) - ; - }); - }); -}); - -}); -require("/entry.js"); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/entry.js deleted file mode 100644 index 4bd3079162e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/entry.js +++ /dev/null @@ -1,25 +0,0 @@ -var http = require('http'); - -$(function () { - var opts = { - host : window.location.hostname, - port : window.location.port, - path : '/count' - }; - - http.get(opts, function (res) { - res.on('data', function (buf) { - $('<div>') - .text(buf) - .appendTo($('#count')) - ; - }); - - res.on('end', function () { - $('<div>') - .text('__END__') - .appendTo($('#count')) - ; - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/index.html deleted file mode 100644 index 9b55736bc93..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> - <script src="/bundle.js"></script> - </head> - <body> - <div id="count"></div> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/server.js deleted file mode 100755 index 727910655c0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/example/using-http/server.js +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -var http = require('http'); -var ecstatic = require('ecstatic')(__dirname); - -var server = http.createServer(function (req, res) { - if (req.url === '/count') { - res.setHeader('content-type', 'multipart/octet-stream'); - - var n = 10; - var iv = setInterval(function () { - res.write(n + '\r\n'); - - if (--n === 0) { - clearInterval(iv); - res.end(); - } - }, 250); - } - else ecstatic(req, res) -}); - -server.listen(8001); -console.log([ - 'Listening on :8001', - '', - 'To compile the build, do:', - ' browserify entry.js -o bundle.js' -].join('\n')); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/index.js deleted file mode 100644 index f53211b94ea..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/index.js +++ /dev/null @@ -1,255 +0,0 @@ -var wrap = require('./lib/wrap'); -var fs = require('fs'); -var path = require('path'); -var coffee = require('coffee-script'); -var EventEmitter = require('events').EventEmitter; -var exists = fs.exists || path.exists; - -function idFromPath (path) { - return path.replace(/\\/g, '/'); -} - -function isAbsolute (pathOrId) { - return path.normalize(pathOrId) === path.normalize(path.resolve(pathOrId)); -} - -function needsNodeModulesPrepended (id) { - return !/^[.\/]/.test(id) && !isAbsolute(id); -} - -var exports = module.exports = function (entryFile, opts) { - if (!opts) opts = {}; - - if (Array.isArray(entryFile)) { - if (Array.isArray(opts.entry)) { - opts.entry.unshift.apply(opts.entry, entryFile); - } - else if (opts.entry) { - opts.entry = entryFile.concat(opts.entry); - } - else { - opts.entry = entryFile; - } - } - else if (typeof entryFile === 'object') { - opts = entryFile; - } - else if (typeof entryFile === 'string') { - if (Array.isArray(opts.entry)) { - opts.entry.unshift(entryFile); - } - else if (opts.entry) { - opts.entry = [ opts.entry, entryFile ]; - } - else { - opts.entry = entryFile; - } - } - - var watches = {}; - var opts_ = { - cache : opts.cache, - debug : opts.debug, - exports : opts.exports, - }; - var w = wrap(opts_) - .register('.coffee', function (body) { - return coffee.compile(body) - }) - ; - - if (opts.watch) { - w.register(function (body, file) { - // if already being watched - if (watches[file]) return body; - - var watcher = function (event, filename) { - exists(file, function (ex) { - if (!ex) { - // deleted - if (w.files[file]) { - delete w.files[file]; - } - else if (w.entries[file] !== undefined) { - w.appends.splice(w.entries[file], 1); - } - - _cache = null; - } - else if (event === 'change') { - // modified - try { - w.reload(file); - _cache = null; - self.emit('bundle'); - } - catch (e) { - self.emit('syntaxError', e); - if (self.listeners('syntaxError').length === 0) { - console.error(e && e.stack || e); - } - } - } - else if (event === 'rename') { - // todo - } - }); - }; - - watches[file] = true; - process.nextTick(function () { - if (w.files[file] && w.files[file].synthetic) return; - - if (typeof opts.watch === 'object') { - watches[file] = fs.watch(file, opts.watch, watcher); - } - else { - watches[file] = fs.watch(file, watcher); - } - }); - - return body; - }) - } - - if (opts.filter) { - w.register('post', function (body) { - return opts.filter(body); - }); - } - - w.ignore(opts.ignore || []); - - if (opts.require) { - if (Array.isArray(opts.require)) { - opts.require.forEach(function (r) { - r = idFromPath(r); - - var params = {}; - if (needsNodeModulesPrepended(r)) { - params.target = '/node_modules/' + r + '/index.js'; - } - w.require(r, params); - }); - } - else if (typeof opts.require === 'object') { - Object.keys(opts.require).forEach(function (key) { - opts.require[key] = idFromPath(opts.require[key]); - - var params = {}; - if (needsNodeModulesPrepended(opts.require[key])) { - params.target = '/node_modules/' - + opts.require[key] + '/index.js' - ; - } - w.require(opts.require[key], params); - w.alias(key, opts.require[key]); - }); - } - else { - opts.require = idFromPath(opts.require); - - var params = {}; - if (needsNodeModulesPrepended(opts.require)) { - params.target = '/node_modules/' - + opts.require + '/index.js' - ; - } - w.require(opts.require, params); - } - } - - if (opts.entry) { - if (Array.isArray(opts.entry)) { - opts.entry.forEach(function (e) { - w.addEntry(e); - }); - } - else { - w.addEntry(opts.entry); - } - } - - var _cache = null; - var listening = false; - var self = function (req, res, next) { - if (!listening && req.connection && req.connection.server) { - req.connection.server.on('close', function () { - self.end(); - }); - } - listening = true; - - if (req.url.split('?')[0] === (opts.mount || '/browserify.js')) { - if (!_cache) self.bundle(); - res.statusCode = 200; - res.setHeader('last-modified', self.modified.toString()); - res.setHeader('content-type', 'text/javascript'); - res.end(_cache); - } - else next() - }; - - Object.keys(w).forEach(function (key) { - Object.defineProperty(self, key, { - set : function (value) { w[key] = value }, - get : function () { return w[key] } - }); - }); - - Object.keys(Object.getPrototypeOf(w)).forEach(function (key) { - self[key] = function () { - var s = w[key].apply(self, arguments) - if (s === self) { _cache = null } - return s; - }; - }); - - Object.keys(EventEmitter.prototype).forEach(function (key) { - self[key] = w[key].bind(w); - }); - - var firstBundle = true; - self.modified = new Date; - - var ok = true; - self.on('bundle', function () { - ok = true; - }); - - self.on('syntaxError', function (err) { - ok = false; - if (self.listeners('syntaxError').length <= 1) { - console.error(err && err.stack || err); - } - }); - - var lastOk = null; - self.bundle = function () { - if (!ok && _cache) return _cache; - if (!ok && lastOk) return lastOk; - - var src = w.bundle.apply(w, arguments); - - if (!firstBundle) { - self.modified = new Date; - } - firstBundle = false; - - _cache = src; - if (ok) lastOk = src; - return src; - }; - - self.end = function () { - Object.keys(watches).forEach(function (file) { - watches[file].close(); - }); - }; - - return self; -}; - -exports.bundle = function (opts) { - return exports(opts).bundle(); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrap.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrap.js deleted file mode 100644 index 80b88746815..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrap.js +++ /dev/null @@ -1,527 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var util = require('util'); -var EventEmitter = require('events').EventEmitter; - -var detective = require('detective'); -var deputy = require('deputy'); -var resolve = require('resolve'); - -var wrappers = require('./wrappers'); -var commondir = require('commondir'); -var nub = require('nub'); - -module.exports = function (opts) { - return new Wrap(opts); -}; -function idFromPath (path) { - return path.replace(/\\/g, '/'); -} - -function Wrap (opts) { - var home = process.env.HOME || process.env.USERPROFILE; - if (opts.cache === undefined && home !== undefined) { - opts.cache = true; - } - - if (opts.cache) { - if (typeof opts.cache === 'boolean') { - var file = home + '/.config/browserify/cache.json'; - this.detective = deputy(file); - } - else { - this.detective = deputy(opts.cache); - } - } - else { - this.detective = detective; - } - - this.exports = opts.exports; - - this.files = {}; - this.filters = []; - this.postFilters = []; - this.preFilters = []; - this.aliases = {}; - this._checkedPackages = {}; - - this.ignoring = {}; - this.extensions = [ '.js' ]; - - this.prepends = [ wrappers.prelude, wrappers.process ]; - this.appends = [] - this.entries = {}; - this.debug = opts.debug; - - this.require('path'); - this.require('__browserify_process'); -} - -util.inherits(Wrap, EventEmitter); - -Wrap.prototype.prepend = function (src) { - this.prepends.unshift(src); - return this; -}; - -Wrap.prototype.append = function (src) { - this.appends.push(src); - return this; -}; - -Wrap.prototype.ignore = function (files) { - if (!files) files = []; - if (!Array.isArray(files)) files = [ files ]; - - this.ignoring = files.reduce(function (acc,x) { - acc[x] = true; - return acc; - }, this.ignoring); - - return this; -}; - -Wrap.prototype.use = function (fn) { - fn(this, this); - return this; -}; - -Wrap.prototype.register = function (ext, fn) { - if (typeof ext === 'object') { - fn = ext.wrapper; - ext = ext.extension; - } - - if (ext === 'post') { - this.postFilters.push(fn); - } - else if (ext === 'pre') { - this.preFilters.push(fn); - } - else if (fn) { - this.extensions.push(ext); - this.filters.push(function (body, file) { - if (file.slice(-ext.length) === ext) { - return fn.call(this, body, file); - } - else return body; - }); - } - else { - this.filters.push(ext); - } - return this; -}; - -Wrap.prototype.reload = function (file) { - var self = this; - if (self.files[file]) { - var f = self.files[file]; - f.body = undefined; - delete self.files[file]; - - self.require(file, f); - } - else if (self.entries[file]) { - var e = self.entries[file]; - e.body = undefined; - delete self.entries[file]; - - self.addEntry(file, e); - } - - return self; -}; - -Wrap.prototype.readFile = function (file) { - var self = this; - - var body = fs.readFileSync(file, 'utf8').replace(/^#![^\n]*\n/, ''); - - self.filters.forEach(function (fn) { - body = fn.call(self, body, file); - }); - - return body; -}; - -Wrap.prototype.alias = function (to, from) { - this.aliases[to] = from; - return this; -}; - -Wrap.prototype.addEntry = function (file_, opts) { - var self = this; - if (!opts) opts = {}; - var file = path.resolve(opts.dirname || process.cwd(), file_); - - var body = opts.body || self.readFile(file); - var entry = this.entries[file] = { body : body }; - if (opts.target) entry.target = opts.target; - - try { - var required = self.detective.find(body); - } - catch (err) { - process.nextTick(function () { - err.message = 'Error while loading entry file ' - + JSON.stringify(file) - + ': ' + err.message - ; - self.emit('syntaxError', err); - }); - return self; - } - - if (required.expressions.length) { - console.error('Expressions in require() statements:'); - required.expressions.forEach(function (ex) { - console.error(' require(' + ex + ')'); - }); - } - - var dirname = path.dirname(file); - - required.strings.forEach(function (req) { - var params = { - dirname : dirname, - fromFile : file, - }; - if (opts.target && /^[.\/]/.test(req)) { - params.target = path.resolve(path.dirname(opts.target), req); - } - self.require(req, params); - }); - - return this; -}; - -Wrap.prototype.bundle = function () { - var self = this; - - for (var i = 0; i < self.prepends.length; i++) { - var p = self.prepends[i]; - if (p === wrappers.prelude) { - self.prepends[i] = p.replace(/\$extensions/, function () { - return JSON.stringify(self.extensions); - }); - break; - } - } - - this.preFilters.forEach((function (fn) { - fn.call(this, this); - }).bind(this)); - - var basedir = (function () { - var required = Object.keys(self.files) - .filter(function (x) { return !self.files[x].target }) - ; - var entries = Object.keys(self.entries) - .filter(function (x) { return !self.entries[x].target }) - ; - var files = required.concat(entries) - .map(function (x) { return path.dirname(x) }) - ; - if (files.length === 0) return ''; - - var dir = commondir(files) + '/'; - return path.normalize(dir.replace(/\/node_modules\/$/, '/')); - })(); - - var removeLeading = function (s) { - if (s.slice(0, basedir.length) === basedir) { - return s.slice(basedir.length - 1); - } - }; - - var src = [] - .concat(this.prepends) - .concat(Object.keys(self.files).map(function (file) { - var s = self.files[file]; - var target = s.target || removeLeading(file); - - if (self.ignoring[target]) return ''; - - return self.wrap(idFromPath(target), s.body) - })) - .concat(Object.keys(self.aliases).map(function (to) { - var from = self.aliases[to]; - if (!to.match(/^(\.\.?)?\//)) { - to = '/node_modules/' + to; - } - - return wrappers.alias - .replace(/\$from/, function () { - return JSON.stringify(from); - }) - .replace(/\$to/, function () { - return JSON.stringify(to); - }) - ; - })) - .concat(Object.keys(self.entries).map(function (file) { - var s = self.entries[file]; - var target = s.target || removeLeading(file); - return self.wrapEntry(idFromPath(target), s.body); - })) - .concat(this.appends) - .join('\n') - ; - - if (!self.exports) { - self.exports = Object.keys(self.entries).length ? [] : [ 'require' ]; - } - if (self.exports === true) self.exports = [ 'require', 'process' ]; - if (!Array.isArray(self.exports)) self.exports = [ self.exports ]; - - if (self.exports.indexOf('process') >= 0 - && self.exports.indexOf('require') >= 0) { - src += 'var process = require("__browserify_process");\n' - } - else if (self.exports.indexOf('require') >= 0) { - // nop - } - else if (self.exports.indexOf('process') >= 0) { - src = 'var process = (function(){' - + src - + ';return require("__browserify_process")' - + '})();\n' - ; - } - else { - src = '(function(){' + src + '})();\n' - } - - this.postFilters.forEach((function (fn) { - src = fn.call(this, src); - }).bind(this)); - - return src; -}; - -Wrap.prototype.wrap = function (target, body) { - var self = this; - return (self.debug ? wrappers.body_debug : wrappers.body) - .replace(/\$__filename/g, function () { - return JSON.stringify(target); - }) - .replace(/\$body/, function () { - return self.debug - ? JSON.stringify(body + '\n//@ sourceURL=' + target) - : body - ; - }) - ; -}; - -Wrap.prototype.wrapEntry = function (target, body) { - var self = this; - return (self.debug ? wrappers.entry_debug : wrappers.entry) - .replace(/\$__filename/g, function () { - return JSON.stringify(target) - }) - .replace(/\$body/, function () { - return self.debug - ? JSON.stringify(body + '\n//@ sourceURL=' + target) - : body - ; - }) - ; -}; - -Wrap.prototype.include = function (file, target, body, root) { - var synthetic = !file; - if (!file) file = Math.floor(Math.random() * Math.pow(2,32)).toString(16); - - this.files[file] = { - body : body, - target : target, - synthetic : synthetic, - root : root - }; - return this; -}; - -Wrap.prototype.require = function (mfile, opts) { - var self = this; - if (!opts) opts = {}; - if (!opts.dirname) opts.dirname = process.cwd(); - - if (typeof mfile === 'object') { - throw new Error('require maps no longer supported'); - } - - if (self.has(mfile)) return self; - if (opts.target && self.has(opts.target)) return self; - - if (self.ignoring[mfile]) return self; - if (self.aliases[mfile]) return self; - - function moduleError (msg) { - return new Error(msg + ': ' + JSON.stringify(mfile) - + ' from directory ' + JSON.stringify(opts.dirname) - + (opts.fromFile ? ' while processing file ' + opts.fromFile : '') - ); - } - - var pkg = {}; - if (mfile === '__browserify_process' || resolve.isCore(mfile)) { - opts.file = path.resolve(__dirname, '../builtins/' + mfile + '.js'); - opts.target = opts.target || mfile; - - if (!path.existsSync(opts.file)) { - try { - require.resolve(mfile + '-browserify'); - opts.body = 'module.exports = require(' - + JSON.stringify(mfile + '-browserify') - + ')'; - } - catch (err) { - throw moduleError('No wrapper for core module'); - } - } - } - else if (self.has(mfile)) { - // package has already been included in some fashion, no need to resolve - return self; - } - else if (opts.body) { - opts.file = mfile; - } - else if (!opts.file) { - try { - var normPath - = path.normalize(path.resolve(mfile)) === path.normalize(mfile) - ? path.normalize(mfile) : mfile - ; - opts.file = self.resolver(normPath, opts.dirname); - } - catch (err) { - throw moduleError('Cannot find module'); - } - } - - if (self.has(opts.file)) return self; - - var dirname = path.dirname(opts.file); - var pkgfile = path.join(dirname, 'package.json'); - - if (!mfile.match(/^(\.\.?)?\//)) { - try { - pkgfile = resolve.sync(path.join(mfile, 'package.json'), { - basedir : dirname - }); - } - catch (err) {} - } - - if (pkgfile && !self._checkedPackages[pkgfile]) { - self._checkedPackages[pkgfile] = true; - if (path.existsSync(pkgfile)) { - var pkgBody = fs.readFileSync(pkgfile, 'utf8'); - try { - var npmpkg = JSON.parse(pkgBody); - if (npmpkg.main !== undefined) { - pkg.main = npmpkg.main; - } - if (npmpkg.browserify !== undefined) { - pkg.browserify = npmpkg.browserify; - } - } - catch (err) { - // ignore broken package.jsons just like node - } - - self.files[pkgfile] = { - body : 'module.exports = ' + JSON.stringify(pkg), - }; - } - } - - var body = opts.body || self.readFile(opts.file); - var entry = self.files[opts.file] = { - body : body, - target : opts.target - }; - - try { - var required = self.detective.find(body); - } - catch (err) { - process.nextTick(function () { - self.emit('syntaxError', err); - }); - return self; - } - - if (pkg.browserify && pkg.browserify.require) { - required.strings = required.strings.concat( - pkg.browserify.require - ); - } - - if (required.expressions.length) { - console.error('Expressions in require() statements:'); - required.expressions.forEach(function (ex) { - console.error(' require(' + ex + ')'); - }); - } - - nub(required.strings).forEach(function (req) { - var params = { - dirname : dirname, - fromFile : opts.file, - }; - if (opts.target && /^[.\/]/.test(req)) { - // not a real directory on the filesystem; just using the path - // module to get rid of the filename. - var targetDir = path.dirname(opts.target); - // not a real filename; just using the path module to deal with - // relative paths. - var reqFilename = path.resolve(targetDir, req); - // get rid of drive letter on Windows; replace it with '/' - var reqFilenameWithoutDriveLetter = /^[A-Z]:\\/.test(reqFilename) ? - '/' + reqFilename.substring(3) : reqFilename; - - params.target = idFromPath(reqFilenameWithoutDriveLetter); - } - self.require(req, params); - }); - - return self; -}; - -function isPrefixOf (x, y) { - return y.slice(0, x.length) === x; -} - -Wrap.prototype.has = function (file) { - var self = this; - if (self.files[file]) return true; - - var res = Object.keys(self.files).some(function (key) { - return self.files[key].target === file; - }); - return res; -}; - -Wrap.prototype.resolver = function (file, basedir) { - return resolve.sync(file, { - basedir : basedir, - extensions : this.extensions, - packageFilter : function (pkg) { - var b = pkg.browserify; - if (b) { - if (typeof b === 'string') { - pkg.main = b; - } - else if (typeof b === 'object' && b.main) { - pkg.main = b.main; - } - } - return pkg - } - }); -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrappers.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrappers.js deleted file mode 100644 index b14e7d8a06c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/lib/wrappers.js +++ /dev/null @@ -1,10 +0,0 @@ -var fs = require('fs'); - -module.exports = fs.readdirSync(__dirname + '/../wrappers') - .filter(function (file) { return file.match(/\.js$/) }) - .reduce(function (acc, file) { - var name = file.replace(/\.js$/, ''); - acc[name] = fs.readFileSync(__dirname + '/../wrappers/' + file, 'utf8'); - return acc; - }, {}) -; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/.npmignore b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/.npmignore deleted file mode 100644 index 21e430d2ecd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/.npmignore +++ /dev/null @@ -1,11 +0,0 @@ -*.coffee -*.html -.DS_Store -.git* -Cakefile -documentation/ -examples/ -extras/coffee-script.js -raw/ -src/ -test/ diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/CNAME b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/CNAME deleted file mode 100644 index faadabe5f68..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/CNAME +++ /dev/null @@ -1 +0,0 @@ -coffeescript.org
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/LICENSE b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/LICENSE deleted file mode 100644 index dbe6b4e3b9a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2009-2012 Jeremy Ashkenas - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/README b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/README deleted file mode 100644 index 69ee6f43c01..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/README +++ /dev/null @@ -1,51 +0,0 @@ - - { - } } { - { { } } - } }{ { - { }{ } } _____ __ __ - ( }{ }{ { ) / ____| / _|/ _| - .- { { } { }} -. | | ___ | |_| |_ ___ ___ - ( ( } { } { } } ) | | / _ \| _| _/ _ \/ _ \ - |`-..________ ..-'| | |___| (_) | | | || __/ __/ - | | \_____\___/|_| |_| \___|\___| - | ;--. - | (__ \ _____ _ _ - | | ) ) / ____| (_) | | - | |/ / | (___ ___ _ __ _ _ __ | |_ - | ( / \___ \ / __| '__| | '_ \| __| - | |/ ____) | (__| | | | |_) | |_ - | | |_____/ \___|_| |_| .__/ \__| - `-.._________..-' | | - |_| - - - CoffeeScript is a little language that compiles into JavaScript. - - Install Node.js, and then the CoffeeScript compiler: - sudo bin/cake install - - Or, if you have the Node Package Manager installed: - npm install -g coffee-script - (Leave off the -g if you don't wish to install globally.) - - Execute a script: - coffee /path/to/script.coffee - - Compile a script: - coffee -c /path/to/script.coffee - - For documentation, usage, and examples, see: - http://coffeescript.org/ - - To suggest a feature, report a bug, or general discussion: - http://github.com/jashkenas/coffee-script/issues/ - - If you'd like to chat, drop by #coffeescript on Freenode IRC, - or on webchat.freenode.net. - - The source repository: - git://github.com/jashkenas/coffee-script.git - - All contributors are listed here: - http://github.com/jashkenas/coffee-script/contributors diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/Rakefile b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/Rakefile deleted file mode 100644 index dfb85dabcaf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/Rakefile +++ /dev/null @@ -1,78 +0,0 @@ -require 'rubygems' -require 'erb' -require 'fileutils' -require 'rake/testtask' -require 'json' - -desc "Build the documentation page" -task :doc do - source = 'documentation/index.html.erb' - child = fork { exec "bin/coffee -bcw -o documentation/js documentation/coffee/*.coffee" } - at_exit { Process.kill("INT", child) } - Signal.trap("INT") { exit } - loop do - mtime = File.stat(source).mtime - if !@mtime || mtime > @mtime - rendered = ERB.new(File.read(source)).result(binding) - File.open('index.html', 'w+') {|f| f.write(rendered) } - end - @mtime = mtime - sleep 1 - end -end - -desc "Build coffee-script-source gem" -task :gem do - require 'rubygems' - require 'rubygems/package' - - gemspec = Gem::Specification.new do |s| - s.name = 'coffee-script-source' - s.version = JSON.parse(File.read('package.json'))["version"] - s.date = Time.now.strftime("%Y-%m-%d") - - s.homepage = "http://jashkenas.github.com/coffee-script/" - s.summary = "The CoffeeScript Compiler" - s.description = <<-EOS - CoffeeScript is a little language that compiles into JavaScript. - Underneath all of those embarrassing braces and semicolons, - JavaScript has always had a gorgeous object model at its heart. - CoffeeScript is an attempt to expose the good parts of JavaScript - in a simple way. - EOS - - s.files = [ - 'lib/coffee_script/coffee-script.js', - 'lib/coffee_script/source.rb' - ] - - s.authors = ['Jeremy Ashkenas'] - s.email = 'jashkenas@gmail.com' - s.rubyforge_project = 'coffee-script-source' - end - - file = File.open("coffee-script-source.gem", "w") - Gem::Package.open(file, 'w') do |pkg| - pkg.metadata = gemspec.to_yaml - - path = "lib/coffee_script/source.rb" - contents = <<-ERUBY -module CoffeeScript - module Source - def self.bundled_path - File.expand_path("../coffee-script.js", __FILE__) - end - end -end - ERUBY - pkg.add_file_simple(path, 0644, contents.size) do |tar_io| - tar_io.write(contents) - end - - contents = File.read("extras/coffee-script.js") - path = "lib/coffee_script/coffee-script.js" - pkg.add_file_simple(path, 0644, contents.size) do |tar_io| - tar_io.write(contents) - end - end -end diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/cake b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/cake deleted file mode 100755 index 5965f4ee5d4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/cake +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); -var fs = require('fs'); -var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib'); - -require(lib + '/coffee-script/cake').run(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/coffee deleted file mode 100755 index 3d1d71c8c51..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/bin/coffee +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); -var fs = require('fs'); -var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../lib'); - -require(lib + '/coffee-script/command').run(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/extras/jsl.conf b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/extras/jsl.conf deleted file mode 100644 index 1190da529ef..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/extras/jsl.conf +++ /dev/null @@ -1,44 +0,0 @@ -# JavaScriptLint configuration file for CoffeeScript. - -+no_return_value # function {0} does not always return a value -+duplicate_formal # duplicate formal argument {0} --equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} -+var_hides_arg # variable {0} hides argument -+redeclared_var # redeclaration of {0} {1} --anon_no_return_value # anonymous function does not always return a value -+missing_semicolon # missing semicolon -+meaningless_block # meaningless block; curly braces have no impact --comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+unreachable_code # unreachable code -+missing_break # missing break statement --missing_break_for_last_case # missing break statement for last case in switch --comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement --useless_void # use of the void type may be unnecessary (void is always undefined) -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+use_of_label # use of label --block_without_braces # block statement without curly braces -+leading_decimal_point # leading decimal point may indicate a number or an object member -+trailing_decimal_point # trailing decimal point may indicate a number or an object member -+octal_number # leading zeros make an octal number -+nested_comment # nested comment -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+empty_statement # empty statement or extra semicolon --missing_option_explicit # the "option explicit" control comment is missing -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+dup_option_explicit # duplicate "option explicit" control comment -+useless_assign # useless assignment -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) --missing_default_case # missing default case in switch statement -+duplicate_case_in_switch # duplicate case in switch statements -+default_not_at_end # the default case is not at the end of the switch statement -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+useless_comparison # useless comparison; comparing identical expressions -+with_statement # with statement hides undeclared variables; use temporary variable instead -+trailing_comma_in_array # extra comma is not recommended in array initializers -+assign_to_function_call # assignment to a function call -+parseint_missing_radix # parseInt missing radix parameter -+lambda_assign_requires_semicolon diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/browser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/browser.js deleted file mode 100644 index 825cbf3122e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/browser.js +++ /dev/null @@ -1,92 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var CoffeeScript, runScripts; - - CoffeeScript = require('./coffee-script'); - - CoffeeScript.require = require; - - CoffeeScript["eval"] = function(code, options) { - var _ref; - if (options == null) { - options = {}; - } - if ((_ref = options.bare) == null) { - options.bare = true; - } - return eval(CoffeeScript.compile(code, options)); - }; - - CoffeeScript.run = function(code, options) { - if (options == null) { - options = {}; - } - options.bare = true; - return Function(CoffeeScript.compile(code, options))(); - }; - - if (typeof window === "undefined" || window === null) { - return; - } - - CoffeeScript.load = function(url, callback) { - var xhr; - xhr = new (window.ActiveXObject || XMLHttpRequest)('Microsoft.XMLHTTP'); - xhr.open('GET', url, true); - if ('overrideMimeType' in xhr) { - xhr.overrideMimeType('text/plain'); - } - xhr.onreadystatechange = function() { - var _ref; - if (xhr.readyState === 4) { - if ((_ref = xhr.status) === 0 || _ref === 200) { - CoffeeScript.run(xhr.responseText); - } else { - throw new Error("Could not load " + url); - } - if (callback) { - return callback(); - } - } - }; - return xhr.send(null); - }; - - runScripts = function() { - var coffees, execute, index, length, s, scripts; - scripts = document.getElementsByTagName('script'); - coffees = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = scripts.length; _i < _len; _i++) { - s = scripts[_i]; - if (s.type === 'text/coffeescript') { - _results.push(s); - } - } - return _results; - })(); - index = 0; - length = coffees.length; - (execute = function() { - var script; - script = coffees[index++]; - if ((script != null ? script.type : void 0) === 'text/coffeescript') { - if (script.src) { - return CoffeeScript.load(script.src, execute); - } else { - CoffeeScript.run(script.innerHTML); - return execute(); - } - } - })(); - return null; - }; - - if (window.addEventListener) { - addEventListener('DOMContentLoaded', runScripts, false); - } else { - attachEvent('onload', runScripts); - } - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/cake.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/cake.js deleted file mode 100644 index 1523418f12e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/cake.js +++ /dev/null @@ -1,111 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var CoffeeScript, cakefileDirectory, fatalError, fs, helpers, missingTask, oparse, options, optparse, path, printTasks, switches, tasks; - - fs = require('fs'); - - path = require('path'); - - helpers = require('./helpers'); - - optparse = require('./optparse'); - - CoffeeScript = require('./coffee-script'); - - tasks = {}; - - options = {}; - - switches = []; - - oparse = null; - - helpers.extend(global, { - task: function(name, description, action) { - var _ref; - if (!action) { - _ref = [description, action], action = _ref[0], description = _ref[1]; - } - return tasks[name] = { - name: name, - description: description, - action: action - }; - }, - option: function(letter, flag, description) { - return switches.push([letter, flag, description]); - }, - invoke: function(name) { - if (!tasks[name]) { - missingTask(name); - } - return tasks[name].action(options); - } - }); - - exports.run = function() { - var arg, args, _i, _len, _ref, _results; - global.__originalDirname = fs.realpathSync('.'); - process.chdir(cakefileDirectory(__originalDirname)); - args = process.argv.slice(2); - CoffeeScript.run(fs.readFileSync('Cakefile').toString(), { - filename: 'Cakefile' - }); - oparse = new optparse.OptionParser(switches); - if (!args.length) { - return printTasks(); - } - try { - options = oparse.parse(args); - } catch (e) { - return fatalError("" + e); - } - _ref = options["arguments"]; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - arg = _ref[_i]; - _results.push(invoke(arg)); - } - return _results; - }; - - printTasks = function() { - var cakefilePath, desc, name, relative, spaces, task; - relative = path.relative || path.resolve; - cakefilePath = path.join(relative(__originalDirname, process.cwd()), 'Cakefile'); - console.log("" + cakefilePath + " defines the following tasks:\n"); - for (name in tasks) { - task = tasks[name]; - spaces = 20 - name.length; - spaces = spaces > 0 ? Array(spaces + 1).join(' ') : ''; - desc = task.description ? "# " + task.description : ''; - console.log("cake " + name + spaces + " " + desc); - } - if (switches.length) { - return console.log(oparse.help()); - } - }; - - fatalError = function(message) { - console.error(message + '\n'); - console.log('To see a list of all tasks/options, run "cake"'); - return process.exit(1); - }; - - missingTask = function(task) { - return fatalError("No such task: " + task); - }; - - cakefileDirectory = function(dir) { - var parent; - if (path.existsSync(path.join(dir, 'Cakefile'))) { - return dir; - } - parent = path.normalize(path.join(dir, '..')); - if (parent !== dir) { - return cakefileDirectory(parent); - } - throw new Error("Cakefile not found in " + (process.cwd())); - }; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/coffee-script.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/coffee-script.js deleted file mode 100644 index c43fa497ef1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/coffee-script.js +++ /dev/null @@ -1,167 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var Lexer, RESERVED, compile, fs, lexer, parser, path, vm, _ref, - __hasProp = {}.hasOwnProperty; - - fs = require('fs'); - - path = require('path'); - - _ref = require('./lexer'), Lexer = _ref.Lexer, RESERVED = _ref.RESERVED; - - parser = require('./parser').parser; - - vm = require('vm'); - - if (require.extensions) { - require.extensions['.coffee'] = function(module, filename) { - var content; - content = compile(fs.readFileSync(filename, 'utf8'), { - filename: filename - }); - return module._compile(content, filename); - }; - } else if (require.registerExtension) { - require.registerExtension('.coffee', function(content) { - return compile(content); - }); - } - - exports.VERSION = '1.3.3'; - - exports.RESERVED = RESERVED; - - exports.helpers = require('./helpers'); - - exports.compile = compile = function(code, options) { - var header, js, merge; - if (options == null) { - options = {}; - } - merge = exports.helpers.merge; - try { - js = (parser.parse(lexer.tokenize(code))).compile(options); - if (!options.header) { - return js; - } - } catch (err) { - if (options.filename) { - err.message = "In " + options.filename + ", " + err.message; - } - throw err; - } - header = "Generated by CoffeeScript " + this.VERSION; - return "// " + header + "\n" + js; - }; - - exports.tokens = function(code, options) { - return lexer.tokenize(code, options); - }; - - exports.nodes = function(source, options) { - if (typeof source === 'string') { - return parser.parse(lexer.tokenize(source, options)); - } else { - return parser.parse(source); - } - }; - - exports.run = function(code, options) { - var mainModule; - if (options == null) { - options = {}; - } - mainModule = require.main; - mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '.'; - mainModule.moduleCache && (mainModule.moduleCache = {}); - mainModule.paths = require('module')._nodeModulePaths(path.dirname(fs.realpathSync(options.filename))); - if (path.extname(mainModule.filename) !== '.coffee' || require.extensions) { - return mainModule._compile(compile(code, options), mainModule.filename); - } else { - return mainModule._compile(code, mainModule.filename); - } - }; - - exports["eval"] = function(code, options) { - var Module, Script, js, k, o, r, sandbox, v, _i, _len, _module, _ref1, _ref2, _require; - if (options == null) { - options = {}; - } - if (!(code = code.trim())) { - return; - } - Script = vm.Script; - if (Script) { - if (options.sandbox != null) { - if (options.sandbox instanceof Script.createContext().constructor) { - sandbox = options.sandbox; - } else { - sandbox = Script.createContext(); - _ref1 = options.sandbox; - for (k in _ref1) { - if (!__hasProp.call(_ref1, k)) continue; - v = _ref1[k]; - sandbox[k] = v; - } - } - sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox; - } else { - sandbox = global; - } - sandbox.__filename = options.filename || 'eval'; - sandbox.__dirname = path.dirname(sandbox.__filename); - if (!(sandbox !== global || sandbox.module || sandbox.require)) { - Module = require('module'); - sandbox.module = _module = new Module(options.modulename || 'eval'); - sandbox.require = _require = function(path) { - return Module._load(path, _module, true); - }; - _module.filename = sandbox.__filename; - _ref2 = Object.getOwnPropertyNames(require); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - r = _ref2[_i]; - if (r !== 'paths') { - _require[r] = require[r]; - } - } - _require.paths = _module.paths = Module._nodeModulePaths(process.cwd()); - _require.resolve = function(request) { - return Module._resolveFilename(request, _module); - }; - } - } - o = {}; - for (k in options) { - if (!__hasProp.call(options, k)) continue; - v = options[k]; - o[k] = v; - } - o.bare = true; - js = compile(code, o); - if (sandbox === global) { - return vm.runInThisContext(js); - } else { - return vm.runInContext(js, sandbox); - } - }; - - lexer = new Lexer; - - parser.lexer = { - lex: function() { - var tag, _ref1; - _ref1 = this.tokens[this.pos++] || [''], tag = _ref1[0], this.yytext = _ref1[1], this.yylineno = _ref1[2]; - return tag; - }, - setInput: function(tokens) { - this.tokens = tokens; - return this.pos = 0; - }, - upcomingInput: function() { - return ""; - } - }; - - parser.yy = require('./nodes'); - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/command.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/command.js deleted file mode 100644 index e02da9fe6f5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/command.js +++ /dev/null @@ -1,500 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var BANNER, CoffeeScript, EventEmitter, SWITCHES, compileJoin, compileOptions, compilePath, compileScript, compileStdio, exec, forkNode, fs, helpers, hidden, joinTimeout, lint, loadRequires, notSources, optionParser, optparse, opts, outputPath, parseOptions, path, printLine, printTokens, printWarn, removeSource, sourceCode, sources, spawn, timeLog, unwatchDir, usage, version, wait, watch, watchDir, watchers, writeJs, _ref; - - fs = require('fs'); - - path = require('path'); - - helpers = require('./helpers'); - - optparse = require('./optparse'); - - CoffeeScript = require('./coffee-script'); - - _ref = require('child_process'), spawn = _ref.spawn, exec = _ref.exec; - - EventEmitter = require('events').EventEmitter; - - helpers.extend(CoffeeScript, new EventEmitter); - - printLine = function(line) { - return process.stdout.write(line + '\n'); - }; - - printWarn = function(line) { - return process.stderr.write(line + '\n'); - }; - - hidden = function(file) { - return /^\.|~$/.test(file); - }; - - BANNER = 'Usage: coffee [options] path/to/script.coffee -- [args]\n\nIf called without options, `coffee` will run your script.'; - - SWITCHES = [['-b', '--bare', 'compile without a top-level function wrapper'], ['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-e', '--eval', 'pass a string from the command line as input'], ['-h', '--help', 'display this help message'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-j', '--join [FILE]', 'concatenate the source CoffeeScript before compiling'], ['-l', '--lint', 'pipe the compiled JavaScript through JavaScript Lint'], ['-n', '--nodes', 'print out the parse tree that the parser produces'], ['--nodejs [ARGS]', 'pass options directly to the "node" binary'], ['-o', '--output [DIR]', 'set the output directory for compiled JavaScript'], ['-p', '--print', 'print out the compiled JavaScript'], ['-r', '--require [FILE*]', 'require a library before executing your script'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-t', '--tokens', 'print out the tokens that the lexer/rewriter produce'], ['-v', '--version', 'display the version number'], ['-w', '--watch', 'watch scripts for changes and rerun commands']]; - - opts = {}; - - sources = []; - - sourceCode = []; - - notSources = {}; - - watchers = {}; - - optionParser = null; - - exports.run = function() { - var literals, source, _i, _len, _results; - parseOptions(); - if (opts.nodejs) { - return forkNode(); - } - if (opts.help) { - return usage(); - } - if (opts.version) { - return version(); - } - if (opts.require) { - loadRequires(); - } - if (opts.interactive) { - return require('./repl'); - } - if (opts.watch && !fs.watch) { - return printWarn("The --watch feature depends on Node v0.6.0+. You are running " + process.version + "."); - } - if (opts.stdio) { - return compileStdio(); - } - if (opts["eval"]) { - return compileScript(null, sources[0]); - } - if (!sources.length) { - return require('./repl'); - } - literals = opts.run ? sources.splice(1) : []; - process.argv = process.argv.slice(0, 2).concat(literals); - process.argv[0] = 'coffee'; - process.execPath = require.main.filename; - _results = []; - for (_i = 0, _len = sources.length; _i < _len; _i++) { - source = sources[_i]; - _results.push(compilePath(source, true, path.normalize(source))); - } - return _results; - }; - - compilePath = function(source, topLevel, base) { - return fs.stat(source, function(err, stats) { - if (err && err.code !== 'ENOENT') { - throw err; - } - if ((err != null ? err.code : void 0) === 'ENOENT') { - if (topLevel && source.slice(-7) !== '.coffee') { - source = sources[sources.indexOf(source)] = "" + source + ".coffee"; - return compilePath(source, topLevel, base); - } - if (topLevel) { - console.error("File not found: " + source); - process.exit(1); - } - return; - } - if (stats.isDirectory()) { - if (opts.watch) { - watchDir(source, base); - } - return fs.readdir(source, function(err, files) { - var file, index, _ref1, _ref2; - if (err && err.code !== 'ENOENT') { - throw err; - } - if ((err != null ? err.code : void 0) === 'ENOENT') { - return; - } - index = sources.indexOf(source); - files = files.filter(function(file) { - return !hidden(file); - }); - [].splice.apply(sources, [index, index - index + 1].concat(_ref1 = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - _results.push(path.join(source, file)); - } - return _results; - })())), _ref1; - [].splice.apply(sourceCode, [index, index - index + 1].concat(_ref2 = files.map(function() { - return null; - }))), _ref2; - return files.forEach(function(file) { - return compilePath(path.join(source, file), false, base); - }); - }); - } else if (topLevel || path.extname(source) === '.coffee') { - if (opts.watch) { - watch(source, base); - } - return fs.readFile(source, function(err, code) { - if (err && err.code !== 'ENOENT') { - throw err; - } - if ((err != null ? err.code : void 0) === 'ENOENT') { - return; - } - return compileScript(source, code.toString(), base); - }); - } else { - notSources[source] = true; - return removeSource(source, base); - } - }); - }; - - compileScript = function(file, input, base) { - var o, options, t, task; - o = opts; - options = compileOptions(file); - try { - t = task = { - file: file, - input: input, - options: options - }; - CoffeeScript.emit('compile', task); - if (o.tokens) { - return printTokens(CoffeeScript.tokens(t.input)); - } else if (o.nodes) { - return printLine(CoffeeScript.nodes(t.input).toString().trim()); - } else if (o.run) { - return CoffeeScript.run(t.input, t.options); - } else if (o.join && t.file !== o.join) { - sourceCode[sources.indexOf(t.file)] = t.input; - return compileJoin(); - } else { - t.output = CoffeeScript.compile(t.input, t.options); - CoffeeScript.emit('success', task); - if (o.print) { - return printLine(t.output.trim()); - } else if (o.compile) { - return writeJs(t.file, t.output, base); - } else if (o.lint) { - return lint(t.file, t.output); - } - } - } catch (err) { - CoffeeScript.emit('failure', err, task); - if (CoffeeScript.listeners('failure').length) { - return; - } - if (o.watch) { - return printLine(err.message + '\x07'); - } - printWarn(err instanceof Error && err.stack || ("ERROR: " + err)); - return process.exit(1); - } - }; - - compileStdio = function() { - var code, stdin; - code = ''; - stdin = process.openStdin(); - stdin.on('data', function(buffer) { - if (buffer) { - return code += buffer.toString(); - } - }); - return stdin.on('end', function() { - return compileScript(null, code); - }); - }; - - joinTimeout = null; - - compileJoin = function() { - if (!opts.join) { - return; - } - if (!sourceCode.some(function(code) { - return code === null; - })) { - clearTimeout(joinTimeout); - return joinTimeout = wait(100, function() { - return compileScript(opts.join, sourceCode.join('\n'), opts.join); - }); - } - }; - - loadRequires = function() { - var realFilename, req, _i, _len, _ref1; - realFilename = module.filename; - module.filename = '.'; - _ref1 = opts.require; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - req = _ref1[_i]; - require(req); - } - return module.filename = realFilename; - }; - - watch = function(source, base) { - var compile, compileTimeout, prevStats, rewatch, watchErr, watcher; - prevStats = null; - compileTimeout = null; - watchErr = function(e) { - if (e.code === 'ENOENT') { - if (sources.indexOf(source) === -1) { - return; - } - try { - rewatch(); - return compile(); - } catch (e) { - removeSource(source, base, true); - return compileJoin(); - } - } else { - throw e; - } - }; - compile = function() { - clearTimeout(compileTimeout); - return compileTimeout = wait(25, function() { - return fs.stat(source, function(err, stats) { - if (err) { - return watchErr(err); - } - if (prevStats && stats.size === prevStats.size && stats.mtime.getTime() === prevStats.mtime.getTime()) { - return rewatch(); - } - prevStats = stats; - return fs.readFile(source, function(err, code) { - if (err) { - return watchErr(err); - } - compileScript(source, code.toString(), base); - return rewatch(); - }); - }); - }); - }; - try { - watcher = fs.watch(source, compile); - } catch (e) { - watchErr(e); - } - return rewatch = function() { - if (watcher != null) { - watcher.close(); - } - return watcher = fs.watch(source, compile); - }; - }; - - watchDir = function(source, base) { - var readdirTimeout, watcher; - readdirTimeout = null; - try { - return watcher = fs.watch(source, function() { - clearTimeout(readdirTimeout); - return readdirTimeout = wait(25, function() { - return fs.readdir(source, function(err, files) { - var file, _i, _len, _results; - if (err) { - if (err.code !== 'ENOENT') { - throw err; - } - watcher.close(); - return unwatchDir(source, base); - } - _results = []; - for (_i = 0, _len = files.length; _i < _len; _i++) { - file = files[_i]; - if (!(!hidden(file) && !notSources[file])) { - continue; - } - file = path.join(source, file); - if (sources.some(function(s) { - return s.indexOf(file) >= 0; - })) { - continue; - } - sources.push(file); - sourceCode.push(null); - _results.push(compilePath(file, false, base)); - } - return _results; - }); - }); - }); - } catch (e) { - if (e.code !== 'ENOENT') { - throw e; - } - } - }; - - unwatchDir = function(source, base) { - var file, prevSources, toRemove, _i, _len; - prevSources = sources.slice(0); - toRemove = (function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = sources.length; _i < _len; _i++) { - file = sources[_i]; - if (file.indexOf(source) >= 0) { - _results.push(file); - } - } - return _results; - })(); - for (_i = 0, _len = toRemove.length; _i < _len; _i++) { - file = toRemove[_i]; - removeSource(file, base, true); - } - if (!sources.some(function(s, i) { - return prevSources[i] !== s; - })) { - return; - } - return compileJoin(); - }; - - removeSource = function(source, base, removeJs) { - var index, jsPath; - index = sources.indexOf(source); - sources.splice(index, 1); - sourceCode.splice(index, 1); - if (removeJs && !opts.join) { - jsPath = outputPath(source, base); - return path.exists(jsPath, function(exists) { - if (exists) { - return fs.unlink(jsPath, function(err) { - if (err && err.code !== 'ENOENT') { - throw err; - } - return timeLog("removed " + source); - }); - } - }); - } - }; - - outputPath = function(source, base) { - var baseDir, dir, filename, srcDir; - filename = path.basename(source, path.extname(source)) + '.js'; - srcDir = path.dirname(source); - baseDir = base === '.' ? srcDir : srcDir.substring(base.length); - dir = opts.output ? path.join(opts.output, baseDir) : srcDir; - return path.join(dir, filename); - }; - - writeJs = function(source, js, base) { - var compile, jsDir, jsPath; - jsPath = outputPath(source, base); - jsDir = path.dirname(jsPath); - compile = function() { - if (js.length <= 0) { - js = ' '; - } - return fs.writeFile(jsPath, js, function(err) { - if (err) { - return printLine(err.message); - } else if (opts.compile && opts.watch) { - return timeLog("compiled " + source); - } - }); - }; - return path.exists(jsDir, function(exists) { - if (exists) { - return compile(); - } else { - return exec("mkdir -p " + jsDir, compile); - } - }); - }; - - wait = function(milliseconds, func) { - return setTimeout(func, milliseconds); - }; - - timeLog = function(message) { - return console.log("" + ((new Date).toLocaleTimeString()) + " - " + message); - }; - - lint = function(file, js) { - var conf, jsl, printIt; - printIt = function(buffer) { - return printLine(file + ':\t' + buffer.toString().trim()); - }; - conf = __dirname + '/../../extras/jsl.conf'; - jsl = spawn('jsl', ['-nologo', '-stdin', '-conf', conf]); - jsl.stdout.on('data', printIt); - jsl.stderr.on('data', printIt); - jsl.stdin.write(js); - return jsl.stdin.end(); - }; - - printTokens = function(tokens) { - var strings, tag, token, value; - strings = (function() { - var _i, _len, _ref1, _results; - _results = []; - for (_i = 0, _len = tokens.length; _i < _len; _i++) { - token = tokens[_i]; - _ref1 = [token[0], token[1].toString().replace(/\n/, '\\n')], tag = _ref1[0], value = _ref1[1]; - _results.push("[" + tag + " " + value + "]"); - } - return _results; - })(); - return printLine(strings.join(' ')); - }; - - parseOptions = function() { - var i, o, source, _i, _len; - optionParser = new optparse.OptionParser(SWITCHES, BANNER); - o = opts = optionParser.parse(process.argv.slice(2)); - o.compile || (o.compile = !!o.output); - o.run = !(o.compile || o.print || o.lint); - o.print = !!(o.print || (o["eval"] || o.stdio && o.compile)); - sources = o["arguments"]; - for (i = _i = 0, _len = sources.length; _i < _len; i = ++_i) { - source = sources[i]; - sourceCode[i] = null; - } - }; - - compileOptions = function(filename) { - return { - filename: filename, - bare: opts.bare, - header: opts.compile - }; - }; - - forkNode = function() { - var args, nodeArgs; - nodeArgs = opts.nodejs.split(/\s+/); - args = process.argv.slice(1); - args.splice(args.indexOf('--nodejs'), 2); - return spawn(process.execPath, nodeArgs.concat(args), { - cwd: process.cwd(), - env: process.env, - customFds: [0, 1, 2] - }); - }; - - usage = function() { - return printLine((new optparse.OptionParser(SWITCHES, BANNER)).help()); - }; - - version = function() { - return printLine("CoffeeScript version " + CoffeeScript.VERSION); - }; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/grammar.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/grammar.js deleted file mode 100644 index 56621388d39..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/grammar.js +++ /dev/null @@ -1,606 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var Parser, alt, alternatives, grammar, name, o, operators, token, tokens, unwrap; - - Parser = require('jison').Parser; - - unwrap = /^function\s*\(\)\s*\{\s*return\s*([\s\S]*);\s*\}/; - - o = function(patternString, action, options) { - var match; - patternString = patternString.replace(/\s{2,}/g, ' '); - if (!action) { - return [patternString, '$$ = $1;', options]; - } - action = (match = unwrap.exec(action)) ? match[1] : "(" + action + "())"; - action = action.replace(/\bnew /g, '$&yy.'); - action = action.replace(/\b(?:Block\.wrap|extend)\b/g, 'yy.$&'); - return [patternString, "$$ = " + action + ";", options]; - }; - - grammar = { - Root: [ - o('', function() { - return new Block; - }), o('Body'), o('Block TERMINATOR') - ], - Body: [ - o('Line', function() { - return Block.wrap([$1]); - }), o('Body TERMINATOR Line', function() { - return $1.push($3); - }), o('Body TERMINATOR') - ], - Line: [o('Expression'), o('Statement')], - Statement: [ - o('Return'), o('Comment'), o('STATEMENT', function() { - return new Literal($1); - }) - ], - Expression: [o('Value'), o('Invocation'), o('Code'), o('Operation'), o('Assign'), o('If'), o('Try'), o('While'), o('For'), o('Switch'), o('Class'), o('Throw')], - Block: [ - o('INDENT OUTDENT', function() { - return new Block; - }), o('INDENT Body OUTDENT', function() { - return $2; - }) - ], - Identifier: [ - o('IDENTIFIER', function() { - return new Literal($1); - }) - ], - AlphaNumeric: [ - o('NUMBER', function() { - return new Literal($1); - }), o('STRING', function() { - return new Literal($1); - }) - ], - Literal: [ - o('AlphaNumeric'), o('JS', function() { - return new Literal($1); - }), o('REGEX', function() { - return new Literal($1); - }), o('DEBUGGER', function() { - return new Literal($1); - }), o('UNDEFINED', function() { - return new Undefined; - }), o('NULL', function() { - return new Null; - }), o('BOOL', function() { - return new Bool($1); - }) - ], - Assign: [ - o('Assignable = Expression', function() { - return new Assign($1, $3); - }), o('Assignable = TERMINATOR Expression', function() { - return new Assign($1, $4); - }), o('Assignable = INDENT Expression OUTDENT', function() { - return new Assign($1, $4); - }) - ], - AssignObj: [ - o('ObjAssignable', function() { - return new Value($1); - }), o('ObjAssignable : Expression', function() { - return new Assign(new Value($1), $3, 'object'); - }), o('ObjAssignable :\ - INDENT Expression OUTDENT', function() { - return new Assign(new Value($1), $4, 'object'); - }), o('Comment') - ], - ObjAssignable: [o('Identifier'), o('AlphaNumeric'), o('ThisProperty')], - Return: [ - o('RETURN Expression', function() { - return new Return($2); - }), o('RETURN', function() { - return new Return; - }) - ], - Comment: [ - o('HERECOMMENT', function() { - return new Comment($1); - }) - ], - Code: [ - o('PARAM_START ParamList PARAM_END FuncGlyph Block', function() { - return new Code($2, $5, $4); - }), o('FuncGlyph Block', function() { - return new Code([], $2, $1); - }) - ], - FuncGlyph: [ - o('->', function() { - return 'func'; - }), o('=>', function() { - return 'boundfunc'; - }) - ], - OptComma: [o(''), o(',')], - ParamList: [ - o('', function() { - return []; - }), o('Param', function() { - return [$1]; - }), o('ParamList , Param', function() { - return $1.concat($3); - }), o('ParamList OptComma TERMINATOR Param', function() { - return $1.concat($4); - }), o('ParamList OptComma INDENT ParamList OptComma OUTDENT', function() { - return $1.concat($4); - }) - ], - Param: [ - o('ParamVar', function() { - return new Param($1); - }), o('ParamVar ...', function() { - return new Param($1, null, true); - }), o('ParamVar = Expression', function() { - return new Param($1, $3); - }) - ], - ParamVar: [o('Identifier'), o('ThisProperty'), o('Array'), o('Object')], - Splat: [ - o('Expression ...', function() { - return new Splat($1); - }) - ], - SimpleAssignable: [ - o('Identifier', function() { - return new Value($1); - }), o('Value Accessor', function() { - return $1.add($2); - }), o('Invocation Accessor', function() { - return new Value($1, [].concat($2)); - }), o('ThisProperty') - ], - Assignable: [ - o('SimpleAssignable'), o('Array', function() { - return new Value($1); - }), o('Object', function() { - return new Value($1); - }) - ], - Value: [ - o('Assignable'), o('Literal', function() { - return new Value($1); - }), o('Parenthetical', function() { - return new Value($1); - }), o('Range', function() { - return new Value($1); - }), o('This') - ], - Accessor: [ - o('. Identifier', function() { - return new Access($2); - }), o('?. Identifier', function() { - return new Access($2, 'soak'); - }), o(':: Identifier', function() { - return [new Access(new Literal('prototype')), new Access($2)]; - }), o('::', function() { - return new Access(new Literal('prototype')); - }), o('Index') - ], - Index: [ - o('INDEX_START IndexValue INDEX_END', function() { - return $2; - }), o('INDEX_SOAK Index', function() { - return extend($2, { - soak: true - }); - }) - ], - IndexValue: [ - o('Expression', function() { - return new Index($1); - }), o('Slice', function() { - return new Slice($1); - }) - ], - Object: [ - o('{ AssignList OptComma }', function() { - return new Obj($2, $1.generated); - }) - ], - AssignList: [ - o('', function() { - return []; - }), o('AssignObj', function() { - return [$1]; - }), o('AssignList , AssignObj', function() { - return $1.concat($3); - }), o('AssignList OptComma TERMINATOR AssignObj', function() { - return $1.concat($4); - }), o('AssignList OptComma INDENT AssignList OptComma OUTDENT', function() { - return $1.concat($4); - }) - ], - Class: [ - o('CLASS', function() { - return new Class; - }), o('CLASS Block', function() { - return new Class(null, null, $2); - }), o('CLASS EXTENDS Expression', function() { - return new Class(null, $3); - }), o('CLASS EXTENDS Expression Block', function() { - return new Class(null, $3, $4); - }), o('CLASS SimpleAssignable', function() { - return new Class($2); - }), o('CLASS SimpleAssignable Block', function() { - return new Class($2, null, $3); - }), o('CLASS SimpleAssignable EXTENDS Expression', function() { - return new Class($2, $4); - }), o('CLASS SimpleAssignable EXTENDS Expression Block', function() { - return new Class($2, $4, $5); - }) - ], - Invocation: [ - o('Value OptFuncExist Arguments', function() { - return new Call($1, $3, $2); - }), o('Invocation OptFuncExist Arguments', function() { - return new Call($1, $3, $2); - }), o('SUPER', function() { - return new Call('super', [new Splat(new Literal('arguments'))]); - }), o('SUPER Arguments', function() { - return new Call('super', $2); - }) - ], - OptFuncExist: [ - o('', function() { - return false; - }), o('FUNC_EXIST', function() { - return true; - }) - ], - Arguments: [ - o('CALL_START CALL_END', function() { - return []; - }), o('CALL_START ArgList OptComma CALL_END', function() { - return $2; - }) - ], - This: [ - o('THIS', function() { - return new Value(new Literal('this')); - }), o('@', function() { - return new Value(new Literal('this')); - }) - ], - ThisProperty: [ - o('@ Identifier', function() { - return new Value(new Literal('this'), [new Access($2)], 'this'); - }) - ], - Array: [ - o('[ ]', function() { - return new Arr([]); - }), o('[ ArgList OptComma ]', function() { - return new Arr($2); - }) - ], - RangeDots: [ - o('..', function() { - return 'inclusive'; - }), o('...', function() { - return 'exclusive'; - }) - ], - Range: [ - o('[ Expression RangeDots Expression ]', function() { - return new Range($2, $4, $3); - }) - ], - Slice: [ - o('Expression RangeDots Expression', function() { - return new Range($1, $3, $2); - }), o('Expression RangeDots', function() { - return new Range($1, null, $2); - }), o('RangeDots Expression', function() { - return new Range(null, $2, $1); - }), o('RangeDots', function() { - return new Range(null, null, $1); - }) - ], - ArgList: [ - o('Arg', function() { - return [$1]; - }), o('ArgList , Arg', function() { - return $1.concat($3); - }), o('ArgList OptComma TERMINATOR Arg', function() { - return $1.concat($4); - }), o('INDENT ArgList OptComma OUTDENT', function() { - return $2; - }), o('ArgList OptComma INDENT ArgList OptComma OUTDENT', function() { - return $1.concat($4); - }) - ], - Arg: [o('Expression'), o('Splat')], - SimpleArgs: [ - o('Expression'), o('SimpleArgs , Expression', function() { - return [].concat($1, $3); - }) - ], - Try: [ - o('TRY Block', function() { - return new Try($2); - }), o('TRY Block Catch', function() { - return new Try($2, $3[0], $3[1]); - }), o('TRY Block FINALLY Block', function() { - return new Try($2, null, null, $4); - }), o('TRY Block Catch FINALLY Block', function() { - return new Try($2, $3[0], $3[1], $5); - }) - ], - Catch: [ - o('CATCH Identifier Block', function() { - return [$2, $3]; - }) - ], - Throw: [ - o('THROW Expression', function() { - return new Throw($2); - }) - ], - Parenthetical: [ - o('( Body )', function() { - return new Parens($2); - }), o('( INDENT Body OUTDENT )', function() { - return new Parens($3); - }) - ], - WhileSource: [ - o('WHILE Expression', function() { - return new While($2); - }), o('WHILE Expression WHEN Expression', function() { - return new While($2, { - guard: $4 - }); - }), o('UNTIL Expression', function() { - return new While($2, { - invert: true - }); - }), o('UNTIL Expression WHEN Expression', function() { - return new While($2, { - invert: true, - guard: $4 - }); - }) - ], - While: [ - o('WhileSource Block', function() { - return $1.addBody($2); - }), o('Statement WhileSource', function() { - return $2.addBody(Block.wrap([$1])); - }), o('Expression WhileSource', function() { - return $2.addBody(Block.wrap([$1])); - }), o('Loop', function() { - return $1; - }) - ], - Loop: [ - o('LOOP Block', function() { - return new While(new Literal('true')).addBody($2); - }), o('LOOP Expression', function() { - return new While(new Literal('true')).addBody(Block.wrap([$2])); - }) - ], - For: [ - o('Statement ForBody', function() { - return new For($1, $2); - }), o('Expression ForBody', function() { - return new For($1, $2); - }), o('ForBody Block', function() { - return new For($2, $1); - }) - ], - ForBody: [ - o('FOR Range', function() { - return { - source: new Value($2) - }; - }), o('ForStart ForSource', function() { - $2.own = $1.own; - $2.name = $1[0]; - $2.index = $1[1]; - return $2; - }) - ], - ForStart: [ - o('FOR ForVariables', function() { - return $2; - }), o('FOR OWN ForVariables', function() { - $3.own = true; - return $3; - }) - ], - ForValue: [ - o('Identifier'), o('ThisProperty'), o('Array', function() { - return new Value($1); - }), o('Object', function() { - return new Value($1); - }) - ], - ForVariables: [ - o('ForValue', function() { - return [$1]; - }), o('ForValue , ForValue', function() { - return [$1, $3]; - }) - ], - ForSource: [ - o('FORIN Expression', function() { - return { - source: $2 - }; - }), o('FOROF Expression', function() { - return { - source: $2, - object: true - }; - }), o('FORIN Expression WHEN Expression', function() { - return { - source: $2, - guard: $4 - }; - }), o('FOROF Expression WHEN Expression', function() { - return { - source: $2, - guard: $4, - object: true - }; - }), o('FORIN Expression BY Expression', function() { - return { - source: $2, - step: $4 - }; - }), o('FORIN Expression WHEN Expression BY Expression', function() { - return { - source: $2, - guard: $4, - step: $6 - }; - }), o('FORIN Expression BY Expression WHEN Expression', function() { - return { - source: $2, - step: $4, - guard: $6 - }; - }) - ], - Switch: [ - o('SWITCH Expression INDENT Whens OUTDENT', function() { - return new Switch($2, $4); - }), o('SWITCH Expression INDENT Whens ELSE Block OUTDENT', function() { - return new Switch($2, $4, $6); - }), o('SWITCH INDENT Whens OUTDENT', function() { - return new Switch(null, $3); - }), o('SWITCH INDENT Whens ELSE Block OUTDENT', function() { - return new Switch(null, $3, $5); - }) - ], - Whens: [ - o('When'), o('Whens When', function() { - return $1.concat($2); - }) - ], - When: [ - o('LEADING_WHEN SimpleArgs Block', function() { - return [[$2, $3]]; - }), o('LEADING_WHEN SimpleArgs Block TERMINATOR', function() { - return [[$2, $3]]; - }) - ], - IfBlock: [ - o('IF Expression Block', function() { - return new If($2, $3, { - type: $1 - }); - }), o('IfBlock ELSE IF Expression Block', function() { - return $1.addElse(new If($4, $5, { - type: $3 - })); - }) - ], - If: [ - o('IfBlock'), o('IfBlock ELSE Block', function() { - return $1.addElse($3); - }), o('Statement POST_IF Expression', function() { - return new If($3, Block.wrap([$1]), { - type: $2, - statement: true - }); - }), o('Expression POST_IF Expression', function() { - return new If($3, Block.wrap([$1]), { - type: $2, - statement: true - }); - }) - ], - Operation: [ - o('UNARY Expression', function() { - return new Op($1, $2); - }), o('- Expression', (function() { - return new Op('-', $2); - }), { - prec: 'UNARY' - }), o('+ Expression', (function() { - return new Op('+', $2); - }), { - prec: 'UNARY' - }), o('-- SimpleAssignable', function() { - return new Op('--', $2); - }), o('++ SimpleAssignable', function() { - return new Op('++', $2); - }), o('SimpleAssignable --', function() { - return new Op('--', $1, null, true); - }), o('SimpleAssignable ++', function() { - return new Op('++', $1, null, true); - }), o('Expression ?', function() { - return new Existence($1); - }), o('Expression + Expression', function() { - return new Op('+', $1, $3); - }), o('Expression - Expression', function() { - return new Op('-', $1, $3); - }), o('Expression MATH Expression', function() { - return new Op($2, $1, $3); - }), o('Expression SHIFT Expression', function() { - return new Op($2, $1, $3); - }), o('Expression COMPARE Expression', function() { - return new Op($2, $1, $3); - }), o('Expression LOGIC Expression', function() { - return new Op($2, $1, $3); - }), o('Expression RELATION Expression', function() { - if ($2.charAt(0) === '!') { - return new Op($2.slice(1), $1, $3).invert(); - } else { - return new Op($2, $1, $3); - } - }), o('SimpleAssignable COMPOUND_ASSIGN\ - Expression', function() { - return new Assign($1, $3, $2); - }), o('SimpleAssignable COMPOUND_ASSIGN\ - INDENT Expression OUTDENT', function() { - return new Assign($1, $4, $2); - }), o('SimpleAssignable EXTENDS Expression', function() { - return new Extends($1, $3); - }) - ] - }; - - operators = [['left', '.', '?.', '::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['right', 'POST_IF']]; - - tokens = []; - - for (name in grammar) { - alternatives = grammar[name]; - grammar[name] = (function() { - var _i, _j, _len, _len1, _ref, _results; - _results = []; - for (_i = 0, _len = alternatives.length; _i < _len; _i++) { - alt = alternatives[_i]; - _ref = alt[0].split(' '); - for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { - token = _ref[_j]; - if (!grammar[token]) { - tokens.push(token); - } - } - if (name === 'Root') { - alt[1] = "return " + alt[1]; - } - _results.push(alt); - } - return _results; - })(); - } - - exports.parser = new Parser({ - tokens: tokens.join(' '), - bnf: grammar, - operators: operators.reverse(), - startSymbol: 'Root' - }); - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/helpers.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/helpers.js deleted file mode 100644 index b0a997b8d64..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/helpers.js +++ /dev/null @@ -1,77 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var extend, flatten; - - exports.starts = function(string, literal, start) { - return literal === string.substr(start, literal.length); - }; - - exports.ends = function(string, literal, back) { - var len; - len = literal.length; - return literal === string.substr(string.length - len - (back || 0), len); - }; - - exports.compact = function(array) { - var item, _i, _len, _results; - _results = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - item = array[_i]; - if (item) { - _results.push(item); - } - } - return _results; - }; - - exports.count = function(string, substr) { - var num, pos; - num = pos = 0; - if (!substr.length) { - return 1 / 0; - } - while (pos = 1 + string.indexOf(substr, pos)) { - num++; - } - return num; - }; - - exports.merge = function(options, overrides) { - return extend(extend({}, options), overrides); - }; - - extend = exports.extend = function(object, properties) { - var key, val; - for (key in properties) { - val = properties[key]; - object[key] = val; - } - return object; - }; - - exports.flatten = flatten = function(array) { - var element, flattened, _i, _len; - flattened = []; - for (_i = 0, _len = array.length; _i < _len; _i++) { - element = array[_i]; - if (element instanceof Array) { - flattened = flattened.concat(flatten(element)); - } else { - flattened.push(element); - } - } - return flattened; - }; - - exports.del = function(obj, key) { - var val; - val = obj[key]; - delete obj[key]; - return val; - }; - - exports.last = function(array, back) { - return array[array.length - (back || 0) - 1]; - }; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/index.js deleted file mode 100644 index d344c41a25b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/index.js +++ /dev/null @@ -1,11 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var key, val, _ref; - - _ref = require('./coffee-script'); - for (key in _ref) { - val = _ref[key]; - exports[key] = val; - } - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/lexer.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/lexer.js deleted file mode 100644 index f80a443373d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/lexer.js +++ /dev/null @@ -1,788 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HEREDOC, HEREDOC_ILLEGAL, HEREDOC_INDENT, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDEXABLE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTILINER, MULTI_DENT, NOT_REGEX, NOT_SPACED_REGEX, NUMBER, OPERATOR, REGEX, RELATION, RESERVED, Rewriter, SHIFT, SIMPLESTR, STRICT_PROSCRIBED, TRAILING_SPACES, UNARY, WHITESPACE, compact, count, key, last, starts, _ref, _ref1, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - - _ref = require('./rewriter'), Rewriter = _ref.Rewriter, INVERSES = _ref.INVERSES; - - _ref1 = require('./helpers'), count = _ref1.count, starts = _ref1.starts, compact = _ref1.compact, last = _ref1.last; - - exports.Lexer = Lexer = (function() { - - function Lexer() {} - - Lexer.prototype.tokenize = function(code, opts) { - var i, tag; - if (opts == null) { - opts = {}; - } - if (WHITESPACE.test(code)) { - code = "\n" + code; - } - code = code.replace(/\r/g, '').replace(TRAILING_SPACES, ''); - this.code = code; - this.line = opts.line || 0; - this.indent = 0; - this.indebt = 0; - this.outdebt = 0; - this.indents = []; - this.ends = []; - this.tokens = []; - i = 0; - while (this.chunk = code.slice(i)) { - i += this.identifierToken() || this.commentToken() || this.whitespaceToken() || this.lineToken() || this.heredocToken() || this.stringToken() || this.numberToken() || this.regexToken() || this.jsToken() || this.literalToken(); - } - this.closeIndentation(); - if (tag = this.ends.pop()) { - this.error("missing " + tag); - } - if (opts.rewrite === false) { - return this.tokens; - } - return (new Rewriter).rewrite(this.tokens); - }; - - Lexer.prototype.identifierToken = function() { - var colon, forcedIdentifier, id, input, match, prev, tag, _ref2, _ref3; - if (!(match = IDENTIFIER.exec(this.chunk))) { - return 0; - } - input = match[0], id = match[1], colon = match[2]; - if (id === 'own' && this.tag() === 'FOR') { - this.token('OWN', id); - return id.length; - } - forcedIdentifier = colon || (prev = last(this.tokens)) && (((_ref2 = prev[0]) === '.' || _ref2 === '?.' || _ref2 === '::') || !prev.spaced && prev[0] === '@'); - tag = 'IDENTIFIER'; - if (!forcedIdentifier && (__indexOf.call(JS_KEYWORDS, id) >= 0 || __indexOf.call(COFFEE_KEYWORDS, id) >= 0)) { - tag = id.toUpperCase(); - if (tag === 'WHEN' && (_ref3 = this.tag(), __indexOf.call(LINE_BREAK, _ref3) >= 0)) { - tag = 'LEADING_WHEN'; - } else if (tag === 'FOR') { - this.seenFor = true; - } else if (tag === 'UNLESS') { - tag = 'IF'; - } else if (__indexOf.call(UNARY, tag) >= 0) { - tag = 'UNARY'; - } else if (__indexOf.call(RELATION, tag) >= 0) { - if (tag !== 'INSTANCEOF' && this.seenFor) { - tag = 'FOR' + tag; - this.seenFor = false; - } else { - tag = 'RELATION'; - if (this.value() === '!') { - this.tokens.pop(); - id = '!' + id; - } - } - } - } - if (__indexOf.call(JS_FORBIDDEN, id) >= 0) { - if (forcedIdentifier) { - tag = 'IDENTIFIER'; - id = new String(id); - id.reserved = true; - } else if (__indexOf.call(RESERVED, id) >= 0) { - this.error("reserved word \"" + id + "\""); - } - } - if (!forcedIdentifier) { - if (__indexOf.call(COFFEE_ALIASES, id) >= 0) { - id = COFFEE_ALIAS_MAP[id]; - } - tag = (function() { - switch (id) { - case '!': - return 'UNARY'; - case '==': - case '!=': - return 'COMPARE'; - case '&&': - case '||': - return 'LOGIC'; - case 'true': - case 'false': - return 'BOOL'; - case 'break': - case 'continue': - return 'STATEMENT'; - default: - return tag; - } - })(); - } - this.token(tag, id); - if (colon) { - this.token(':', ':'); - } - return input.length; - }; - - Lexer.prototype.numberToken = function() { - var binaryLiteral, lexedLength, match, number, octalLiteral; - if (!(match = NUMBER.exec(this.chunk))) { - return 0; - } - number = match[0]; - if (/^0[BOX]/.test(number)) { - this.error("radix prefix '" + number + "' must be lowercase"); - } else if (/E/.test(number) && !/^0x/.test(number)) { - this.error("exponential notation '" + number + "' must be indicated with a lowercase 'e'"); - } else if (/^0\d*[89]/.test(number)) { - this.error("decimal literal '" + number + "' must not be prefixed with '0'"); - } else if (/^0\d+/.test(number)) { - this.error("octal literal '" + number + "' must be prefixed with '0o'"); - } - lexedLength = number.length; - if (octalLiteral = /^0o([0-7]+)/.exec(number)) { - number = '0x' + (parseInt(octalLiteral[1], 8)).toString(16); - } - if (binaryLiteral = /^0b([01]+)/.exec(number)) { - number = '0x' + (parseInt(binaryLiteral[1], 2)).toString(16); - } - this.token('NUMBER', number); - return lexedLength; - }; - - Lexer.prototype.stringToken = function() { - var match, octalEsc, string; - switch (this.chunk.charAt(0)) { - case "'": - if (!(match = SIMPLESTR.exec(this.chunk))) { - return 0; - } - this.token('STRING', (string = match[0]).replace(MULTILINER, '\\\n')); - break; - case '"': - if (!(string = this.balancedString(this.chunk, '"'))) { - return 0; - } - if (0 < string.indexOf('#{', 1)) { - this.interpolateString(string.slice(1, -1)); - } else { - this.token('STRING', this.escapeLines(string)); - } - break; - default: - return 0; - } - if (octalEsc = /^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(string)) { - this.error("octal escape sequences " + string + " are not allowed"); - } - this.line += count(string, '\n'); - return string.length; - }; - - Lexer.prototype.heredocToken = function() { - var doc, heredoc, match, quote; - if (!(match = HEREDOC.exec(this.chunk))) { - return 0; - } - heredoc = match[0]; - quote = heredoc.charAt(0); - doc = this.sanitizeHeredoc(match[2], { - quote: quote, - indent: null - }); - if (quote === '"' && 0 <= doc.indexOf('#{')) { - this.interpolateString(doc, { - heredoc: true - }); - } else { - this.token('STRING', this.makeString(doc, quote, true)); - } - this.line += count(heredoc, '\n'); - return heredoc.length; - }; - - Lexer.prototype.commentToken = function() { - var comment, here, match; - if (!(match = this.chunk.match(COMMENT))) { - return 0; - } - comment = match[0], here = match[1]; - if (here) { - this.token('HERECOMMENT', this.sanitizeHeredoc(here, { - herecomment: true, - indent: Array(this.indent + 1).join(' ') - })); - } - this.line += count(comment, '\n'); - return comment.length; - }; - - Lexer.prototype.jsToken = function() { - var match, script; - if (!(this.chunk.charAt(0) === '`' && (match = JSTOKEN.exec(this.chunk)))) { - return 0; - } - this.token('JS', (script = match[0]).slice(1, -1)); - return script.length; - }; - - Lexer.prototype.regexToken = function() { - var flags, length, match, prev, regex, _ref2, _ref3; - if (this.chunk.charAt(0) !== '/') { - return 0; - } - if (match = HEREGEX.exec(this.chunk)) { - length = this.heregexToken(match); - this.line += count(match[0], '\n'); - return length; - } - prev = last(this.tokens); - if (prev && (_ref2 = prev[0], __indexOf.call((prev.spaced ? NOT_REGEX : NOT_SPACED_REGEX), _ref2) >= 0)) { - return 0; - } - if (!(match = REGEX.exec(this.chunk))) { - return 0; - } - _ref3 = match, match = _ref3[0], regex = _ref3[1], flags = _ref3[2]; - if (regex.slice(0, 2) === '/*') { - this.error('regular expressions cannot begin with `*`'); - } - if (regex === '//') { - regex = '/(?:)/'; - } - this.token('REGEX', "" + regex + flags); - return match.length; - }; - - Lexer.prototype.heregexToken = function(match) { - var body, flags, heregex, re, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4, _ref5; - heregex = match[0], body = match[1], flags = match[2]; - if (0 > body.indexOf('#{')) { - re = body.replace(HEREGEX_OMIT, '').replace(/\//g, '\\/'); - if (re.match(/^\*/)) { - this.error('regular expressions cannot begin with `*`'); - } - this.token('REGEX', "/" + (re || '(?:)') + "/" + flags); - return heregex.length; - } - this.token('IDENTIFIER', 'RegExp'); - this.tokens.push(['CALL_START', '(']); - tokens = []; - _ref2 = this.interpolateString(body, { - regex: true - }); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - _ref3 = _ref2[_i], tag = _ref3[0], value = _ref3[1]; - if (tag === 'TOKENS') { - tokens.push.apply(tokens, value); - } else { - if (!(value = value.replace(HEREGEX_OMIT, ''))) { - continue; - } - value = value.replace(/\\/g, '\\\\'); - tokens.push(['STRING', this.makeString(value, '"', true)]); - } - tokens.push(['+', '+']); - } - tokens.pop(); - if (((_ref4 = tokens[0]) != null ? _ref4[0] : void 0) !== 'STRING') { - this.tokens.push(['STRING', '""'], ['+', '+']); - } - (_ref5 = this.tokens).push.apply(_ref5, tokens); - if (flags) { - this.tokens.push([',', ','], ['STRING', '"' + flags + '"']); - } - this.token(')', ')'); - return heregex.length; - }; - - Lexer.prototype.lineToken = function() { - var diff, indent, match, noNewlines, prev, size; - if (!(match = MULTI_DENT.exec(this.chunk))) { - return 0; - } - indent = match[0]; - this.line += count(indent, '\n'); - this.seenFor = false; - prev = last(this.tokens, 1); - size = indent.length - 1 - indent.lastIndexOf('\n'); - noNewlines = this.unfinished(); - if (size - this.indebt === this.indent) { - if (noNewlines) { - this.suppressNewlines(); - } else { - this.newlineToken(); - } - return indent.length; - } - if (size > this.indent) { - if (noNewlines) { - this.indebt = size - this.indent; - this.suppressNewlines(); - return indent.length; - } - diff = size - this.indent + this.outdebt; - this.token('INDENT', diff); - this.indents.push(diff); - this.ends.push('OUTDENT'); - this.outdebt = this.indebt = 0; - } else { - this.indebt = 0; - this.outdentToken(this.indent - size, noNewlines); - } - this.indent = size; - return indent.length; - }; - - Lexer.prototype.outdentToken = function(moveOut, noNewlines) { - var dent, len; - while (moveOut > 0) { - len = this.indents.length - 1; - if (this.indents[len] === void 0) { - moveOut = 0; - } else if (this.indents[len] === this.outdebt) { - moveOut -= this.outdebt; - this.outdebt = 0; - } else if (this.indents[len] < this.outdebt) { - this.outdebt -= this.indents[len]; - moveOut -= this.indents[len]; - } else { - dent = this.indents.pop() - this.outdebt; - moveOut -= dent; - this.outdebt = 0; - this.pair('OUTDENT'); - this.token('OUTDENT', dent); - } - } - if (dent) { - this.outdebt -= moveOut; - } - while (this.value() === ';') { - this.tokens.pop(); - } - if (!(this.tag() === 'TERMINATOR' || noNewlines)) { - this.token('TERMINATOR', '\n'); - } - return this; - }; - - Lexer.prototype.whitespaceToken = function() { - var match, nline, prev; - if (!((match = WHITESPACE.exec(this.chunk)) || (nline = this.chunk.charAt(0) === '\n'))) { - return 0; - } - prev = last(this.tokens); - if (prev) { - prev[match ? 'spaced' : 'newLine'] = true; - } - if (match) { - return match[0].length; - } else { - return 0; - } - }; - - Lexer.prototype.newlineToken = function() { - while (this.value() === ';') { - this.tokens.pop(); - } - if (this.tag() !== 'TERMINATOR') { - this.token('TERMINATOR', '\n'); - } - return this; - }; - - Lexer.prototype.suppressNewlines = function() { - if (this.value() === '\\') { - this.tokens.pop(); - } - return this; - }; - - Lexer.prototype.literalToken = function() { - var match, prev, tag, value, _ref2, _ref3, _ref4, _ref5; - if (match = OPERATOR.exec(this.chunk)) { - value = match[0]; - if (CODE.test(value)) { - this.tagParameters(); - } - } else { - value = this.chunk.charAt(0); - } - tag = value; - prev = last(this.tokens); - if (value === '=' && prev) { - if (!prev[1].reserved && (_ref2 = prev[1], __indexOf.call(JS_FORBIDDEN, _ref2) >= 0)) { - this.error("reserved word \"" + (this.value()) + "\" can't be assigned"); - } - if ((_ref3 = prev[1]) === '||' || _ref3 === '&&') { - prev[0] = 'COMPOUND_ASSIGN'; - prev[1] += '='; - return value.length; - } - } - if (value === ';') { - this.seenFor = false; - tag = 'TERMINATOR'; - } else if (__indexOf.call(MATH, value) >= 0) { - tag = 'MATH'; - } else if (__indexOf.call(COMPARE, value) >= 0) { - tag = 'COMPARE'; - } else if (__indexOf.call(COMPOUND_ASSIGN, value) >= 0) { - tag = 'COMPOUND_ASSIGN'; - } else if (__indexOf.call(UNARY, value) >= 0) { - tag = 'UNARY'; - } else if (__indexOf.call(SHIFT, value) >= 0) { - tag = 'SHIFT'; - } else if (__indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) { - tag = 'LOGIC'; - } else if (prev && !prev.spaced) { - if (value === '(' && (_ref4 = prev[0], __indexOf.call(CALLABLE, _ref4) >= 0)) { - if (prev[0] === '?') { - prev[0] = 'FUNC_EXIST'; - } - tag = 'CALL_START'; - } else if (value === '[' && (_ref5 = prev[0], __indexOf.call(INDEXABLE, _ref5) >= 0)) { - tag = 'INDEX_START'; - switch (prev[0]) { - case '?': - prev[0] = 'INDEX_SOAK'; - } - } - } - switch (value) { - case '(': - case '{': - case '[': - this.ends.push(INVERSES[value]); - break; - case ')': - case '}': - case ']': - this.pair(value); - } - this.token(tag, value); - return value.length; - }; - - Lexer.prototype.sanitizeHeredoc = function(doc, options) { - var attempt, herecomment, indent, match, _ref2; - indent = options.indent, herecomment = options.herecomment; - if (herecomment) { - if (HEREDOC_ILLEGAL.test(doc)) { - this.error("block comment cannot contain \"*/\", starting"); - } - if (doc.indexOf('\n') <= 0) { - return doc; - } - } else { - while (match = HEREDOC_INDENT.exec(doc)) { - attempt = match[1]; - if (indent === null || (0 < (_ref2 = attempt.length) && _ref2 < indent.length)) { - indent = attempt; - } - } - } - if (indent) { - doc = doc.replace(RegExp("\\n" + indent, "g"), '\n'); - } - if (!herecomment) { - doc = doc.replace(/^\n/, ''); - } - return doc; - }; - - Lexer.prototype.tagParameters = function() { - var i, stack, tok, tokens; - if (this.tag() !== ')') { - return this; - } - stack = []; - tokens = this.tokens; - i = tokens.length; - tokens[--i][0] = 'PARAM_END'; - while (tok = tokens[--i]) { - switch (tok[0]) { - case ')': - stack.push(tok); - break; - case '(': - case 'CALL_START': - if (stack.length) { - stack.pop(); - } else if (tok[0] === '(') { - tok[0] = 'PARAM_START'; - return this; - } else { - return this; - } - } - } - return this; - }; - - Lexer.prototype.closeIndentation = function() { - return this.outdentToken(this.indent); - }; - - Lexer.prototype.balancedString = function(str, end) { - var continueCount, i, letter, match, prev, stack, _i, _ref2; - continueCount = 0; - stack = [end]; - for (i = _i = 1, _ref2 = str.length; 1 <= _ref2 ? _i < _ref2 : _i > _ref2; i = 1 <= _ref2 ? ++_i : --_i) { - if (continueCount) { - --continueCount; - continue; - } - switch (letter = str.charAt(i)) { - case '\\': - ++continueCount; - continue; - case end: - stack.pop(); - if (!stack.length) { - return str.slice(0, i + 1 || 9e9); - } - end = stack[stack.length - 1]; - continue; - } - if (end === '}' && (letter === '"' || letter === "'")) { - stack.push(end = letter); - } else if (end === '}' && letter === '/' && (match = HEREGEX.exec(str.slice(i)) || REGEX.exec(str.slice(i)))) { - continueCount += match[0].length - 1; - } else if (end === '}' && letter === '{') { - stack.push(end = '}'); - } else if (end === '"' && prev === '#' && letter === '{') { - stack.push(end = '}'); - } - prev = letter; - } - return this.error("missing " + (stack.pop()) + ", starting"); - }; - - Lexer.prototype.interpolateString = function(str, options) { - var expr, heredoc, i, inner, interpolated, len, letter, nested, pi, regex, tag, tokens, value, _i, _len, _ref2, _ref3, _ref4; - if (options == null) { - options = {}; - } - heredoc = options.heredoc, regex = options.regex; - tokens = []; - pi = 0; - i = -1; - while (letter = str.charAt(i += 1)) { - if (letter === '\\') { - i += 1; - continue; - } - if (!(letter === '#' && str.charAt(i + 1) === '{' && (expr = this.balancedString(str.slice(i + 1), '}')))) { - continue; - } - if (pi < i) { - tokens.push(['NEOSTRING', str.slice(pi, i)]); - } - inner = expr.slice(1, -1); - if (inner.length) { - nested = new Lexer().tokenize(inner, { - line: this.line, - rewrite: false - }); - nested.pop(); - if (((_ref2 = nested[0]) != null ? _ref2[0] : void 0) === 'TERMINATOR') { - nested.shift(); - } - if (len = nested.length) { - if (len > 1) { - nested.unshift(['(', '(', this.line]); - nested.push([')', ')', this.line]); - } - tokens.push(['TOKENS', nested]); - } - } - i += expr.length; - pi = i + 1; - } - if ((i > pi && pi < str.length)) { - tokens.push(['NEOSTRING', str.slice(pi)]); - } - if (regex) { - return tokens; - } - if (!tokens.length) { - return this.token('STRING', '""'); - } - if (tokens[0][0] !== 'NEOSTRING') { - tokens.unshift(['', '']); - } - if (interpolated = tokens.length > 1) { - this.token('(', '('); - } - for (i = _i = 0, _len = tokens.length; _i < _len; i = ++_i) { - _ref3 = tokens[i], tag = _ref3[0], value = _ref3[1]; - if (i) { - this.token('+', '+'); - } - if (tag === 'TOKENS') { - (_ref4 = this.tokens).push.apply(_ref4, value); - } else { - this.token('STRING', this.makeString(value, '"', heredoc)); - } - } - if (interpolated) { - this.token(')', ')'); - } - return tokens; - }; - - Lexer.prototype.pair = function(tag) { - var size, wanted; - if (tag !== (wanted = last(this.ends))) { - if ('OUTDENT' !== wanted) { - this.error("unmatched " + tag); - } - this.indent -= size = last(this.indents); - this.outdentToken(size, true); - return this.pair(tag); - } - return this.ends.pop(); - }; - - Lexer.prototype.token = function(tag, value) { - return this.tokens.push([tag, value, this.line]); - }; - - Lexer.prototype.tag = function(index, tag) { - var tok; - return (tok = last(this.tokens, index)) && (tag ? tok[0] = tag : tok[0]); - }; - - Lexer.prototype.value = function(index, val) { - var tok; - return (tok = last(this.tokens, index)) && (val ? tok[1] = val : tok[1]); - }; - - Lexer.prototype.unfinished = function() { - var _ref2; - return LINE_CONTINUER.test(this.chunk) || ((_ref2 = this.tag()) === '\\' || _ref2 === '.' || _ref2 === '?.' || _ref2 === 'UNARY' || _ref2 === 'MATH' || _ref2 === '+' || _ref2 === '-' || _ref2 === 'SHIFT' || _ref2 === 'RELATION' || _ref2 === 'COMPARE' || _ref2 === 'LOGIC' || _ref2 === 'THROW' || _ref2 === 'EXTENDS'); - }; - - Lexer.prototype.escapeLines = function(str, heredoc) { - return str.replace(MULTILINER, heredoc ? '\\n' : ''); - }; - - Lexer.prototype.makeString = function(body, quote, heredoc) { - if (!body) { - return quote + quote; - } - body = body.replace(/\\([\s\S])/g, function(match, contents) { - if (contents === '\n' || contents === quote) { - return contents; - } else { - return match; - } - }); - body = body.replace(RegExp("" + quote, "g"), '\\$&'); - return quote + this.escapeLines(body, heredoc) + quote; - }; - - Lexer.prototype.error = function(message) { - throw SyntaxError("" + message + " on line " + (this.line + 1)); - }; - - return Lexer; - - })(); - - JS_KEYWORDS = ['true', 'false', 'null', 'this', 'new', 'delete', 'typeof', 'in', 'instanceof', 'return', 'throw', 'break', 'continue', 'debugger', 'if', 'else', 'switch', 'for', 'while', 'do', 'try', 'catch', 'finally', 'class', 'extends', 'super']; - - COFFEE_KEYWORDS = ['undefined', 'then', 'unless', 'until', 'loop', 'of', 'by', 'when']; - - COFFEE_ALIAS_MAP = { - and: '&&', - or: '||', - is: '==', - isnt: '!=', - not: '!', - yes: 'true', - no: 'false', - on: 'true', - off: 'false' - }; - - COFFEE_ALIASES = (function() { - var _results; - _results = []; - for (key in COFFEE_ALIAS_MAP) { - _results.push(key); - } - return _results; - })(); - - COFFEE_KEYWORDS = COFFEE_KEYWORDS.concat(COFFEE_ALIASES); - - RESERVED = ['case', 'default', 'function', 'var', 'void', 'with', 'const', 'let', 'enum', 'export', 'import', 'native', '__hasProp', '__extends', '__slice', '__bind', '__indexOf', 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', 'yield']; - - STRICT_PROSCRIBED = ['arguments', 'eval']; - - JS_FORBIDDEN = JS_KEYWORDS.concat(RESERVED).concat(STRICT_PROSCRIBED); - - exports.RESERVED = RESERVED.concat(JS_KEYWORDS).concat(COFFEE_KEYWORDS).concat(STRICT_PROSCRIBED); - - exports.STRICT_PROSCRIBED = STRICT_PROSCRIBED; - - IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/; - - NUMBER = /^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i; - - HEREDOC = /^("""|''')([\s\S]*?)(?:\n[^\n\S]*)?\1/; - - OPERATOR = /^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})/; - - WHITESPACE = /^[^\n\S]+/; - - COMMENT = /^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)?$)|^(?:\s*#(?!##[^#]).*)+/; - - CODE = /^[-=]>/; - - MULTI_DENT = /^(?:\n[^\n\S]*)+/; - - SIMPLESTR = /^'[^\\']*(?:\\.[^\\']*)*'/; - - JSTOKEN = /^`[^\\`]*(?:\\.[^\\`]*)*`/; - - REGEX = /^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/; - - HEREGEX = /^\/{3}([\s\S]+?)\/{3}([imgy]{0,4})(?!\w)/; - - HEREGEX_OMIT = /\s+(?:#.*)?/g; - - MULTILINER = /\n/g; - - HEREDOC_INDENT = /\n+([^\n\S]*)/g; - - HEREDOC_ILLEGAL = /\*\//; - - LINE_CONTINUER = /^\s*(?:,|\??\.(?![.\d])|::)/; - - TRAILING_SPACES = /\s+$/; - - COMPOUND_ASSIGN = ['-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=']; - - UNARY = ['!', '~', 'NEW', 'TYPEOF', 'DELETE', 'DO']; - - LOGIC = ['&&', '||', '&', '|', '^']; - - SHIFT = ['<<', '>>', '>>>']; - - COMPARE = ['==', '!=', '<', '>', '<=', '>=']; - - MATH = ['*', '/', '%']; - - RELATION = ['IN', 'OF', 'INSTANCEOF']; - - BOOL = ['TRUE', 'FALSE']; - - NOT_REGEX = ['NUMBER', 'REGEX', 'BOOL', 'NULL', 'UNDEFINED', '++', '--', ']']; - - NOT_SPACED_REGEX = NOT_REGEX.concat(')', '}', 'THIS', 'IDENTIFIER', 'STRING'); - - CALLABLE = ['IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER']; - - INDEXABLE = CALLABLE.concat('NUMBER', 'BOOL', 'NULL', 'UNDEFINED'); - - LINE_BREAK = ['INDENT', 'OUTDENT', 'TERMINATOR']; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/nodes.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/nodes.js deleted file mode 100644 index 799b68eb474..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/nodes.js +++ /dev/null @@ -1,2986 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var Access, Arr, Assign, Base, Block, Call, Class, Closure, Code, Comment, Existence, Extends, For, IDENTIFIER, IDENTIFIER_STR, IS_STRING, If, In, Index, LEVEL_ACCESS, LEVEL_COND, LEVEL_LIST, LEVEL_OP, LEVEL_PAREN, LEVEL_TOP, Literal, METHOD_DEF, NEGATE, NO, Obj, Op, Param, Parens, RESERVED, Range, Return, SIMPLENUM, STRICT_PROSCRIBED, Scope, Slice, Splat, Switch, TAB, THIS, Throw, Try, UTILITIES, Value, While, YES, compact, del, ends, extend, flatten, last, merge, multident, starts, unfoldSoak, utility, _ref, _ref1, - __hasProp = {}.hasOwnProperty, - __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; - - Scope = require('./scope').Scope; - - _ref = require('./lexer'), RESERVED = _ref.RESERVED, STRICT_PROSCRIBED = _ref.STRICT_PROSCRIBED; - - _ref1 = require('./helpers'), compact = _ref1.compact, flatten = _ref1.flatten, extend = _ref1.extend, merge = _ref1.merge, del = _ref1.del, starts = _ref1.starts, ends = _ref1.ends, last = _ref1.last; - - exports.extend = extend; - - YES = function() { - return true; - }; - - NO = function() { - return false; - }; - - THIS = function() { - return this; - }; - - NEGATE = function() { - this.negated = !this.negated; - return this; - }; - - exports.Base = Base = (function() { - - function Base() {} - - Base.prototype.compile = function(o, lvl) { - var node; - o = extend({}, o); - if (lvl) { - o.level = lvl; - } - node = this.unfoldSoak(o) || this; - node.tab = o.indent; - if (o.level === LEVEL_TOP || !node.isStatement(o)) { - return node.compileNode(o); - } else { - return node.compileClosure(o); - } - }; - - Base.prototype.compileClosure = function(o) { - if (this.jumps()) { - throw SyntaxError('cannot use a pure statement in an expression.'); - } - o.sharedScope = true; - return Closure.wrap(this).compileNode(o); - }; - - Base.prototype.cache = function(o, level, reused) { - var ref, sub; - if (!this.isComplex()) { - ref = level ? this.compile(o, level) : this; - return [ref, ref]; - } else { - ref = new Literal(reused || o.scope.freeVariable('ref')); - sub = new Assign(ref, this); - if (level) { - return [sub.compile(o, level), ref.value]; - } else { - return [sub, ref]; - } - } - }; - - Base.prototype.compileLoopReference = function(o, name) { - var src, tmp; - src = tmp = this.compile(o, LEVEL_LIST); - if (!((-Infinity < +src && +src < Infinity) || IDENTIFIER.test(src) && o.scope.check(src, true))) { - src = "" + (tmp = o.scope.freeVariable(name)) + " = " + src; - } - return [src, tmp]; - }; - - Base.prototype.makeReturn = function(res) { - var me; - me = this.unwrapAll(); - if (res) { - return new Call(new Literal("" + res + ".push"), [me]); - } else { - return new Return(me); - } - }; - - Base.prototype.contains = function(pred) { - var contains; - contains = false; - this.traverseChildren(false, function(node) { - if (pred(node)) { - contains = true; - return false; - } - }); - return contains; - }; - - Base.prototype.containsType = function(type) { - return this instanceof type || this.contains(function(node) { - return node instanceof type; - }); - }; - - Base.prototype.lastNonComment = function(list) { - var i; - i = list.length; - while (i--) { - if (!(list[i] instanceof Comment)) { - return list[i]; - } - } - return null; - }; - - Base.prototype.toString = function(idt, name) { - var tree; - if (idt == null) { - idt = ''; - } - if (name == null) { - name = this.constructor.name; - } - tree = '\n' + idt + name; - if (this.soak) { - tree += '?'; - } - this.eachChild(function(node) { - return tree += node.toString(idt + TAB); - }); - return tree; - }; - - Base.prototype.eachChild = function(func) { - var attr, child, _i, _j, _len, _len1, _ref2, _ref3; - if (!this.children) { - return this; - } - _ref2 = this.children; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - attr = _ref2[_i]; - if (this[attr]) { - _ref3 = flatten([this[attr]]); - for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { - child = _ref3[_j]; - if (func(child) === false) { - return this; - } - } - } - } - return this; - }; - - Base.prototype.traverseChildren = function(crossScope, func) { - return this.eachChild(function(child) { - if (func(child) === false) { - return false; - } - return child.traverseChildren(crossScope, func); - }); - }; - - Base.prototype.invert = function() { - return new Op('!', this); - }; - - Base.prototype.unwrapAll = function() { - var node; - node = this; - while (node !== (node = node.unwrap())) { - continue; - } - return node; - }; - - Base.prototype.children = []; - - Base.prototype.isStatement = NO; - - Base.prototype.jumps = NO; - - Base.prototype.isComplex = YES; - - Base.prototype.isChainable = NO; - - Base.prototype.isAssignable = NO; - - Base.prototype.unwrap = THIS; - - Base.prototype.unfoldSoak = NO; - - Base.prototype.assigns = NO; - - return Base; - - })(); - - exports.Block = Block = (function(_super) { - - __extends(Block, _super); - - function Block(nodes) { - this.expressions = compact(flatten(nodes || [])); - } - - Block.prototype.children = ['expressions']; - - Block.prototype.push = function(node) { - this.expressions.push(node); - return this; - }; - - Block.prototype.pop = function() { - return this.expressions.pop(); - }; - - Block.prototype.unshift = function(node) { - this.expressions.unshift(node); - return this; - }; - - Block.prototype.unwrap = function() { - if (this.expressions.length === 1) { - return this.expressions[0]; - } else { - return this; - } - }; - - Block.prototype.isEmpty = function() { - return !this.expressions.length; - }; - - Block.prototype.isStatement = function(o) { - var exp, _i, _len, _ref2; - _ref2 = this.expressions; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - exp = _ref2[_i]; - if (exp.isStatement(o)) { - return true; - } - } - return false; - }; - - Block.prototype.jumps = function(o) { - var exp, _i, _len, _ref2; - _ref2 = this.expressions; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - exp = _ref2[_i]; - if (exp.jumps(o)) { - return exp; - } - } - }; - - Block.prototype.makeReturn = function(res) { - var expr, len; - len = this.expressions.length; - while (len--) { - expr = this.expressions[len]; - if (!(expr instanceof Comment)) { - this.expressions[len] = expr.makeReturn(res); - if (expr instanceof Return && !expr.expression) { - this.expressions.splice(len, 1); - } - break; - } - } - return this; - }; - - Block.prototype.compile = function(o, level) { - if (o == null) { - o = {}; - } - if (o.scope) { - return Block.__super__.compile.call(this, o, level); - } else { - return this.compileRoot(o); - } - }; - - Block.prototype.compileNode = function(o) { - var code, codes, node, top, _i, _len, _ref2; - this.tab = o.indent; - top = o.level === LEVEL_TOP; - codes = []; - _ref2 = this.expressions; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - node = _ref2[_i]; - node = node.unwrapAll(); - node = node.unfoldSoak(o) || node; - if (node instanceof Block) { - codes.push(node.compileNode(o)); - } else if (top) { - node.front = true; - code = node.compile(o); - if (!node.isStatement(o)) { - code = "" + this.tab + code + ";"; - if (node instanceof Literal) { - code = "" + code + "\n"; - } - } - codes.push(code); - } else { - codes.push(node.compile(o, LEVEL_LIST)); - } - } - if (top) { - if (this.spaced) { - return "\n" + (codes.join('\n\n')) + "\n"; - } else { - return codes.join('\n'); - } - } - code = codes.join(', ') || 'void 0'; - if (codes.length > 1 && o.level >= LEVEL_LIST) { - return "(" + code + ")"; - } else { - return code; - } - }; - - Block.prototype.compileRoot = function(o) { - var code, exp, i, prelude, preludeExps, rest; - o.indent = o.bare ? '' : TAB; - o.scope = new Scope(null, this, null); - o.level = LEVEL_TOP; - this.spaced = true; - prelude = ""; - if (!o.bare) { - preludeExps = (function() { - var _i, _len, _ref2, _results; - _ref2 = this.expressions; - _results = []; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - exp = _ref2[i]; - if (!(exp.unwrap() instanceof Comment)) { - break; - } - _results.push(exp); - } - return _results; - }).call(this); - rest = this.expressions.slice(preludeExps.length); - this.expressions = preludeExps; - if (preludeExps.length) { - prelude = "" + (this.compileNode(merge(o, { - indent: '' - }))) + "\n"; - } - this.expressions = rest; - } - code = this.compileWithDeclarations(o); - if (o.bare) { - return code; - } - return "" + prelude + "(function() {\n" + code + "\n}).call(this);\n"; - }; - - Block.prototype.compileWithDeclarations = function(o) { - var assigns, code, declars, exp, i, post, rest, scope, spaced, _i, _len, _ref2, _ref3, _ref4; - code = post = ''; - _ref2 = this.expressions; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - exp = _ref2[i]; - exp = exp.unwrap(); - if (!(exp instanceof Comment || exp instanceof Literal)) { - break; - } - } - o = merge(o, { - level: LEVEL_TOP - }); - if (i) { - rest = this.expressions.splice(i, 9e9); - _ref3 = [this.spaced, false], spaced = _ref3[0], this.spaced = _ref3[1]; - _ref4 = [this.compileNode(o), spaced], code = _ref4[0], this.spaced = _ref4[1]; - this.expressions = rest; - } - post = this.compileNode(o); - scope = o.scope; - if (scope.expressions === this) { - declars = o.scope.hasDeclarations(); - assigns = scope.hasAssignments; - if (declars || assigns) { - if (i) { - code += '\n'; - } - code += "" + this.tab + "var "; - if (declars) { - code += scope.declaredVariables().join(', '); - } - if (assigns) { - if (declars) { - code += ",\n" + (this.tab + TAB); - } - code += scope.assignedVariables().join(",\n" + (this.tab + TAB)); - } - code += ';\n'; - } - } - return code + post; - }; - - Block.wrap = function(nodes) { - if (nodes.length === 1 && nodes[0] instanceof Block) { - return nodes[0]; - } - return new Block(nodes); - }; - - return Block; - - })(Base); - - exports.Literal = Literal = (function(_super) { - - __extends(Literal, _super); - - function Literal(value) { - this.value = value; - } - - Literal.prototype.makeReturn = function() { - if (this.isStatement()) { - return this; - } else { - return Literal.__super__.makeReturn.apply(this, arguments); - } - }; - - Literal.prototype.isAssignable = function() { - return IDENTIFIER.test(this.value); - }; - - Literal.prototype.isStatement = function() { - var _ref2; - return (_ref2 = this.value) === 'break' || _ref2 === 'continue' || _ref2 === 'debugger'; - }; - - Literal.prototype.isComplex = NO; - - Literal.prototype.assigns = function(name) { - return name === this.value; - }; - - Literal.prototype.jumps = function(o) { - if (this.value === 'break' && !((o != null ? o.loop : void 0) || (o != null ? o.block : void 0))) { - return this; - } - if (this.value === 'continue' && !(o != null ? o.loop : void 0)) { - return this; - } - }; - - Literal.prototype.compileNode = function(o) { - var code, _ref2; - code = this.value === 'this' ? ((_ref2 = o.scope.method) != null ? _ref2.bound : void 0) ? o.scope.method.context : this.value : this.value.reserved ? "\"" + this.value + "\"" : this.value; - if (this.isStatement()) { - return "" + this.tab + code + ";"; - } else { - return code; - } - }; - - Literal.prototype.toString = function() { - return ' "' + this.value + '"'; - }; - - return Literal; - - })(Base); - - exports.Undefined = (function(_super) { - - __extends(Undefined, _super); - - function Undefined() { - return Undefined.__super__.constructor.apply(this, arguments); - } - - Undefined.prototype.isAssignable = NO; - - Undefined.prototype.isComplex = NO; - - Undefined.prototype.compileNode = function(o) { - if (o.level >= LEVEL_ACCESS) { - return '(void 0)'; - } else { - return 'void 0'; - } - }; - - return Undefined; - - })(Base); - - exports.Null = (function(_super) { - - __extends(Null, _super); - - function Null() { - return Null.__super__.constructor.apply(this, arguments); - } - - Null.prototype.isAssignable = NO; - - Null.prototype.isComplex = NO; - - Null.prototype.compileNode = function() { - return "null"; - }; - - return Null; - - })(Base); - - exports.Bool = (function(_super) { - - __extends(Bool, _super); - - Bool.prototype.isAssignable = NO; - - Bool.prototype.isComplex = NO; - - Bool.prototype.compileNode = function() { - return this.val; - }; - - function Bool(val) { - this.val = val; - } - - return Bool; - - })(Base); - - exports.Return = Return = (function(_super) { - - __extends(Return, _super); - - function Return(expr) { - if (expr && !expr.unwrap().isUndefined) { - this.expression = expr; - } - } - - Return.prototype.children = ['expression']; - - Return.prototype.isStatement = YES; - - Return.prototype.makeReturn = THIS; - - Return.prototype.jumps = THIS; - - Return.prototype.compile = function(o, level) { - var expr, _ref2; - expr = (_ref2 = this.expression) != null ? _ref2.makeReturn() : void 0; - if (expr && !(expr instanceof Return)) { - return expr.compile(o, level); - } else { - return Return.__super__.compile.call(this, o, level); - } - }; - - Return.prototype.compileNode = function(o) { - return this.tab + ("return" + [this.expression ? " " + (this.expression.compile(o, LEVEL_PAREN)) : void 0] + ";"); - }; - - return Return; - - })(Base); - - exports.Value = Value = (function(_super) { - - __extends(Value, _super); - - function Value(base, props, tag) { - if (!props && base instanceof Value) { - return base; - } - this.base = base; - this.properties = props || []; - if (tag) { - this[tag] = true; - } - return this; - } - - Value.prototype.children = ['base', 'properties']; - - Value.prototype.add = function(props) { - this.properties = this.properties.concat(props); - return this; - }; - - Value.prototype.hasProperties = function() { - return !!this.properties.length; - }; - - Value.prototype.isArray = function() { - return !this.properties.length && this.base instanceof Arr; - }; - - Value.prototype.isComplex = function() { - return this.hasProperties() || this.base.isComplex(); - }; - - Value.prototype.isAssignable = function() { - return this.hasProperties() || this.base.isAssignable(); - }; - - Value.prototype.isSimpleNumber = function() { - return this.base instanceof Literal && SIMPLENUM.test(this.base.value); - }; - - Value.prototype.isString = function() { - return this.base instanceof Literal && IS_STRING.test(this.base.value); - }; - - Value.prototype.isAtomic = function() { - var node, _i, _len, _ref2; - _ref2 = this.properties.concat(this.base); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - node = _ref2[_i]; - if (node.soak || node instanceof Call) { - return false; - } - } - return true; - }; - - Value.prototype.isStatement = function(o) { - return !this.properties.length && this.base.isStatement(o); - }; - - Value.prototype.assigns = function(name) { - return !this.properties.length && this.base.assigns(name); - }; - - Value.prototype.jumps = function(o) { - return !this.properties.length && this.base.jumps(o); - }; - - Value.prototype.isObject = function(onlyGenerated) { - if (this.properties.length) { - return false; - } - return (this.base instanceof Obj) && (!onlyGenerated || this.base.generated); - }; - - Value.prototype.isSplice = function() { - return last(this.properties) instanceof Slice; - }; - - Value.prototype.unwrap = function() { - if (this.properties.length) { - return this; - } else { - return this.base; - } - }; - - Value.prototype.cacheReference = function(o) { - var base, bref, name, nref; - name = last(this.properties); - if (this.properties.length < 2 && !this.base.isComplex() && !(name != null ? name.isComplex() : void 0)) { - return [this, this]; - } - base = new Value(this.base, this.properties.slice(0, -1)); - if (base.isComplex()) { - bref = new Literal(o.scope.freeVariable('base')); - base = new Value(new Parens(new Assign(bref, base))); - } - if (!name) { - return [base, bref]; - } - if (name.isComplex()) { - nref = new Literal(o.scope.freeVariable('name')); - name = new Index(new Assign(nref, name.index)); - nref = new Index(nref); - } - return [base.add(name), new Value(bref || base.base, [nref || name])]; - }; - - Value.prototype.compileNode = function(o) { - var code, prop, props, _i, _len; - this.base.front = this.front; - props = this.properties; - code = this.base.compile(o, props.length ? LEVEL_ACCESS : null); - if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(code)) { - code = "" + code + "."; - } - for (_i = 0, _len = props.length; _i < _len; _i++) { - prop = props[_i]; - code += prop.compile(o); - } - return code; - }; - - Value.prototype.unfoldSoak = function(o) { - var result, - _this = this; - if (this.unfoldedSoak != null) { - return this.unfoldedSoak; - } - result = (function() { - var fst, i, ifn, prop, ref, snd, _i, _len, _ref2; - if (ifn = _this.base.unfoldSoak(o)) { - Array.prototype.push.apply(ifn.body.properties, _this.properties); - return ifn; - } - _ref2 = _this.properties; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - prop = _ref2[i]; - if (!prop.soak) { - continue; - } - prop.soak = false; - fst = new Value(_this.base, _this.properties.slice(0, i)); - snd = new Value(_this.base, _this.properties.slice(i)); - if (fst.isComplex()) { - ref = new Literal(o.scope.freeVariable('ref')); - fst = new Parens(new Assign(ref, fst)); - snd.base = ref; - } - return new If(new Existence(fst), snd, { - soak: true - }); - } - return null; - })(); - return this.unfoldedSoak = result || false; - }; - - return Value; - - })(Base); - - exports.Comment = Comment = (function(_super) { - - __extends(Comment, _super); - - function Comment(comment) { - this.comment = comment; - } - - Comment.prototype.isStatement = YES; - - Comment.prototype.makeReturn = THIS; - - Comment.prototype.compileNode = function(o, level) { - var code; - code = '/*' + multident(this.comment, this.tab) + ("\n" + this.tab + "*/\n"); - if ((level || o.level) === LEVEL_TOP) { - code = o.indent + code; - } - return code; - }; - - return Comment; - - })(Base); - - exports.Call = Call = (function(_super) { - - __extends(Call, _super); - - function Call(variable, args, soak) { - this.args = args != null ? args : []; - this.soak = soak; - this.isNew = false; - this.isSuper = variable === 'super'; - this.variable = this.isSuper ? null : variable; - } - - Call.prototype.children = ['variable', 'args']; - - Call.prototype.newInstance = function() { - var base, _ref2; - base = ((_ref2 = this.variable) != null ? _ref2.base : void 0) || this.variable; - if (base instanceof Call && !base.isNew) { - base.newInstance(); - } else { - this.isNew = true; - } - return this; - }; - - Call.prototype.superReference = function(o) { - var accesses, method, name; - method = o.scope.namedMethod(); - if (!method) { - throw SyntaxError('cannot call super outside of a function.'); - } - name = method.name; - if (name == null) { - throw SyntaxError('cannot call super on an anonymous function.'); - } - if (method.klass) { - accesses = [new Access(new Literal('__super__'))]; - if (method["static"]) { - accesses.push(new Access(new Literal('constructor'))); - } - accesses.push(new Access(new Literal(name))); - return (new Value(new Literal(method.klass), accesses)).compile(o); - } else { - return "" + name + ".__super__.constructor"; - } - }; - - Call.prototype.superThis = function(o) { - var method; - method = o.scope.method; - return (method && !method.klass && method.context) || "this"; - }; - - Call.prototype.unfoldSoak = function(o) { - var call, ifn, left, list, rite, _i, _len, _ref2, _ref3; - if (this.soak) { - if (this.variable) { - if (ifn = unfoldSoak(o, this, 'variable')) { - return ifn; - } - _ref2 = new Value(this.variable).cacheReference(o), left = _ref2[0], rite = _ref2[1]; - } else { - left = new Literal(this.superReference(o)); - rite = new Value(left); - } - rite = new Call(rite, this.args); - rite.isNew = this.isNew; - left = new Literal("typeof " + (left.compile(o)) + " === \"function\""); - return new If(left, new Value(rite), { - soak: true - }); - } - call = this; - list = []; - while (true) { - if (call.variable instanceof Call) { - list.push(call); - call = call.variable; - continue; - } - if (!(call.variable instanceof Value)) { - break; - } - list.push(call); - if (!((call = call.variable.base) instanceof Call)) { - break; - } - } - _ref3 = list.reverse(); - for (_i = 0, _len = _ref3.length; _i < _len; _i++) { - call = _ref3[_i]; - if (ifn) { - if (call.variable instanceof Call) { - call.variable = ifn; - } else { - call.variable.base = ifn; - } - } - ifn = unfoldSoak(o, call, 'variable'); - } - return ifn; - }; - - Call.prototype.filterImplicitObjects = function(list) { - var node, nodes, obj, prop, properties, _i, _j, _len, _len1, _ref2; - nodes = []; - for (_i = 0, _len = list.length; _i < _len; _i++) { - node = list[_i]; - if (!((typeof node.isObject === "function" ? node.isObject() : void 0) && node.base.generated)) { - nodes.push(node); - continue; - } - obj = null; - _ref2 = node.base.properties; - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - prop = _ref2[_j]; - if (prop instanceof Assign || prop instanceof Comment) { - if (!obj) { - nodes.push(obj = new Obj(properties = [], true)); - } - properties.push(prop); - } else { - nodes.push(prop); - obj = null; - } - } - } - return nodes; - }; - - Call.prototype.compileNode = function(o) { - var arg, args, code, _ref2; - if ((_ref2 = this.variable) != null) { - _ref2.front = this.front; - } - if (code = Splat.compileSplattedArray(o, this.args, true)) { - return this.compileSplat(o, code); - } - args = this.filterImplicitObjects(this.args); - args = ((function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = args.length; _i < _len; _i++) { - arg = args[_i]; - _results.push(arg.compile(o, LEVEL_LIST)); - } - return _results; - })()).join(', '); - if (this.isSuper) { - return this.superReference(o) + (".call(" + (this.superThis(o)) + (args && ', ' + args) + ")"); - } else { - return (this.isNew ? 'new ' : '') + this.variable.compile(o, LEVEL_ACCESS) + ("(" + args + ")"); - } - }; - - Call.prototype.compileSuper = function(args, o) { - return "" + (this.superReference(o)) + ".call(" + (this.superThis(o)) + (args.length ? ', ' : '') + args + ")"; - }; - - Call.prototype.compileSplat = function(o, splatArgs) { - var base, fun, idt, name, ref; - if (this.isSuper) { - return "" + (this.superReference(o)) + ".apply(" + (this.superThis(o)) + ", " + splatArgs + ")"; - } - if (this.isNew) { - idt = this.tab + TAB; - return "(function(func, args, ctor) {\n" + idt + "ctor.prototype = func.prototype;\n" + idt + "var child = new ctor, result = func.apply(child, args), t = typeof result;\n" + idt + "return t == \"object\" || t == \"function\" ? result || child : child;\n" + this.tab + "})(" + (this.variable.compile(o, LEVEL_LIST)) + ", " + splatArgs + ", function(){})"; - } - base = new Value(this.variable); - if ((name = base.properties.pop()) && base.isComplex()) { - ref = o.scope.freeVariable('ref'); - fun = "(" + ref + " = " + (base.compile(o, LEVEL_LIST)) + ")" + (name.compile(o)); - } else { - fun = base.compile(o, LEVEL_ACCESS); - if (SIMPLENUM.test(fun)) { - fun = "(" + fun + ")"; - } - if (name) { - ref = fun; - fun += name.compile(o); - } else { - ref = 'null'; - } - } - return "" + fun + ".apply(" + ref + ", " + splatArgs + ")"; - }; - - return Call; - - })(Base); - - exports.Extends = Extends = (function(_super) { - - __extends(Extends, _super); - - function Extends(child, parent) { - this.child = child; - this.parent = parent; - } - - Extends.prototype.children = ['child', 'parent']; - - Extends.prototype.compile = function(o) { - return new Call(new Value(new Literal(utility('extends'))), [this.child, this.parent]).compile(o); - }; - - return Extends; - - })(Base); - - exports.Access = Access = (function(_super) { - - __extends(Access, _super); - - function Access(name, tag) { - this.name = name; - this.name.asKey = true; - this.soak = tag === 'soak'; - } - - Access.prototype.children = ['name']; - - Access.prototype.compile = function(o) { - var name; - name = this.name.compile(o); - if (IDENTIFIER.test(name)) { - return "." + name; - } else { - return "[" + name + "]"; - } - }; - - Access.prototype.isComplex = NO; - - return Access; - - })(Base); - - exports.Index = Index = (function(_super) { - - __extends(Index, _super); - - function Index(index) { - this.index = index; - } - - Index.prototype.children = ['index']; - - Index.prototype.compile = function(o) { - return "[" + (this.index.compile(o, LEVEL_PAREN)) + "]"; - }; - - Index.prototype.isComplex = function() { - return this.index.isComplex(); - }; - - return Index; - - })(Base); - - exports.Range = Range = (function(_super) { - - __extends(Range, _super); - - Range.prototype.children = ['from', 'to']; - - function Range(from, to, tag) { - this.from = from; - this.to = to; - this.exclusive = tag === 'exclusive'; - this.equals = this.exclusive ? '' : '='; - } - - Range.prototype.compileVariables = function(o) { - var step, _ref2, _ref3, _ref4, _ref5; - o = merge(o, { - top: true - }); - _ref2 = this.from.cache(o, LEVEL_LIST), this.fromC = _ref2[0], this.fromVar = _ref2[1]; - _ref3 = this.to.cache(o, LEVEL_LIST), this.toC = _ref3[0], this.toVar = _ref3[1]; - if (step = del(o, 'step')) { - _ref4 = step.cache(o, LEVEL_LIST), this.step = _ref4[0], this.stepVar = _ref4[1]; - } - _ref5 = [this.fromVar.match(SIMPLENUM), this.toVar.match(SIMPLENUM)], this.fromNum = _ref5[0], this.toNum = _ref5[1]; - if (this.stepVar) { - return this.stepNum = this.stepVar.match(SIMPLENUM); - } - }; - - Range.prototype.compileNode = function(o) { - var cond, condPart, from, gt, idx, idxName, known, lt, namedIndex, stepPart, to, varPart, _ref2, _ref3; - if (!this.fromVar) { - this.compileVariables(o); - } - if (!o.index) { - return this.compileArray(o); - } - known = this.fromNum && this.toNum; - idx = del(o, 'index'); - idxName = del(o, 'name'); - namedIndex = idxName && idxName !== idx; - varPart = "" + idx + " = " + this.fromC; - if (this.toC !== this.toVar) { - varPart += ", " + this.toC; - } - if (this.step !== this.stepVar) { - varPart += ", " + this.step; - } - _ref2 = ["" + idx + " <" + this.equals, "" + idx + " >" + this.equals], lt = _ref2[0], gt = _ref2[1]; - condPart = this.stepNum ? +this.stepNum > 0 ? "" + lt + " " + this.toVar : "" + gt + " " + this.toVar : known ? ((_ref3 = [+this.fromNum, +this.toNum], from = _ref3[0], to = _ref3[1], _ref3), from <= to ? "" + lt + " " + to : "" + gt + " " + to) : (cond = "" + this.fromVar + " <= " + this.toVar, "" + cond + " ? " + lt + " " + this.toVar + " : " + gt + " " + this.toVar); - stepPart = this.stepVar ? "" + idx + " += " + this.stepVar : known ? namedIndex ? from <= to ? "++" + idx : "--" + idx : from <= to ? "" + idx + "++" : "" + idx + "--" : namedIndex ? "" + cond + " ? ++" + idx + " : --" + idx : "" + cond + " ? " + idx + "++ : " + idx + "--"; - if (namedIndex) { - varPart = "" + idxName + " = " + varPart; - } - if (namedIndex) { - stepPart = "" + idxName + " = " + stepPart; - } - return "" + varPart + "; " + condPart + "; " + stepPart; - }; - - Range.prototype.compileArray = function(o) { - var args, body, cond, hasArgs, i, idt, post, pre, range, result, vars, _i, _ref2, _ref3, _results; - if (this.fromNum && this.toNum && Math.abs(this.fromNum - this.toNum) <= 20) { - range = (function() { - _results = []; - for (var _i = _ref2 = +this.fromNum, _ref3 = +this.toNum; _ref2 <= _ref3 ? _i <= _ref3 : _i >= _ref3; _ref2 <= _ref3 ? _i++ : _i--){ _results.push(_i); } - return _results; - }).apply(this); - if (this.exclusive) { - range.pop(); - } - return "[" + (range.join(', ')) + "]"; - } - idt = this.tab + TAB; - i = o.scope.freeVariable('i'); - result = o.scope.freeVariable('results'); - pre = "\n" + idt + result + " = [];"; - if (this.fromNum && this.toNum) { - o.index = i; - body = this.compileNode(o); - } else { - vars = ("" + i + " = " + this.fromC) + (this.toC !== this.toVar ? ", " + this.toC : ''); - cond = "" + this.fromVar + " <= " + this.toVar; - body = "var " + vars + "; " + cond + " ? " + i + " <" + this.equals + " " + this.toVar + " : " + i + " >" + this.equals + " " + this.toVar + "; " + cond + " ? " + i + "++ : " + i + "--"; - } - post = "{ " + result + ".push(" + i + "); }\n" + idt + "return " + result + ";\n" + o.indent; - hasArgs = function(node) { - return node != null ? node.contains(function(n) { - return n instanceof Literal && n.value === 'arguments' && !n.asKey; - }) : void 0; - }; - if (hasArgs(this.from) || hasArgs(this.to)) { - args = ', arguments'; - } - return "(function() {" + pre + "\n" + idt + "for (" + body + ")" + post + "}).apply(this" + (args != null ? args : '') + ")"; - }; - - return Range; - - })(Base); - - exports.Slice = Slice = (function(_super) { - - __extends(Slice, _super); - - Slice.prototype.children = ['range']; - - function Slice(range) { - this.range = range; - Slice.__super__.constructor.call(this); - } - - Slice.prototype.compileNode = function(o) { - var compiled, from, fromStr, to, toStr, _ref2; - _ref2 = this.range, to = _ref2.to, from = _ref2.from; - fromStr = from && from.compile(o, LEVEL_PAREN) || '0'; - compiled = to && to.compile(o, LEVEL_PAREN); - if (to && !(!this.range.exclusive && +compiled === -1)) { - toStr = ', ' + (this.range.exclusive ? compiled : SIMPLENUM.test(compiled) ? "" + (+compiled + 1) : (compiled = to.compile(o, LEVEL_ACCESS), "" + compiled + " + 1 || 9e9")); - } - return ".slice(" + fromStr + (toStr || '') + ")"; - }; - - return Slice; - - })(Base); - - exports.Obj = Obj = (function(_super) { - - __extends(Obj, _super); - - function Obj(props, generated) { - this.generated = generated != null ? generated : false; - this.objects = this.properties = props || []; - } - - Obj.prototype.children = ['properties']; - - Obj.prototype.compileNode = function(o) { - var i, idt, indent, join, lastNoncom, node, obj, prop, propName, propNames, props, _i, _j, _len, _len1, _ref2; - props = this.properties; - propNames = []; - _ref2 = this.properties; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - prop = _ref2[_i]; - if (prop.isComplex()) { - prop = prop.variable; - } - if (prop != null) { - propName = prop.unwrapAll().value.toString(); - if (__indexOf.call(propNames, propName) >= 0) { - throw SyntaxError("multiple object literal properties named \"" + propName + "\""); - } - propNames.push(propName); - } - } - if (!props.length) { - return (this.front ? '({})' : '{}'); - } - if (this.generated) { - for (_j = 0, _len1 = props.length; _j < _len1; _j++) { - node = props[_j]; - if (node instanceof Value) { - throw new Error('cannot have an implicit value in an implicit object'); - } - } - } - idt = o.indent += TAB; - lastNoncom = this.lastNonComment(this.properties); - props = (function() { - var _k, _len2, _results; - _results = []; - for (i = _k = 0, _len2 = props.length; _k < _len2; i = ++_k) { - prop = props[i]; - join = i === props.length - 1 ? '' : prop === lastNoncom || prop instanceof Comment ? '\n' : ',\n'; - indent = prop instanceof Comment ? '' : idt; - if (prop instanceof Value && prop["this"]) { - prop = new Assign(prop.properties[0].name, prop, 'object'); - } - if (!(prop instanceof Comment)) { - if (!(prop instanceof Assign)) { - prop = new Assign(prop, prop, 'object'); - } - (prop.variable.base || prop.variable).asKey = true; - } - _results.push(indent + prop.compile(o, LEVEL_TOP) + join); - } - return _results; - })(); - props = props.join(''); - obj = "{" + (props && '\n' + props + '\n' + this.tab) + "}"; - if (this.front) { - return "(" + obj + ")"; - } else { - return obj; - } - }; - - Obj.prototype.assigns = function(name) { - var prop, _i, _len, _ref2; - _ref2 = this.properties; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - prop = _ref2[_i]; - if (prop.assigns(name)) { - return true; - } - } - return false; - }; - - return Obj; - - })(Base); - - exports.Arr = Arr = (function(_super) { - - __extends(Arr, _super); - - function Arr(objs) { - this.objects = objs || []; - } - - Arr.prototype.children = ['objects']; - - Arr.prototype.filterImplicitObjects = Call.prototype.filterImplicitObjects; - - Arr.prototype.compileNode = function(o) { - var code, obj, objs; - if (!this.objects.length) { - return '[]'; - } - o.indent += TAB; - objs = this.filterImplicitObjects(this.objects); - if (code = Splat.compileSplattedArray(o, objs)) { - return code; - } - code = ((function() { - var _i, _len, _results; - _results = []; - for (_i = 0, _len = objs.length; _i < _len; _i++) { - obj = objs[_i]; - _results.push(obj.compile(o, LEVEL_LIST)); - } - return _results; - })()).join(', '); - if (code.indexOf('\n') >= 0) { - return "[\n" + o.indent + code + "\n" + this.tab + "]"; - } else { - return "[" + code + "]"; - } - }; - - Arr.prototype.assigns = function(name) { - var obj, _i, _len, _ref2; - _ref2 = this.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (obj.assigns(name)) { - return true; - } - } - return false; - }; - - return Arr; - - })(Base); - - exports.Class = Class = (function(_super) { - - __extends(Class, _super); - - function Class(variable, parent, body) { - this.variable = variable; - this.parent = parent; - this.body = body != null ? body : new Block; - this.boundFuncs = []; - this.body.classBody = true; - } - - Class.prototype.children = ['variable', 'parent', 'body']; - - Class.prototype.determineName = function() { - var decl, tail; - if (!this.variable) { - return null; - } - decl = (tail = last(this.variable.properties)) ? tail instanceof Access && tail.name.value : this.variable.base.value; - if (__indexOf.call(STRICT_PROSCRIBED, decl) >= 0) { - throw SyntaxError("variable name may not be " + decl); - } - return decl && (decl = IDENTIFIER.test(decl) && decl); - }; - - Class.prototype.setContext = function(name) { - return this.body.traverseChildren(false, function(node) { - if (node.classBody) { - return false; - } - if (node instanceof Literal && node.value === 'this') { - return node.value = name; - } else if (node instanceof Code) { - node.klass = name; - if (node.bound) { - return node.context = name; - } - } - }); - }; - - Class.prototype.addBoundFunctions = function(o) { - var bvar, lhs, _i, _len, _ref2, _results; - if (this.boundFuncs.length) { - _ref2 = this.boundFuncs; - _results = []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - bvar = _ref2[_i]; - lhs = (new Value(new Literal("this"), [new Access(bvar)])).compile(o); - _results.push(this.ctor.body.unshift(new Literal("" + lhs + " = " + (utility('bind')) + "(" + lhs + ", this)"))); - } - return _results; - } - }; - - Class.prototype.addProperties = function(node, name, o) { - var assign, base, exprs, func, props; - props = node.base.properties.slice(0); - exprs = (function() { - var _results; - _results = []; - while (assign = props.shift()) { - if (assign instanceof Assign) { - base = assign.variable.base; - delete assign.context; - func = assign.value; - if (base.value === 'constructor') { - if (this.ctor) { - throw new Error('cannot define more than one constructor in a class'); - } - if (func.bound) { - throw new Error('cannot define a constructor as a bound function'); - } - if (func instanceof Code) { - assign = this.ctor = func; - } else { - this.externalCtor = o.scope.freeVariable('class'); - assign = new Assign(new Literal(this.externalCtor), func); - } - } else { - if (assign.variable["this"]) { - func["static"] = true; - if (func.bound) { - func.context = name; - } - } else { - assign.variable = new Value(new Literal(name), [new Access(new Literal('prototype')), new Access(base)]); - if (func instanceof Code && func.bound) { - this.boundFuncs.push(base); - func.bound = false; - } - } - } - } - _results.push(assign); - } - return _results; - }).call(this); - return compact(exprs); - }; - - Class.prototype.walkBody = function(name, o) { - var _this = this; - return this.traverseChildren(false, function(child) { - var exps, i, node, _i, _len, _ref2; - if (child instanceof Class) { - return false; - } - if (child instanceof Block) { - _ref2 = exps = child.expressions; - for (i = _i = 0, _len = _ref2.length; _i < _len; i = ++_i) { - node = _ref2[i]; - if (node instanceof Value && node.isObject(true)) { - exps[i] = _this.addProperties(node, name, o); - } - } - return child.expressions = exps = flatten(exps); - } - }); - }; - - Class.prototype.hoistDirectivePrologue = function() { - var expressions, index, node; - index = 0; - expressions = this.body.expressions; - while ((node = expressions[index]) && node instanceof Comment || node instanceof Value && node.isString()) { - ++index; - } - return this.directives = expressions.splice(0, index); - }; - - Class.prototype.ensureConstructor = function(name) { - if (!this.ctor) { - this.ctor = new Code; - if (this.parent) { - this.ctor.body.push(new Literal("" + name + ".__super__.constructor.apply(this, arguments)")); - } - if (this.externalCtor) { - this.ctor.body.push(new Literal("" + this.externalCtor + ".apply(this, arguments)")); - } - this.ctor.body.makeReturn(); - this.body.expressions.unshift(this.ctor); - } - this.ctor.ctor = this.ctor.name = name; - this.ctor.klass = null; - return this.ctor.noReturn = true; - }; - - Class.prototype.compileNode = function(o) { - var call, decl, klass, lname, name, params, _ref2; - decl = this.determineName(); - name = decl || '_Class'; - if (name.reserved) { - name = "_" + name; - } - lname = new Literal(name); - this.hoistDirectivePrologue(); - this.setContext(name); - this.walkBody(name, o); - this.ensureConstructor(name); - this.body.spaced = true; - if (!(this.ctor instanceof Code)) { - this.body.expressions.unshift(this.ctor); - } - this.body.expressions.push(lname); - (_ref2 = this.body.expressions).unshift.apply(_ref2, this.directives); - this.addBoundFunctions(o); - call = Closure.wrap(this.body); - if (this.parent) { - this.superClass = new Literal(o.scope.freeVariable('super', false)); - this.body.expressions.unshift(new Extends(lname, this.superClass)); - call.args.push(this.parent); - params = call.variable.params || call.variable.base.params; - params.push(new Param(this.superClass)); - } - klass = new Parens(call, true); - if (this.variable) { - klass = new Assign(this.variable, klass); - } - return klass.compile(o); - }; - - return Class; - - })(Base); - - exports.Assign = Assign = (function(_super) { - - __extends(Assign, _super); - - function Assign(variable, value, context, options) { - var forbidden, name, _ref2; - this.variable = variable; - this.value = value; - this.context = context; - this.param = options && options.param; - this.subpattern = options && options.subpattern; - forbidden = (_ref2 = (name = this.variable.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0); - if (forbidden && this.context !== 'object') { - throw SyntaxError("variable name may not be \"" + name + "\""); - } - } - - Assign.prototype.children = ['variable', 'value']; - - Assign.prototype.isStatement = function(o) { - return (o != null ? o.level : void 0) === LEVEL_TOP && (this.context != null) && __indexOf.call(this.context, "?") >= 0; - }; - - Assign.prototype.assigns = function(name) { - return this[this.context === 'object' ? 'value' : 'variable'].assigns(name); - }; - - Assign.prototype.unfoldSoak = function(o) { - return unfoldSoak(o, this, 'variable'); - }; - - Assign.prototype.compileNode = function(o) { - var isValue, match, name, val, varBase, _ref2, _ref3, _ref4, _ref5; - if (isValue = this.variable instanceof Value) { - if (this.variable.isArray() || this.variable.isObject()) { - return this.compilePatternMatch(o); - } - if (this.variable.isSplice()) { - return this.compileSplice(o); - } - if ((_ref2 = this.context) === '||=' || _ref2 === '&&=' || _ref2 === '?=') { - return this.compileConditional(o); - } - } - name = this.variable.compile(o, LEVEL_LIST); - if (!this.context) { - if (!(varBase = this.variable.unwrapAll()).isAssignable()) { - throw SyntaxError("\"" + (this.variable.compile(o)) + "\" cannot be assigned."); - } - if (!(typeof varBase.hasProperties === "function" ? varBase.hasProperties() : void 0)) { - if (this.param) { - o.scope.add(name, 'var'); - } else { - o.scope.find(name); - } - } - } - if (this.value instanceof Code && (match = METHOD_DEF.exec(name))) { - if (match[1]) { - this.value.klass = match[1]; - } - this.value.name = (_ref3 = (_ref4 = (_ref5 = match[2]) != null ? _ref5 : match[3]) != null ? _ref4 : match[4]) != null ? _ref3 : match[5]; - } - val = this.value.compile(o, LEVEL_LIST); - if (this.context === 'object') { - return "" + name + ": " + val; - } - val = name + (" " + (this.context || '=') + " ") + val; - if (o.level <= LEVEL_LIST) { - return val; - } else { - return "(" + val + ")"; - } - }; - - Assign.prototype.compilePatternMatch = function(o) { - var acc, assigns, code, i, idx, isObject, ivar, name, obj, objects, olen, ref, rest, splat, top, val, value, vvar, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8; - top = o.level === LEVEL_TOP; - value = this.value; - objects = this.variable.base.objects; - if (!(olen = objects.length)) { - code = value.compile(o); - if (o.level >= LEVEL_OP) { - return "(" + code + ")"; - } else { - return code; - } - } - isObject = this.variable.isObject(); - if (top && olen === 1 && !((obj = objects[0]) instanceof Splat)) { - if (obj instanceof Assign) { - _ref2 = obj, (_ref3 = _ref2.variable, idx = _ref3.base), obj = _ref2.value; - } else { - if (obj.base instanceof Parens) { - _ref4 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref4[0], idx = _ref4[1]; - } else { - idx = isObject ? obj["this"] ? obj.properties[0].name : obj : new Literal(0); - } - } - acc = IDENTIFIER.test(idx.unwrap().value || 0); - value = new Value(value); - value.properties.push(new (acc ? Access : Index)(idx)); - if (_ref5 = obj.unwrap().value, __indexOf.call(RESERVED, _ref5) >= 0) { - throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (value.compile(o))); - } - return new Assign(obj, value, null, { - param: this.param - }).compile(o, LEVEL_TOP); - } - vvar = value.compile(o, LEVEL_LIST); - assigns = []; - splat = false; - if (!IDENTIFIER.test(vvar) || this.variable.assigns(vvar)) { - assigns.push("" + (ref = o.scope.freeVariable('ref')) + " = " + vvar); - vvar = ref; - } - for (i = _i = 0, _len = objects.length; _i < _len; i = ++_i) { - obj = objects[i]; - idx = i; - if (isObject) { - if (obj instanceof Assign) { - _ref6 = obj, (_ref7 = _ref6.variable, idx = _ref7.base), obj = _ref6.value; - } else { - if (obj.base instanceof Parens) { - _ref8 = new Value(obj.unwrapAll()).cacheReference(o), obj = _ref8[0], idx = _ref8[1]; - } else { - idx = obj["this"] ? obj.properties[0].name : obj; - } - } - } - if (!splat && obj instanceof Splat) { - name = obj.name.unwrap().value; - obj = obj.unwrap(); - val = "" + olen + " <= " + vvar + ".length ? " + (utility('slice')) + ".call(" + vvar + ", " + i; - if (rest = olen - i - 1) { - ivar = o.scope.freeVariable('i'); - val += ", " + ivar + " = " + vvar + ".length - " + rest + ") : (" + ivar + " = " + i + ", [])"; - } else { - val += ") : []"; - } - val = new Literal(val); - splat = "" + ivar + "++"; - } else { - name = obj.unwrap().value; - if (obj instanceof Splat) { - obj = obj.name.compile(o); - throw new SyntaxError("multiple splats are disallowed in an assignment: " + obj + "..."); - } - if (typeof idx === 'number') { - idx = new Literal(splat || idx); - acc = false; - } else { - acc = isObject && IDENTIFIER.test(idx.unwrap().value || 0); - } - val = new Value(new Literal(vvar), [new (acc ? Access : Index)(idx)]); - } - if ((name != null) && __indexOf.call(RESERVED, name) >= 0) { - throw new SyntaxError("assignment to a reserved word: " + (obj.compile(o)) + " = " + (val.compile(o))); - } - assigns.push(new Assign(obj, val, null, { - param: this.param, - subpattern: true - }).compile(o, LEVEL_LIST)); - } - if (!(top || this.subpattern)) { - assigns.push(vvar); - } - code = assigns.join(', '); - if (o.level < LEVEL_LIST) { - return code; - } else { - return "(" + code + ")"; - } - }; - - Assign.prototype.compileConditional = function(o) { - var left, right, _ref2; - _ref2 = this.variable.cacheReference(o), left = _ref2[0], right = _ref2[1]; - if (!left.properties.length && left.base instanceof Literal && left.base.value !== "this" && !o.scope.check(left.base.value)) { - throw new Error("the variable \"" + left.base.value + "\" can't be assigned with " + this.context + " because it has not been defined."); - } - if (__indexOf.call(this.context, "?") >= 0) { - o.isExistentialEquals = true; - } - return new Op(this.context.slice(0, -1), left, new Assign(right, this.value, '=')).compile(o); - }; - - Assign.prototype.compileSplice = function(o) { - var code, exclusive, from, fromDecl, fromRef, name, to, valDef, valRef, _ref2, _ref3, _ref4; - _ref2 = this.variable.properties.pop().range, from = _ref2.from, to = _ref2.to, exclusive = _ref2.exclusive; - name = this.variable.compile(o); - _ref3 = (from != null ? from.cache(o, LEVEL_OP) : void 0) || ['0', '0'], fromDecl = _ref3[0], fromRef = _ref3[1]; - if (to) { - if ((from != null ? from.isSimpleNumber() : void 0) && to.isSimpleNumber()) { - to = +to.compile(o) - +fromRef; - if (!exclusive) { - to += 1; - } - } else { - to = to.compile(o, LEVEL_ACCESS) + ' - ' + fromRef; - if (!exclusive) { - to += ' + 1'; - } - } - } else { - to = "9e9"; - } - _ref4 = this.value.cache(o, LEVEL_LIST), valDef = _ref4[0], valRef = _ref4[1]; - code = "[].splice.apply(" + name + ", [" + fromDecl + ", " + to + "].concat(" + valDef + ")), " + valRef; - if (o.level > LEVEL_TOP) { - return "(" + code + ")"; - } else { - return code; - } - }; - - return Assign; - - })(Base); - - exports.Code = Code = (function(_super) { - - __extends(Code, _super); - - function Code(params, body, tag) { - this.params = params || []; - this.body = body || new Block; - this.bound = tag === 'boundfunc'; - if (this.bound) { - this.context = '_this'; - } - } - - Code.prototype.children = ['params', 'body']; - - Code.prototype.isStatement = function() { - return !!this.ctor; - }; - - Code.prototype.jumps = NO; - - Code.prototype.compileNode = function(o) { - var code, exprs, i, idt, lit, name, p, param, params, ref, splats, uniqs, val, wasEmpty, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _m, _n, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8; - o.scope = new Scope(o.scope, this.body, this); - o.scope.shared = del(o, 'sharedScope'); - o.indent += TAB; - delete o.bare; - delete o.isExistentialEquals; - params = []; - exprs = []; - _ref2 = this.paramNames(); - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - name = _ref2[_i]; - if (!o.scope.check(name)) { - o.scope.parameter(name); - } - } - _ref3 = this.params; - for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { - param = _ref3[_j]; - if (!param.splat) { - continue; - } - _ref4 = this.params; - for (_k = 0, _len2 = _ref4.length; _k < _len2; _k++) { - p = _ref4[_k].name; - if (p["this"]) { - p = p.properties[0].name; - } - if (p.value) { - o.scope.add(p.value, 'var', true); - } - } - splats = new Assign(new Value(new Arr((function() { - var _l, _len3, _ref5, _results; - _ref5 = this.params; - _results = []; - for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) { - p = _ref5[_l]; - _results.push(p.asReference(o)); - } - return _results; - }).call(this))), new Value(new Literal('arguments'))); - break; - } - _ref5 = this.params; - for (_l = 0, _len3 = _ref5.length; _l < _len3; _l++) { - param = _ref5[_l]; - if (param.isComplex()) { - val = ref = param.asReference(o); - if (param.value) { - val = new Op('?', ref, param.value); - } - exprs.push(new Assign(new Value(param.name), val, '=', { - param: true - })); - } else { - ref = param; - if (param.value) { - lit = new Literal(ref.name.value + ' == null'); - val = new Assign(new Value(param.name), param.value, '='); - exprs.push(new If(lit, val)); - } - } - if (!splats) { - params.push(ref); - } - } - wasEmpty = this.body.isEmpty(); - if (splats) { - exprs.unshift(splats); - } - if (exprs.length) { - (_ref6 = this.body.expressions).unshift.apply(_ref6, exprs); - } - for (i = _m = 0, _len4 = params.length; _m < _len4; i = ++_m) { - p = params[i]; - o.scope.parameter(params[i] = p.compile(o)); - } - uniqs = []; - _ref7 = this.paramNames(); - for (_n = 0, _len5 = _ref7.length; _n < _len5; _n++) { - name = _ref7[_n]; - if (__indexOf.call(uniqs, name) >= 0) { - throw SyntaxError("multiple parameters named '" + name + "'"); - } - uniqs.push(name); - } - if (!(wasEmpty || this.noReturn)) { - this.body.makeReturn(); - } - if (this.bound) { - if ((_ref8 = o.scope.parent.method) != null ? _ref8.bound : void 0) { - this.bound = this.context = o.scope.parent.method.context; - } else if (!this["static"]) { - o.scope.parent.assign('_this', 'this'); - } - } - idt = o.indent; - code = 'function'; - if (this.ctor) { - code += ' ' + this.name; - } - code += '(' + params.join(', ') + ') {'; - if (!this.body.isEmpty()) { - code += "\n" + (this.body.compileWithDeclarations(o)) + "\n" + this.tab; - } - code += '}'; - if (this.ctor) { - return this.tab + code; - } - if (this.front || (o.level >= LEVEL_ACCESS)) { - return "(" + code + ")"; - } else { - return code; - } - }; - - Code.prototype.paramNames = function() { - var names, param, _i, _len, _ref2; - names = []; - _ref2 = this.params; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - param = _ref2[_i]; - names.push.apply(names, param.names()); - } - return names; - }; - - Code.prototype.traverseChildren = function(crossScope, func) { - if (crossScope) { - return Code.__super__.traverseChildren.call(this, crossScope, func); - } - }; - - return Code; - - })(Base); - - exports.Param = Param = (function(_super) { - - __extends(Param, _super); - - function Param(name, value, splat) { - var _ref2; - this.name = name; - this.value = value; - this.splat = splat; - if (_ref2 = (name = this.name.unwrapAll().value), __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) { - throw SyntaxError("parameter name \"" + name + "\" is not allowed"); - } - } - - Param.prototype.children = ['name', 'value']; - - Param.prototype.compile = function(o) { - return this.name.compile(o, LEVEL_LIST); - }; - - Param.prototype.asReference = function(o) { - var node; - if (this.reference) { - return this.reference; - } - node = this.name; - if (node["this"]) { - node = node.properties[0].name; - if (node.value.reserved) { - node = new Literal(o.scope.freeVariable(node.value)); - } - } else if (node.isComplex()) { - node = new Literal(o.scope.freeVariable('arg')); - } - node = new Value(node); - if (this.splat) { - node = new Splat(node); - } - return this.reference = node; - }; - - Param.prototype.isComplex = function() { - return this.name.isComplex(); - }; - - Param.prototype.names = function(name) { - var atParam, names, obj, _i, _len, _ref2; - if (name == null) { - name = this.name; - } - atParam = function(obj) { - var value; - value = obj.properties[0].name.value; - if (value.reserved) { - return []; - } else { - return [value]; - } - }; - if (name instanceof Literal) { - return [name.value]; - } - if (name instanceof Value) { - return atParam(name); - } - names = []; - _ref2 = name.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (obj instanceof Assign) { - names.push(obj.value.unwrap().value); - } else if (obj instanceof Splat) { - names.push(obj.name.unwrap().value); - } else if (obj instanceof Value) { - if (obj.isArray() || obj.isObject()) { - names.push.apply(names, this.names(obj.base)); - } else if (obj["this"]) { - names.push.apply(names, atParam(obj)); - } else { - names.push(obj.base.value); - } - } else { - throw SyntaxError("illegal parameter " + (obj.compile())); - } - } - return names; - }; - - return Param; - - })(Base); - - exports.Splat = Splat = (function(_super) { - - __extends(Splat, _super); - - Splat.prototype.children = ['name']; - - Splat.prototype.isAssignable = YES; - - function Splat(name) { - this.name = name.compile ? name : new Literal(name); - } - - Splat.prototype.assigns = function(name) { - return this.name.assigns(name); - }; - - Splat.prototype.compile = function(o) { - if (this.index != null) { - return this.compileParam(o); - } else { - return this.name.compile(o); - } - }; - - Splat.prototype.unwrap = function() { - return this.name; - }; - - Splat.compileSplattedArray = function(o, list, apply) { - var args, base, code, i, index, node, _i, _len; - index = -1; - while ((node = list[++index]) && !(node instanceof Splat)) { - continue; - } - if (index >= list.length) { - return ''; - } - if (list.length === 1) { - code = list[0].compile(o, LEVEL_LIST); - if (apply) { - return code; - } - return "" + (utility('slice')) + ".call(" + code + ")"; - } - args = list.slice(index); - for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) { - node = args[i]; - code = node.compile(o, LEVEL_LIST); - args[i] = node instanceof Splat ? "" + (utility('slice')) + ".call(" + code + ")" : "[" + code + "]"; - } - if (index === 0) { - return args[0] + (".concat(" + (args.slice(1).join(', ')) + ")"); - } - base = (function() { - var _j, _len1, _ref2, _results; - _ref2 = list.slice(0, index); - _results = []; - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - node = _ref2[_j]; - _results.push(node.compile(o, LEVEL_LIST)); - } - return _results; - })(); - return "[" + (base.join(', ')) + "].concat(" + (args.join(', ')) + ")"; - }; - - return Splat; - - })(Base); - - exports.While = While = (function(_super) { - - __extends(While, _super); - - function While(condition, options) { - this.condition = (options != null ? options.invert : void 0) ? condition.invert() : condition; - this.guard = options != null ? options.guard : void 0; - } - - While.prototype.children = ['condition', 'guard', 'body']; - - While.prototype.isStatement = YES; - - While.prototype.makeReturn = function(res) { - if (res) { - return While.__super__.makeReturn.apply(this, arguments); - } else { - this.returns = !this.jumps({ - loop: true - }); - return this; - } - }; - - While.prototype.addBody = function(body) { - this.body = body; - return this; - }; - - While.prototype.jumps = function() { - var expressions, node, _i, _len; - expressions = this.body.expressions; - if (!expressions.length) { - return false; - } - for (_i = 0, _len = expressions.length; _i < _len; _i++) { - node = expressions[_i]; - if (node.jumps({ - loop: true - })) { - return node; - } - } - return false; - }; - - While.prototype.compileNode = function(o) { - var body, code, rvar, set; - o.indent += TAB; - set = ''; - body = this.body; - if (body.isEmpty()) { - body = ''; - } else { - if (this.returns) { - body.makeReturn(rvar = o.scope.freeVariable('results')); - set = "" + this.tab + rvar + " = [];\n"; - } - if (this.guard) { - if (body.expressions.length > 1) { - body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue"))); - } else { - if (this.guard) { - body = Block.wrap([new If(this.guard, body)]); - } - } - } - body = "\n" + (body.compile(o, LEVEL_TOP)) + "\n" + this.tab; - } - code = set + this.tab + ("while (" + (this.condition.compile(o, LEVEL_PAREN)) + ") {" + body + "}"); - if (this.returns) { - code += "\n" + this.tab + "return " + rvar + ";"; - } - return code; - }; - - return While; - - })(Base); - - exports.Op = Op = (function(_super) { - var CONVERSIONS, INVERSIONS; - - __extends(Op, _super); - - function Op(op, first, second, flip) { - if (op === 'in') { - return new In(first, second); - } - if (op === 'do') { - return this.generateDo(first); - } - if (op === 'new') { - if (first instanceof Call && !first["do"] && !first.isNew) { - return first.newInstance(); - } - if (first instanceof Code && first.bound || first["do"]) { - first = new Parens(first); - } - } - this.operator = CONVERSIONS[op] || op; - this.first = first; - this.second = second; - this.flip = !!flip; - return this; - } - - CONVERSIONS = { - '==': '===', - '!=': '!==', - 'of': 'in' - }; - - INVERSIONS = { - '!==': '===', - '===': '!==' - }; - - Op.prototype.children = ['first', 'second']; - - Op.prototype.isSimpleNumber = NO; - - Op.prototype.isUnary = function() { - return !this.second; - }; - - Op.prototype.isComplex = function() { - var _ref2; - return !(this.isUnary() && ((_ref2 = this.operator) === '+' || _ref2 === '-')) || this.first.isComplex(); - }; - - Op.prototype.isChainable = function() { - var _ref2; - return (_ref2 = this.operator) === '<' || _ref2 === '>' || _ref2 === '>=' || _ref2 === '<=' || _ref2 === '===' || _ref2 === '!=='; - }; - - Op.prototype.invert = function() { - var allInvertable, curr, fst, op, _ref2; - if (this.isChainable() && this.first.isChainable()) { - allInvertable = true; - curr = this; - while (curr && curr.operator) { - allInvertable && (allInvertable = curr.operator in INVERSIONS); - curr = curr.first; - } - if (!allInvertable) { - return new Parens(this).invert(); - } - curr = this; - while (curr && curr.operator) { - curr.invert = !curr.invert; - curr.operator = INVERSIONS[curr.operator]; - curr = curr.first; - } - return this; - } else if (op = INVERSIONS[this.operator]) { - this.operator = op; - if (this.first.unwrap() instanceof Op) { - this.first.invert(); - } - return this; - } else if (this.second) { - return new Parens(this).invert(); - } else if (this.operator === '!' && (fst = this.first.unwrap()) instanceof Op && ((_ref2 = fst.operator) === '!' || _ref2 === 'in' || _ref2 === 'instanceof')) { - return fst; - } else { - return new Op('!', this); - } - }; - - Op.prototype.unfoldSoak = function(o) { - var _ref2; - return ((_ref2 = this.operator) === '++' || _ref2 === '--' || _ref2 === 'delete') && unfoldSoak(o, this, 'first'); - }; - - Op.prototype.generateDo = function(exp) { - var call, func, param, passedParams, ref, _i, _len, _ref2; - passedParams = []; - func = exp instanceof Assign && (ref = exp.value.unwrap()) instanceof Code ? ref : exp; - _ref2 = func.params || []; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - param = _ref2[_i]; - if (param.value) { - passedParams.push(param.value); - delete param.value; - } else { - passedParams.push(param); - } - } - call = new Call(exp, passedParams); - call["do"] = true; - return call; - }; - - Op.prototype.compileNode = function(o) { - var code, isChain, _ref2, _ref3; - isChain = this.isChainable() && this.first.isChainable(); - if (!isChain) { - this.first.front = this.front; - } - if (this.operator === 'delete' && o.scope.check(this.first.unwrapAll().value)) { - throw SyntaxError('delete operand may not be argument or var'); - } - if (((_ref2 = this.operator) === '--' || _ref2 === '++') && (_ref3 = this.first.unwrapAll().value, __indexOf.call(STRICT_PROSCRIBED, _ref3) >= 0)) { - throw SyntaxError('prefix increment/decrement may not have eval or arguments operand'); - } - if (this.isUnary()) { - return this.compileUnary(o); - } - if (isChain) { - return this.compileChain(o); - } - if (this.operator === '?') { - return this.compileExistence(o); - } - code = this.first.compile(o, LEVEL_OP) + ' ' + this.operator + ' ' + this.second.compile(o, LEVEL_OP); - if (o.level <= LEVEL_OP) { - return code; - } else { - return "(" + code + ")"; - } - }; - - Op.prototype.compileChain = function(o) { - var code, fst, shared, _ref2; - _ref2 = this.first.second.cache(o), this.first.second = _ref2[0], shared = _ref2[1]; - fst = this.first.compile(o, LEVEL_OP); - code = "" + fst + " " + (this.invert ? '&&' : '||') + " " + (shared.compile(o)) + " " + this.operator + " " + (this.second.compile(o, LEVEL_OP)); - return "(" + code + ")"; - }; - - Op.prototype.compileExistence = function(o) { - var fst, ref; - if (this.first.isComplex()) { - ref = new Literal(o.scope.freeVariable('ref')); - fst = new Parens(new Assign(ref, this.first)); - } else { - fst = this.first; - ref = fst; - } - return new If(new Existence(fst), ref, { - type: 'if' - }).addElse(this.second).compile(o); - }; - - Op.prototype.compileUnary = function(o) { - var op, parts, plusMinus; - if (o.level >= LEVEL_ACCESS) { - return (new Parens(this)).compile(o); - } - parts = [op = this.operator]; - plusMinus = op === '+' || op === '-'; - if ((op === 'new' || op === 'typeof' || op === 'delete') || plusMinus && this.first instanceof Op && this.first.operator === op) { - parts.push(' '); - } - if ((plusMinus && this.first instanceof Op) || (op === 'new' && this.first.isStatement(o))) { - this.first = new Parens(this.first); - } - parts.push(this.first.compile(o, LEVEL_OP)); - if (this.flip) { - parts.reverse(); - } - return parts.join(''); - }; - - Op.prototype.toString = function(idt) { - return Op.__super__.toString.call(this, idt, this.constructor.name + ' ' + this.operator); - }; - - return Op; - - })(Base); - - exports.In = In = (function(_super) { - - __extends(In, _super); - - function In(object, array) { - this.object = object; - this.array = array; - } - - In.prototype.children = ['object', 'array']; - - In.prototype.invert = NEGATE; - - In.prototype.compileNode = function(o) { - var hasSplat, obj, _i, _len, _ref2; - if (this.array instanceof Value && this.array.isArray()) { - _ref2 = this.array.base.objects; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - obj = _ref2[_i]; - if (!(obj instanceof Splat)) { - continue; - } - hasSplat = true; - break; - } - if (!hasSplat) { - return this.compileOrTest(o); - } - } - return this.compileLoopTest(o); - }; - - In.prototype.compileOrTest = function(o) { - var cmp, cnj, i, item, ref, sub, tests, _ref2, _ref3; - if (this.array.base.objects.length === 0) { - return "" + (!!this.negated); - } - _ref2 = this.object.cache(o, LEVEL_OP), sub = _ref2[0], ref = _ref2[1]; - _ref3 = this.negated ? [' !== ', ' && '] : [' === ', ' || '], cmp = _ref3[0], cnj = _ref3[1]; - tests = (function() { - var _i, _len, _ref4, _results; - _ref4 = this.array.base.objects; - _results = []; - for (i = _i = 0, _len = _ref4.length; _i < _len; i = ++_i) { - item = _ref4[i]; - _results.push((i ? ref : sub) + cmp + item.compile(o, LEVEL_ACCESS)); - } - return _results; - }).call(this); - tests = tests.join(cnj); - if (o.level < LEVEL_OP) { - return tests; - } else { - return "(" + tests + ")"; - } - }; - - In.prototype.compileLoopTest = function(o) { - var code, ref, sub, _ref2; - _ref2 = this.object.cache(o, LEVEL_LIST), sub = _ref2[0], ref = _ref2[1]; - code = utility('indexOf') + (".call(" + (this.array.compile(o, LEVEL_LIST)) + ", " + ref + ") ") + (this.negated ? '< 0' : '>= 0'); - if (sub === ref) { - return code; - } - code = sub + ', ' + code; - if (o.level < LEVEL_LIST) { - return code; - } else { - return "(" + code + ")"; - } - }; - - In.prototype.toString = function(idt) { - return In.__super__.toString.call(this, idt, this.constructor.name + (this.negated ? '!' : '')); - }; - - return In; - - })(Base); - - exports.Try = Try = (function(_super) { - - __extends(Try, _super); - - function Try(attempt, error, recovery, ensure) { - this.attempt = attempt; - this.error = error; - this.recovery = recovery; - this.ensure = ensure; - } - - Try.prototype.children = ['attempt', 'recovery', 'ensure']; - - Try.prototype.isStatement = YES; - - Try.prototype.jumps = function(o) { - var _ref2; - return this.attempt.jumps(o) || ((_ref2 = this.recovery) != null ? _ref2.jumps(o) : void 0); - }; - - Try.prototype.makeReturn = function(res) { - if (this.attempt) { - this.attempt = this.attempt.makeReturn(res); - } - if (this.recovery) { - this.recovery = this.recovery.makeReturn(res); - } - return this; - }; - - Try.prototype.compileNode = function(o) { - var catchPart, ensurePart, errorPart, tryPart; - o.indent += TAB; - errorPart = this.error ? " (" + (this.error.compile(o)) + ") " : ' '; - tryPart = this.attempt.compile(o, LEVEL_TOP); - catchPart = (function() { - var _ref2; - if (this.recovery) { - if (_ref2 = this.error.value, __indexOf.call(STRICT_PROSCRIBED, _ref2) >= 0) { - throw SyntaxError("catch variable may not be \"" + this.error.value + "\""); - } - if (!o.scope.check(this.error.value)) { - o.scope.add(this.error.value, 'param'); - } - return " catch" + errorPart + "{\n" + (this.recovery.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}"; - } else if (!(this.ensure || this.recovery)) { - return ' catch (_error) {}'; - } - }).call(this); - ensurePart = this.ensure ? " finally {\n" + (this.ensure.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}" : ''; - return "" + this.tab + "try {\n" + tryPart + "\n" + this.tab + "}" + (catchPart || '') + ensurePart; - }; - - return Try; - - })(Base); - - exports.Throw = Throw = (function(_super) { - - __extends(Throw, _super); - - function Throw(expression) { - this.expression = expression; - } - - Throw.prototype.children = ['expression']; - - Throw.prototype.isStatement = YES; - - Throw.prototype.jumps = NO; - - Throw.prototype.makeReturn = THIS; - - Throw.prototype.compileNode = function(o) { - return this.tab + ("throw " + (this.expression.compile(o)) + ";"); - }; - - return Throw; - - })(Base); - - exports.Existence = Existence = (function(_super) { - - __extends(Existence, _super); - - function Existence(expression) { - this.expression = expression; - } - - Existence.prototype.children = ['expression']; - - Existence.prototype.invert = NEGATE; - - Existence.prototype.compileNode = function(o) { - var cmp, cnj, code, _ref2; - this.expression.front = this.front; - code = this.expression.compile(o, LEVEL_OP); - if (IDENTIFIER.test(code) && !o.scope.check(code)) { - _ref2 = this.negated ? ['===', '||'] : ['!==', '&&'], cmp = _ref2[0], cnj = _ref2[1]; - code = "typeof " + code + " " + cmp + " \"undefined\" " + cnj + " " + code + " " + cmp + " null"; - } else { - code = "" + code + " " + (this.negated ? '==' : '!=') + " null"; - } - if (o.level <= LEVEL_COND) { - return code; - } else { - return "(" + code + ")"; - } - }; - - return Existence; - - })(Base); - - exports.Parens = Parens = (function(_super) { - - __extends(Parens, _super); - - function Parens(body) { - this.body = body; - } - - Parens.prototype.children = ['body']; - - Parens.prototype.unwrap = function() { - return this.body; - }; - - Parens.prototype.isComplex = function() { - return this.body.isComplex(); - }; - - Parens.prototype.compileNode = function(o) { - var bare, code, expr; - expr = this.body.unwrap(); - if (expr instanceof Value && expr.isAtomic()) { - expr.front = this.front; - return expr.compile(o); - } - code = expr.compile(o, LEVEL_PAREN); - bare = o.level < LEVEL_OP && (expr instanceof Op || expr instanceof Call || (expr instanceof For && expr.returns)); - if (bare) { - return code; - } else { - return "(" + code + ")"; - } - }; - - return Parens; - - })(Base); - - exports.For = For = (function(_super) { - - __extends(For, _super); - - function For(body, source) { - var _ref2; - this.source = source.source, this.guard = source.guard, this.step = source.step, this.name = source.name, this.index = source.index; - this.body = Block.wrap([body]); - this.own = !!source.own; - this.object = !!source.object; - if (this.object) { - _ref2 = [this.index, this.name], this.name = _ref2[0], this.index = _ref2[1]; - } - if (this.index instanceof Value) { - throw SyntaxError('index cannot be a pattern matching expression'); - } - this.range = this.source instanceof Value && this.source.base instanceof Range && !this.source.properties.length; - this.pattern = this.name instanceof Value; - if (this.range && this.index) { - throw SyntaxError('indexes do not apply to range loops'); - } - if (this.range && this.pattern) { - throw SyntaxError('cannot pattern match over range loops'); - } - this.returns = false; - } - - For.prototype.children = ['body', 'source', 'guard', 'step']; - - For.prototype.compileNode = function(o) { - var body, defPart, forPart, forVarPart, guardPart, idt1, index, ivar, kvar, kvarAssign, lastJumps, lvar, name, namePart, ref, resultPart, returnResult, rvar, scope, source, stepPart, stepvar, svar, varPart, _ref2; - body = Block.wrap([this.body]); - lastJumps = (_ref2 = last(body.expressions)) != null ? _ref2.jumps() : void 0; - if (lastJumps && lastJumps instanceof Return) { - this.returns = false; - } - source = this.range ? this.source.base : this.source; - scope = o.scope; - name = this.name && this.name.compile(o, LEVEL_LIST); - index = this.index && this.index.compile(o, LEVEL_LIST); - if (name && !this.pattern) { - scope.find(name); - } - if (index) { - scope.find(index); - } - if (this.returns) { - rvar = scope.freeVariable('results'); - } - ivar = (this.object && index) || scope.freeVariable('i'); - kvar = (this.range && name) || index || ivar; - kvarAssign = kvar !== ivar ? "" + kvar + " = " : ""; - if (this.step && !this.range) { - stepvar = scope.freeVariable("step"); - } - if (this.pattern) { - name = ivar; - } - varPart = ''; - guardPart = ''; - defPart = ''; - idt1 = this.tab + TAB; - if (this.range) { - forPart = source.compile(merge(o, { - index: ivar, - name: name, - step: this.step - })); - } else { - svar = this.source.compile(o, LEVEL_LIST); - if ((name || this.own) && !IDENTIFIER.test(svar)) { - defPart = "" + this.tab + (ref = scope.freeVariable('ref')) + " = " + svar + ";\n"; - svar = ref; - } - if (name && !this.pattern) { - namePart = "" + name + " = " + svar + "[" + kvar + "]"; - } - if (!this.object) { - lvar = scope.freeVariable('len'); - forVarPart = "" + kvarAssign + ivar + " = 0, " + lvar + " = " + svar + ".length"; - if (this.step) { - forVarPart += ", " + stepvar + " = " + (this.step.compile(o, LEVEL_OP)); - } - stepPart = "" + kvarAssign + (this.step ? "" + ivar + " += " + stepvar : (kvar !== ivar ? "++" + ivar : "" + ivar + "++")); - forPart = "" + forVarPart + "; " + ivar + " < " + lvar + "; " + stepPart; - } - } - if (this.returns) { - resultPart = "" + this.tab + rvar + " = [];\n"; - returnResult = "\n" + this.tab + "return " + rvar + ";"; - body.makeReturn(rvar); - } - if (this.guard) { - if (body.expressions.length > 1) { - body.expressions.unshift(new If((new Parens(this.guard)).invert(), new Literal("continue"))); - } else { - if (this.guard) { - body = Block.wrap([new If(this.guard, body)]); - } - } - } - if (this.pattern) { - body.expressions.unshift(new Assign(this.name, new Literal("" + svar + "[" + kvar + "]"))); - } - defPart += this.pluckDirectCall(o, body); - if (namePart) { - varPart = "\n" + idt1 + namePart + ";"; - } - if (this.object) { - forPart = "" + kvar + " in " + svar; - if (this.own) { - guardPart = "\n" + idt1 + "if (!" + (utility('hasProp')) + ".call(" + svar + ", " + kvar + ")) continue;"; - } - } - body = body.compile(merge(o, { - indent: idt1 - }), LEVEL_TOP); - if (body) { - body = '\n' + body + '\n'; - } - return "" + defPart + (resultPart || '') + this.tab + "for (" + forPart + ") {" + guardPart + varPart + body + this.tab + "}" + (returnResult || ''); - }; - - For.prototype.pluckDirectCall = function(o, body) { - var base, defs, expr, fn, idx, ref, val, _i, _len, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7; - defs = ''; - _ref2 = body.expressions; - for (idx = _i = 0, _len = _ref2.length; _i < _len; idx = ++_i) { - expr = _ref2[idx]; - expr = expr.unwrapAll(); - if (!(expr instanceof Call)) { - continue; - } - val = expr.variable.unwrapAll(); - if (!((val instanceof Code) || (val instanceof Value && ((_ref3 = val.base) != null ? _ref3.unwrapAll() : void 0) instanceof Code && val.properties.length === 1 && ((_ref4 = (_ref5 = val.properties[0].name) != null ? _ref5.value : void 0) === 'call' || _ref4 === 'apply')))) { - continue; - } - fn = ((_ref6 = val.base) != null ? _ref6.unwrapAll() : void 0) || val; - ref = new Literal(o.scope.freeVariable('fn')); - base = new Value(ref); - if (val.base) { - _ref7 = [base, val], val.base = _ref7[0], base = _ref7[1]; - } - body.expressions[idx] = new Call(base, expr.args); - defs += this.tab + new Assign(ref, fn).compile(o, LEVEL_TOP) + ';\n'; - } - return defs; - }; - - return For; - - })(While); - - exports.Switch = Switch = (function(_super) { - - __extends(Switch, _super); - - function Switch(subject, cases, otherwise) { - this.subject = subject; - this.cases = cases; - this.otherwise = otherwise; - } - - Switch.prototype.children = ['subject', 'cases', 'otherwise']; - - Switch.prototype.isStatement = YES; - - Switch.prototype.jumps = function(o) { - var block, conds, _i, _len, _ref2, _ref3, _ref4; - if (o == null) { - o = { - block: true - }; - } - _ref2 = this.cases; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - _ref3 = _ref2[_i], conds = _ref3[0], block = _ref3[1]; - if (block.jumps(o)) { - return block; - } - } - return (_ref4 = this.otherwise) != null ? _ref4.jumps(o) : void 0; - }; - - Switch.prototype.makeReturn = function(res) { - var pair, _i, _len, _ref2, _ref3; - _ref2 = this.cases; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - pair = _ref2[_i]; - pair[1].makeReturn(res); - } - if (res) { - this.otherwise || (this.otherwise = new Block([new Literal('void 0')])); - } - if ((_ref3 = this.otherwise) != null) { - _ref3.makeReturn(res); - } - return this; - }; - - Switch.prototype.compileNode = function(o) { - var block, body, code, cond, conditions, expr, i, idt1, idt2, _i, _j, _len, _len1, _ref2, _ref3, _ref4, _ref5; - idt1 = o.indent + TAB; - idt2 = o.indent = idt1 + TAB; - code = this.tab + ("switch (" + (((_ref2 = this.subject) != null ? _ref2.compile(o, LEVEL_PAREN) : void 0) || false) + ") {\n"); - _ref3 = this.cases; - for (i = _i = 0, _len = _ref3.length; _i < _len; i = ++_i) { - _ref4 = _ref3[i], conditions = _ref4[0], block = _ref4[1]; - _ref5 = flatten([conditions]); - for (_j = 0, _len1 = _ref5.length; _j < _len1; _j++) { - cond = _ref5[_j]; - if (!this.subject) { - cond = cond.invert(); - } - code += idt1 + ("case " + (cond.compile(o, LEVEL_PAREN)) + ":\n"); - } - if (body = block.compile(o, LEVEL_TOP)) { - code += body + '\n'; - } - if (i === this.cases.length - 1 && !this.otherwise) { - break; - } - expr = this.lastNonComment(block.expressions); - if (expr instanceof Return || (expr instanceof Literal && expr.jumps() && expr.value !== 'debugger')) { - continue; - } - code += idt2 + 'break;\n'; - } - if (this.otherwise && this.otherwise.expressions.length) { - code += idt1 + ("default:\n" + (this.otherwise.compile(o, LEVEL_TOP)) + "\n"); - } - return code + this.tab + '}'; - }; - - return Switch; - - })(Base); - - exports.If = If = (function(_super) { - - __extends(If, _super); - - function If(condition, body, options) { - this.body = body; - if (options == null) { - options = {}; - } - this.condition = options.type === 'unless' ? condition.invert() : condition; - this.elseBody = null; - this.isChain = false; - this.soak = options.soak; - } - - If.prototype.children = ['condition', 'body', 'elseBody']; - - If.prototype.bodyNode = function() { - var _ref2; - return (_ref2 = this.body) != null ? _ref2.unwrap() : void 0; - }; - - If.prototype.elseBodyNode = function() { - var _ref2; - return (_ref2 = this.elseBody) != null ? _ref2.unwrap() : void 0; - }; - - If.prototype.addElse = function(elseBody) { - if (this.isChain) { - this.elseBodyNode().addElse(elseBody); - } else { - this.isChain = elseBody instanceof If; - this.elseBody = this.ensureBlock(elseBody); - } - return this; - }; - - If.prototype.isStatement = function(o) { - var _ref2; - return (o != null ? o.level : void 0) === LEVEL_TOP || this.bodyNode().isStatement(o) || ((_ref2 = this.elseBodyNode()) != null ? _ref2.isStatement(o) : void 0); - }; - - If.prototype.jumps = function(o) { - var _ref2; - return this.body.jumps(o) || ((_ref2 = this.elseBody) != null ? _ref2.jumps(o) : void 0); - }; - - If.prototype.compileNode = function(o) { - if (this.isStatement(o)) { - return this.compileStatement(o); - } else { - return this.compileExpression(o); - } - }; - - If.prototype.makeReturn = function(res) { - if (res) { - this.elseBody || (this.elseBody = new Block([new Literal('void 0')])); - } - this.body && (this.body = new Block([this.body.makeReturn(res)])); - this.elseBody && (this.elseBody = new Block([this.elseBody.makeReturn(res)])); - return this; - }; - - If.prototype.ensureBlock = function(node) { - if (node instanceof Block) { - return node; - } else { - return new Block([node]); - } - }; - - If.prototype.compileStatement = function(o) { - var body, child, cond, exeq, ifPart; - child = del(o, 'chainChild'); - exeq = del(o, 'isExistentialEquals'); - if (exeq) { - return new If(this.condition.invert(), this.elseBodyNode(), { - type: 'if' - }).compile(o); - } - cond = this.condition.compile(o, LEVEL_PAREN); - o.indent += TAB; - body = this.ensureBlock(this.body); - ifPart = "if (" + cond + ") {\n" + (body.compile(o)) + "\n" + this.tab + "}"; - if (!child) { - ifPart = this.tab + ifPart; - } - if (!this.elseBody) { - return ifPart; - } - return ifPart + ' else ' + (this.isChain ? (o.indent = this.tab, o.chainChild = true, this.elseBody.unwrap().compile(o, LEVEL_TOP)) : "{\n" + (this.elseBody.compile(o, LEVEL_TOP)) + "\n" + this.tab + "}"); - }; - - If.prototype.compileExpression = function(o) { - var alt, body, code, cond; - cond = this.condition.compile(o, LEVEL_COND); - body = this.bodyNode().compile(o, LEVEL_LIST); - alt = this.elseBodyNode() ? this.elseBodyNode().compile(o, LEVEL_LIST) : 'void 0'; - code = "" + cond + " ? " + body + " : " + alt; - if (o.level >= LEVEL_COND) { - return "(" + code + ")"; - } else { - return code; - } - }; - - If.prototype.unfoldSoak = function() { - return this.soak && this; - }; - - return If; - - })(Base); - - Closure = { - wrap: function(expressions, statement, noReturn) { - var args, call, func, mentionsArgs, meth; - if (expressions.jumps()) { - return expressions; - } - func = new Code([], Block.wrap([expressions])); - args = []; - if ((mentionsArgs = expressions.contains(this.literalArgs)) || expressions.contains(this.literalThis)) { - meth = new Literal(mentionsArgs ? 'apply' : 'call'); - args = [new Literal('this')]; - if (mentionsArgs) { - args.push(new Literal('arguments')); - } - func = new Value(func, [new Access(meth)]); - } - func.noReturn = noReturn; - call = new Call(func, args); - if (statement) { - return Block.wrap([call]); - } else { - return call; - } - }, - literalArgs: function(node) { - return node instanceof Literal && node.value === 'arguments' && !node.asKey; - }, - literalThis: function(node) { - return (node instanceof Literal && node.value === 'this' && !node.asKey) || (node instanceof Code && node.bound) || (node instanceof Call && node.isSuper); - } - }; - - unfoldSoak = function(o, parent, name) { - var ifn; - if (!(ifn = parent[name].unfoldSoak(o))) { - return; - } - parent[name] = ifn.body; - ifn.body = new Value(parent); - return ifn; - }; - - UTILITIES = { - "extends": function() { - return "function(child, parent) { for (var key in parent) { if (" + (utility('hasProp')) + ".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"; - }, - bind: function() { - return 'function(fn, me){ return function(){ return fn.apply(me, arguments); }; }'; - }, - indexOf: function() { - return "[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"; - }, - hasProp: function() { - return '{}.hasOwnProperty'; - }, - slice: function() { - return '[].slice'; - } - }; - - LEVEL_TOP = 1; - - LEVEL_PAREN = 2; - - LEVEL_LIST = 3; - - LEVEL_COND = 4; - - LEVEL_OP = 5; - - LEVEL_ACCESS = 6; - - TAB = ' '; - - IDENTIFIER_STR = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - IDENTIFIER = RegExp("^" + IDENTIFIER_STR + "$"); - - SIMPLENUM = /^[+-]?\d+$/; - - METHOD_DEF = RegExp("^(?:(" + IDENTIFIER_STR + ")\\.prototype(?:\\.(" + IDENTIFIER_STR + ")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\]))|(" + IDENTIFIER_STR + ")$"); - - IS_STRING = /^['"]/; - - utility = function(name) { - var ref; - ref = "__" + name; - Scope.root.assign(ref, UTILITIES[name]()); - return ref; - }; - - multident = function(code, tab) { - code = code.replace(/\n/g, '$&' + tab); - return code.replace(/\s+$/, ''); - }; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/optparse.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/optparse.js deleted file mode 100644 index d7fda40a3f2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/optparse.js +++ /dev/null @@ -1,138 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var LONG_FLAG, MULTI_FLAG, OPTIONAL, OptionParser, SHORT_FLAG, buildRule, buildRules, normalizeArguments; - - exports.OptionParser = OptionParser = (function() { - - function OptionParser(rules, banner) { - this.banner = banner; - this.rules = buildRules(rules); - } - - OptionParser.prototype.parse = function(args) { - var arg, i, isOption, matchedRule, options, originalArgs, pos, rule, seenNonOptionArg, skippingArgument, value, _i, _j, _len, _len1, _ref; - options = { - "arguments": [] - }; - skippingArgument = false; - originalArgs = args; - args = normalizeArguments(args); - for (i = _i = 0, _len = args.length; _i < _len; i = ++_i) { - arg = args[i]; - if (skippingArgument) { - skippingArgument = false; - continue; - } - if (arg === '--') { - pos = originalArgs.indexOf('--'); - options["arguments"] = options["arguments"].concat(originalArgs.slice(pos + 1)); - break; - } - isOption = !!(arg.match(LONG_FLAG) || arg.match(SHORT_FLAG)); - seenNonOptionArg = options["arguments"].length > 0; - if (!seenNonOptionArg) { - matchedRule = false; - _ref = this.rules; - for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { - rule = _ref[_j]; - if (rule.shortFlag === arg || rule.longFlag === arg) { - value = true; - if (rule.hasArgument) { - skippingArgument = true; - value = args[i + 1]; - } - options[rule.name] = rule.isList ? (options[rule.name] || []).concat(value) : value; - matchedRule = true; - break; - } - } - if (isOption && !matchedRule) { - throw new Error("unrecognized option: " + arg); - } - } - if (seenNonOptionArg || !isOption) { - options["arguments"].push(arg); - } - } - return options; - }; - - OptionParser.prototype.help = function() { - var letPart, lines, rule, spaces, _i, _len, _ref; - lines = []; - if (this.banner) { - lines.unshift("" + this.banner + "\n"); - } - _ref = this.rules; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - rule = _ref[_i]; - spaces = 15 - rule.longFlag.length; - spaces = spaces > 0 ? Array(spaces + 1).join(' ') : ''; - letPart = rule.shortFlag ? rule.shortFlag + ', ' : ' '; - lines.push(' ' + letPart + rule.longFlag + spaces + rule.description); - } - return "\n" + (lines.join('\n')) + "\n"; - }; - - return OptionParser; - - })(); - - LONG_FLAG = /^(--\w[\w\-]*)/; - - SHORT_FLAG = /^(-\w)$/; - - MULTI_FLAG = /^-(\w{2,})/; - - OPTIONAL = /\[(\w+(\*?))\]/; - - buildRules = function(rules) { - var tuple, _i, _len, _results; - _results = []; - for (_i = 0, _len = rules.length; _i < _len; _i++) { - tuple = rules[_i]; - if (tuple.length < 3) { - tuple.unshift(null); - } - _results.push(buildRule.apply(null, tuple)); - } - return _results; - }; - - buildRule = function(shortFlag, longFlag, description, options) { - var match; - if (options == null) { - options = {}; - } - match = longFlag.match(OPTIONAL); - longFlag = longFlag.match(LONG_FLAG)[1]; - return { - name: longFlag.substr(2), - shortFlag: shortFlag, - longFlag: longFlag, - description: description, - hasArgument: !!(match && match[1]), - isList: !!(match && match[2]) - }; - }; - - normalizeArguments = function(args) { - var arg, l, match, result, _i, _j, _len, _len1, _ref; - args = args.slice(0); - result = []; - for (_i = 0, _len = args.length; _i < _len; _i++) { - arg = args[_i]; - if (match = arg.match(MULTI_FLAG)) { - _ref = match[1].split(''); - for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) { - l = _ref[_j]; - result.push('-' + l); - } - } else { - result.push(arg); - } - } - return result; - }; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/parser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/parser.js deleted file mode 100755 index f0499038e74..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/parser.js +++ /dev/null @@ -1,683 +0,0 @@ -/* Jison generated parser */ -var parser = (function(){ -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"Root":3,"Body":4,"Block":5,"TERMINATOR":6,"Line":7,"Expression":8,"Statement":9,"Return":10,"Comment":11,"STATEMENT":12,"Value":13,"Invocation":14,"Code":15,"Operation":16,"Assign":17,"If":18,"Try":19,"While":20,"For":21,"Switch":22,"Class":23,"Throw":24,"INDENT":25,"OUTDENT":26,"Identifier":27,"IDENTIFIER":28,"AlphaNumeric":29,"NUMBER":30,"STRING":31,"Literal":32,"JS":33,"REGEX":34,"DEBUGGER":35,"UNDEFINED":36,"NULL":37,"BOOL":38,"Assignable":39,"=":40,"AssignObj":41,"ObjAssignable":42,":":43,"ThisProperty":44,"RETURN":45,"HERECOMMENT":46,"PARAM_START":47,"ParamList":48,"PARAM_END":49,"FuncGlyph":50,"->":51,"=>":52,"OptComma":53,",":54,"Param":55,"ParamVar":56,"...":57,"Array":58,"Object":59,"Splat":60,"SimpleAssignable":61,"Accessor":62,"Parenthetical":63,"Range":64,"This":65,".":66,"?.":67,"::":68,"Index":69,"INDEX_START":70,"IndexValue":71,"INDEX_END":72,"INDEX_SOAK":73,"Slice":74,"{":75,"AssignList":76,"}":77,"CLASS":78,"EXTENDS":79,"OptFuncExist":80,"Arguments":81,"SUPER":82,"FUNC_EXIST":83,"CALL_START":84,"CALL_END":85,"ArgList":86,"THIS":87,"@":88,"[":89,"]":90,"RangeDots":91,"..":92,"Arg":93,"SimpleArgs":94,"TRY":95,"Catch":96,"FINALLY":97,"CATCH":98,"THROW":99,"(":100,")":101,"WhileSource":102,"WHILE":103,"WHEN":104,"UNTIL":105,"Loop":106,"LOOP":107,"ForBody":108,"FOR":109,"ForStart":110,"ForSource":111,"ForVariables":112,"OWN":113,"ForValue":114,"FORIN":115,"FOROF":116,"BY":117,"SWITCH":118,"Whens":119,"ELSE":120,"When":121,"LEADING_WHEN":122,"IfBlock":123,"IF":124,"POST_IF":125,"UNARY":126,"-":127,"+":128,"--":129,"++":130,"?":131,"MATH":132,"SHIFT":133,"COMPARE":134,"LOGIC":135,"RELATION":136,"COMPOUND_ASSIGN":137,"$accept":0,"$end":1}, -terminals_: {2:"error",6:"TERMINATOR",12:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",70:"INDEX_START",72:"INDEX_END",73:"INDEX_SOAK",75:"{",77:"}",78:"CLASS",79:"EXTENDS",82:"SUPER",83:"FUNC_EXIST",84:"CALL_START",85:"CALL_END",87:"THIS",88:"@",89:"[",90:"]",92:"..",95:"TRY",97:"FINALLY",98:"CATCH",99:"THROW",100:"(",101:")",103:"WHILE",104:"WHEN",105:"UNTIL",107:"LOOP",109:"FOR",113:"OWN",115:"FORIN",116:"FOROF",117:"BY",118:"SWITCH",120:"ELSE",122:"LEADING_WHEN",124:"IF",125:"POST_IF",126:"UNARY",127:"-",128:"+",129:"--",130:"++",131:"?",132:"MATH",133:"SHIFT",134:"COMPARE",135:"LOGIC",136:"RELATION",137:"COMPOUND_ASSIGN"}, -productions_: [0,[3,0],[3,1],[3,2],[4,1],[4,3],[4,2],[7,1],[7,1],[9,1],[9,1],[9,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[8,1],[5,2],[5,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[17,3],[17,4],[17,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[10,2],[10,1],[11,1],[15,5],[15,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[13,1],[13,1],[13,1],[13,1],[13,1],[62,2],[62,2],[62,2],[62,1],[62,1],[69,3],[69,2],[71,1],[71,1],[59,4],[76,0],[76,1],[76,3],[76,4],[76,6],[23,1],[23,2],[23,3],[23,4],[23,2],[23,3],[23,4],[23,5],[14,3],[14,3],[14,1],[14,2],[80,0],[80,1],[81,2],[81,4],[65,1],[65,1],[44,2],[58,2],[58,4],[91,1],[91,1],[64,5],[74,3],[74,2],[74,2],[74,1],[86,1],[86,3],[86,4],[86,4],[86,6],[93,1],[93,1],[94,1],[94,3],[19,2],[19,3],[19,4],[19,5],[96,3],[24,2],[63,3],[63,5],[102,2],[102,4],[102,2],[102,4],[20,2],[20,2],[20,2],[20,1],[106,2],[106,2],[21,2],[21,2],[21,2],[108,2],[108,2],[110,2],[110,3],[114,1],[114,1],[114,1],[114,1],[112,1],[112,3],[111,2],[111,2],[111,4],[111,4],[111,4],[111,6],[111,6],[22,5],[22,7],[22,4],[22,6],[119,1],[119,2],[121,3],[121,4],[123,3],[123,5],[18,1],[18,3],[18,3],[18,3],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,2],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,3],[16,5],[16,3]], -performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) { - -var $0 = $$.length - 1; -switch (yystate) { -case 1:return this.$ = new yy.Block; -break; -case 2:return this.$ = $$[$0]; -break; -case 3:return this.$ = $$[$0-1]; -break; -case 4:this.$ = yy.Block.wrap([$$[$0]]); -break; -case 5:this.$ = $$[$0-2].push($$[$0]); -break; -case 6:this.$ = $$[$0-1]; -break; -case 7:this.$ = $$[$0]; -break; -case 8:this.$ = $$[$0]; -break; -case 9:this.$ = $$[$0]; -break; -case 10:this.$ = $$[$0]; -break; -case 11:this.$ = new yy.Literal($$[$0]); -break; -case 12:this.$ = $$[$0]; -break; -case 13:this.$ = $$[$0]; -break; -case 14:this.$ = $$[$0]; -break; -case 15:this.$ = $$[$0]; -break; -case 16:this.$ = $$[$0]; -break; -case 17:this.$ = $$[$0]; -break; -case 18:this.$ = $$[$0]; -break; -case 19:this.$ = $$[$0]; -break; -case 20:this.$ = $$[$0]; -break; -case 21:this.$ = $$[$0]; -break; -case 22:this.$ = $$[$0]; -break; -case 23:this.$ = $$[$0]; -break; -case 24:this.$ = new yy.Block; -break; -case 25:this.$ = $$[$0-1]; -break; -case 26:this.$ = new yy.Literal($$[$0]); -break; -case 27:this.$ = new yy.Literal($$[$0]); -break; -case 28:this.$ = new yy.Literal($$[$0]); -break; -case 29:this.$ = $$[$0]; -break; -case 30:this.$ = new yy.Literal($$[$0]); -break; -case 31:this.$ = new yy.Literal($$[$0]); -break; -case 32:this.$ = new yy.Literal($$[$0]); -break; -case 33:this.$ = new yy.Undefined; -break; -case 34:this.$ = new yy.Null; -break; -case 35:this.$ = new yy.Bool($$[$0]); -break; -case 36:this.$ = new yy.Assign($$[$0-2], $$[$0]); -break; -case 37:this.$ = new yy.Assign($$[$0-3], $$[$0]); -break; -case 38:this.$ = new yy.Assign($$[$0-4], $$[$0-1]); -break; -case 39:this.$ = new yy.Value($$[$0]); -break; -case 40:this.$ = new yy.Assign(new yy.Value($$[$0-2]), $$[$0], 'object'); -break; -case 41:this.$ = new yy.Assign(new yy.Value($$[$0-4]), $$[$0-1], 'object'); -break; -case 42:this.$ = $$[$0]; -break; -case 43:this.$ = $$[$0]; -break; -case 44:this.$ = $$[$0]; -break; -case 45:this.$ = $$[$0]; -break; -case 46:this.$ = new yy.Return($$[$0]); -break; -case 47:this.$ = new yy.Return; -break; -case 48:this.$ = new yy.Comment($$[$0]); -break; -case 49:this.$ = new yy.Code($$[$0-3], $$[$0], $$[$0-1]); -break; -case 50:this.$ = new yy.Code([], $$[$0], $$[$0-1]); -break; -case 51:this.$ = 'func'; -break; -case 52:this.$ = 'boundfunc'; -break; -case 53:this.$ = $$[$0]; -break; -case 54:this.$ = $$[$0]; -break; -case 55:this.$ = []; -break; -case 56:this.$ = [$$[$0]]; -break; -case 57:this.$ = $$[$0-2].concat($$[$0]); -break; -case 58:this.$ = $$[$0-3].concat($$[$0]); -break; -case 59:this.$ = $$[$0-5].concat($$[$0-2]); -break; -case 60:this.$ = new yy.Param($$[$0]); -break; -case 61:this.$ = new yy.Param($$[$0-1], null, true); -break; -case 62:this.$ = new yy.Param($$[$0-2], $$[$0]); -break; -case 63:this.$ = $$[$0]; -break; -case 64:this.$ = $$[$0]; -break; -case 65:this.$ = $$[$0]; -break; -case 66:this.$ = $$[$0]; -break; -case 67:this.$ = new yy.Splat($$[$0-1]); -break; -case 68:this.$ = new yy.Value($$[$0]); -break; -case 69:this.$ = $$[$0-1].add($$[$0]); -break; -case 70:this.$ = new yy.Value($$[$0-1], [].concat($$[$0])); -break; -case 71:this.$ = $$[$0]; -break; -case 72:this.$ = $$[$0]; -break; -case 73:this.$ = new yy.Value($$[$0]); -break; -case 74:this.$ = new yy.Value($$[$0]); -break; -case 75:this.$ = $$[$0]; -break; -case 76:this.$ = new yy.Value($$[$0]); -break; -case 77:this.$ = new yy.Value($$[$0]); -break; -case 78:this.$ = new yy.Value($$[$0]); -break; -case 79:this.$ = $$[$0]; -break; -case 80:this.$ = new yy.Access($$[$0]); -break; -case 81:this.$ = new yy.Access($$[$0], 'soak'); -break; -case 82:this.$ = [new yy.Access(new yy.Literal('prototype')), new yy.Access($$[$0])]; -break; -case 83:this.$ = new yy.Access(new yy.Literal('prototype')); -break; -case 84:this.$ = $$[$0]; -break; -case 85:this.$ = $$[$0-1]; -break; -case 86:this.$ = yy.extend($$[$0], { - soak: true - }); -break; -case 87:this.$ = new yy.Index($$[$0]); -break; -case 88:this.$ = new yy.Slice($$[$0]); -break; -case 89:this.$ = new yy.Obj($$[$0-2], $$[$0-3].generated); -break; -case 90:this.$ = []; -break; -case 91:this.$ = [$$[$0]]; -break; -case 92:this.$ = $$[$0-2].concat($$[$0]); -break; -case 93:this.$ = $$[$0-3].concat($$[$0]); -break; -case 94:this.$ = $$[$0-5].concat($$[$0-2]); -break; -case 95:this.$ = new yy.Class; -break; -case 96:this.$ = new yy.Class(null, null, $$[$0]); -break; -case 97:this.$ = new yy.Class(null, $$[$0]); -break; -case 98:this.$ = new yy.Class(null, $$[$0-1], $$[$0]); -break; -case 99:this.$ = new yy.Class($$[$0]); -break; -case 100:this.$ = new yy.Class($$[$0-1], null, $$[$0]); -break; -case 101:this.$ = new yy.Class($$[$0-2], $$[$0]); -break; -case 102:this.$ = new yy.Class($$[$0-3], $$[$0-1], $$[$0]); -break; -case 103:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]); -break; -case 104:this.$ = new yy.Call($$[$0-2], $$[$0], $$[$0-1]); -break; -case 105:this.$ = new yy.Call('super', [new yy.Splat(new yy.Literal('arguments'))]); -break; -case 106:this.$ = new yy.Call('super', $$[$0]); -break; -case 107:this.$ = false; -break; -case 108:this.$ = true; -break; -case 109:this.$ = []; -break; -case 110:this.$ = $$[$0-2]; -break; -case 111:this.$ = new yy.Value(new yy.Literal('this')); -break; -case 112:this.$ = new yy.Value(new yy.Literal('this')); -break; -case 113:this.$ = new yy.Value(new yy.Literal('this'), [new yy.Access($$[$0])], 'this'); -break; -case 114:this.$ = new yy.Arr([]); -break; -case 115:this.$ = new yy.Arr($$[$0-2]); -break; -case 116:this.$ = 'inclusive'; -break; -case 117:this.$ = 'exclusive'; -break; -case 118:this.$ = new yy.Range($$[$0-3], $$[$0-1], $$[$0-2]); -break; -case 119:this.$ = new yy.Range($$[$0-2], $$[$0], $$[$0-1]); -break; -case 120:this.$ = new yy.Range($$[$0-1], null, $$[$0]); -break; -case 121:this.$ = new yy.Range(null, $$[$0], $$[$0-1]); -break; -case 122:this.$ = new yy.Range(null, null, $$[$0]); -break; -case 123:this.$ = [$$[$0]]; -break; -case 124:this.$ = $$[$0-2].concat($$[$0]); -break; -case 125:this.$ = $$[$0-3].concat($$[$0]); -break; -case 126:this.$ = $$[$0-2]; -break; -case 127:this.$ = $$[$0-5].concat($$[$0-2]); -break; -case 128:this.$ = $$[$0]; -break; -case 129:this.$ = $$[$0]; -break; -case 130:this.$ = $$[$0]; -break; -case 131:this.$ = [].concat($$[$0-2], $$[$0]); -break; -case 132:this.$ = new yy.Try($$[$0]); -break; -case 133:this.$ = new yy.Try($$[$0-1], $$[$0][0], $$[$0][1]); -break; -case 134:this.$ = new yy.Try($$[$0-2], null, null, $$[$0]); -break; -case 135:this.$ = new yy.Try($$[$0-3], $$[$0-2][0], $$[$0-2][1], $$[$0]); -break; -case 136:this.$ = [$$[$0-1], $$[$0]]; -break; -case 137:this.$ = new yy.Throw($$[$0]); -break; -case 138:this.$ = new yy.Parens($$[$0-1]); -break; -case 139:this.$ = new yy.Parens($$[$0-2]); -break; -case 140:this.$ = new yy.While($$[$0]); -break; -case 141:this.$ = new yy.While($$[$0-2], { - guard: $$[$0] - }); -break; -case 142:this.$ = new yy.While($$[$0], { - invert: true - }); -break; -case 143:this.$ = new yy.While($$[$0-2], { - invert: true, - guard: $$[$0] - }); -break; -case 144:this.$ = $$[$0-1].addBody($$[$0]); -break; -case 145:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]])); -break; -case 146:this.$ = $$[$0].addBody(yy.Block.wrap([$$[$0-1]])); -break; -case 147:this.$ = $$[$0]; -break; -case 148:this.$ = new yy.While(new yy.Literal('true')).addBody($$[$0]); -break; -case 149:this.$ = new yy.While(new yy.Literal('true')).addBody(yy.Block.wrap([$$[$0]])); -break; -case 150:this.$ = new yy.For($$[$0-1], $$[$0]); -break; -case 151:this.$ = new yy.For($$[$0-1], $$[$0]); -break; -case 152:this.$ = new yy.For($$[$0], $$[$0-1]); -break; -case 153:this.$ = { - source: new yy.Value($$[$0]) - }; -break; -case 154:this.$ = (function () { - $$[$0].own = $$[$0-1].own; - $$[$0].name = $$[$0-1][0]; - $$[$0].index = $$[$0-1][1]; - return $$[$0]; - }()); -break; -case 155:this.$ = $$[$0]; -break; -case 156:this.$ = (function () { - $$[$0].own = true; - return $$[$0]; - }()); -break; -case 157:this.$ = $$[$0]; -break; -case 158:this.$ = $$[$0]; -break; -case 159:this.$ = new yy.Value($$[$0]); -break; -case 160:this.$ = new yy.Value($$[$0]); -break; -case 161:this.$ = [$$[$0]]; -break; -case 162:this.$ = [$$[$0-2], $$[$0]]; -break; -case 163:this.$ = { - source: $$[$0] - }; -break; -case 164:this.$ = { - source: $$[$0], - object: true - }; -break; -case 165:this.$ = { - source: $$[$0-2], - guard: $$[$0] - }; -break; -case 166:this.$ = { - source: $$[$0-2], - guard: $$[$0], - object: true - }; -break; -case 167:this.$ = { - source: $$[$0-2], - step: $$[$0] - }; -break; -case 168:this.$ = { - source: $$[$0-4], - guard: $$[$0-2], - step: $$[$0] - }; -break; -case 169:this.$ = { - source: $$[$0-4], - step: $$[$0-2], - guard: $$[$0] - }; -break; -case 170:this.$ = new yy.Switch($$[$0-3], $$[$0-1]); -break; -case 171:this.$ = new yy.Switch($$[$0-5], $$[$0-3], $$[$0-1]); -break; -case 172:this.$ = new yy.Switch(null, $$[$0-1]); -break; -case 173:this.$ = new yy.Switch(null, $$[$0-3], $$[$0-1]); -break; -case 174:this.$ = $$[$0]; -break; -case 175:this.$ = $$[$0-1].concat($$[$0]); -break; -case 176:this.$ = [[$$[$0-1], $$[$0]]]; -break; -case 177:this.$ = [[$$[$0-2], $$[$0-1]]]; -break; -case 178:this.$ = new yy.If($$[$0-1], $$[$0], { - type: $$[$0-2] - }); -break; -case 179:this.$ = $$[$0-4].addElse(new yy.If($$[$0-1], $$[$0], { - type: $$[$0-2] - })); -break; -case 180:this.$ = $$[$0]; -break; -case 181:this.$ = $$[$0-2].addElse($$[$0]); -break; -case 182:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), { - type: $$[$0-1], - statement: true - }); -break; -case 183:this.$ = new yy.If($$[$0], yy.Block.wrap([$$[$0-2]]), { - type: $$[$0-1], - statement: true - }); -break; -case 184:this.$ = new yy.Op($$[$0-1], $$[$0]); -break; -case 185:this.$ = new yy.Op('-', $$[$0]); -break; -case 186:this.$ = new yy.Op('+', $$[$0]); -break; -case 187:this.$ = new yy.Op('--', $$[$0]); -break; -case 188:this.$ = new yy.Op('++', $$[$0]); -break; -case 189:this.$ = new yy.Op('--', $$[$0-1], null, true); -break; -case 190:this.$ = new yy.Op('++', $$[$0-1], null, true); -break; -case 191:this.$ = new yy.Existence($$[$0-1]); -break; -case 192:this.$ = new yy.Op('+', $$[$0-2], $$[$0]); -break; -case 193:this.$ = new yy.Op('-', $$[$0-2], $$[$0]); -break; -case 194:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); -break; -case 195:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); -break; -case 196:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); -break; -case 197:this.$ = new yy.Op($$[$0-1], $$[$0-2], $$[$0]); -break; -case 198:this.$ = (function () { - if ($$[$0-1].charAt(0) === '!') { - return new yy.Op($$[$0-1].slice(1), $$[$0-2], $$[$0]).invert(); - } else { - return new yy.Op($$[$0-1], $$[$0-2], $$[$0]); - } - }()); -break; -case 199:this.$ = new yy.Assign($$[$0-2], $$[$0], $$[$0-1]); -break; -case 200:this.$ = new yy.Assign($$[$0-4], $$[$0-1], $$[$0-3]); -break; -case 201:this.$ = new yy.Extends($$[$0-2], $$[$0]); -break; -} -}, -table: [{1:[2,1],3:1,4:2,5:3,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[3]},{1:[2,2],6:[1,74]},{6:[1,75]},{1:[2,4],6:[2,4],26:[2,4],101:[2,4]},{4:77,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[1,76],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,7],6:[2,7],26:[2,7],101:[2,7],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,8],6:[2,8],26:[2,8],101:[2,8],102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,12],73:[1,100],77:[2,12],80:92,83:[1,94],84:[2,107],85:[2,12],90:[2,12],92:[2,12],101:[2,12],103:[2,12],104:[2,12],105:[2,12],109:[2,12],117:[2,12],125:[2,12],127:[2,12],128:[2,12],131:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],72:[2,13],73:[1,100],77:[2,13],80:101,83:[1,94],84:[2,107],85:[2,13],90:[2,13],92:[2,13],101:[2,13],103:[2,13],104:[2,13],105:[2,13],109:[2,13],117:[2,13],125:[2,13],127:[2,13],128:[2,13],131:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],72:[2,14],77:[2,14],85:[2,14],90:[2,14],92:[2,14],101:[2,14],103:[2,14],104:[2,14],105:[2,14],109:[2,14],117:[2,14],125:[2,14],127:[2,14],128:[2,14],131:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],72:[2,15],77:[2,15],85:[2,15],90:[2,15],92:[2,15],101:[2,15],103:[2,15],104:[2,15],105:[2,15],109:[2,15],117:[2,15],125:[2,15],127:[2,15],128:[2,15],131:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],72:[2,16],77:[2,16],85:[2,16],90:[2,16],92:[2,16],101:[2,16],103:[2,16],104:[2,16],105:[2,16],109:[2,16],117:[2,16],125:[2,16],127:[2,16],128:[2,16],131:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],72:[2,17],77:[2,17],85:[2,17],90:[2,17],92:[2,17],101:[2,17],103:[2,17],104:[2,17],105:[2,17],109:[2,17],117:[2,17],125:[2,17],127:[2,17],128:[2,17],131:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],72:[2,18],77:[2,18],85:[2,18],90:[2,18],92:[2,18],101:[2,18],103:[2,18],104:[2,18],105:[2,18],109:[2,18],117:[2,18],125:[2,18],127:[2,18],128:[2,18],131:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],72:[2,19],77:[2,19],85:[2,19],90:[2,19],92:[2,19],101:[2,19],103:[2,19],104:[2,19],105:[2,19],109:[2,19],117:[2,19],125:[2,19],127:[2,19],128:[2,19],131:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],72:[2,20],77:[2,20],85:[2,20],90:[2,20],92:[2,20],101:[2,20],103:[2,20],104:[2,20],105:[2,20],109:[2,20],117:[2,20],125:[2,20],127:[2,20],128:[2,20],131:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],72:[2,21],77:[2,21],85:[2,21],90:[2,21],92:[2,21],101:[2,21],103:[2,21],104:[2,21],105:[2,21],109:[2,21],117:[2,21],125:[2,21],127:[2,21],128:[2,21],131:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],72:[2,22],77:[2,22],85:[2,22],90:[2,22],92:[2,22],101:[2,22],103:[2,22],104:[2,22],105:[2,22],109:[2,22],117:[2,22],125:[2,22],127:[2,22],128:[2,22],131:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],72:[2,23],77:[2,23],85:[2,23],90:[2,23],92:[2,23],101:[2,23],103:[2,23],104:[2,23],105:[2,23],109:[2,23],117:[2,23],125:[2,23],127:[2,23],128:[2,23],131:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23]},{1:[2,9],6:[2,9],26:[2,9],101:[2,9],103:[2,9],105:[2,9],109:[2,9],125:[2,9]},{1:[2,10],6:[2,10],26:[2,10],101:[2,10],103:[2,10],105:[2,10],109:[2,10],125:[2,10]},{1:[2,11],6:[2,11],26:[2,11],101:[2,11],103:[2,11],105:[2,11],109:[2,11],125:[2,11]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],40:[1,103],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],70:[2,75],72:[2,75],73:[2,75],77:[2,75],83:[2,75],84:[2,75],85:[2,75],90:[2,75],92:[2,75],101:[2,75],103:[2,75],104:[2,75],105:[2,75],109:[2,75],117:[2,75],125:[2,75],127:[2,75],128:[2,75],131:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],70:[2,76],72:[2,76],73:[2,76],77:[2,76],83:[2,76],84:[2,76],85:[2,76],90:[2,76],92:[2,76],101:[2,76],103:[2,76],104:[2,76],105:[2,76],109:[2,76],117:[2,76],125:[2,76],127:[2,76],128:[2,76],131:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],70:[2,77],72:[2,77],73:[2,77],77:[2,77],83:[2,77],84:[2,77],85:[2,77],90:[2,77],92:[2,77],101:[2,77],103:[2,77],104:[2,77],105:[2,77],109:[2,77],117:[2,77],125:[2,77],127:[2,77],128:[2,77],131:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],70:[2,78],72:[2,78],73:[2,78],77:[2,78],83:[2,78],84:[2,78],85:[2,78],90:[2,78],92:[2,78],101:[2,78],103:[2,78],104:[2,78],105:[2,78],109:[2,78],117:[2,78],125:[2,78],127:[2,78],128:[2,78],131:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],70:[2,79],72:[2,79],73:[2,79],77:[2,79],83:[2,79],84:[2,79],85:[2,79],90:[2,79],92:[2,79],101:[2,79],103:[2,79],104:[2,79],105:[2,79],109:[2,79],117:[2,79],125:[2,79],127:[2,79],128:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],70:[2,105],72:[2,105],73:[2,105],77:[2,105],81:104,83:[2,105],84:[1,105],85:[2,105],90:[2,105],92:[2,105],101:[2,105],103:[2,105],104:[2,105],105:[2,105],109:[2,105],117:[2,105],125:[2,105],127:[2,105],128:[2,105],131:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105]},{6:[2,55],25:[2,55],27:109,28:[1,73],44:110,48:106,49:[2,55],54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{5:115,25:[1,5]},{8:116,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:118,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:119,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:120,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{13:121,14:122,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,58:47,59:48,61:124,63:25,64:26,65:27,75:[1,70],82:[1,28],87:[1,58],88:[1,59],89:[1,57],100:[1,56]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,72],73:[2,72],77:[2,72],79:[1,128],83:[2,72],84:[2,72],85:[2,72],90:[2,72],92:[2,72],101:[2,72],103:[2,72],104:[2,72],105:[2,72],109:[2,72],117:[2,72],125:[2,72],127:[2,72],128:[2,72],129:[1,125],130:[1,126],131:[2,72],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[1,127]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],72:[2,180],77:[2,180],85:[2,180],90:[2,180],92:[2,180],101:[2,180],103:[2,180],104:[2,180],105:[2,180],109:[2,180],117:[2,180],120:[1,129],125:[2,180],127:[2,180],128:[2,180],131:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180]},{5:130,25:[1,5]},{5:131,25:[1,5]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],72:[2,147],77:[2,147],85:[2,147],90:[2,147],92:[2,147],101:[2,147],103:[2,147],104:[2,147],105:[2,147],109:[2,147],117:[2,147],125:[2,147],127:[2,147],128:[2,147],131:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147]},{5:132,25:[1,5]},{8:133,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,134],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,95],5:135,6:[2,95],13:121,14:122,25:[1,5],26:[2,95],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:123,44:63,49:[2,95],54:[2,95],57:[2,95],58:47,59:48,61:137,63:25,64:26,65:27,72:[2,95],75:[1,70],77:[2,95],79:[1,136],82:[1,28],85:[2,95],87:[1,58],88:[1,59],89:[1,57],90:[2,95],92:[2,95],100:[1,56],101:[2,95],103:[2,95],104:[2,95],105:[2,95],109:[2,95],117:[2,95],125:[2,95],127:[2,95],128:[2,95],131:[2,95],132:[2,95],133:[2,95],134:[2,95],135:[2,95],136:[2,95]},{8:138,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,47],6:[2,47],8:139,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,47],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,47],102:39,103:[2,47],105:[2,47],106:40,107:[1,67],108:41,109:[2,47],110:69,118:[1,42],123:37,124:[1,64],125:[2,47],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],54:[2,48],77:[2,48],101:[2,48],103:[2,48],105:[2,48],109:[2,48],125:[2,48]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],70:[2,73],72:[2,73],73:[2,73],77:[2,73],83:[2,73],84:[2,73],85:[2,73],90:[2,73],92:[2,73],101:[2,73],103:[2,73],104:[2,73],105:[2,73],109:[2,73],117:[2,73],125:[2,73],127:[2,73],128:[2,73],131:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[2,74],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],70:[2,74],72:[2,74],73:[2,74],77:[2,74],83:[2,74],84:[2,74],85:[2,74],90:[2,74],92:[2,74],101:[2,74],103:[2,74],104:[2,74],105:[2,74],109:[2,74],117:[2,74],125:[2,74],127:[2,74],128:[2,74],131:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],70:[2,29],72:[2,29],73:[2,29],77:[2,29],83:[2,29],84:[2,29],85:[2,29],90:[2,29],92:[2,29],101:[2,29],103:[2,29],104:[2,29],105:[2,29],109:[2,29],117:[2,29],125:[2,29],127:[2,29],128:[2,29],131:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],70:[2,30],72:[2,30],73:[2,30],77:[2,30],83:[2,30],84:[2,30],85:[2,30],90:[2,30],92:[2,30],101:[2,30],103:[2,30],104:[2,30],105:[2,30],109:[2,30],117:[2,30],125:[2,30],127:[2,30],128:[2,30],131:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],70:[2,31],72:[2,31],73:[2,31],77:[2,31],83:[2,31],84:[2,31],85:[2,31],90:[2,31],92:[2,31],101:[2,31],103:[2,31],104:[2,31],105:[2,31],109:[2,31],117:[2,31],125:[2,31],127:[2,31],128:[2,31],131:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],70:[2,32],72:[2,32],73:[2,32],77:[2,32],83:[2,32],84:[2,32],85:[2,32],90:[2,32],92:[2,32],101:[2,32],103:[2,32],104:[2,32],105:[2,32],109:[2,32],117:[2,32],125:[2,32],127:[2,32],128:[2,32],131:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],70:[2,33],72:[2,33],73:[2,33],77:[2,33],83:[2,33],84:[2,33],85:[2,33],90:[2,33],92:[2,33],101:[2,33],103:[2,33],104:[2,33],105:[2,33],109:[2,33],117:[2,33],125:[2,33],127:[2,33],128:[2,33],131:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],70:[2,34],72:[2,34],73:[2,34],77:[2,34],83:[2,34],84:[2,34],85:[2,34],90:[2,34],92:[2,34],101:[2,34],103:[2,34],104:[2,34],105:[2,34],109:[2,34],117:[2,34],125:[2,34],127:[2,34],128:[2,34],131:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],66:[2,35],67:[2,35],68:[2,35],70:[2,35],72:[2,35],73:[2,35],77:[2,35],83:[2,35],84:[2,35],85:[2,35],90:[2,35],92:[2,35],101:[2,35],103:[2,35],104:[2,35],105:[2,35],109:[2,35],117:[2,35],125:[2,35],127:[2,35],128:[2,35],131:[2,35],132:[2,35],133:[2,35],134:[2,35],135:[2,35],136:[2,35]},{4:140,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,141],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:142,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],70:[2,111],72:[2,111],73:[2,111],77:[2,111],83:[2,111],84:[2,111],85:[2,111],90:[2,111],92:[2,111],101:[2,111],103:[2,111],104:[2,111],105:[2,111],109:[2,111],117:[2,111],125:[2,111],127:[2,111],128:[2,111],131:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],27:148,28:[1,73],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],70:[2,112],72:[2,112],73:[2,112],77:[2,112],83:[2,112],84:[2,112],85:[2,112],90:[2,112],92:[2,112],101:[2,112],103:[2,112],104:[2,112],105:[2,112],109:[2,112],117:[2,112],125:[2,112],127:[2,112],128:[2,112],131:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112]},{25:[2,51]},{25:[2,52]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],70:[2,68],72:[2,68],73:[2,68],77:[2,68],79:[2,68],83:[2,68],84:[2,68],85:[2,68],90:[2,68],92:[2,68],101:[2,68],103:[2,68],104:[2,68],105:[2,68],109:[2,68],117:[2,68],125:[2,68],127:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],70:[2,71],72:[2,71],73:[2,71],77:[2,71],79:[2,71],83:[2,71],84:[2,71],85:[2,71],90:[2,71],92:[2,71],101:[2,71],103:[2,71],104:[2,71],105:[2,71],109:[2,71],117:[2,71],125:[2,71],127:[2,71],128:[2,71],129:[2,71],130:[2,71],131:[2,71],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71]},{8:149,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:150,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:151,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:152,8:153,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,5],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{27:158,28:[1,73],44:159,58:160,59:161,64:154,75:[1,70],88:[1,113],89:[1,57],112:155,113:[1,156],114:157},{111:162,115:[1,163],116:[1,164]},{6:[2,90],11:168,25:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:165,77:[2,90],88:[1,113]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],70:[2,27],72:[2,27],73:[2,27],77:[2,27],83:[2,27],84:[2,27],85:[2,27],90:[2,27],92:[2,27],101:[2,27],103:[2,27],104:[2,27],105:[2,27],109:[2,27],117:[2,27],125:[2,27],127:[2,27],128:[2,27],131:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],43:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],70:[2,28],72:[2,28],73:[2,28],77:[2,28],83:[2,28],84:[2,28],85:[2,28],90:[2,28],92:[2,28],101:[2,28],103:[2,28],104:[2,28],105:[2,28],109:[2,28],117:[2,28],125:[2,28],127:[2,28],128:[2,28],131:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],40:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],70:[2,26],72:[2,26],73:[2,26],77:[2,26],79:[2,26],83:[2,26],84:[2,26],85:[2,26],90:[2,26],92:[2,26],101:[2,26],103:[2,26],104:[2,26],105:[2,26],109:[2,26],115:[2,26],116:[2,26],117:[2,26],125:[2,26],127:[2,26],128:[2,26],129:[2,26],130:[2,26],131:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26]},{1:[2,6],6:[2,6],7:172,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,26:[2,6],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],101:[2,6],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,3]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],72:[2,24],77:[2,24],85:[2,24],90:[2,24],92:[2,24],97:[2,24],98:[2,24],101:[2,24],103:[2,24],104:[2,24],105:[2,24],109:[2,24],117:[2,24],120:[2,24],122:[2,24],125:[2,24],127:[2,24],128:[2,24],131:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24]},{6:[1,74],26:[1,173]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],72:[2,191],77:[2,191],85:[2,191],90:[2,191],92:[2,191],101:[2,191],103:[2,191],104:[2,191],105:[2,191],109:[2,191],117:[2,191],125:[2,191],127:[2,191],128:[2,191],131:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191]},{8:174,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:175,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:176,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:177,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:178,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:179,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:180,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:181,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],72:[2,146],77:[2,146],85:[2,146],90:[2,146],92:[2,146],101:[2,146],103:[2,146],104:[2,146],105:[2,146],109:[2,146],117:[2,146],125:[2,146],127:[2,146],128:[2,146],131:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],72:[2,151],77:[2,151],85:[2,151],90:[2,151],92:[2,151],101:[2,151],103:[2,151],104:[2,151],105:[2,151],109:[2,151],117:[2,151],125:[2,151],127:[2,151],128:[2,151],131:[2,151],132:[2,151],133:[2,151],134:[2,151],135:[2,151],136:[2,151]},{8:182,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],72:[2,145],77:[2,145],85:[2,145],90:[2,145],92:[2,145],101:[2,145],103:[2,145],104:[2,145],105:[2,145],109:[2,145],117:[2,145],125:[2,145],127:[2,145],128:[2,145],131:[2,145],132:[2,145],133:[2,145],134:[2,145],135:[2,145],136:[2,145]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],72:[2,150],77:[2,150],85:[2,150],90:[2,150],92:[2,150],101:[2,150],103:[2,150],104:[2,150],105:[2,150],109:[2,150],117:[2,150],125:[2,150],127:[2,150],128:[2,150],131:[2,150],132:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150]},{81:183,84:[1,105]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],70:[2,69],72:[2,69],73:[2,69],77:[2,69],79:[2,69],83:[2,69],84:[2,69],85:[2,69],90:[2,69],92:[2,69],101:[2,69],103:[2,69],104:[2,69],105:[2,69],109:[2,69],117:[2,69],125:[2,69],127:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69]},{84:[2,108]},{27:184,28:[1,73]},{27:185,28:[1,73]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],27:186,28:[1,73],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],70:[2,83],72:[2,83],73:[2,83],77:[2,83],79:[2,83],83:[2,83],84:[2,83],85:[2,83],90:[2,83],92:[2,83],101:[2,83],103:[2,83],104:[2,83],105:[2,83],109:[2,83],117:[2,83],125:[2,83],127:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],70:[2,84],72:[2,84],73:[2,84],77:[2,84],79:[2,84],83:[2,84],84:[2,84],85:[2,84],90:[2,84],92:[2,84],101:[2,84],103:[2,84],104:[2,84],105:[2,84],109:[2,84],117:[2,84],125:[2,84],127:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84]},{8:188,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],57:[1,192],58:47,59:48,61:36,63:25,64:26,65:27,71:187,74:189,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],91:190,92:[1,191],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{69:193,70:[1,99],73:[1,100]},{81:194,84:[1,105]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],70:[2,70],72:[2,70],73:[2,70],77:[2,70],79:[2,70],83:[2,70],84:[2,70],85:[2,70],90:[2,70],92:[2,70],101:[2,70],103:[2,70],104:[2,70],105:[2,70],109:[2,70],117:[2,70],125:[2,70],127:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70]},{6:[1,196],8:195,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,197],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],70:[2,106],72:[2,106],73:[2,106],77:[2,106],83:[2,106],84:[2,106],85:[2,106],90:[2,106],92:[2,106],101:[2,106],103:[2,106],104:[2,106],105:[2,106],109:[2,106],117:[2,106],125:[2,106],127:[2,106],128:[2,106],131:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[1,198],86:199,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],49:[1,201],53:203,54:[1,202]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{6:[2,60],25:[2,60],26:[2,60],40:[1,205],49:[2,60],54:[2,60],57:[1,204]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{6:[2,66],25:[2,66],26:[2,66],40:[2,66],49:[2,66],54:[2,66],57:[2,66]},{27:148,28:[1,73]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:144,87:[1,58],88:[1,59],89:[1,57],90:[1,143],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,50],6:[2,50],25:[2,50],26:[2,50],49:[2,50],54:[2,50],57:[2,50],72:[2,50],77:[2,50],85:[2,50],90:[2,50],92:[2,50],101:[2,50],103:[2,50],104:[2,50],105:[2,50],109:[2,50],117:[2,50],125:[2,50],127:[2,50],128:[2,50],131:[2,50],132:[2,50],133:[2,50],134:[2,50],135:[2,50],136:[2,50]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],72:[2,184],77:[2,184],85:[2,184],90:[2,184],92:[2,184],101:[2,184],102:87,103:[2,184],104:[2,184],105:[2,184],108:88,109:[2,184],110:69,117:[2,184],125:[2,184],127:[2,184],128:[2,184],131:[1,78],132:[2,184],133:[2,184],134:[2,184],135:[2,184],136:[2,184]},{102:90,103:[1,65],105:[1,66],108:91,109:[1,68],110:69,125:[1,89]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],72:[2,185],77:[2,185],85:[2,185],90:[2,185],92:[2,185],101:[2,185],102:87,103:[2,185],104:[2,185],105:[2,185],108:88,109:[2,185],110:69,117:[2,185],125:[2,185],127:[2,185],128:[2,185],131:[1,78],132:[2,185],133:[2,185],134:[2,185],135:[2,185],136:[2,185]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],72:[2,186],77:[2,186],85:[2,186],90:[2,186],92:[2,186],101:[2,186],102:87,103:[2,186],104:[2,186],105:[2,186],108:88,109:[2,186],110:69,117:[2,186],125:[2,186],127:[2,186],128:[2,186],131:[1,78],132:[2,186],133:[2,186],134:[2,186],135:[2,186],136:[2,186]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,187],73:[2,72],77:[2,187],83:[2,72],84:[2,72],85:[2,187],90:[2,187],92:[2,187],101:[2,187],103:[2,187],104:[2,187],105:[2,187],109:[2,187],117:[2,187],125:[2,187],127:[2,187],128:[2,187],131:[2,187],132:[2,187],133:[2,187],134:[2,187],135:[2,187],136:[2,187]},{62:93,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:92,83:[1,94],84:[2,107]},{62:102,66:[1,95],67:[1,96],68:[1,97],69:98,70:[1,99],73:[1,100],80:101,83:[1,94],84:[2,107]},{66:[2,75],67:[2,75],68:[2,75],70:[2,75],73:[2,75],83:[2,75],84:[2,75]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,188],73:[2,72],77:[2,188],83:[2,72],84:[2,72],85:[2,188],90:[2,188],92:[2,188],101:[2,188],103:[2,188],104:[2,188],105:[2,188],109:[2,188],117:[2,188],125:[2,188],127:[2,188],128:[2,188],131:[2,188],132:[2,188],133:[2,188],134:[2,188],135:[2,188],136:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],72:[2,189],77:[2,189],85:[2,189],90:[2,189],92:[2,189],101:[2,189],103:[2,189],104:[2,189],105:[2,189],109:[2,189],117:[2,189],125:[2,189],127:[2,189],128:[2,189],131:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],72:[2,190],77:[2,190],85:[2,190],90:[2,190],92:[2,190],101:[2,190],103:[2,190],104:[2,190],105:[2,190],109:[2,190],117:[2,190],125:[2,190],127:[2,190],128:[2,190],131:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190]},{8:206,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,207],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:208,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{5:209,25:[1,5],124:[1,210]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],49:[2,132],54:[2,132],57:[2,132],72:[2,132],77:[2,132],85:[2,132],90:[2,132],92:[2,132],96:211,97:[1,212],98:[1,213],101:[2,132],103:[2,132],104:[2,132],105:[2,132],109:[2,132],117:[2,132],125:[2,132],127:[2,132],128:[2,132],131:[2,132],132:[2,132],133:[2,132],134:[2,132],135:[2,132],136:[2,132]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],72:[2,144],77:[2,144],85:[2,144],90:[2,144],92:[2,144],101:[2,144],103:[2,144],104:[2,144],105:[2,144],109:[2,144],117:[2,144],125:[2,144],127:[2,144],128:[2,144],131:[2,144],132:[2,144],133:[2,144],134:[2,144],135:[2,144],136:[2,144]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],72:[2,152],77:[2,152],85:[2,152],90:[2,152],92:[2,152],101:[2,152],103:[2,152],104:[2,152],105:[2,152],109:[2,152],117:[2,152],125:[2,152],127:[2,152],128:[2,152],131:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152]},{25:[1,214],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{119:215,121:216,122:[1,217]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],49:[2,96],54:[2,96],57:[2,96],72:[2,96],77:[2,96],85:[2,96],90:[2,96],92:[2,96],101:[2,96],103:[2,96],104:[2,96],105:[2,96],109:[2,96],117:[2,96],125:[2,96],127:[2,96],128:[2,96],131:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96]},{8:218,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,99],5:219,6:[2,99],25:[1,5],26:[2,99],49:[2,99],54:[2,99],57:[2,99],66:[2,72],67:[2,72],68:[2,72],70:[2,72],72:[2,99],73:[2,72],77:[2,99],79:[1,220],83:[2,72],84:[2,72],85:[2,99],90:[2,99],92:[2,99],101:[2,99],103:[2,99],104:[2,99],105:[2,99],109:[2,99],117:[2,99],125:[2,99],127:[2,99],128:[2,99],131:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],72:[2,137],77:[2,137],85:[2,137],90:[2,137],92:[2,137],101:[2,137],102:87,103:[2,137],104:[2,137],105:[2,137],108:88,109:[2,137],110:69,117:[2,137],125:[2,137],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,46],6:[2,46],26:[2,46],101:[2,46],102:87,103:[2,46],105:[2,46],108:88,109:[2,46],110:69,125:[2,46],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,74],101:[1,221]},{4:222,7:4,8:6,9:7,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,128],25:[2,128],54:[2,128],57:[1,224],90:[2,128],91:223,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],70:[2,114],72:[2,114],73:[2,114],77:[2,114],83:[2,114],84:[2,114],85:[2,114],90:[2,114],92:[2,114],101:[2,114],103:[2,114],104:[2,114],105:[2,114],109:[2,114],115:[2,114],116:[2,114],117:[2,114],125:[2,114],127:[2,114],128:[2,114],131:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114]},{6:[2,53],25:[2,53],53:225,54:[1,226],90:[2,53]},{6:[2,123],25:[2,123],26:[2,123],54:[2,123],85:[2,123],90:[2,123]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:227,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],85:[2,129],90:[2,129]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],40:[2,113],43:[2,113],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],70:[2,113],72:[2,113],73:[2,113],77:[2,113],79:[2,113],83:[2,113],84:[2,113],85:[2,113],90:[2,113],92:[2,113],101:[2,113],103:[2,113],104:[2,113],105:[2,113],109:[2,113],115:[2,113],116:[2,113],117:[2,113],125:[2,113],127:[2,113],128:[2,113],129:[2,113],130:[2,113],131:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113]},{5:228,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],72:[2,140],77:[2,140],85:[2,140],90:[2,140],92:[2,140],101:[2,140],102:87,103:[1,65],104:[1,229],105:[1,66],108:88,109:[1,68],110:69,117:[2,140],125:[2,140],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],72:[2,142],77:[2,142],85:[2,142],90:[2,142],92:[2,142],101:[2,142],102:87,103:[1,65],104:[1,230],105:[1,66],108:88,109:[1,68],110:69,117:[2,142],125:[2,142],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],72:[2,148],77:[2,148],85:[2,148],90:[2,148],92:[2,148],101:[2,148],103:[2,148],104:[2,148],105:[2,148],109:[2,148],117:[2,148],125:[2,148],127:[2,148],128:[2,148],131:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],72:[2,149],77:[2,149],85:[2,149],90:[2,149],92:[2,149],101:[2,149],102:87,103:[1,65],104:[2,149],105:[1,66],108:88,109:[1,68],110:69,117:[2,149],125:[2,149],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],72:[2,153],77:[2,153],85:[2,153],90:[2,153],92:[2,153],101:[2,153],103:[2,153],104:[2,153],105:[2,153],109:[2,153],117:[2,153],125:[2,153],127:[2,153],128:[2,153],131:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153]},{115:[2,155],116:[2,155]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],112:231,114:157},{54:[1,232],115:[2,161],116:[2,161]},{54:[2,157],115:[2,157],116:[2,157]},{54:[2,158],115:[2,158],116:[2,158]},{54:[2,159],115:[2,159],116:[2,159]},{54:[2,160],115:[2,160],116:[2,160]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],72:[2,154],77:[2,154],85:[2,154],90:[2,154],92:[2,154],101:[2,154],103:[2,154],104:[2,154],105:[2,154],109:[2,154],117:[2,154],125:[2,154],127:[2,154],128:[2,154],131:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154]},{8:233,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:234,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],53:235,54:[1,236],77:[2,53]},{6:[2,91],25:[2,91],26:[2,91],54:[2,91],77:[2,91]},{6:[2,39],25:[2,39],26:[2,39],43:[1,237],54:[2,39],77:[2,39]},{6:[2,42],25:[2,42],26:[2,42],54:[2,42],77:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],77:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],77:[2,44]},{6:[2,45],25:[2,45],26:[2,45],43:[2,45],54:[2,45],77:[2,45]},{1:[2,5],6:[2,5],26:[2,5],101:[2,5]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],49:[2,25],54:[2,25],57:[2,25],72:[2,25],77:[2,25],85:[2,25],90:[2,25],92:[2,25],97:[2,25],98:[2,25],101:[2,25],103:[2,25],104:[2,25],105:[2,25],109:[2,25],117:[2,25],120:[2,25],122:[2,25],125:[2,25],127:[2,25],128:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],72:[2,192],77:[2,192],85:[2,192],90:[2,192],92:[2,192],101:[2,192],102:87,103:[2,192],104:[2,192],105:[2,192],108:88,109:[2,192],110:69,117:[2,192],125:[2,192],127:[2,192],128:[2,192],131:[1,78],132:[1,81],133:[2,192],134:[2,192],135:[2,192],136:[2,192]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],72:[2,193],77:[2,193],85:[2,193],90:[2,193],92:[2,193],101:[2,193],102:87,103:[2,193],104:[2,193],105:[2,193],108:88,109:[2,193],110:69,117:[2,193],125:[2,193],127:[2,193],128:[2,193],131:[1,78],132:[1,81],133:[2,193],134:[2,193],135:[2,193],136:[2,193]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],72:[2,194],77:[2,194],85:[2,194],90:[2,194],92:[2,194],101:[2,194],102:87,103:[2,194],104:[2,194],105:[2,194],108:88,109:[2,194],110:69,117:[2,194],125:[2,194],127:[2,194],128:[2,194],131:[1,78],132:[2,194],133:[2,194],134:[2,194],135:[2,194],136:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],72:[2,195],77:[2,195],85:[2,195],90:[2,195],92:[2,195],101:[2,195],102:87,103:[2,195],104:[2,195],105:[2,195],108:88,109:[2,195],110:69,117:[2,195],125:[2,195],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[2,195],134:[2,195],135:[2,195],136:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],72:[2,196],77:[2,196],85:[2,196],90:[2,196],92:[2,196],101:[2,196],102:87,103:[2,196],104:[2,196],105:[2,196],108:88,109:[2,196],110:69,117:[2,196],125:[2,196],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,196],135:[2,196],136:[1,85]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],72:[2,197],77:[2,197],85:[2,197],90:[2,197],92:[2,197],101:[2,197],102:87,103:[2,197],104:[2,197],105:[2,197],108:88,109:[2,197],110:69,117:[2,197],125:[2,197],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[2,197],136:[1,85]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],72:[2,198],77:[2,198],85:[2,198],90:[2,198],92:[2,198],101:[2,198],102:87,103:[2,198],104:[2,198],105:[2,198],108:88,109:[2,198],110:69,117:[2,198],125:[2,198],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[2,198],135:[2,198],136:[2,198]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],72:[2,183],77:[2,183],85:[2,183],90:[2,183],92:[2,183],101:[2,183],102:87,103:[1,65],104:[2,183],105:[1,66],108:88,109:[1,68],110:69,117:[2,183],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],72:[2,182],77:[2,182],85:[2,182],90:[2,182],92:[2,182],101:[2,182],102:87,103:[1,65],104:[2,182],105:[1,66],108:88,109:[1,68],110:69,117:[2,182],125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],66:[2,103],67:[2,103],68:[2,103],70:[2,103],72:[2,103],73:[2,103],77:[2,103],83:[2,103],84:[2,103],85:[2,103],90:[2,103],92:[2,103],101:[2,103],103:[2,103],104:[2,103],105:[2,103],109:[2,103],117:[2,103],125:[2,103],127:[2,103],128:[2,103],131:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],70:[2,80],72:[2,80],73:[2,80],77:[2,80],79:[2,80],83:[2,80],84:[2,80],85:[2,80],90:[2,80],92:[2,80],101:[2,80],103:[2,80],104:[2,80],105:[2,80],109:[2,80],117:[2,80],125:[2,80],127:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],70:[2,81],72:[2,81],73:[2,81],77:[2,81],79:[2,81],83:[2,81],84:[2,81],85:[2,81],90:[2,81],92:[2,81],101:[2,81],103:[2,81],104:[2,81],105:[2,81],109:[2,81],117:[2,81],125:[2,81],127:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],70:[2,82],72:[2,82],73:[2,82],77:[2,82],79:[2,82],83:[2,82],84:[2,82],85:[2,82],90:[2,82],92:[2,82],101:[2,82],103:[2,82],104:[2,82],105:[2,82],109:[2,82],117:[2,82],125:[2,82],127:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82]},{72:[1,238]},{57:[1,192],72:[2,87],91:239,92:[1,191],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{72:[2,88]},{8:240,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,122],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{12:[2,116],28:[2,116],30:[2,116],31:[2,116],33:[2,116],34:[2,116],35:[2,116],36:[2,116],37:[2,116],38:[2,116],45:[2,116],46:[2,116],47:[2,116],51:[2,116],52:[2,116],72:[2,116],75:[2,116],78:[2,116],82:[2,116],87:[2,116],88:[2,116],89:[2,116],95:[2,116],99:[2,116],100:[2,116],103:[2,116],105:[2,116],107:[2,116],109:[2,116],118:[2,116],124:[2,116],126:[2,116],127:[2,116],128:[2,116],129:[2,116],130:[2,116]},{12:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],72:[2,117],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],70:[2,86],72:[2,86],73:[2,86],77:[2,86],79:[2,86],83:[2,86],84:[2,86],85:[2,86],90:[2,86],92:[2,86],101:[2,86],103:[2,86],104:[2,86],105:[2,86],109:[2,86],117:[2,86],125:[2,86],127:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],70:[2,104],72:[2,104],73:[2,104],77:[2,104],83:[2,104],84:[2,104],85:[2,104],90:[2,104],92:[2,104],101:[2,104],103:[2,104],104:[2,104],105:[2,104],109:[2,104],117:[2,104],125:[2,104],127:[2,104],128:[2,104],131:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],72:[2,36],77:[2,36],85:[2,36],90:[2,36],92:[2,36],101:[2,36],102:87,103:[2,36],104:[2,36],105:[2,36],108:88,109:[2,36],110:69,117:[2,36],125:[2,36],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:241,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:242,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],49:[2,109],54:[2,109],57:[2,109],66:[2,109],67:[2,109],68:[2,109],70:[2,109],72:[2,109],73:[2,109],77:[2,109],83:[2,109],84:[2,109],85:[2,109],90:[2,109],92:[2,109],101:[2,109],103:[2,109],104:[2,109],105:[2,109],109:[2,109],117:[2,109],125:[2,109],127:[2,109],128:[2,109],131:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109],136:[2,109]},{6:[2,53],25:[2,53],53:243,54:[1,226],85:[2,53]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],57:[1,244],85:[2,128],90:[2,128],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{50:245,51:[1,60],52:[1,61]},{6:[2,54],25:[2,54],26:[2,54],27:109,28:[1,73],44:110,55:246,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[1,247],25:[1,248]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61]},{8:249,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],72:[2,199],77:[2,199],85:[2,199],90:[2,199],92:[2,199],101:[2,199],102:87,103:[2,199],104:[2,199],105:[2,199],108:88,109:[2,199],110:69,117:[2,199],125:[2,199],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:250,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],72:[2,201],77:[2,201],85:[2,201],90:[2,201],92:[2,201],101:[2,201],102:87,103:[2,201],104:[2,201],105:[2,201],108:88,109:[2,201],110:69,117:[2,201],125:[2,201],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],72:[2,181],77:[2,181],85:[2,181],90:[2,181],92:[2,181],101:[2,181],103:[2,181],104:[2,181],105:[2,181],109:[2,181],117:[2,181],125:[2,181],127:[2,181],128:[2,181],131:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181]},{8:251,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],72:[2,133],77:[2,133],85:[2,133],90:[2,133],92:[2,133],97:[1,252],101:[2,133],103:[2,133],104:[2,133],105:[2,133],109:[2,133],117:[2,133],125:[2,133],127:[2,133],128:[2,133],131:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133]},{5:253,25:[1,5]},{27:254,28:[1,73]},{119:255,121:216,122:[1,217]},{26:[1,256],120:[1,257],121:258,122:[1,217]},{26:[2,174],120:[2,174],122:[2,174]},{8:260,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],94:259,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,97],5:261,6:[2,97],25:[1,5],26:[2,97],49:[2,97],54:[2,97],57:[2,97],72:[2,97],77:[2,97],85:[2,97],90:[2,97],92:[2,97],101:[2,97],102:87,103:[1,65],104:[2,97],105:[1,66],108:88,109:[1,68],110:69,117:[2,97],125:[2,97],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],49:[2,100],54:[2,100],57:[2,100],72:[2,100],77:[2,100],85:[2,100],90:[2,100],92:[2,100],101:[2,100],103:[2,100],104:[2,100],105:[2,100],109:[2,100],117:[2,100],125:[2,100],127:[2,100],128:[2,100],131:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100]},{8:262,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],66:[2,138],67:[2,138],68:[2,138],70:[2,138],72:[2,138],73:[2,138],77:[2,138],83:[2,138],84:[2,138],85:[2,138],90:[2,138],92:[2,138],101:[2,138],103:[2,138],104:[2,138],105:[2,138],109:[2,138],117:[2,138],125:[2,138],127:[2,138],128:[2,138],131:[2,138],132:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138]},{6:[1,74],26:[1,263]},{8:264,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,67],12:[2,117],25:[2,67],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],54:[2,67],75:[2,117],78:[2,117],82:[2,117],87:[2,117],88:[2,117],89:[2,117],90:[2,67],95:[2,117],99:[2,117],100:[2,117],103:[2,117],105:[2,117],107:[2,117],109:[2,117],118:[2,117],124:[2,117],126:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117]},{6:[1,266],25:[1,267],90:[1,265]},{6:[2,54],8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[2,54],26:[2,54],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],85:[2,54],87:[1,58],88:[1,59],89:[1,57],90:[2,54],93:268,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,53],25:[2,53],26:[2,53],53:269,54:[1,226]},{1:[2,178],6:[2,178],25:[2,178],26:[2,178],49:[2,178],54:[2,178],57:[2,178],72:[2,178],77:[2,178],85:[2,178],90:[2,178],92:[2,178],101:[2,178],103:[2,178],104:[2,178],105:[2,178],109:[2,178],117:[2,178],120:[2,178],125:[2,178],127:[2,178],128:[2,178],131:[2,178],132:[2,178],133:[2,178],134:[2,178],135:[2,178],136:[2,178]},{8:270,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:271,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{115:[2,156],116:[2,156]},{27:158,28:[1,73],44:159,58:160,59:161,75:[1,70],88:[1,113],89:[1,114],114:272},{1:[2,163],6:[2,163],25:[2,163],26:[2,163],49:[2,163],54:[2,163],57:[2,163],72:[2,163],77:[2,163],85:[2,163],90:[2,163],92:[2,163],101:[2,163],102:87,103:[2,163],104:[1,273],105:[2,163],108:88,109:[2,163],110:69,117:[1,274],125:[2,163],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,164],6:[2,164],25:[2,164],26:[2,164],49:[2,164],54:[2,164],57:[2,164],72:[2,164],77:[2,164],85:[2,164],90:[2,164],92:[2,164],101:[2,164],102:87,103:[2,164],104:[1,275],105:[2,164],108:88,109:[2,164],110:69,117:[2,164],125:[2,164],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,277],25:[1,278],77:[1,276]},{6:[2,54],11:168,25:[2,54],26:[2,54],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:279,42:167,44:171,46:[1,46],77:[2,54],88:[1,113]},{8:280,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,281],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],70:[2,85],72:[2,85],73:[2,85],77:[2,85],79:[2,85],83:[2,85],84:[2,85],85:[2,85],90:[2,85],92:[2,85],101:[2,85],103:[2,85],104:[2,85],105:[2,85],109:[2,85],117:[2,85],125:[2,85],127:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85]},{8:282,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,72:[2,120],75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,121],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],72:[2,37],77:[2,37],85:[2,37],90:[2,37],92:[2,37],101:[2,37],102:87,103:[2,37],104:[2,37],105:[2,37],108:88,109:[2,37],110:69,117:[2,37],125:[2,37],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,283],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,266],25:[1,267],85:[1,284]},{6:[2,67],25:[2,67],26:[2,67],54:[2,67],85:[2,67],90:[2,67]},{5:285,25:[1,5]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{27:109,28:[1,73],44:110,55:286,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,55],25:[2,55],26:[2,55],27:109,28:[1,73],44:110,48:287,54:[2,55],55:107,56:108,58:111,59:112,75:[1,70],88:[1,113],89:[1,114]},{6:[2,62],25:[2,62],26:[2,62],49:[2,62],54:[2,62],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{26:[1,288],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:289,25:[1,5],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{5:290,25:[1,5]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],72:[2,134],77:[2,134],85:[2,134],90:[2,134],92:[2,134],101:[2,134],103:[2,134],104:[2,134],105:[2,134],109:[2,134],117:[2,134],125:[2,134],127:[2,134],128:[2,134],131:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134]},{5:291,25:[1,5]},{26:[1,292],120:[1,293],121:258,122:[1,217]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],72:[2,172],77:[2,172],85:[2,172],90:[2,172],92:[2,172],101:[2,172],103:[2,172],104:[2,172],105:[2,172],109:[2,172],117:[2,172],125:[2,172],127:[2,172],128:[2,172],131:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172]},{5:294,25:[1,5]},{26:[2,175],120:[2,175],122:[2,175]},{5:295,25:[1,5],54:[1,296]},{25:[2,130],54:[2,130],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],49:[2,98],54:[2,98],57:[2,98],72:[2,98],77:[2,98],85:[2,98],90:[2,98],92:[2,98],101:[2,98],103:[2,98],104:[2,98],105:[2,98],109:[2,98],117:[2,98],125:[2,98],127:[2,98],128:[2,98],131:[2,98],132:[2,98],133:[2,98],134:[2,98],135:[2,98],136:[2,98]},{1:[2,101],5:297,6:[2,101],25:[1,5],26:[2,101],49:[2,101],54:[2,101],57:[2,101],72:[2,101],77:[2,101],85:[2,101],90:[2,101],92:[2,101],101:[2,101],102:87,103:[1,65],104:[2,101],105:[1,66],108:88,109:[1,68],110:69,117:[2,101],125:[2,101],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{101:[1,298]},{90:[1,299],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],70:[2,115],72:[2,115],73:[2,115],77:[2,115],83:[2,115],84:[2,115],85:[2,115],90:[2,115],92:[2,115],101:[2,115],103:[2,115],104:[2,115],105:[2,115],109:[2,115],115:[2,115],116:[2,115],117:[2,115],125:[2,115],127:[2,115],128:[2,115],131:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],93:300,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:200,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,25:[1,146],27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,60:147,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],86:301,87:[1,58],88:[1,59],89:[1,57],93:145,95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],85:[2,124],90:[2,124]},{6:[1,266],25:[1,267],26:[1,302]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],72:[2,141],77:[2,141],85:[2,141],90:[2,141],92:[2,141],101:[2,141],102:87,103:[1,65],104:[2,141],105:[1,66],108:88,109:[1,68],110:69,117:[2,141],125:[2,141],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],72:[2,143],77:[2,143],85:[2,143],90:[2,143],92:[2,143],101:[2,143],102:87,103:[1,65],104:[2,143],105:[1,66],108:88,109:[1,68],110:69,117:[2,143],125:[2,143],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{115:[2,162],116:[2,162]},{8:303,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:304,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:305,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,89],6:[2,89],25:[2,89],26:[2,89],40:[2,89],49:[2,89],54:[2,89],57:[2,89],66:[2,89],67:[2,89],68:[2,89],70:[2,89],72:[2,89],73:[2,89],77:[2,89],83:[2,89],84:[2,89],85:[2,89],90:[2,89],92:[2,89],101:[2,89],103:[2,89],104:[2,89],105:[2,89],109:[2,89],115:[2,89],116:[2,89],117:[2,89],125:[2,89],127:[2,89],128:[2,89],131:[2,89],132:[2,89],133:[2,89],134:[2,89],135:[2,89],136:[2,89]},{11:168,27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:306,42:167,44:171,46:[1,46],88:[1,113]},{6:[2,90],11:168,25:[2,90],26:[2,90],27:169,28:[1,73],29:170,30:[1,71],31:[1,72],41:166,42:167,44:171,46:[1,46],54:[2,90],76:307,88:[1,113]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],77:[2,92]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],77:[2,40],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{8:308,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{72:[2,119],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,38],6:[2,38],25:[2,38],26:[2,38],49:[2,38],54:[2,38],57:[2,38],72:[2,38],77:[2,38],85:[2,38],90:[2,38],92:[2,38],101:[2,38],103:[2,38],104:[2,38],105:[2,38],109:[2,38],117:[2,38],125:[2,38],127:[2,38],128:[2,38],131:[2,38],132:[2,38],133:[2,38],134:[2,38],135:[2,38],136:[2,38]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],70:[2,110],72:[2,110],73:[2,110],77:[2,110],83:[2,110],84:[2,110],85:[2,110],90:[2,110],92:[2,110],101:[2,110],103:[2,110],104:[2,110],105:[2,110],109:[2,110],117:[2,110],125:[2,110],127:[2,110],128:[2,110],131:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],72:[2,49],77:[2,49],85:[2,49],90:[2,49],92:[2,49],101:[2,49],103:[2,49],104:[2,49],105:[2,49],109:[2,49],117:[2,49],125:[2,49],127:[2,49],128:[2,49],131:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{6:[2,53],25:[2,53],26:[2,53],53:309,54:[1,202]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],72:[2,200],77:[2,200],85:[2,200],90:[2,200],92:[2,200],101:[2,200],103:[2,200],104:[2,200],105:[2,200],109:[2,200],117:[2,200],125:[2,200],127:[2,200],128:[2,200],131:[2,200],132:[2,200],133:[2,200],134:[2,200],135:[2,200],136:[2,200]},{1:[2,179],6:[2,179],25:[2,179],26:[2,179],49:[2,179],54:[2,179],57:[2,179],72:[2,179],77:[2,179],85:[2,179],90:[2,179],92:[2,179],101:[2,179],103:[2,179],104:[2,179],105:[2,179],109:[2,179],117:[2,179],120:[2,179],125:[2,179],127:[2,179],128:[2,179],131:[2,179],132:[2,179],133:[2,179],134:[2,179],135:[2,179],136:[2,179]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],72:[2,135],77:[2,135],85:[2,135],90:[2,135],92:[2,135],101:[2,135],103:[2,135],104:[2,135],105:[2,135],109:[2,135],117:[2,135],125:[2,135],127:[2,135],128:[2,135],131:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],72:[2,136],77:[2,136],85:[2,136],90:[2,136],92:[2,136],97:[2,136],101:[2,136],103:[2,136],104:[2,136],105:[2,136],109:[2,136],117:[2,136],125:[2,136],127:[2,136],128:[2,136],131:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],72:[2,170],77:[2,170],85:[2,170],90:[2,170],92:[2,170],101:[2,170],103:[2,170],104:[2,170],105:[2,170],109:[2,170],117:[2,170],125:[2,170],127:[2,170],128:[2,170],131:[2,170],132:[2,170],133:[2,170],134:[2,170],135:[2,170],136:[2,170]},{5:310,25:[1,5]},{26:[1,311]},{6:[1,312],26:[2,176],120:[2,176],122:[2,176]},{8:313,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],49:[2,102],54:[2,102],57:[2,102],72:[2,102],77:[2,102],85:[2,102],90:[2,102],92:[2,102],101:[2,102],103:[2,102],104:[2,102],105:[2,102],109:[2,102],117:[2,102],125:[2,102],127:[2,102],128:[2,102],131:[2,102],132:[2,102],133:[2,102],134:[2,102],135:[2,102],136:[2,102]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],66:[2,139],67:[2,139],68:[2,139],70:[2,139],72:[2,139],73:[2,139],77:[2,139],83:[2,139],84:[2,139],85:[2,139],90:[2,139],92:[2,139],101:[2,139],103:[2,139],104:[2,139],105:[2,139],109:[2,139],117:[2,139],125:[2,139],127:[2,139],128:[2,139],131:[2,139],132:[2,139],133:[2,139],134:[2,139],135:[2,139],136:[2,139]},{1:[2,118],6:[2,118],25:[2,118],26:[2,118],49:[2,118],54:[2,118],57:[2,118],66:[2,118],67:[2,118],68:[2,118],70:[2,118],72:[2,118],73:[2,118],77:[2,118],83:[2,118],84:[2,118],85:[2,118],90:[2,118],92:[2,118],101:[2,118],103:[2,118],104:[2,118],105:[2,118],109:[2,118],117:[2,118],125:[2,118],127:[2,118],128:[2,118],131:[2,118],132:[2,118],133:[2,118],134:[2,118],135:[2,118],136:[2,118]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],85:[2,125],90:[2,125]},{6:[2,53],25:[2,53],26:[2,53],53:314,54:[1,226]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],85:[2,126],90:[2,126]},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],72:[2,165],77:[2,165],85:[2,165],90:[2,165],92:[2,165],101:[2,165],102:87,103:[2,165],104:[2,165],105:[2,165],108:88,109:[2,165],110:69,117:[1,315],125:[2,165],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],72:[2,167],77:[2,167],85:[2,167],90:[2,167],92:[2,167],101:[2,167],102:87,103:[2,167],104:[1,316],105:[2,167],108:88,109:[2,167],110:69,117:[2,167],125:[2,167],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],72:[2,166],77:[2,166],85:[2,166],90:[2,166],92:[2,166],101:[2,166],102:87,103:[2,166],104:[2,166],105:[2,166],108:88,109:[2,166],110:69,117:[2,166],125:[2,166],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],77:[2,93]},{6:[2,53],25:[2,53],26:[2,53],53:317,54:[1,236]},{26:[1,318],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,247],25:[1,248],26:[1,319]},{26:[1,320]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],72:[2,173],77:[2,173],85:[2,173],90:[2,173],92:[2,173],101:[2,173],103:[2,173],104:[2,173],105:[2,173],109:[2,173],117:[2,173],125:[2,173],127:[2,173],128:[2,173],131:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173]},{26:[2,177],120:[2,177],122:[2,177]},{25:[2,131],54:[2,131],102:87,103:[1,65],105:[1,66],108:88,109:[1,68],110:69,125:[1,86],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[1,266],25:[1,267],26:[1,321]},{8:322,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{8:323,9:117,10:20,11:21,12:[1,22],13:8,14:9,15:10,16:11,17:12,18:13,19:14,20:15,21:16,22:17,23:18,24:19,27:62,28:[1,73],29:49,30:[1,71],31:[1,72],32:24,33:[1,50],34:[1,51],35:[1,52],36:[1,53],37:[1,54],38:[1,55],39:23,44:63,45:[1,45],46:[1,46],47:[1,29],50:30,51:[1,60],52:[1,61],58:47,59:48,61:36,63:25,64:26,65:27,75:[1,70],78:[1,43],82:[1,28],87:[1,58],88:[1,59],89:[1,57],95:[1,38],99:[1,44],100:[1,56],102:39,103:[1,65],105:[1,66],106:40,107:[1,67],108:41,109:[1,68],110:69,118:[1,42],123:37,124:[1,64],126:[1,31],127:[1,32],128:[1,33],129:[1,34],130:[1,35]},{6:[1,277],25:[1,278],26:[1,324]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],77:[2,41]},{6:[2,59],25:[2,59],26:[2,59],49:[2,59],54:[2,59]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],72:[2,171],77:[2,171],85:[2,171],90:[2,171],92:[2,171],101:[2,171],103:[2,171],104:[2,171],105:[2,171],109:[2,171],117:[2,171],125:[2,171],127:[2,171],128:[2,171],131:[2,171],132:[2,171],133:[2,171],134:[2,171],135:[2,171],136:[2,171]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],85:[2,127],90:[2,127]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],72:[2,168],77:[2,168],85:[2,168],90:[2,168],92:[2,168],101:[2,168],102:87,103:[2,168],104:[2,168],105:[2,168],108:88,109:[2,168],110:69,117:[2,168],125:[2,168],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],72:[2,169],77:[2,169],85:[2,169],90:[2,169],92:[2,169],101:[2,169],102:87,103:[2,169],104:[2,169],105:[2,169],108:88,109:[2,169],110:69,117:[2,169],125:[2,169],127:[1,80],128:[1,79],131:[1,78],132:[1,81],133:[1,82],134:[1,83],135:[1,84],136:[1,85]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],77:[2,94]}], -defaultActions: {60:[2,51],61:[2,52],75:[2,3],94:[2,108],189:[2,88]}, -parseError: function parseError(str, hash) { - throw new Error(str); -}, -parse: function parse(input) { - var self = this, - stack = [0], - vstack = [null], // semantic value stack - lstack = [], // location stack - table = this.table, - yytext = '', - yylineno = 0, - yyleng = 0, - recovering = 0, - TERROR = 2, - EOF = 1; - - //this.reductionCount = this.shiftCount = 0; - - this.lexer.setInput(input); - this.lexer.yy = this.yy; - this.yy.lexer = this.lexer; - if (typeof this.lexer.yylloc == 'undefined') - this.lexer.yylloc = {}; - var yyloc = this.lexer.yylloc; - lstack.push(yyloc); - - if (typeof this.yy.parseError === 'function') - this.parseError = this.yy.parseError; - - function popStack (n) { - stack.length = stack.length - 2*n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - - function lex() { - var token; - token = self.lexer.lex() || 1; // $end = 1 - // if token isn't its numeric value, convert - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - } - - var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected; - while (true) { - // retreive state number from top of stack - state = stack[stack.length-1]; - - // use default actions if available - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol == null) - symbol = lex(); - // read action for current state and first input - action = table[state] && table[state][symbol]; - } - - // handle parse error - _handle_error: - if (typeof action === 'undefined' || !action.length || !action[0]) { - - if (!recovering) { - // Report error - expected = []; - for (p in table[state]) if (this.terminals_[p] && p > 2) { - expected.push("'"+this.terminals_[p]+"'"); - } - var errStr = ''; - if (this.lexer.showPosition) { - errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'"; - } else { - errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " + - (symbol == 1 /*EOF*/ ? "end of input" : - ("'"+(this.terminals_[symbol] || symbol)+"'")); - } - this.parseError(errStr, - {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected}); - } - - // just recovered from another error - if (recovering == 3) { - if (symbol == EOF) { - throw new Error(errStr || 'Parsing halted.'); - } - - // discard current lookahead and grab another - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - symbol = lex(); - } - - // try to recover from error - while (1) { - // check for error recovery rule in this state - if ((TERROR.toString()) in table[state]) { - break; - } - if (state == 0) { - throw new Error(errStr || 'Parsing halted.'); - } - popStack(1); - state = stack[stack.length-1]; - } - - preErrorSymbol = symbol; // save the lookahead token - symbol = TERROR; // insert generic error symbol as new lookahead - state = stack[stack.length-1]; - action = table[state] && table[state][TERROR]; - recovering = 3; // allow 3 real symbols to be shifted before reporting a new error - } - - // this shouldn't happen, unless resolve defaults are off - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol); - } - - switch (action[0]) { - - case 1: // shift - //this.shiftCount++; - - stack.push(symbol); - vstack.push(this.lexer.yytext); - lstack.push(this.lexer.yylloc); - stack.push(action[1]); // push state - symbol = null; - if (!preErrorSymbol) { // normal execution/no error - yyleng = this.lexer.yyleng; - yytext = this.lexer.yytext; - yylineno = this.lexer.yylineno; - yyloc = this.lexer.yylloc; - if (recovering > 0) - recovering--; - } else { // error just occurred, resume old lookahead f/ before error - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - - case 2: // reduce - //this.reductionCount++; - - len = this.productions_[action[1]][1]; - - // perform semantic action - yyval.$ = vstack[vstack.length-len]; // default to $$ = $1 - // default location, uses first token for firsts, last for lasts - yyval._$ = { - first_line: lstack[lstack.length-(len||1)].first_line, - last_line: lstack[lstack.length-1].last_line, - first_column: lstack[lstack.length-(len||1)].first_column, - last_column: lstack[lstack.length-1].last_column - }; - r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); - - if (typeof r !== 'undefined') { - return r; - } - - // pop off stack - if (len) { - stack = stack.slice(0,-1*len*2); - vstack = vstack.slice(0, -1*len); - lstack = lstack.slice(0, -1*len); - } - - stack.push(this.productions_[action[1]][0]); // push nonterminal (reduce) - vstack.push(yyval.$); - lstack.push(yyval._$); - // goto new state = table[STATE][NONTERMINAL] - newState = table[stack[stack.length-2]][stack[stack.length-1]]; - stack.push(newState); - break; - - case 3: // accept - return true; - } - - } - - return true; -}}; -undefined -return parser; -})(); -if (typeof require !== 'undefined' && typeof exports !== 'undefined') { -exports.parser = parser; -exports.parse = function () { return parser.parse.apply(parser, arguments); } -exports.main = function commonjsMain(args) { - if (!args[1]) - throw new Error('Usage: '+args[0]+' FILE'); - if (typeof process !== 'undefined') { - var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8"); - } else { - var cwd = require("file").path(require("file").cwd()); - var source = cwd.join(args[1]).read({charset: "utf-8"}); - } - return exports.parser.parse(source); -} -if (typeof module !== 'undefined' && require.main === module) { - exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args); -} -}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/repl.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/repl.js deleted file mode 100644 index b4a4765d3e2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/repl.js +++ /dev/null @@ -1,261 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var ACCESSOR, CoffeeScript, Module, REPL_PROMPT, REPL_PROMPT_CONTINUATION, REPL_PROMPT_MULTILINE, SIMPLEVAR, Script, autocomplete, backlog, completeAttribute, completeVariable, enableColours, error, getCompletions, inspect, multilineMode, pipedInput, readline, repl, run, stdin, stdout; - - stdin = process.openStdin(); - - stdout = process.stdout; - - CoffeeScript = require('./coffee-script'); - - readline = require('readline'); - - inspect = require('util').inspect; - - Script = require('vm').Script; - - Module = require('module'); - - REPL_PROMPT = 'coffee> '; - - REPL_PROMPT_MULTILINE = '------> '; - - REPL_PROMPT_CONTINUATION = '......> '; - - enableColours = false; - - if (process.platform !== 'win32') { - enableColours = !process.env.NODE_DISABLE_COLORS; - } - - error = function(err) { - return stdout.write((err.stack || err.toString()) + '\n'); - }; - - ACCESSOR = /\s*([\w\.]+)(?:\.(\w*))$/; - - SIMPLEVAR = /(\w+)$/i; - - autocomplete = function(text) { - return completeAttribute(text) || completeVariable(text) || [[], text]; - }; - - completeAttribute = function(text) { - var all, completions, key, match, obj, possibilities, prefix, val; - if (match = text.match(ACCESSOR)) { - all = match[0], obj = match[1], prefix = match[2]; - try { - val = Script.runInThisContext(obj); - } catch (error) { - return; - } - val = Object(val); - possibilities = Object.getOwnPropertyNames(val); - for (key in val) { - if (~possibilities.indexOf(val)) { - possibilities.push(key); - } - } - completions = getCompletions(prefix, possibilities); - return [completions, prefix]; - } - }; - - completeVariable = function(text) { - var completions, free, keywords, possibilities, r, vars, _ref; - free = (_ref = text.match(SIMPLEVAR)) != null ? _ref[1] : void 0; - if (text === "") { - free = ""; - } - if (free != null) { - vars = Script.runInThisContext('Object.getOwnPropertyNames(Object(this))'); - keywords = (function() { - var _i, _len, _ref1, _results; - _ref1 = CoffeeScript.RESERVED; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - r = _ref1[_i]; - if (r.slice(0, 2) !== '__') { - _results.push(r); - } - } - return _results; - })(); - possibilities = vars.concat(keywords); - completions = getCompletions(free, possibilities); - return [completions, free]; - } - }; - - getCompletions = function(prefix, candidates) { - var el, _i, _len, _results; - _results = []; - for (_i = 0, _len = candidates.length; _i < _len; _i++) { - el = candidates[_i]; - if (el.indexOf(prefix) === 0) { - _results.push(el); - } - } - return _results; - }; - - process.on('uncaughtException', error); - - backlog = ''; - - run = function(buffer) { - var code, returnValue, _; - buffer = buffer.replace(/(^|[\r\n]+)(\s*)##?(?:[^#\r\n][^\r\n]*|)($|[\r\n])/, "$1$2$3"); - buffer = buffer.replace(/[\r\n]+$/, ""); - if (multilineMode) { - backlog += "" + buffer + "\n"; - repl.setPrompt(REPL_PROMPT_CONTINUATION); - repl.prompt(); - return; - } - if (!buffer.toString().trim() && !backlog) { - repl.prompt(); - return; - } - code = backlog += buffer; - if (code[code.length - 1] === '\\') { - backlog = "" + backlog.slice(0, -1) + "\n"; - repl.setPrompt(REPL_PROMPT_CONTINUATION); - repl.prompt(); - return; - } - repl.setPrompt(REPL_PROMPT); - backlog = ''; - try { - _ = global._; - returnValue = CoffeeScript["eval"]("_=(" + code + "\n)", { - filename: 'repl', - modulename: 'repl' - }); - if (returnValue === void 0) { - global._ = _; - } - repl.output.write("" + (inspect(returnValue, false, 2, enableColours)) + "\n"); - } catch (err) { - error(err); - } - return repl.prompt(); - }; - - if (stdin.readable) { - pipedInput = ''; - repl = { - prompt: function() { - return stdout.write(this._prompt); - }, - setPrompt: function(p) { - return this._prompt = p; - }, - input: stdin, - output: stdout, - on: function() {} - }; - stdin.on('data', function(chunk) { - var line, lines, _i, _len, _ref; - pipedInput += chunk; - if (!/\n/.test(pipedInput)) { - return; - } - lines = pipedInput.split("\n"); - pipedInput = lines[lines.length - 1]; - _ref = lines.slice(0, -1); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - line = _ref[_i]; - if (!(line)) { - continue; - } - stdout.write("" + line + "\n"); - run(line); - } - }); - stdin.on('end', function() { - var line, _i, _len, _ref; - _ref = pipedInput.trim().split("\n"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - line = _ref[_i]; - if (!(line)) { - continue; - } - stdout.write("" + line + "\n"); - run(line); - } - stdout.write('\n'); - return process.exit(0); - }); - } else { - if (readline.createInterface.length < 3) { - repl = readline.createInterface(stdin, autocomplete); - stdin.on('data', function(buffer) { - return repl.write(buffer); - }); - } else { - repl = readline.createInterface(stdin, stdout, autocomplete); - } - } - - multilineMode = false; - - repl.input.on('keypress', function(char, key) { - var cursorPos, newPrompt; - if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'v')) { - return; - } - cursorPos = repl.cursor; - repl.output.cursorTo(0); - repl.output.clearLine(1); - multilineMode = !multilineMode; - if (!multilineMode && backlog) { - repl._line(); - } - backlog = ''; - repl.setPrompt((newPrompt = multilineMode ? REPL_PROMPT_MULTILINE : REPL_PROMPT)); - repl.prompt(); - return repl.output.cursorTo(newPrompt.length + (repl.cursor = cursorPos)); - }); - - repl.input.on('keypress', function(char, key) { - if (!(multilineMode && repl.line)) { - return; - } - if (!(key && key.ctrl && !key.meta && !key.shift && key.name === 'd')) { - return; - } - multilineMode = false; - return repl._line(); - }); - - repl.on('attemptClose', function() { - if (multilineMode) { - multilineMode = false; - repl.output.cursorTo(0); - repl.output.clearLine(1); - repl._onLine(repl.line); - return; - } - if (backlog) { - backlog = ''; - repl.output.write('\n'); - repl.setPrompt(REPL_PROMPT); - return repl.prompt(); - } else { - return repl.close(); - } - }); - - repl.on('close', function() { - repl.output.write('\n'); - return repl.input.destroy(); - }); - - repl.on('line', run); - - repl.setPrompt(REPL_PROMPT); - - repl.prompt(); - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/rewriter.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/rewriter.js deleted file mode 100644 index d26133ca71c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/rewriter.js +++ /dev/null @@ -1,349 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var BALANCED_PAIRS, EXPRESSION_CLOSE, EXPRESSION_END, EXPRESSION_START, IMPLICIT_BLOCK, IMPLICIT_CALL, IMPLICIT_END, IMPLICIT_FUNC, IMPLICIT_UNSPACED_CALL, INVERSES, LINEBREAKS, SINGLE_CLOSERS, SINGLE_LINERS, left, rite, _i, _len, _ref, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, - __slice = [].slice; - - exports.Rewriter = (function() { - - function Rewriter() {} - - Rewriter.prototype.rewrite = function(tokens) { - this.tokens = tokens; - this.removeLeadingNewlines(); - this.removeMidExpressionNewlines(); - this.closeOpenCalls(); - this.closeOpenIndexes(); - this.addImplicitIndentation(); - this.tagPostfixConditionals(); - this.addImplicitBraces(); - this.addImplicitParentheses(); - return this.tokens; - }; - - Rewriter.prototype.scanTokens = function(block) { - var i, token, tokens; - tokens = this.tokens; - i = 0; - while (token = tokens[i]) { - i += block.call(this, token, i, tokens); - } - return true; - }; - - Rewriter.prototype.detectEnd = function(i, condition, action) { - var levels, token, tokens, _ref, _ref1; - tokens = this.tokens; - levels = 0; - while (token = tokens[i]) { - if (levels === 0 && condition.call(this, token, i)) { - return action.call(this, token, i); - } - if (!token || levels < 0) { - return action.call(this, token, i - 1); - } - if (_ref = token[0], __indexOf.call(EXPRESSION_START, _ref) >= 0) { - levels += 1; - } else if (_ref1 = token[0], __indexOf.call(EXPRESSION_END, _ref1) >= 0) { - levels -= 1; - } - i += 1; - } - return i - 1; - }; - - Rewriter.prototype.removeLeadingNewlines = function() { - var i, tag, _i, _len, _ref; - _ref = this.tokens; - for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) { - tag = _ref[i][0]; - if (tag !== 'TERMINATOR') { - break; - } - } - if (i) { - return this.tokens.splice(0, i); - } - }; - - Rewriter.prototype.removeMidExpressionNewlines = function() { - return this.scanTokens(function(token, i, tokens) { - var _ref; - if (!(token[0] === 'TERMINATOR' && (_ref = this.tag(i + 1), __indexOf.call(EXPRESSION_CLOSE, _ref) >= 0))) { - return 1; - } - tokens.splice(i, 1); - return 0; - }); - }; - - Rewriter.prototype.closeOpenCalls = function() { - var action, condition; - condition = function(token, i) { - var _ref; - return ((_ref = token[0]) === ')' || _ref === 'CALL_END') || token[0] === 'OUTDENT' && this.tag(i - 1) === ')'; - }; - action = function(token, i) { - return this.tokens[token[0] === 'OUTDENT' ? i - 1 : i][0] = 'CALL_END'; - }; - return this.scanTokens(function(token, i) { - if (token[0] === 'CALL_START') { - this.detectEnd(i + 1, condition, action); - } - return 1; - }); - }; - - Rewriter.prototype.closeOpenIndexes = function() { - var action, condition; - condition = function(token, i) { - var _ref; - return (_ref = token[0]) === ']' || _ref === 'INDEX_END'; - }; - action = function(token, i) { - return token[0] = 'INDEX_END'; - }; - return this.scanTokens(function(token, i) { - if (token[0] === 'INDEX_START') { - this.detectEnd(i + 1, condition, action); - } - return 1; - }); - }; - - Rewriter.prototype.addImplicitBraces = function() { - var action, condition, sameLine, stack, start, startIndent, startIndex, startsLine; - stack = []; - start = null; - startsLine = null; - sameLine = true; - startIndent = 0; - startIndex = 0; - condition = function(token, i) { - var one, tag, three, two, _ref, _ref1; - _ref = this.tokens.slice(i + 1, (i + 3) + 1 || 9e9), one = _ref[0], two = _ref[1], three = _ref[2]; - if ('HERECOMMENT' === (one != null ? one[0] : void 0)) { - return false; - } - tag = token[0]; - if (__indexOf.call(LINEBREAKS, tag) >= 0) { - sameLine = false; - } - return (((tag === 'TERMINATOR' || tag === 'OUTDENT') || (__indexOf.call(IMPLICIT_END, tag) >= 0 && sameLine && !(i - startIndex === 1))) && ((!startsLine && this.tag(i - 1) !== ',') || !((two != null ? two[0] : void 0) === ':' || (one != null ? one[0] : void 0) === '@' && (three != null ? three[0] : void 0) === ':'))) || (tag === ',' && one && ((_ref1 = one[0]) !== 'IDENTIFIER' && _ref1 !== 'NUMBER' && _ref1 !== 'STRING' && _ref1 !== '@' && _ref1 !== 'TERMINATOR' && _ref1 !== 'OUTDENT')); - }; - action = function(token, i) { - var tok; - tok = this.generate('}', '}', token[2]); - return this.tokens.splice(i, 0, tok); - }; - return this.scanTokens(function(token, i, tokens) { - var ago, idx, prevTag, tag, tok, value, _ref, _ref1; - if (_ref = (tag = token[0]), __indexOf.call(EXPRESSION_START, _ref) >= 0) { - stack.push([(tag === 'INDENT' && this.tag(i - 1) === '{' ? '{' : tag), i]); - return 1; - } - if (__indexOf.call(EXPRESSION_END, tag) >= 0) { - start = stack.pop(); - return 1; - } - if (!(tag === ':' && ((ago = this.tag(i - 2)) === ':' || ((_ref1 = stack[stack.length - 1]) != null ? _ref1[0] : void 0) !== '{'))) { - return 1; - } - sameLine = true; - startIndex = i + 1; - stack.push(['{']); - idx = ago === '@' ? i - 2 : i - 1; - while (this.tag(idx - 2) === 'HERECOMMENT') { - idx -= 2; - } - prevTag = this.tag(idx - 1); - startsLine = !prevTag || (__indexOf.call(LINEBREAKS, prevTag) >= 0); - value = new String('{'); - value.generated = true; - tok = this.generate('{', value, token[2]); - tokens.splice(idx, 0, tok); - this.detectEnd(i + 2, condition, action); - return 2; - }); - }; - - Rewriter.prototype.addImplicitParentheses = function() { - var action, condition, noCall, seenControl, seenSingle; - noCall = seenSingle = seenControl = false; - condition = function(token, i) { - var post, tag, _ref, _ref1; - tag = token[0]; - if (!seenSingle && token.fromThen) { - return true; - } - if (tag === 'IF' || tag === 'ELSE' || tag === 'CATCH' || tag === '->' || tag === '=>' || tag === 'CLASS') { - seenSingle = true; - } - if (tag === 'IF' || tag === 'ELSE' || tag === 'SWITCH' || tag === 'TRY' || tag === '=') { - seenControl = true; - } - if ((tag === '.' || tag === '?.' || tag === '::') && this.tag(i - 1) === 'OUTDENT') { - return true; - } - return !token.generated && this.tag(i - 1) !== ',' && (__indexOf.call(IMPLICIT_END, tag) >= 0 || (tag === 'INDENT' && !seenControl)) && (tag !== 'INDENT' || (((_ref = this.tag(i - 2)) !== 'CLASS' && _ref !== 'EXTENDS') && (_ref1 = this.tag(i - 1), __indexOf.call(IMPLICIT_BLOCK, _ref1) < 0) && !((post = this.tokens[i + 1]) && post.generated && post[0] === '{'))); - }; - action = function(token, i) { - return this.tokens.splice(i, 0, this.generate('CALL_END', ')', token[2])); - }; - return this.scanTokens(function(token, i, tokens) { - var callObject, current, next, prev, tag, _ref, _ref1, _ref2; - tag = token[0]; - if (tag === 'CLASS' || tag === 'IF' || tag === 'FOR' || tag === 'WHILE') { - noCall = true; - } - _ref = tokens.slice(i - 1, (i + 1) + 1 || 9e9), prev = _ref[0], current = _ref[1], next = _ref[2]; - callObject = !noCall && tag === 'INDENT' && next && next.generated && next[0] === '{' && prev && (_ref1 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref1) >= 0); - seenSingle = false; - seenControl = false; - if (__indexOf.call(LINEBREAKS, tag) >= 0) { - noCall = false; - } - if (prev && !prev.spaced && tag === '?') { - token.call = true; - } - if (token.fromThen) { - return 1; - } - if (!(callObject || (prev != null ? prev.spaced : void 0) && (prev.call || (_ref2 = prev[0], __indexOf.call(IMPLICIT_FUNC, _ref2) >= 0)) && (__indexOf.call(IMPLICIT_CALL, tag) >= 0 || !(token.spaced || token.newLine) && __indexOf.call(IMPLICIT_UNSPACED_CALL, tag) >= 0))) { - return 1; - } - tokens.splice(i, 0, this.generate('CALL_START', '(', token[2])); - this.detectEnd(i + 1, condition, action); - if (prev[0] === '?') { - prev[0] = 'FUNC_EXIST'; - } - return 2; - }); - }; - - Rewriter.prototype.addImplicitIndentation = function() { - var action, condition, indent, outdent, starter; - starter = indent = outdent = null; - condition = function(token, i) { - var _ref; - return token[1] !== ';' && (_ref = token[0], __indexOf.call(SINGLE_CLOSERS, _ref) >= 0) && !(token[0] === 'ELSE' && (starter !== 'IF' && starter !== 'THEN')); - }; - action = function(token, i) { - return this.tokens.splice((this.tag(i - 1) === ',' ? i - 1 : i), 0, outdent); - }; - return this.scanTokens(function(token, i, tokens) { - var tag, _ref, _ref1; - tag = token[0]; - if (tag === 'TERMINATOR' && this.tag(i + 1) === 'THEN') { - tokens.splice(i, 1); - return 0; - } - if (tag === 'ELSE' && this.tag(i - 1) !== 'OUTDENT') { - tokens.splice.apply(tokens, [i, 0].concat(__slice.call(this.indentation(token)))); - return 2; - } - if (tag === 'CATCH' && ((_ref = this.tag(i + 2)) === 'OUTDENT' || _ref === 'TERMINATOR' || _ref === 'FINALLY')) { - tokens.splice.apply(tokens, [i + 2, 0].concat(__slice.call(this.indentation(token)))); - return 4; - } - if (__indexOf.call(SINGLE_LINERS, tag) >= 0 && this.tag(i + 1) !== 'INDENT' && !(tag === 'ELSE' && this.tag(i + 1) === 'IF')) { - starter = tag; - _ref1 = this.indentation(token, true), indent = _ref1[0], outdent = _ref1[1]; - if (starter === 'THEN') { - indent.fromThen = true; - } - tokens.splice(i + 1, 0, indent); - this.detectEnd(i + 2, condition, action); - if (tag === 'THEN') { - tokens.splice(i, 1); - } - return 1; - } - return 1; - }); - }; - - Rewriter.prototype.tagPostfixConditionals = function() { - var action, condition, original; - original = null; - condition = function(token, i) { - var _ref; - return (_ref = token[0]) === 'TERMINATOR' || _ref === 'INDENT'; - }; - action = function(token, i) { - if (token[0] !== 'INDENT' || (token.generated && !token.fromThen)) { - return original[0] = 'POST_' + original[0]; - } - }; - return this.scanTokens(function(token, i) { - if (token[0] !== 'IF') { - return 1; - } - original = token; - this.detectEnd(i + 1, condition, action); - return 1; - }); - }; - - Rewriter.prototype.indentation = function(token, implicit) { - var indent, outdent; - if (implicit == null) { - implicit = false; - } - indent = ['INDENT', 2, token[2]]; - outdent = ['OUTDENT', 2, token[2]]; - if (implicit) { - indent.generated = outdent.generated = true; - } - return [indent, outdent]; - }; - - Rewriter.prototype.generate = function(tag, value, line) { - var tok; - tok = [tag, value, line]; - tok.generated = true; - return tok; - }; - - Rewriter.prototype.tag = function(i) { - var _ref; - return (_ref = this.tokens[i]) != null ? _ref[0] : void 0; - }; - - return Rewriter; - - })(); - - BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], ['INDENT', 'OUTDENT'], ['CALL_START', 'CALL_END'], ['PARAM_START', 'PARAM_END'], ['INDEX_START', 'INDEX_END']]; - - exports.INVERSES = INVERSES = {}; - - EXPRESSION_START = []; - - EXPRESSION_END = []; - - for (_i = 0, _len = BALANCED_PAIRS.length; _i < _len; _i++) { - _ref = BALANCED_PAIRS[_i], left = _ref[0], rite = _ref[1]; - EXPRESSION_START.push(INVERSES[rite] = left); - EXPRESSION_END.push(INVERSES[left] = rite); - } - - EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END); - - IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS']; - - IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'NULL', 'UNDEFINED', 'UNARY', 'SUPER', '@', '->', '=>', '[', '(', '{', '--', '++']; - - IMPLICIT_UNSPACED_CALL = ['+', '-']; - - IMPLICIT_BLOCK = ['->', '=>', '{', '[', ',']; - - IMPLICIT_END = ['POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR']; - - SINGLE_LINERS = ['ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN']; - - SINGLE_CLOSERS = ['TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN']; - - LINEBREAKS = ['TERMINATOR', 'INDENT', 'OUTDENT']; - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/scope.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/scope.js deleted file mode 100644 index 3efc4ede671..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/lib/coffee-script/scope.js +++ /dev/null @@ -1,146 +0,0 @@ -// Generated by CoffeeScript 1.3.3 -(function() { - var Scope, extend, last, _ref; - - _ref = require('./helpers'), extend = _ref.extend, last = _ref.last; - - exports.Scope = Scope = (function() { - - Scope.root = null; - - function Scope(parent, expressions, method) { - this.parent = parent; - this.expressions = expressions; - this.method = method; - this.variables = [ - { - name: 'arguments', - type: 'arguments' - } - ]; - this.positions = {}; - if (!this.parent) { - Scope.root = this; - } - } - - Scope.prototype.add = function(name, type, immediate) { - if (this.shared && !immediate) { - return this.parent.add(name, type, immediate); - } - if (Object.prototype.hasOwnProperty.call(this.positions, name)) { - return this.variables[this.positions[name]].type = type; - } else { - return this.positions[name] = this.variables.push({ - name: name, - type: type - }) - 1; - } - }; - - Scope.prototype.namedMethod = function() { - if (this.method.name || !this.parent) { - return this.method; - } - return this.parent.namedMethod(); - }; - - Scope.prototype.find = function(name) { - if (this.check(name)) { - return true; - } - this.add(name, 'var'); - return false; - }; - - Scope.prototype.parameter = function(name) { - if (this.shared && this.parent.check(name, true)) { - return; - } - return this.add(name, 'param'); - }; - - Scope.prototype.check = function(name) { - var _ref1; - return !!(this.type(name) || ((_ref1 = this.parent) != null ? _ref1.check(name) : void 0)); - }; - - Scope.prototype.temporary = function(name, index) { - if (name.length > 1) { - return '_' + name + (index > 1 ? index - 1 : ''); - } else { - return '_' + (index + parseInt(name, 36)).toString(36).replace(/\d/g, 'a'); - } - }; - - Scope.prototype.type = function(name) { - var v, _i, _len, _ref1; - _ref1 = this.variables; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.name === name) { - return v.type; - } - } - return null; - }; - - Scope.prototype.freeVariable = function(name, reserve) { - var index, temp; - if (reserve == null) { - reserve = true; - } - index = 0; - while (this.check((temp = this.temporary(name, index)))) { - index++; - } - if (reserve) { - this.add(temp, 'var', true); - } - return temp; - }; - - Scope.prototype.assign = function(name, value) { - this.add(name, { - value: value, - assigned: true - }, true); - return this.hasAssignments = true; - }; - - Scope.prototype.hasDeclarations = function() { - return !!this.declaredVariables().length; - }; - - Scope.prototype.declaredVariables = function() { - var realVars, tempVars, v, _i, _len, _ref1; - realVars = []; - tempVars = []; - _ref1 = this.variables; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.type === 'var') { - (v.name.charAt(0) === '_' ? tempVars : realVars).push(v.name); - } - } - return realVars.sort().concat(tempVars.sort()); - }; - - Scope.prototype.assignedVariables = function() { - var v, _i, _len, _ref1, _results; - _ref1 = this.variables; - _results = []; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - v = _ref1[_i]; - if (v.type.assigned) { - _results.push("" + v.name + " = " + v.type.value); - } - } - return _results; - }; - - return Scope; - - })(); - -}).call(this); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/package.json deleted file mode 100644 index 0d90cc629ef..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/coffee-script/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "coffee-script", - "description": "Unfancy JavaScript", - "keywords": [ - "javascript", - "language", - "coffeescript", - "compiler" - ], - "author": { - "name": "Jeremy Ashkenas" - }, - "version": "1.3.3", - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE" - } - ], - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "lib": "./lib/coffee-script" - }, - "main": "./lib/coffee-script/coffee-script", - "bin": { - "coffee": "./bin/coffee", - "cake": "./bin/cake" - }, - "homepage": "http://coffeescript.org", - "bugs": "https://github.com/jashkenas/coffee-script/issues", - "repository": { - "type": "git", - "url": "git://github.com/jashkenas/coffee-script.git" - }, - "devDependencies": { - "uglify-js": ">=1.0.0", - "jison": ">=0.2.0" - }, - "readme": "\n {\n } } {\n { { } }\n } }{ {\n { }{ } } _____ __ __\n ( }{ }{ { ) / ____| / _|/ _|\n .- { { } { }} -. | | ___ | |_| |_ ___ ___\n ( ( } { } { } } ) | | / _ \\| _| _/ _ \\/ _ \\\n |`-..________ ..-'| | |___| (_) | | | || __/ __/\n | | \\_____\\___/|_| |_| \\___|\\___|\n | ;--.\n | (__ \\ _____ _ _\n | | ) ) / ____| (_) | |\n | |/ / | (___ ___ _ __ _ _ __ | |_\n | ( / \\___ \\ / __| '__| | '_ \\| __|\n | |/ ____) | (__| | | | |_) | |_\n | | |_____/ \\___|_| |_| .__/ \\__|\n `-.._________..-' | |\n |_|\n\n\n CoffeeScript is a little language that compiles into JavaScript.\n\n Install Node.js, and then the CoffeeScript compiler:\n sudo bin/cake install\n\n Or, if you have the Node Package Manager installed:\n npm install -g coffee-script\n (Leave off the -g if you don't wish to install globally.)\n\n Execute a script:\n coffee /path/to/script.coffee\n\n Compile a script:\n coffee -c /path/to/script.coffee\n\n For documentation, usage, and examples, see:\n http://coffeescript.org/\n\n To suggest a feature, report a bug, or general discussion:\n http://github.com/jashkenas/coffee-script/issues/\n\n If you'd like to chat, drop by #coffeescript on Freenode IRC,\n or on webchat.freenode.net.\n\n The source repository:\n git://github.com/jashkenas/coffee-script.git\n\n All contributors are listed here:\n http://github.com/jashkenas/coffee-script/contributors\n", - "_id": "coffee-script@1.3.3", - "dist": { - "shasum": "fdb03098caee97f22944d655e32204a58522fa9f" - }, - "_from": "coffee-script@1.x.x" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/README.markdown deleted file mode 100644 index 1326dc18366..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/README.markdown +++ /dev/null @@ -1,45 +0,0 @@ -commondir -========= - -Compute the closest common parent directory among an array of directories. - -example -======= - -dir ---- - - > var commondir = require('commondir'); - > commondir([ '/x/y/z', '/x/y', '/x/y/w/q' ]) - '/x/y' - -base ----- - - > var commondir = require('commondir') - > commondir('/foo/bar', [ '../baz', '../../foo/quux', './bizzy' ]) - '/foo' - -methods -======= - -var commondir = require('commondir'); - -commondir(absolutePaths) ------------------------- - -Compute the closest common parent directory for an array `absolutePaths`. - -commondir(basedir, relativePaths) ---------------------------------- - -Compute the closest common parent directory for an array `relativePaths` which -will be resolved for each `dir` in `relativePaths` according to: -`path.resolve(basedir, dir)`. - -installation -============ - -Using [npm](http://npmjs.org), just do: - - npm install commondir diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/base.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/base.js deleted file mode 100644 index 715e280c37b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/base.js +++ /dev/null @@ -1,3 +0,0 @@ -var commondir = require('commondir'); -var dir = commondir('/foo/bar', [ '../baz', '../../foo/quux', './bizzy' ]) -console.log(dir); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/dir.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/dir.js deleted file mode 100644 index 0a5e9cca881..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/example/dir.js +++ /dev/null @@ -1,3 +0,0 @@ -var commondir = require('commondir'); -var dir = commondir([ '/x/y/z', '/x/y', '/x/y/w/q' ]) -console.log(dir); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/index.js deleted file mode 100644 index fa77d0452a9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/index.js +++ /dev/null @@ -1,29 +0,0 @@ -var path = require('path'); - -module.exports = function (basedir, relfiles) { - if (relfiles) { - var files = relfiles.map(function (r) { - return path.resolve(basedir, r); - }); - } - else { - var files = basedir; - } - - var res = files.slice(1).reduce(function (ps, file) { - if (!file.match(/^([A-Za-z]:)?\/|\\/)) { - throw new Error('relative path without a basedir'); - } - - var xs = file.split(/\/+|\\+/); - for ( - var i = 0; - ps[i] === xs[i] && i < Math.min(ps.length, xs.length); - i++ - ); - return ps.slice(0, i); - }, files[0].split(/\/+|\\+/)); - - // Windows correctly handles paths with forward-slashes - return res.length > 1 ? res.join('/') : '/' -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/package.json deleted file mode 100644 index 682e62c4b26..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "commondir", - "version": "0.0.1", - "description": "Compute the closest common parent for file paths", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "expresso": "0.7.x" - }, - "scripts": { - "test": "expresso" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-commondir.git" - }, - "keywords": [ - "common", - "path", - "directory", - "file", - "parent", - "root" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "commondir\n=========\n\nCompute the closest common parent directory among an array of directories.\n\nexample\n=======\n\ndir\n---\n\n > var commondir = require('commondir');\n > commondir([ '/x/y/z', '/x/y', '/x/y/w/q' ])\n '/x/y'\n\nbase\n----\n\n > var commondir = require('commondir')\n > commondir('/foo/bar', [ '../baz', '../../foo/quux', './bizzy' ])\n '/foo'\n\nmethods\n=======\n\nvar commondir = require('commondir');\n\ncommondir(absolutePaths)\n------------------------\n\nCompute the closest common parent directory for an array `absolutePaths`.\n\ncommondir(basedir, relativePaths)\n---------------------------------\n\nCompute the closest common parent directory for an array `relativePaths` which\nwill be resolved for each `dir` in `relativePaths` according to:\n`path.resolve(basedir, dir)`.\n\ninstallation\n============\n\nUsing [npm](http://npmjs.org), just do:\n\n npm install commondir\n", - "_id": "commondir@0.0.1", - "dist": { - "shasum": "ad76caa7f50e586c1208777ff38d774a52de90d0" - }, - "_from": "commondir@~0.0.1" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/test/dirs.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/test/dirs.js deleted file mode 100644 index 946026d1f36..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/commondir/test/dirs.js +++ /dev/null @@ -1,66 +0,0 @@ -var assert = require('assert'); -var commondir = require('../'); - -exports.common = function () { - assert.equal( - commondir([ '/foo', '//foo/bar', '/foo//bar/baz' ]), - '/foo' - ); - - assert.equal( - commondir([ '/a/b/c', '/a/b', '/a/b/c/d/e' ]), - '/a/b' - ); - - assert.equal( - commondir([ '/x/y/z/w', '/xy/z', '/x/y/z' ]), - '/' - ); - - assert.equal( - commondir([ 'X:\\foo', 'X:\\\\foo\\bar', 'X://foo/bar/baz' ]), - 'X:/foo' - ); - - assert.equal( - commondir([ 'X:\\a\\b\\c', 'X:\\a\\b', 'X:\\a\\b\\c\\d\\e' ]), - 'X:/a/b' - ); - - assert.equal( - commondir([ 'X:\\x\\y\\z\\w', '\\\\xy\\z', '\\x\\y\\z' ]), - '/' - ); - - assert.throws(function () { - assert.equal( - commondir([ '/x/y/z/w', 'qrs', '/x/y/z' ]), - '/' - ); - }); -}; - -exports.base = function () { - assert.equal( - commondir('/foo/bar', [ 'baz', './quux', '../bar/bazzy' ]), - '/foo/bar' - ); - - assert.equal( - commondir('/a/b', [ 'c', '../b/.', '../../a/b/e' ]), - '/a/b' - ); - - assert.equal( - commondir('/a/b/c', [ '..', '../d', '../../a/z/e' ]), - '/a' - ); - - assert.equal( - commondir('/foo/bar', [ 'baz', '.\\quux', '..\\bar\\bazzy' ]), - '/foo/bar' - ); - - // Tests including X:\ basedirs must wait until path.resolve supports - // Windows-style paths, starting in Node.js v0.5.X -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/bundle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/bundle.js deleted file mode 100644 index 02698cc77c2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/bundle.js +++ /dev/null @@ -1,637 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - cwd = path.resolve('/', cwd); - var y = cwd || '/'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -require.define = function (filename, fn) { - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -if (!process.env) process.env = {}; -if (!process.argv) process.argv = []; - -require.define("path", function (require, module, exports, __dirname, __filename) { -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; - -}); - -require.define("crypto", function (require, module, exports, __dirname, __filename) { -module.exports = require("crypto-browserify") -}); - -require.define("/node_modules/crypto-browserify/package.json", function (require, module, exports, __dirname, __filename) { -module.exports = {} -}); - -require.define("/node_modules/crypto-browserify/index.js", function (require, module, exports, __dirname, __filename) { -var sha = require('./sha') - -var algorithms = { - sha1: { - hex: sha.hex_sha1, - binary: sha.b64_sha1, - ascii: sha.str_sha1 - } -} - -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/dominictarr/crypto-browserify' - ].join('\n')) -} - -exports.createHash = function (alg) { - alg = alg || 'sha1' - if(!algorithms[alg]) - error('algorithm:', alg, 'is not yet supported') - var s = '' - _alg = algorithms[alg] - return { - update: function (data) { - s += data - return this - }, - digest: function (enc) { - enc = enc || 'binary' - var fn - if(!(fn = _alg[enc])) - error('encoding:', enc , 'is not yet supported for algorithm', alg) - var r = fn(s) - s = null //not meant to use the hash after you've called digest. - return r - } - } -} -// the least I can do is make error messages for the rest of the node.js/crypto api. -;['createCredentials' -, 'createHmac' -, 'createCypher' -, 'createCypheriv' -, 'createDecipher' -, 'createDecipheriv' -, 'createSign' -, 'createVerify' -, 'createDeffieHellman', -, 'pbkdf2', -, 'randomBytes' ].forEach(function (name) { - exports[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}) - -}); - -require.define("/node_modules/crypto-browserify/sha.js", function (require, module, exports, __dirname, __filename) { -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -exports.hex_sha1 = hex_sha1; -exports.b64_sha1 = b64_sha1; -exports.str_sha1 = str_sha1; -exports.hex_hmac_sha1 = hex_hmac_sha1; -exports.b64_hmac_sha1 = b64_hmac_sha1; -exports.str_hmac_sha1 = str_hmac_sha1; - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} -function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} -function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} -function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} -function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} -function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} - -/* - * Perform a simple self-test to see if the VM is working - */ -function sha1_vm_test() -{ - return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; -} - -/* - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ -function core_sha1(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - -/* - * Perform the appropriate triplet combination function for the current - * iteration - */ -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - -/* - * Determine the appropriate additive constant for the current iteration - */ -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - -/* - * Calculate the HMAC-SHA1 of a key and some data - */ -function core_hmac_sha1(key, data) -{ - var bkey = str2binb(key); - if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); - return core_sha1(opad.concat(hash), 512 + 160); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert an 8-bit or 16-bit string to an array of big-endian words - * In 8-bit function, characters >255 have their hi-byte silently ignored. - */ -function str2binb(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); - return bin; -} - -/* - * Convert an array of big-endian words to a string - */ -function binb2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); - return str; -} - -/* - * Convert an array of big-endian words to a hex string. - */ -function binb2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of big-endian words to a base-64 string - */ -function binb2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} - - -}); - -require.define("/test.js", function (require, module, exports, __dirname, __filename) { - var crypto = require('crypto') -var abc = crypto.createHash('sha1').update('abc').digest('hex') -console.log(abc) -//require('hello').inlineCall().call2() - -}); -require("/test.js"); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/index.html deleted file mode 100644 index 9d55c6d7332..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/index.html +++ /dev/null @@ -1,12 +0,0 @@ -<!doctype html> -<html> -<script src=bundle.js></script> -<body> - <pre> - require('crypto').createHash('sha1').update('abc').digest('hex') == '<span id=ans></span>' - </pre> -</body> -<script> - document.getElementById('ans').innerHTML = require('crypto').createHash('sha1').update('abc').digest('hex') -</script> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/test.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/test.js deleted file mode 100644 index f1b0e4a9fc9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/example/test.js +++ /dev/null @@ -1,4 +0,0 @@ -var crypto = require('crypto') -var abc = crypto.createHash('sha1').update('abc').digest('hex') -console.log(abc) -//require('hello').inlineCall().call2() diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/index.js deleted file mode 100644 index c1a77ad34e4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/index.js +++ /dev/null @@ -1,68 +0,0 @@ -var sha = require('./sha') -var rng = require('./rng') - -var algorithms = { - sha1: { - hex: sha.hex_sha1, - binary: sha.b64_sha1, - ascii: sha.str_sha1 - } -} - -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/dominictarr/crypto-browserify' - ].join('\n')) -} - -exports.createHash = function (alg) { - alg = alg || 'sha1' - if(!algorithms[alg]) - error('algorithm:', alg, 'is not yet supported') - var s = '' - _alg = algorithms[alg] - return { - update: function (data) { - s += data - return this - }, - digest: function (enc) { - enc = enc || 'binary' - var fn - if(!(fn = _alg[enc])) - error('encoding:', enc , 'is not yet supported for algorithm', alg) - var r = fn(s) - s = null //not meant to use the hash after you've called digest. - return r - } - } -} - -exports.randomBytes = function(size, callback) { - if (callback && callback.call) { - try { - callback.call(this, undefined, rng(size)); - } catch (err) { callback(err); } - } else { - return rng(size); - } -} - -// the least I can do is make error messages for the rest of the node.js/crypto api. -;['createCredentials' -, 'createHmac' -, 'createCypher' -, 'createCypheriv' -, 'createDecipher' -, 'createDecipheriv' -, 'createSign' -, 'createVerify' -, 'createDeffieHellman' -, 'pbkdf2'].forEach(function (name) { - exports[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/package.json deleted file mode 100644 index 19938b60fd9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "name": "crypto-browserify", - "description": "partial implementation of crypto for the browser", - "version": "0.1.0", - "homepage": "https://github.com/dominictarr/crypto-browserify", - "repository": { - "url": "" - }, - "scripts": { - "test": "node test/simple.js" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "_id": "crypto-browserify@0.1.0", - "dist": { - "shasum": "62d7228ac44163a95b42e2bdf92494a42993a6a4" - }, - "_from": "crypto-browserify@~0" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/readme.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/readme.markdown deleted file mode 100644 index 2234c531f39..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/readme.markdown +++ /dev/null @@ -1,14 +0,0 @@ -# crypto-browserify - -A (partial) port of `crypto` to the browser. - -Basically, I found some crypto implemented in JS lieing on the internet somewhere -and wrapped it in the part of the `crypto` api that I am currently using. - -In a way that will be compatible with [browserify](https://github.com/substack/node-browserify/). - -I will extend this if I need more features, or if anyone else wants to extend this, -I will add you as a maintainer. - -Provided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course. - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/rng.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/rng.js deleted file mode 100644 index 2160788a15a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/rng.js +++ /dev/null @@ -1,37 +0,0 @@ -// Original code adapted from Robert Kieffer. -// details at https://github.com/broofa/node-uuid -(function() { - var _global = this; - - var mathRNG, whatwgRNG; - - // NOTE: Math.random() does not guarantee "cryptographic quality" - mathRNG = function(size) { - var bytes = new Array(size); - var r; - - for (var i = 0, r; i < size; i++) { - if ((i & 0x03) == 0) r = Math.random() * 0x100000000; - bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return bytes; - } - - // currently only available in webkit-based browsers. - if (_global.crypto && crypto.getRandomValues) { - var _rnds = new Uint32Array(4); - whatwgRNG = function(size) { - var bytes = new Array(size); - crypto.getRandomValues(_rnds); - - for (var c = 0 ; c < size; c++) { - bytes[c] = _rnds[c >> 2] >>> ((c & 0x03) * 8) & 0xff; - } - return bytes; - } - } - - module.exports = whatwgRNG || mathRNG; - -}())
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/sha.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/sha.js deleted file mode 100644 index 4f9cc3e97a0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/sha.js +++ /dev/null @@ -1,210 +0,0 @@ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -exports.hex_sha1 = hex_sha1; -exports.b64_sha1 = b64_sha1; -exports.str_sha1 = str_sha1; -exports.hex_hmac_sha1 = hex_hmac_sha1; -exports.b64_hmac_sha1 = b64_hmac_sha1; -exports.str_hmac_sha1 = str_hmac_sha1; - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} -function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} -function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} -function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} -function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} -function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} - -/* - * Perform a simple self-test to see if the VM is working - */ -function sha1_vm_test() -{ - return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; -} - -/* - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ -function core_sha1(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - -/* - * Perform the appropriate triplet combination function for the current - * iteration - */ -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - -/* - * Determine the appropriate additive constant for the current iteration - */ -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - -/* - * Calculate the HMAC-SHA1 of a key and some data - */ -function core_hmac_sha1(key, data) -{ - var bkey = str2binb(key); - if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); - return core_sha1(opad.concat(hash), 512 + 160); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert an 8-bit or 16-bit string to an array of big-endian words - * In 8-bit function, characters >255 have their hi-byte silently ignored. - */ -function str2binb(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); - return bin; -} - -/* - * Convert an array of big-endian words to a string - */ -function binb2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); - return str; -} - -/* - * Convert an array of big-endian words to a hex string. - */ -function binb2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of big-endian words to a base-64 string - */ -function binb2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/test/simple.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/test/simple.js deleted file mode 100644 index 2b0b994c95f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/crypto-browserify/test/simple.js +++ /dev/null @@ -1,25 +0,0 @@ -var crypto = require('crypto') -var cryptoB = require('../') -var assert = require('assert') - - -function assertSame (fn) { - fn(crypto, function (err, expected) { - fn(cryptoB, function (err, actual) { - assert.equal(actual, expected) - }) - }) -} - -assertSame(function (crypto, cb) { - cb(null, crypto.createHash('sha1').update('hello', 'utf-8').digest('hex')) -}) - -assert.equal(cryptoB.randomBytes(10).length, 10) - -cryptoB.randomBytes(10, function(ex, bytes) { - assert.ifError(ex) - bytes.forEach(function(bite) { - assert.equal(typeof bite, 'number') - }); -})
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/.travis.yml deleted file mode 100644 index f1d0f13c8a5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/README.markdown deleted file mode 100644 index 72ca69f850d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/README.markdown +++ /dev/null @@ -1,55 +0,0 @@ -deputy -====== - -This module is a caching layer around -[node-detective](http://github.com/substack/node-detective). - -[![build status](https://secure.travis-ci.org/substack/node-deputy.png)](http://travis-ci.org/substack/node-deputy) - -example -======= - -cache.js --------- - -``` js -var deputy = require('deputy'); -var detective = deputy(process.env.HOME + '/.config/deputy.json'); - -var deps = detective.find('require("a"); require("b")'); -console.dir(deps); -``` - -output: - -``` -$ node cache.js -{ strings: [ 'a', 'b' ], expressions: [] } -$ cat ~/.config/deputy.json -{"55952d490bd28e3e256f0b036ced834d":{"strings":["a","b"],"expressions":[]}} -``` - -methods -======= - -``` js -var deputy = require('deputy') -``` - -var detective = deputy(cacheFile) ---------------------------------- - -Return a new [detective](http://github.com/substack/node-detective) -object using `cacheFile` for caching. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install deputy - -license -======= - -MIT/X11 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/example/cache.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/example/cache.js deleted file mode 100644 index 8016b04b4b9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/example/cache.js +++ /dev/null @@ -1,5 +0,0 @@ -var deputy = require('deputy'); -var detective = deputy(process.env.HOME + '/.config/deputy.json'); - -var deps = detective.find('require("a"); require("b")'); -console.dir(deps); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/index.js deleted file mode 100644 index 5dd71bb779c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/index.js +++ /dev/null @@ -1,45 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var crypto = require('crypto'); - -var mkdirp = require('mkdirp'); -var detective = require('detective'); - -module.exports = function (cacheFile) { - mkdirp.sync(path.dirname(cacheFile), 0700); - - var cache = {}; - if (path.existsSync(cacheFile)) { - var body = fs.readFileSync(cacheFile); - try { - cache = JSON.parse(body); - } - catch (err) {} - } - - function save (h, res) { - cache[h] = res; - fs.writeFileSync(cacheFile, JSON.stringify(cache)); - } - - function hash (src) { - return new crypto.Hash('md5').update(src).digest('hex'); - } - - var deputy = function (src) { - return deputy.find(src).strings; - }; - - deputy.find = function (src) { - var h = hash(src); - var c = cache[h]; - if (c) return c; - else { - c = detective.find(src); - save(h, c); - return c; - } - }; - - return deputy; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.orig b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.orig deleted file mode 100644 index 9303c347ee6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.orig +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.rej b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.rej deleted file mode 100644 index 69244ff8773..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.gitignore.rej +++ /dev/null @@ -1,5 +0,0 @@ ---- /dev/null -+++ .gitignore -@@ -0,0 +1,2 @@ -+node_modules/ -+npm-debug.log
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.npmignore b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c347ee6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.travis.yml deleted file mode 100644 index f1d0f13c8a5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/LICENSE b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1aeb01d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/README.markdown deleted file mode 100644 index 40de04f71e1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/README.markdown +++ /dev/null @@ -1,61 +0,0 @@ -mkdirp -====== - -Like `mkdir -p`, but in node.js! - -[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) - -example -======= - -pow.js ------- - var mkdirp = require('mkdirp'); - - mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') - }); - -Output - pow! - -And now /tmp/foo/bar/baz exists, huzzah! - -methods -======= - -var mkdirp = require('mkdirp'); - -mkdirp(dir, mode, cb) ---------------------- - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -`cb(err, made)` fires with the error or the first directory `made` -that had to be created, if any. - -mkdirp.sync(dir, mode) ----------------------- - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -Returns the first directory that had to be created, if any. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install mkdirp - -license -======= - -MIT/X11 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e6924212e6a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.orig b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.orig deleted file mode 100644 index 77414622120..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.orig +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', 0755, function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.rej b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.rej deleted file mode 100644 index 81e7f431156..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/examples/pow.js.rej +++ /dev/null @@ -1,19 +0,0 @@ ---- examples/pow.js -+++ examples/pow.js -@@ -1,6 +1,15 @@ --var mkdirp = require('mkdirp').mkdirp; -+var mkdirp = require('../').mkdirp, -+ mkdirpSync = require('../').mkdirpSync; - - mkdirp('/tmp/foo/bar/baz', 0755, function (err) { - if (err) console.error(err) - else console.log('pow!') - }); -+ -+try { -+ mkdirpSync('/tmp/bar/foo/baz', 0755); -+ console.log('double pow!'); -+} -+catch (ex) { -+ console.log(ex); -+}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/index.js deleted file mode 100644 index 874b31095a8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/index.js +++ /dev/null @@ -1,94 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f, made) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, mode, cb, made); - }); - break; - - case 'EISDIR': - case 'EPERM': - // Operation not permitted or already is a dir. - // This is the error you get when trying to mkdir('c:/') - // on windows, or mkdir('/') on unix. Make sure it's a - // dir by falling through to the EEXIST case. - case 'EROFS': - // a read-only file system. - // However, the dir could already exist, in which case - // the EROFS error will be obscuring a EEXIST! - // Fallthrough to that case. - case 'EEXIST': - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - - default: - cb(er, made); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode, made) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), mode, made); - sync(p, mode, made); - break; - - case 'EEXIST' : - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - default : - throw err0 - break; - } - } - - return made; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/package.json deleted file mode 100644 index 68dca958f56..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "mkdirp", - "description": "Recursively mkdir, like `mkdir -p`", - "version": "0.3.3", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "main": "./index", - "keywords": [ - "mkdir", - "directory" - ], - "repository": { - "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.2.4" - }, - "license": "MIT/X11", - "engines": { - "node": "*" - }, - "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", - "_id": "mkdirp@0.3.3", - "_from": "mkdirp@~0.3.3" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/chmod.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8e9b5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/clobber.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb70998700..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/mkdirp.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70c109..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abbd232..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm_sync.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f609069..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/race.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a04476365..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/rel.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 79858243ab9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5613e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return_sync.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3558d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/root.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2f358..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, 0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/sync.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cada84c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, 0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe22bc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask_sync.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cbbf41..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/package.json deleted file mode 100644 index af7b9998d50..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "deputy", - "description": "caching layer for detective", - "version": "0.0.2", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-deputy.git" - }, - "main": "index.js", - "keywords": [ - "detective", - "require", - "cache" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "mkdirp": "~0.3.3", - "detective": "~0.1.1" - }, - "devDependencies": { - "tap": "0.0.x" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "deputy\n======\n\nThis module is a caching layer around\n[node-detective](http://github.com/substack/node-detective).\n\n[![build status](https://secure.travis-ci.org/substack/node-deputy.png)](http://travis-ci.org/substack/node-deputy)\n\nexample\n=======\n\ncache.js\n--------\n\n``` js\nvar deputy = require('deputy');\nvar detective = deputy(process.env.HOME + '/.config/deputy.json');\n\nvar deps = detective.find('require(\"a\"); require(\"b\")');\nconsole.dir(deps);\n```\n\noutput:\n\n```\n$ node cache.js \n{ strings: [ 'a', 'b' ], expressions: [] }\n$ cat ~/.config/deputy.json \n{\"55952d490bd28e3e256f0b036ced834d\":{\"strings\":[\"a\",\"b\"],\"expressions\":[]}}\n```\n\nmethods\n=======\n\n``` js\nvar deputy = require('deputy')\n```\n\nvar detective = deputy(cacheFile)\n---------------------------------\n\nReturn a new [detective](http://github.com/substack/node-detective)\nobject using `cacheFile` for caching.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install deputy\n\nlicense\n=======\n\nMIT/X11\n", - "_id": "deputy@0.0.2", - "dist": { - "shasum": "608a253be073b7e9cec9ec2ea2d6eca542f8fa84" - }, - "_from": "deputy@~0.0.0" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/test/cache.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/test/cache.js deleted file mode 100644 index 436fe7c83be..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/deputy/test/cache.js +++ /dev/null @@ -1,58 +0,0 @@ -var test = require('tap').test; -var deputy = require('../'); -var fs = require('fs'); -var crypto = require('crypto'); - -test('cache with new file', function (t) { - t.plan(4); - - var ps = []; for (var i = 0; i < 10; i++) { - ps.push(Math.floor(Math.random() * (1<<30)).toString(16)); - } - var file = '/tmp/' + ps.join('/') + '.json'; - var detective = deputy(file); - - var src = [ - [ - 'require("a"); require("b")', - { strings : ['a','b'], expressions : [] } - ], - [ - 'require("x"); require(x+1)', - { strings : [ 'x' ], expressions : [ 'x+1' ] } - ] - ]; - - t.deepEqual(detective.find(src[0][0]), src[0][1]); - setTimeout(firstFile, 100); - - function compareSources (ix, cb) { - fs.readFile(file, function (err, body) { - t.deepEqual( - src.slice(0,ix).reduce(function (acc,s) { - acc[hash(s[0])] = s[1]; - return acc; - }, {}), - JSON.parse(body) - ); - cb(); - }); - } - - function firstFile () { - compareSources(1, function () { - t.deepEqual(detective.find(src[1][0]), src[1][1]); - setTimeout(secondFile, 100); - }); - } - - function secondFile () { - compareSources(2, function () { - t.end(); - }); - } - - function hash (src) { - return new crypto.Hash('md5').update(src).digest('hex'); - } -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/.travis.yml deleted file mode 100644 index f1d0f13c8a5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/README.markdown deleted file mode 100644 index 90ffa1ac29f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/README.markdown +++ /dev/null @@ -1,64 +0,0 @@ -detective -========= - -Find all calls to require() no matter how crazily nested using a proper walk of -the AST. - -example -======= - -strings -------- - -strings_src.js: - -````javascript -var a = require('a'); -var b = require('b'); -var c = require('c'); -```` - -strings.js: - -````javascript -var detective = require('detective'); -var fs = require('fs'); - -var src = fs.readFileSync(__dirname + '/strings_src.js'); -var requires = detective(src); -console.dir(requires); -```` - -output: - - $ node examples/strings.js - [ 'a', 'b', 'c' ] - -methods -======= - -var detective = require('detective'); - -detective(src, opts) --------------------- - -Give some source body `src`, return an array of all the require()s with string -arguments. - -The options parameter `opts` is passed along to `detective.find()`. - -detective.find(src, opts) -------------------------- - -Give some source body `src`, return an object with "strings" and "expressions" -arrays for each of the require() calls. - -The "expressions" array will contain the stringified expressions. - -Optionally you can specify a different function besides `"require"` to analyze -with `opts.word`. - -installation -============ - - npm install detective diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings.js deleted file mode 100644 index c176e7ffacf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings.js +++ /dev/null @@ -1,6 +0,0 @@ -var detective = require('detective'); -var fs = require('fs'); - -var src = fs.readFileSync(__dirname + '/strings_src.js'); -var requires = detective(src); -console.dir(requires); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings_src.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings_src.js deleted file mode 100644 index 88d0832762e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/example/strings_src.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = require('a'); -var b = require('b'); -var c = require('c'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/index.js deleted file mode 100644 index 8df93583689..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/index.js +++ /dev/null @@ -1,56 +0,0 @@ -var uglify = require('uglify-js'); - -var traverse = function (node, cb, parent, grandparent) { - // Call cb on all good AST nodes. - if (Array.isArray(node) && node[0] - && typeof node[0] === 'object' && node[0].name) { - cb({ name : node[0].name, value : node.slice(1) , grandparent: grandparent}); - } - - // Traverse down the tree on arrays and objects. - if (Array.isArray(node) - || Object.prototype.toString.call(node) === "[object Object]") { - for (var key in node) traverse(node[key], cb, node, parent); - } -}; - -var walk = function (src, cb) { - var ast = uglify.parser.parse(src.toString(), false, true); - traverse(ast, cb); -}; - -var deparse = function (ast) { - return uglify.uglify.gen_code(ast); -}; - -var exports = module.exports = function (src, opts) { - return exports.find(src, opts).strings; -}; - -exports.find = function (src, opts) { - if (!opts) opts = {}; - var word = opts.word === undefined ? 'require' : opts.word; - - var modules = { strings : [], expressions : [] }; - - if (src.toString().indexOf(word) == -1) return modules; - - walk(src, function (node) { - var gp = node.grandparent; - var isRequire = Array.isArray(gp) - && gp[0] - && (gp[0] === 'call' || gp[0].name === 'call') - && gp[1][0] === 'name' - && gp[1][1] === word - ; - if(isRequire) { - if(node.name === 'string') { - modules.strings.push(node.value[0]); - } else { - modules.expressions.push(deparse(gp[2][0])); - } - } - }); - - return modules; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/.npmignore b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/.npmignore deleted file mode 100644 index d97eaa09bfb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.DS_Store -.tmp*~ -*.local.* -.pinf-*
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.html deleted file mode 100644 index 5f37ac0f0ca..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.html +++ /dev/null @@ -1,981 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" -lang="en" xml:lang="en"> -<head> -<title>UglifyJS – a JavaScript parser/compressor/beautifier</title> -<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> -<meta name="generator" content="Org-mode"/> -<meta name="generated" content="2011-12-09 14:59:08 EET"/> -<meta name="author" content="Mihai Bazon"/> -<meta name="description" content="a JavaScript parser/compressor/beautifier in JavaScript"/> -<meta name="keywords" content="javascript, js, parser, compiler, compressor, mangle, minify, minifier"/> -<style type="text/css"> - <!--/*--><![CDATA[/*><!--*/ - html { font-family: Times, serif; font-size: 12pt; } - .title { text-align: center; } - .todo { color: red; } - .done { color: green; } - .tag { background-color: #add8e6; font-weight:normal } - .target { } - .timestamp { color: #bebebe; } - .timestamp-kwd { color: #5f9ea0; } - .right {margin-left:auto; margin-right:0px; text-align:right;} - .left {margin-left:0px; margin-right:auto; text-align:left;} - .center {margin-left:auto; margin-right:auto; text-align:center;} - p.verse { margin-left: 3% } - pre { - border: 1pt solid #AEBDCC; - background-color: #F3F5F7; - padding: 5pt; - font-family: courier, monospace; - font-size: 90%; - overflow:auto; - } - table { border-collapse: collapse; } - td, th { vertical-align: top; } - th.right { text-align:center; } - th.left { text-align:center; } - th.center { text-align:center; } - td.right { text-align:right; } - td.left { text-align:left; } - td.center { text-align:center; } - dt { font-weight: bold; } - div.figure { padding: 0.5em; } - div.figure p { text-align: center; } - div.inlinetask { - padding:10px; - border:2px solid gray; - margin:10px; - background: #ffffcc; - } - textarea { overflow-x: auto; } - .linenr { font-size:smaller } - .code-highlighted {background-color:#ffff00;} - .org-info-js_info-navigation { border-style:none; } - #org-info-js_console-label { font-size:10px; font-weight:bold; - white-space:nowrap; } - .org-info-js_search-highlight {background-color:#ffff00; color:#000000; - font-weight:bold; } - /*]]>*/--> -</style> -<link rel="stylesheet" type="text/css" href="docstyle.css" /> -<script type="text/javascript"> -<!--/*--><![CDATA[/*><!--*/ - function CodeHighlightOn(elem, id) - { - var target = document.getElementById(id); - if(null != target) { - elem.cacheClassElem = elem.className; - elem.cacheClassTarget = target.className; - target.className = "code-highlighted"; - elem.className = "code-highlighted"; - } - } - function CodeHighlightOff(elem, id) - { - var target = document.getElementById(id); - if(elem.cacheClassElem) - elem.className = elem.cacheClassElem; - if(elem.cacheClassTarget) - target.className = elem.cacheClassTarget; - } -/*]]>*///--> -</script> - -</head> -<body> - -<div id="preamble"> - -</div> - -<div id="content"> -<h1 class="title">UglifyJS – a JavaScript parser/compressor/beautifier</h1> - - -<div id="table-of-contents"> -<h2>Table of Contents</h2> -<div id="text-table-of-contents"> -<ul> -<li><a href="#sec-1">1 UglifyJS — a JavaScript parser/compressor/beautifier </a> -<ul> -<li><a href="#sec-1-1">1.1 Unsafe transformations </a> -<ul> -<li><a href="#sec-1-1-1">1.1.1 Calls involving the global Array constructor </a></li> -<li><a href="#sec-1-1-2">1.1.2 <code>obj.toString()</code> ==> <code>obj+“”</code> </a></li> -</ul> -</li> -<li><a href="#sec-1-2">1.2 Install (NPM) </a></li> -<li><a href="#sec-1-3">1.3 Install latest code from GitHub </a></li> -<li><a href="#sec-1-4">1.4 Usage </a> -<ul> -<li><a href="#sec-1-4-1">1.4.1 API </a></li> -<li><a href="#sec-1-4-2">1.4.2 Beautifier shortcoming – no more comments </a></li> -<li><a href="#sec-1-4-3">1.4.3 Use as a code pre-processor </a></li> -</ul> -</li> -<li><a href="#sec-1-5">1.5 Compression – how good is it? </a></li> -<li><a href="#sec-1-6">1.6 Bugs? </a></li> -<li><a href="#sec-1-7">1.7 Links </a></li> -<li><a href="#sec-1-8">1.8 License </a></li> -</ul> -</li> -</ul> -</div> -</div> - -<div id="outline-container-1" class="outline-2"> -<h2 id="sec-1"><span class="section-number-2">1</span> UglifyJS — a JavaScript parser/compressor/beautifier </h2> -<div class="outline-text-2" id="text-1"> - - -<p> -This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on <a href="http://nodejs.org/">NodeJS</a>, but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the <code>exports.*</code> lines from UglifyJS sources). -</p> -<p> -The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in <a href="../lib/parse-js.js">parse-js.js</a> and it's a -port to JavaScript of the excellent <a href="http://marijn.haverbeke.nl/parse-js/">parse-js</a> Common Lisp library from <a href="http://marijn.haverbeke.nl/">Marijn Haverbeke</a>. -</p> -<p> -( See <a href="http://github.com/mishoo/cl-uglify-js">cl-uglify-js</a> if you're looking for the Common Lisp version of -UglifyJS. ) -</p> -<p> -The second part of this package, implemented in <a href="../lib/process.js">process.js</a>, inspects and -manipulates the AST generated by the parser to provide the following: -</p> -<ul> -<li>ability to re-generate JavaScript code from the AST. Optionally - indented—you can use this if you want to “beautify” a program that has - been compressed, so that you can inspect the source. But you can also run - our code generator to print out an AST without any whitespace, so you - achieve compression as well. - -</li> -<li>shorten variable names (usually to single characters). Our mangler will - analyze the code and generate proper variable names, depending on scope - and usage, and is smart enough to deal with globals defined elsewhere, or - with <code>eval()</code> calls or <code>with{}</code> statements. In short, if <code>eval()</code> or - <code>with{}</code> are used in some scope, then all variables in that scope and any - variables in the parent scopes will remain unmangled, and any references - to such variables remain unmangled as well. - -</li> -<li>various small optimizations that may lead to faster code but certainly - lead to smaller code. Where possible, we do the following: - -<ul> -<li>foo["bar"] ==> foo.bar - -</li> -<li>remove block brackets <code>{}</code> - -</li> -<li>join consecutive var declarations: - var a = 10; var b = 20; ==> var a=10,b=20; - -</li> -<li>resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the - replacement if the result occupies less bytes; for example 1/3 would - translate to 0.333333333333, so in this case we don't replace it. - -</li> -<li>consecutive statements in blocks are merged into a sequence; in many - cases, this leaves blocks with a single statement, so then we can remove - the block brackets. - -</li> -<li>various optimizations for IF statements: - -<ul> -<li>if (foo) bar(); else baz(); ==> foo?bar():baz(); -</li> -<li>if (!foo) bar(); else baz(); ==> foo?baz():bar(); -</li> -<li>if (foo) bar(); ==> foo&&bar(); -</li> -<li>if (!foo) bar(); ==> foo||bar(); -</li> -<li>if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); -</li> -<li>if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - -</li> -</ul> - -</li> -<li>remove some unreachable code and warn about it (code that follows a - <code>return</code>, <code>throw</code>, <code>break</code> or <code>continue</code> statement, except - function/variable declarations). - -</li> -<li>act a limited version of a pre-processor (c.f. the pre-processor of - C/C++) to allow you to safely replace selected global symbols with - specified values. When combined with the optimisations above this can - make UglifyJS operate slightly more like a compilation process, in - that when certain symbols are replaced by constant values, entire code - blocks may be optimised away as unreachable. -</li> -</ul> - -</li> -</ul> - - - -</div> - -<div id="outline-container-1-1" class="outline-3"> -<h3 id="sec-1-1"><span class="section-number-3">1.1</span> <span class="target">Unsafe transformations</span> </h3> -<div class="outline-text-3" id="text-1-1"> - - -<p> -The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the -<code>--unsafe</code> flag. -</p> - -</div> - -<div id="outline-container-1-1-1" class="outline-4"> -<h4 id="sec-1-1-1"><span class="section-number-4">1.1.1</span> Calls involving the global Array constructor </h4> -<div class="outline-text-4" id="text-1-1-1"> - - -<p> -The following transformations occur: -</p> - - - -<pre class="src src-js"><span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3, 4) => [1,2,3,4] -Array(a, b, c) => [a,b,c] -<span class="org-keyword">new</span> <span class="org-type">Array</span>(5) => Array(5) -<span class="org-keyword">new</span> <span class="org-type">Array</span>(a) => Array(a) -</pre> - - -<p> -These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. -</p> -<p> -UglifyJS does handle the case where Array is redefined locally, or even -globally but with a <code>function</code> or <code>var</code> declaration. Therefore, in the -following cases UglifyJS <b>doesn't touch</b> calls or instantiations of Array: -</p> - - - -<pre class="src src-js"><span class="org-comment-delimiter">// </span><span class="org-comment">case 1. globally declared variable</span> - <span class="org-keyword">var</span> <span class="org-variable-name">Array</span>; - <span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3); - Array(a, b); - - <span class="org-comment-delimiter">// </span><span class="org-comment">or (can be declared later)</span> - <span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3); - <span class="org-keyword">var</span> <span class="org-variable-name">Array</span>; - - <span class="org-comment-delimiter">// </span><span class="org-comment">or (can be a function)</span> - <span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3); - <span class="org-keyword">function</span> <span class="org-function-name">Array</span>() { ... } - -<span class="org-comment-delimiter">// </span><span class="org-comment">case 2. declared in a function</span> - (<span class="org-keyword">function</span>(){ - a = <span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3); - b = Array(5, 6); - <span class="org-keyword">var</span> <span class="org-variable-name">Array</span>; - })(); - - <span class="org-comment-delimiter">// </span><span class="org-comment">or</span> - (<span class="org-keyword">function</span>(<span class="org-variable-name">Array</span>){ - <span class="org-keyword">return</span> Array(5, 6, 7); - })(); - - <span class="org-comment-delimiter">// </span><span class="org-comment">or</span> - (<span class="org-keyword">function</span>(){ - <span class="org-keyword">return</span> <span class="org-keyword">new</span> <span class="org-type">Array</span>(1, 2, 3, 4); - <span class="org-keyword">function</span> <span class="org-function-name">Array</span>() { ... } - })(); - - <span class="org-comment-delimiter">// </span><span class="org-comment">etc.</span> -</pre> - - -</div> - -</div> - -<div id="outline-container-1-1-2" class="outline-4"> -<h4 id="sec-1-1-2"><span class="section-number-4">1.1.2</span> <code>obj.toString()</code> ==> <code>obj+“”</code> </h4> -<div class="outline-text-4" id="text-1-1-2"> - - -</div> -</div> - -</div> - -<div id="outline-container-1-2" class="outline-3"> -<h3 id="sec-1-2"><span class="section-number-3">1.2</span> Install (NPM) </h3> -<div class="outline-text-3" id="text-1-2"> - - -<p> -UglifyJS is now available through NPM — <code>npm install uglify-js</code> should do -the job. -</p> -</div> - -</div> - -<div id="outline-container-1-3" class="outline-3"> -<h3 id="sec-1-3"><span class="section-number-3">1.3</span> Install latest code from GitHub </h3> -<div class="outline-text-3" id="text-1-3"> - - - - - -<pre class="src src-sh"><span class="org-comment-delimiter">## </span><span class="org-comment">clone the repository</span> -mkdir -p /where/you/wanna/put/it -<span class="org-builtin">cd</span> /where/you/wanna/put/it -git clone git://github.com/mishoo/UglifyJS.git - -<span class="org-comment-delimiter">## </span><span class="org-comment">make the module available to Node</span> -mkdir -p ~/.node_libraries/ -<span class="org-builtin">cd</span> ~/.node_libraries/ -ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js - -<span class="org-comment-delimiter">## </span><span class="org-comment">and if you want the CLI script too:</span> -mkdir -p ~/bin -<span class="org-builtin">cd</span> ~/bin -ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs - <span class="org-comment-delimiter"># </span><span class="org-comment">(then add ~/bin to your $PATH if it's not there already)</span> -</pre> - - -</div> - -</div> - -<div id="outline-container-1-4" class="outline-3"> -<h3 id="sec-1-4"><span class="section-number-3">1.4</span> Usage </h3> -<div class="outline-text-3" id="text-1-4"> - - -<p> -There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: -</p> - - - -<pre class="src src-sh">uglifyjs [ options... ] [ filename ] -</pre> - - -<p> -<code>filename</code> should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. -</p> -<p> -Supported options: -</p> -<ul> -<li><code>-b</code> or <code>--beautify</code> — output indented code; when passed, additional - options control the beautifier: - -<ul> -<li><code>-i N</code> or <code>--indent N</code> — indentation level (number of spaces) - -</li> -<li><code>-q</code> or <code>--quote-keys</code> — quote keys in literal objects (by default, - only keys that cannot be identifier names will be quotes). - -</li> -</ul> - -</li> -<li><code>--ascii</code> — pass this argument to encode non-ASCII characters as - <code>\uXXXX</code> sequences. By default UglifyJS won't bother to do it and will - output Unicode characters instead. (the output is always encoded in UTF8, - but if you pass this option you'll only get ASCII). - -</li> -<li><code>-nm</code> or <code>--no-mangle</code> — don't mangle names. - -</li> -<li><code>-nmf</code> or <code>--no-mangle-functions</code> – in case you want to mangle variable - names, but not touch function names. - -</li> -<li><code>-ns</code> or <code>--no-squeeze</code> — don't call <code>ast_squeeze()</code> (which does various - optimizations that result in smaller, less readable code). - -</li> -<li><code>-mt</code> or <code>--mangle-toplevel</code> — mangle names in the toplevel scope too - (by default we don't do this). - -</li> -<li><code>--no-seqs</code> — when <code>ast_squeeze()</code> is called (thus, unless you pass - <code>--no-squeeze</code>) it will reduce consecutive statements in blocks into a - sequence. For example, "a = 10; b = 20; foo();" will be written as - "a=10,b=20,foo();". In various occasions, this allows us to discard the - block brackets (since the block becomes a single statement). This is ON - by default because it seems safe and saves a few hundred bytes on some - libs that I tested it on, but pass <code>--no-seqs</code> to disable it. - -</li> -<li><code>--no-dead-code</code> — by default, UglifyJS will remove code that is - obviously unreachable (code that follows a <code>return</code>, <code>throw</code>, <code>break</code> or - <code>continue</code> statement and is not a function/variable declaration). Pass - this option to disable this optimization. - -</li> -<li><code>-nc</code> or <code>--no-copyright</code> — by default, <code>uglifyjs</code> will keep the initial - comment tokens in the generated code (assumed to be copyright information - etc.). If you pass this it will discard it. - -</li> -<li><code>-o filename</code> or <code>--output filename</code> — put the result in <code>filename</code>. If - this isn't given, the result goes to standard output (or see next one). - -</li> -<li><code>--overwrite</code> — if the code is read from a file (not from STDIN) and you - pass <code>--overwrite</code> then the output will be written in the same file. - -</li> -<li><code>--ast</code> — pass this if you want to get the Abstract Syntax Tree instead - of JavaScript as output. Useful for debugging or learning more about the - internals. - -</li> -<li><code>-v</code> or <code>--verbose</code> — output some notes on STDERR (for now just how long - each operation takes). - -</li> -<li><code>-d SYMBOL[=VALUE]</code> or <code>--define SYMBOL[=VALUE]</code> — will replace - all instances of the specified symbol where used as an identifier - (except where symbol has properly declared by a var declaration or - use as function parameter or similar) with the specified value. This - argument may be specified multiple times to define multiple - symbols - if no value is specified the symbol will be replaced with - the value <code>true</code>, or you can specify a numeric value (such as - <code>1024</code>), a quoted string value (such as ="object"= or - ='https://github.com'<code>), or the name of another symbol or keyword (such as =null</code> or <code>document</code>). - This allows you, for example, to assign meaningful names to key - constant values but discard the symbolic names in the uglified - version for brevity/efficiency, or when used wth care, allows - UglifyJS to operate as a form of <b>conditional compilation</b> - whereby defining appropriate values may, by dint of the constant - folding and dead code removal features above, remove entire - superfluous code blocks (e.g. completely remove instrumentation or - trace code for production use). - Where string values are being defined, the handling of quotes are - likely to be subject to the specifics of your command shell - environment, so you may need to experiment with quoting styles - depending on your platform, or you may find the option - <code>--define-from-module</code> more suitable for use. - -</li> -<li><code>-define-from-module SOMEMODULE</code> — will load the named module (as - per the NodeJS <code>require()</code> function) and iterate all the exported - properties of the module defining them as symbol names to be defined - (as if by the <code>--define</code> option) per the name of each property - (i.e. without the module name prefix) and given the value of the - property. This is a much easier way to handle and document groups of - symbols to be defined rather than a large number of <code>--define</code> - options. - -</li> -<li><code>--unsafe</code> — enable other additional optimizations that are known to be - unsafe in some contrived situations, but could still be generally useful. - For now only these: - -<ul> -<li>foo.toString() ==> foo+"" -</li> -<li>new Array(x,…) ==> [x,…] -</li> -<li>new Array(x) ==> Array(x) - -</li> -</ul> - -</li> -<li><code>--max-line-len</code> (default 32K characters) — add a newline after around - 32K characters. I've seen both FF and Chrome croak when all the code was - on a single line of around 670K. Pass –max-line-len 0 to disable this - safety feature. - -</li> -<li><code>--reserved-names</code> — some libraries rely on certain names to be used, as - pointed out in issue #92 and #81, so this option allow you to exclude such - names from the mangler. For example, to keep names <code>require</code> and <code>$super</code> - intact you'd specify –reserved-names "require,$super". - -</li> -<li><code>--inline-script</code> – when you want to include the output literally in an - HTML <code><script></code> tag you can use this option to prevent <code></script</code> from - showing up in the output. - -</li> -<li><code>--lift-vars</code> – when you pass this, UglifyJS will apply the following - transformations (see the notes in API, <code>ast_lift_variables</code>): - -<ul> -<li>put all <code>var</code> declarations at the start of the scope -</li> -<li>make sure a variable is declared only once -</li> -<li>discard unused function arguments -</li> -<li>discard unused inner (named) functions -</li> -<li>finally, try to merge assignments into that one <code>var</code> declaration, if - possible. -</li> -</ul> - -</li> -</ul> - - - -</div> - -<div id="outline-container-1-4-1" class="outline-4"> -<h4 id="sec-1-4-1"><span class="section-number-4">1.4.1</span> API </h4> -<div class="outline-text-4" id="text-1-4-1"> - - -<p> -To use the library from JavaScript, you'd do the following (example for -NodeJS): -</p> - - - -<pre class="src src-js"><span class="org-keyword">var</span> <span class="org-variable-name">jsp</span> = require(<span class="org-string">"uglify-js"</span>).parser; -<span class="org-keyword">var</span> <span class="org-variable-name">pro</span> = require(<span class="org-string">"uglify-js"</span>).uglify; - -<span class="org-keyword">var</span> <span class="org-variable-name">orig_code</span> = <span class="org-string">"... JS code here"</span>; -<span class="org-keyword">var</span> <span class="org-variable-name">ast</span> = jsp.parse(orig_code); <span class="org-comment-delimiter">// </span><span class="org-comment">parse code and get the initial AST</span> -ast = pro.ast_mangle(ast); <span class="org-comment-delimiter">// </span><span class="org-comment">get a new AST with mangled names</span> -ast = pro.ast_squeeze(ast); <span class="org-comment-delimiter">// </span><span class="org-comment">get an AST with compression optimizations</span> -<span class="org-keyword">var</span> <span class="org-variable-name">final_code</span> = pro.gen_code(ast); <span class="org-comment-delimiter">// </span><span class="org-comment">compressed code here</span> -</pre> - - -<p> -The above performs the full compression that is possible right now. As you -can see, there are a sequence of steps which you can apply. For example if -you want compressed output but for some reason you don't want to mangle -variable names, you would simply skip the line that calls -<code>pro.ast_mangle(ast)</code>. -</p> -<p> -Some of these functions take optional arguments. Here's a description: -</p> -<ul> -<li><code>jsp.parse(code, strict_semicolons)</code> – parses JS code and returns an AST. - <code>strict_semicolons</code> is optional and defaults to <code>false</code>. If you pass - <code>true</code> then the parser will throw an error when it expects a semicolon and - it doesn't find it. For most JS code you don't want that, but it's useful - if you want to strictly sanitize your code. - -</li> -<li><code>pro.ast_lift_variables(ast)</code> – merge and move <code>var</code> declarations to the - scop of the scope; discard unused function arguments or variables; discard - unused (named) inner functions. It also tries to merge assignments - following the <code>var</code> declaration into it. - -<p> - If your code is very hand-optimized concerning <code>var</code> declarations, this - lifting variable declarations might actually increase size. For me it - helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also - note that (since it's not enabled by default) this operation isn't yet - heavily tested (please report if you find issues!). -</p> -<p> - Note that although it might increase the image size (on jQuery it gains - 865 bytes, 243 after gzip) it's technically more correct: in certain - situations, dead code removal might drop variable declarations, which - would not happen if the variables are lifted in advance. -</p> -<p> - Here's an example of what it does: -</p></li> -</ul> - - - - - -<pre class="src src-js"><span class="org-keyword">function</span> <span class="org-function-name">f</span>(<span class="org-variable-name">a</span>, <span class="org-variable-name">b</span>, <span class="org-variable-name">c</span>, <span class="org-variable-name">d</span>, <span class="org-variable-name">e</span>) { - <span class="org-keyword">var</span> <span class="org-variable-name">q</span>; - <span class="org-keyword">var</span> <span class="org-variable-name">w</span>; - w = 10; - q = 20; - <span class="org-keyword">for</span> (<span class="org-keyword">var</span> <span class="org-variable-name">i</span> = 1; i < 10; ++i) { - <span class="org-keyword">var</span> <span class="org-variable-name">boo</span> = foo(a); - } - <span class="org-keyword">for</span> (<span class="org-keyword">var</span> <span class="org-variable-name">i</span> = 0; i < 1; ++i) { - <span class="org-keyword">var</span> <span class="org-variable-name">boo</span> = bar(c); - } - <span class="org-keyword">function</span> <span class="org-function-name">foo</span>(){ ... } - <span class="org-keyword">function</span> <span class="org-function-name">bar</span>(){ ... } - <span class="org-keyword">function</span> <span class="org-function-name">baz</span>(){ ... } -} - -<span class="org-comment-delimiter">// </span><span class="org-comment">transforms into ==></span> - -<span class="org-keyword">function</span> <span class="org-function-name">f</span>(<span class="org-variable-name">a</span>, <span class="org-variable-name">b</span>, <span class="org-variable-name">c</span>) { - <span class="org-keyword">var</span> <span class="org-variable-name">i</span>, <span class="org-variable-name">boo</span>, <span class="org-variable-name">w</span> = 10, <span class="org-variable-name">q</span> = 20; - <span class="org-keyword">for</span> (i = 1; i < 10; ++i) { - boo = foo(a); - } - <span class="org-keyword">for</span> (i = 0; i < 1; ++i) { - boo = bar(c); - } - <span class="org-keyword">function</span> <span class="org-function-name">foo</span>() { ... } - <span class="org-keyword">function</span> <span class="org-function-name">bar</span>() { ... } -} -</pre> - - -<ul> -<li><code>pro.ast_mangle(ast, options)</code> – generates a new AST containing mangled - (compressed) variable and function names. It supports the following - options: - -<ul> -<li><code>toplevel</code> – mangle toplevel names (by default we don't touch them). -</li> -<li><code>except</code> – an array of names to exclude from compression. -</li> -<li><code>defines</code> – an object with properties named after symbols to - replace (see the <code>--define</code> option for the script) and the values - representing the AST replacement value. - -</li> -</ul> - -</li> -<li><code>pro.ast_squeeze(ast, options)</code> – employs further optimizations designed - to reduce the size of the code that <code>gen_code</code> would generate from the - AST. Returns a new AST. <code>options</code> can be a hash; the supported options - are: - -<ul> -<li><code>make_seqs</code> (default true) which will cause consecutive statements in a - block to be merged using the "sequence" (comma) operator - -</li> -<li><code>dead_code</code> (default true) which will remove unreachable code. - -</li> -</ul> - -</li> -<li><code>pro.gen_code(ast, options)</code> – generates JS code from the AST. By - default it's minified, but using the <code>options</code> argument you can get nicely - formatted output. <code>options</code> is, well, optional :-) and if you pass it it - must be an object and supports the following properties (below you can see - the default values): - -<ul> -<li><code>beautify: false</code> – pass <code>true</code> if you want indented output -</li> -<li><code>indent_start: 0</code> (only applies when <code>beautify</code> is <code>true</code>) – initial - indentation in spaces -</li> -<li><code>indent_level: 4</code> (only applies when <code>beautify</code> is <code>true</code>) -- - indentation level, in spaces (pass an even number) -</li> -<li><code>quote_keys: false</code> – if you pass <code>true</code> it will quote all keys in - literal objects -</li> -<li><code>space_colon: false</code> (only applies when <code>beautify</code> is <code>true</code>) – wether - to put a space before the colon in object literals -</li> -<li><code>ascii_only: false</code> – pass <code>true</code> if you want to encode non-ASCII - characters as <code>\uXXXX</code>. -</li> -<li><code>inline_script: false</code> – pass <code>true</code> to escape occurrences of - <code></script</code> in strings -</li> -</ul> - -</li> -</ul> - - -</div> - -</div> - -<div id="outline-container-1-4-2" class="outline-4"> -<h4 id="sec-1-4-2"><span class="section-number-4">1.4.2</span> Beautifier shortcoming – no more comments </h4> -<div class="outline-text-4" id="text-1-4-2"> - - -<p> -The beautifier can be used as a general purpose indentation tool. It's -useful when you want to make a minified file readable. One limitation, -though, is that it discards all comments, so you don't really want to use it -to reformat your code, unless you don't have, or don't care about, comments. -</p> -<p> -In fact it's not the beautifier who discards comments — they are dumped at -the parsing stage, when we build the initial AST. Comments don't really -make sense in the AST, and while we could add nodes for them, it would be -inconvenient because we'd have to add special rules to ignore them at all -the processing stages. -</p> -</div> - -</div> - -<div id="outline-container-1-4-3" class="outline-4"> -<h4 id="sec-1-4-3"><span class="section-number-4">1.4.3</span> Use as a code pre-processor </h4> -<div class="outline-text-4" id="text-1-4-3"> - - -<p> -The <code>--define</code> option can be used, particularly when combined with the -constant folding logic, as a form of pre-processor to enable or remove -particular constructions, such as might be used for instrumenting -development code, or to produce variations aimed at a specific -platform. -</p> -<p> -The code below illustrates the way this can be done, and how the -symbol replacement is performed. -</p> - - - -<pre class="src src-js">CLAUSE1: <span class="org-keyword">if</span> (<span class="org-keyword">typeof</span> DEVMODE === <span class="org-string">'undefined'</span>) { - DEVMODE = <span class="org-constant">true</span>; -} - -<span class="org-function-name">CLAUSE2</span>: <span class="org-keyword">function</span> init() { - <span class="org-keyword">if</span> (DEVMODE) { - console.log(<span class="org-string">"init() called"</span>); - } - .... - DEVMODE &amp;&amp; console.log(<span class="org-string">"init() complete"</span>); -} - -<span class="org-function-name">CLAUSE3</span>: <span class="org-keyword">function</span> reportDeviceStatus(<span class="org-variable-name">device</span>) { - <span class="org-keyword">var</span> <span class="org-variable-name">DEVMODE</span> = device.mode, <span class="org-variable-name">DEVNAME</span> = device.name; - <span class="org-keyword">if</span> (DEVMODE === <span class="org-string">'open'</span>) { - .... - } -} -</pre> - - -<p> -When the above code is normally executed, the undeclared global -variable <code>DEVMODE</code> will be assigned the value <b>true</b> (see <code>CLAUSE1</code>) -and so the <code>init()</code> function (<code>CLAUSE2</code>) will write messages to the -console log when executed, but in <code>CLAUSE3</code> a locally declared -variable will mask access to the <code>DEVMODE</code> global symbol. -</p> -<p> -If the above code is processed by UglifyJS with an argument of -<code>--define DEVMODE=false</code> then UglifyJS will replace <code>DEVMODE</code> with the -boolean constant value <b>false</b> within <code>CLAUSE1</code> and <code>CLAUSE2</code>, but it -will leave <code>CLAUSE3</code> as it stands because there <code>DEVMODE</code> resolves to -a validly declared variable. -</p> -<p> -And more so, the constant-folding features of UglifyJS will recognise -that the <code>if</code> condition of <code>CLAUSE1</code> is thus always false, and so will -remove the test and body of <code>CLAUSE1</code> altogether (including the -otherwise slightly problematical statement <code>false = true;</code> which it -will have formed by replacing <code>DEVMODE</code> in the body). Similarly, -within <code>CLAUSE2</code> both calls to <code>console.log()</code> will be removed -altogether. -</p> -<p> -In this way you can mimic, to a limited degree, the functionality of -the C/C++ pre-processor to enable or completely remove blocks -depending on how certain symbols are defined - perhaps using UglifyJS -to generate different versions of source aimed at different -environments -</p> -<p> -It is recommmended (but not made mandatory) that symbols designed for -this purpose are given names consisting of <code>UPPER_CASE_LETTERS</code> to -distinguish them from other (normal) symbols and avoid the sort of -clash that <code>CLAUSE3</code> above illustrates. -</p> -</div> -</div> - -</div> - -<div id="outline-container-1-5" class="outline-3"> -<h3 id="sec-1-5"><span class="section-number-3">1.5</span> Compression – how good is it? </h3> -<div class="outline-text-3" id="text-1-5"> - - -<p> -Here are updated statistics. (I also updated my Google Closure and YUI -installations). -</p> -<p> -We're still a lot better than YUI in terms of compression, though slightly -slower. We're still a lot faster than Closure, and compression after gzip -is comparable. -</p> -<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> -<caption></caption> -<colgroup><col class="left" /><col class="left" /><col class="right" /><col class="left" /><col class="right" /><col class="left" /><col class="right" /> -</colgroup> -<thead> -<tr><th scope="col" class="left">File</th><th scope="col" class="left">UglifyJS</th><th scope="col" class="right">UglifyJS+gzip</th><th scope="col" class="left">Closure</th><th scope="col" class="right">Closure+gzip</th><th scope="col" class="left">YUI</th><th scope="col" class="right">YUI+gzip</th></tr> -</thead> -<tbody> -<tr><td class="left">jquery-1.6.2.js</td><td class="left">91001 (0:01.59)</td><td class="right">31896</td><td class="left">90678 (0:07.40)</td><td class="right">31979</td><td class="left">101527 (0:01.82)</td><td class="right">34646</td></tr> -<tr><td class="left">paper.js</td><td class="left">142023 (0:01.65)</td><td class="right">43334</td><td class="left">134301 (0:07.42)</td><td class="right">42495</td><td class="left">173383 (0:01.58)</td><td class="right">48785</td></tr> -<tr><td class="left">prototype.js</td><td class="left">88544 (0:01.09)</td><td class="right">26680</td><td class="left">86955 (0:06.97)</td><td class="right">26326</td><td class="left">92130 (0:00.79)</td><td class="right">28624</td></tr> -<tr><td class="left">thelib-full.js (DynarchLIB)</td><td class="left">251939 (0:02.55)</td><td class="right">72535</td><td class="left">249911 (0:09.05)</td><td class="right">72696</td><td class="left">258869 (0:01.94)</td><td class="right">76584</td></tr> -</tbody> -</table> - - -</div> - -</div> - -<div id="outline-container-1-6" class="outline-3"> -<h3 id="sec-1-6"><span class="section-number-3">1.6</span> Bugs? </h3> -<div class="outline-text-3" id="text-1-6"> - - -<p> -Unfortunately, for the time being there is no automated test suite. But I -ran the compressor manually on non-trivial code, and then I tested that the -generated code works as expected. A few hundred times. -</p> -<p> -DynarchLIB was started in times when there was no good JS minifier. -Therefore I was quite religious about trying to write short code manually, -and as such DL contains a lot of syntactic hacks<sup><a class="footref" name="fnr.1" href="#fn.1">1</a></sup> such as “foo == bar ? a -= 10 : b = 20”, though the more readable version would clearly be to use -“if/else”. -</p> -<p> -Since the parser/compressor runs fine on DL and jQuery, I'm quite confident -that it's solid enough for production use. If you can identify any bugs, -I'd love to hear about them (<a href="http://groups.google.com/group/uglifyjs">use the Google Group</a> or email me directly). -</p> -</div> - -</div> - -<div id="outline-container-1-7" class="outline-3"> -<h3 id="sec-1-7"><span class="section-number-3">1.7</span> Links </h3> -<div class="outline-text-3" id="text-1-7"> - - -<ul> -<li>Twitter: <a href="http://twitter.com/UglifyJS">@UglifyJS</a> -</li> -<li>Project at GitHub: <a href="http://github.com/mishoo/UglifyJS">http://github.com/mishoo/UglifyJS</a> -</li> -<li>Google Group: <a href="http://groups.google.com/group/uglifyjs">http://groups.google.com/group/uglifyjs</a> -</li> -<li>Common Lisp JS parser: <a href="http://marijn.haverbeke.nl/parse-js/">http://marijn.haverbeke.nl/parse-js/</a> -</li> -<li>JS-to-Lisp compiler: <a href="http://github.com/marijnh/js">http://github.com/marijnh/js</a> -</li> -<li>Common Lisp JS uglifier: <a href="http://github.com/mishoo/cl-uglify-js">http://github.com/mishoo/cl-uglify-js</a> -</li> -</ul> - - -</div> - -</div> - -<div id="outline-container-1-8" class="outline-3"> -<h3 id="sec-1-8"><span class="section-number-3">1.8</span> License </h3> -<div class="outline-text-3" id="text-1-8"> - - -<p> -UglifyJS is released under the BSD license: -</p> - - - -<pre class="example">Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com> -Based on parse-js (http://marijn.haverbeke.nl/parse-js/). - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. -</pre> - - -<div id="footnotes"> -<h2 class="footnotes">Footnotes: </h2> -<div id="text-footnotes"> -<p class="footnote"><sup><a class="footnum" name="fn.1" href="#fnr.1">1</a></sup> I even reported a few bugs and suggested some fixes in the original - <a href="http://marijn.haverbeke.nl/parse-js/">parse-js</a> library, and Marijn pushed fixes literally in minutes. -</p></div> -</div> -</div> - -</div> -</div> -</div> - -<div id="postamble"> -<p class="date">Date: 2011-12-09 14:59:08 EET</p> -<p class="author">Author: Mihai Bazon</p> -<p class="creator">Org version 7.7 with Emacs version 23</p> -<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a> - -</div> -</body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.org b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.org deleted file mode 100644 index d36b6b26f01..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/README.org +++ /dev/null @@ -1,578 +0,0 @@ -#+TITLE: UglifyJS -- a JavaScript parser/compressor/beautifier -#+KEYWORDS: javascript, js, parser, compiler, compressor, mangle, minify, minifier -#+DESCRIPTION: a JavaScript parser/compressor/beautifier in JavaScript -#+STYLE: <link rel="stylesheet" type="text/css" href="docstyle.css" /> -#+AUTHOR: Mihai Bazon -#+EMAIL: mihai.bazon@gmail.com - -* UglifyJS --- a JavaScript parser/compressor/beautifier - -This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on [[http://nodejs.org/][NodeJS]], but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the =exports.*= lines from UglifyJS sources). - -The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in [[../lib/parse-js.js][parse-js.js]] and it's a -port to JavaScript of the excellent [[http://marijn.haverbeke.nl/parse-js/][parse-js]] Common Lisp library from [[http://marijn.haverbeke.nl/][Marijn -Haverbeke]]. - -( See [[http://github.com/mishoo/cl-uglify-js][cl-uglify-js]] if you're looking for the Common Lisp version of -UglifyJS. ) - -The second part of this package, implemented in [[../lib/process.js][process.js]], inspects and -manipulates the AST generated by the parser to provide the following: - -- ability to re-generate JavaScript code from the AST. Optionally - indented---you can use this if you want to “beautify” a program that has - been compressed, so that you can inspect the source. But you can also run - our code generator to print out an AST without any whitespace, so you - achieve compression as well. - -- shorten variable names (usually to single characters). Our mangler will - analyze the code and generate proper variable names, depending on scope - and usage, and is smart enough to deal with globals defined elsewhere, or - with =eval()= calls or =with{}= statements. In short, if =eval()= or - =with{}= are used in some scope, then all variables in that scope and any - variables in the parent scopes will remain unmangled, and any references - to such variables remain unmangled as well. - -- various small optimizations that may lead to faster code but certainly - lead to smaller code. Where possible, we do the following: - - - foo["bar"] ==> foo.bar - - - remove block brackets ={}= - - - join consecutive var declarations: - var a = 10; var b = 20; ==> var a=10,b=20; - - - resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the - replacement if the result occupies less bytes; for example 1/3 would - translate to 0.333333333333, so in this case we don't replace it. - - - consecutive statements in blocks are merged into a sequence; in many - cases, this leaves blocks with a single statement, so then we can remove - the block brackets. - - - various optimizations for IF statements: - - - if (foo) bar(); else baz(); ==> foo?bar():baz(); - - if (!foo) bar(); else baz(); ==> foo?baz():bar(); - - if (foo) bar(); ==> foo&&bar(); - - if (!foo) bar(); ==> foo||bar(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - - - remove some unreachable code and warn about it (code that follows a - =return=, =throw=, =break= or =continue= statement, except - function/variable declarations). - - - act a limited version of a pre-processor (c.f. the pre-processor of - C/C++) to allow you to safely replace selected global symbols with - specified values. When combined with the optimisations above this can - make UglifyJS operate slightly more like a compilation process, in - that when certain symbols are replaced by constant values, entire code - blocks may be optimised away as unreachable. - -** <<Unsafe transformations>> - -The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the -=--unsafe= flag. - -*** Calls involving the global Array constructor - -The following transformations occur: - -#+BEGIN_SRC js -new Array(1, 2, 3, 4) => [1,2,3,4] -Array(a, b, c) => [a,b,c] -new Array(5) => Array(5) -new Array(a) => Array(a) -#+END_SRC - -These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. - -UglifyJS does handle the case where Array is redefined locally, or even -globally but with a =function= or =var= declaration. Therefore, in the -following cases UglifyJS *doesn't touch* calls or instantiations of Array: - -#+BEGIN_SRC js -// case 1. globally declared variable - var Array; - new Array(1, 2, 3); - Array(a, b); - - // or (can be declared later) - new Array(1, 2, 3); - var Array; - - // or (can be a function) - new Array(1, 2, 3); - function Array() { ... } - -// case 2. declared in a function - (function(){ - a = new Array(1, 2, 3); - b = Array(5, 6); - var Array; - })(); - - // or - (function(Array){ - return Array(5, 6, 7); - })(); - - // or - (function(){ - return new Array(1, 2, 3, 4); - function Array() { ... } - })(); - - // etc. -#+END_SRC - -*** =obj.toString()= ==> =obj+“”= - -** Install (NPM) - -UglifyJS is now available through NPM --- =npm install uglify-js= should do -the job. - -** Install latest code from GitHub - -#+BEGIN_SRC sh -## clone the repository -mkdir -p /where/you/wanna/put/it -cd /where/you/wanna/put/it -git clone git://github.com/mishoo/UglifyJS.git - -## make the module available to Node -mkdir -p ~/.node_libraries/ -cd ~/.node_libraries/ -ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js - -## and if you want the CLI script too: -mkdir -p ~/bin -cd ~/bin -ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs - # (then add ~/bin to your $PATH if it's not there already) -#+END_SRC - -** Usage - -There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: - -#+BEGIN_SRC sh -uglifyjs [ options... ] [ filename ] -#+END_SRC - -=filename= should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. - -Supported options: - -- =-b= or =--beautify= --- output indented code; when passed, additional - options control the beautifier: - - - =-i N= or =--indent N= --- indentation level (number of spaces) - - - =-q= or =--quote-keys= --- quote keys in literal objects (by default, - only keys that cannot be identifier names will be quotes). - -- =-c= or =----consolidate-primitive-values= --- consolidates null, Boolean, - and String values. Known as aliasing in the Closure Compiler. Worsens the - data compression ratio of gzip. - -- =--ascii= --- pass this argument to encode non-ASCII characters as - =\uXXXX= sequences. By default UglifyJS won't bother to do it and will - output Unicode characters instead. (the output is always encoded in UTF8, - but if you pass this option you'll only get ASCII). - -- =-nm= or =--no-mangle= --- don't mangle names. - -- =-nmf= or =--no-mangle-functions= -- in case you want to mangle variable - names, but not touch function names. - -- =-ns= or =--no-squeeze= --- don't call =ast_squeeze()= (which does various - optimizations that result in smaller, less readable code). - -- =-mt= or =--mangle-toplevel= --- mangle names in the toplevel scope too - (by default we don't do this). - -- =--no-seqs= --- when =ast_squeeze()= is called (thus, unless you pass - =--no-squeeze=) it will reduce consecutive statements in blocks into a - sequence. For example, "a = 10; b = 20; foo();" will be written as - "a=10,b=20,foo();". In various occasions, this allows us to discard the - block brackets (since the block becomes a single statement). This is ON - by default because it seems safe and saves a few hundred bytes on some - libs that I tested it on, but pass =--no-seqs= to disable it. - -- =--no-dead-code= --- by default, UglifyJS will remove code that is - obviously unreachable (code that follows a =return=, =throw=, =break= or - =continue= statement and is not a function/variable declaration). Pass - this option to disable this optimization. - -- =-nc= or =--no-copyright= --- by default, =uglifyjs= will keep the initial - comment tokens in the generated code (assumed to be copyright information - etc.). If you pass this it will discard it. - -- =-o filename= or =--output filename= --- put the result in =filename=. If - this isn't given, the result goes to standard output (or see next one). - -- =--overwrite= --- if the code is read from a file (not from STDIN) and you - pass =--overwrite= then the output will be written in the same file. - -- =--ast= --- pass this if you want to get the Abstract Syntax Tree instead - of JavaScript as output. Useful for debugging or learning more about the - internals. - -- =-v= or =--verbose= --- output some notes on STDERR (for now just how long - each operation takes). - -- =-d SYMBOL[=VALUE]= or =--define SYMBOL[=VALUE]= --- will replace - all instances of the specified symbol where used as an identifier - (except where symbol has properly declared by a var declaration or - use as function parameter or similar) with the specified value. This - argument may be specified multiple times to define multiple - symbols - if no value is specified the symbol will be replaced with - the value =true=, or you can specify a numeric value (such as - =1024=), a quoted string value (such as ="object"= or - ='https://github.com'=), or the name of another symbol or keyword - (such as =null= or =document=). - This allows you, for example, to assign meaningful names to key - constant values but discard the symbolic names in the uglified - version for brevity/efficiency, or when used wth care, allows - UglifyJS to operate as a form of *conditional compilation* - whereby defining appropriate values may, by dint of the constant - folding and dead code removal features above, remove entire - superfluous code blocks (e.g. completely remove instrumentation or - trace code for production use). - Where string values are being defined, the handling of quotes are - likely to be subject to the specifics of your command shell - environment, so you may need to experiment with quoting styles - depending on your platform, or you may find the option - =--define-from-module= more suitable for use. - -- =-define-from-module SOMEMODULE= --- will load the named module (as - per the NodeJS =require()= function) and iterate all the exported - properties of the module defining them as symbol names to be defined - (as if by the =--define= option) per the name of each property - (i.e. without the module name prefix) and given the value of the - property. This is a much easier way to handle and document groups of - symbols to be defined rather than a large number of =--define= - options. - -- =--unsafe= --- enable other additional optimizations that are known to be - unsafe in some contrived situations, but could still be generally useful. - For now only these: - - - foo.toString() ==> foo+"" - - new Array(x,...) ==> [x,...] - - new Array(x) ==> Array(x) - -- =--max-line-len= (default 32K characters) --- add a newline after around - 32K characters. I've seen both FF and Chrome croak when all the code was - on a single line of around 670K. Pass --max-line-len 0 to disable this - safety feature. - -- =--reserved-names= --- some libraries rely on certain names to be used, as - pointed out in issue #92 and #81, so this option allow you to exclude such - names from the mangler. For example, to keep names =require= and =$super= - intact you'd specify --reserved-names "require,$super". - -- =--inline-script= -- when you want to include the output literally in an - HTML =<script>= tag you can use this option to prevent =</script= from - showing up in the output. - -- =--lift-vars= -- when you pass this, UglifyJS will apply the following - transformations (see the notes in API, =ast_lift_variables=): - - - put all =var= declarations at the start of the scope - - make sure a variable is declared only once - - discard unused function arguments - - discard unused inner (named) functions - - finally, try to merge assignments into that one =var= declaration, if - possible. - -*** API - -To use the library from JavaScript, you'd do the following (example for -NodeJS): - -#+BEGIN_SRC js -var jsp = require("uglify-js").parser; -var pro = require("uglify-js").uglify; - -var orig_code = "... JS code here"; -var ast = jsp.parse(orig_code); // parse code and get the initial AST -ast = pro.ast_mangle(ast); // get a new AST with mangled names -ast = pro.ast_squeeze(ast); // get an AST with compression optimizations -var final_code = pro.gen_code(ast); // compressed code here -#+END_SRC - -The above performs the full compression that is possible right now. As you -can see, there are a sequence of steps which you can apply. For example if -you want compressed output but for some reason you don't want to mangle -variable names, you would simply skip the line that calls -=pro.ast_mangle(ast)=. - -Some of these functions take optional arguments. Here's a description: - -- =jsp.parse(code, strict_semicolons)= -- parses JS code and returns an AST. - =strict_semicolons= is optional and defaults to =false=. If you pass - =true= then the parser will throw an error when it expects a semicolon and - it doesn't find it. For most JS code you don't want that, but it's useful - if you want to strictly sanitize your code. - -- =pro.ast_lift_variables(ast)= -- merge and move =var= declarations to the - scop of the scope; discard unused function arguments or variables; discard - unused (named) inner functions. It also tries to merge assignments - following the =var= declaration into it. - - If your code is very hand-optimized concerning =var= declarations, this - lifting variable declarations might actually increase size. For me it - helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also - note that (since it's not enabled by default) this operation isn't yet - heavily tested (please report if you find issues!). - - Note that although it might increase the image size (on jQuery it gains - 865 bytes, 243 after gzip) it's technically more correct: in certain - situations, dead code removal might drop variable declarations, which - would not happen if the variables are lifted in advance. - - Here's an example of what it does: - -#+BEGIN_SRC js -function f(a, b, c, d, e) { - var q; - var w; - w = 10; - q = 20; - for (var i = 1; i < 10; ++i) { - var boo = foo(a); - } - for (var i = 0; i < 1; ++i) { - var boo = bar(c); - } - function foo(){ ... } - function bar(){ ... } - function baz(){ ... } -} - -// transforms into ==> - -function f(a, b, c) { - var i, boo, w = 10, q = 20; - for (i = 1; i < 10; ++i) { - boo = foo(a); - } - for (i = 0; i < 1; ++i) { - boo = bar(c); - } - function foo() { ... } - function bar() { ... } -} -#+END_SRC - -- =pro.ast_mangle(ast, options)= -- generates a new AST containing mangled - (compressed) variable and function names. It supports the following - options: - - - =toplevel= -- mangle toplevel names (by default we don't touch them). - - =except= -- an array of names to exclude from compression. - - =defines= -- an object with properties named after symbols to - replace (see the =--define= option for the script) and the values - representing the AST replacement value. - -- =pro.ast_squeeze(ast, options)= -- employs further optimizations designed - to reduce the size of the code that =gen_code= would generate from the - AST. Returns a new AST. =options= can be a hash; the supported options - are: - - - =make_seqs= (default true) which will cause consecutive statements in a - block to be merged using the "sequence" (comma) operator - - - =dead_code= (default true) which will remove unreachable code. - -- =pro.gen_code(ast, options)= -- generates JS code from the AST. By - default it's minified, but using the =options= argument you can get nicely - formatted output. =options= is, well, optional :-) and if you pass it it - must be an object and supports the following properties (below you can see - the default values): - - - =beautify: false= -- pass =true= if you want indented output - - =indent_start: 0= (only applies when =beautify= is =true=) -- initial - indentation in spaces - - =indent_level: 4= (only applies when =beautify= is =true=) -- - indentation level, in spaces (pass an even number) - - =quote_keys: false= -- if you pass =true= it will quote all keys in - literal objects - - =space_colon: false= (only applies when =beautify= is =true=) -- wether - to put a space before the colon in object literals - - =ascii_only: false= -- pass =true= if you want to encode non-ASCII - characters as =\uXXXX=. - - =inline_script: false= -- pass =true= to escape occurrences of - =</script= in strings - -*** Beautifier shortcoming -- no more comments - -The beautifier can be used as a general purpose indentation tool. It's -useful when you want to make a minified file readable. One limitation, -though, is that it discards all comments, so you don't really want to use it -to reformat your code, unless you don't have, or don't care about, comments. - -In fact it's not the beautifier who discards comments --- they are dumped at -the parsing stage, when we build the initial AST. Comments don't really -make sense in the AST, and while we could add nodes for them, it would be -inconvenient because we'd have to add special rules to ignore them at all -the processing stages. - -*** Use as a code pre-processor - -The =--define= option can be used, particularly when combined with the -constant folding logic, as a form of pre-processor to enable or remove -particular constructions, such as might be used for instrumenting -development code, or to produce variations aimed at a specific -platform. - -The code below illustrates the way this can be done, and how the -symbol replacement is performed. - -#+BEGIN_SRC js -CLAUSE1: if (typeof DEVMODE === 'undefined') { - DEVMODE = true; -} - -CLAUSE2: function init() { - if (DEVMODE) { - console.log("init() called"); - } - .... - DEVMODE && console.log("init() complete"); -} - -CLAUSE3: function reportDeviceStatus(device) { - var DEVMODE = device.mode, DEVNAME = device.name; - if (DEVMODE === 'open') { - .... - } -} -#+END_SRC - -When the above code is normally executed, the undeclared global -variable =DEVMODE= will be assigned the value *true* (see =CLAUSE1=) -and so the =init()= function (=CLAUSE2=) will write messages to the -console log when executed, but in =CLAUSE3= a locally declared -variable will mask access to the =DEVMODE= global symbol. - -If the above code is processed by UglifyJS with an argument of -=--define DEVMODE=false= then UglifyJS will replace =DEVMODE= with the -boolean constant value *false* within =CLAUSE1= and =CLAUSE2=, but it -will leave =CLAUSE3= as it stands because there =DEVMODE= resolves to -a validly declared variable. - -And more so, the constant-folding features of UglifyJS will recognise -that the =if= condition of =CLAUSE1= is thus always false, and so will -remove the test and body of =CLAUSE1= altogether (including the -otherwise slightly problematical statement =false = true;= which it -will have formed by replacing =DEVMODE= in the body). Similarly, -within =CLAUSE2= both calls to =console.log()= will be removed -altogether. - -In this way you can mimic, to a limited degree, the functionality of -the C/C++ pre-processor to enable or completely remove blocks -depending on how certain symbols are defined - perhaps using UglifyJS -to generate different versions of source aimed at different -environments - -It is recommmended (but not made mandatory) that symbols designed for -this purpose are given names consisting of =UPPER_CASE_LETTERS= to -distinguish them from other (normal) symbols and avoid the sort of -clash that =CLAUSE3= above illustrates. - -** Compression -- how good is it? - -Here are updated statistics. (I also updated my Google Closure and YUI -installations). - -We're still a lot better than YUI in terms of compression, though slightly -slower. We're still a lot faster than Closure, and compression after gzip -is comparable. - -| File | UglifyJS | UglifyJS+gzip | Closure | Closure+gzip | YUI | YUI+gzip | -|-----------------------------+------------------+---------------+------------------+--------------+------------------+----------| -| jquery-1.6.2.js | 91001 (0:01.59) | 31896 | 90678 (0:07.40) | 31979 | 101527 (0:01.82) | 34646 | -| paper.js | 142023 (0:01.65) | 43334 | 134301 (0:07.42) | 42495 | 173383 (0:01.58) | 48785 | -| prototype.js | 88544 (0:01.09) | 26680 | 86955 (0:06.97) | 26326 | 92130 (0:00.79) | 28624 | -| thelib-full.js (DynarchLIB) | 251939 (0:02.55) | 72535 | 249911 (0:09.05) | 72696 | 258869 (0:01.94) | 76584 | - -** Bugs? - -Unfortunately, for the time being there is no automated test suite. But I -ran the compressor manually on non-trivial code, and then I tested that the -generated code works as expected. A few hundred times. - -DynarchLIB was started in times when there was no good JS minifier. -Therefore I was quite religious about trying to write short code manually, -and as such DL contains a lot of syntactic hacks[1] such as “foo == bar ? a -= 10 : b = 20”, though the more readable version would clearly be to use -“if/else”. - -Since the parser/compressor runs fine on DL and jQuery, I'm quite confident -that it's solid enough for production use. If you can identify any bugs, -I'd love to hear about them ([[http://groups.google.com/group/uglifyjs][use the Google Group]] or email me directly). - -[1] I even reported a few bugs and suggested some fixes in the original - [[http://marijn.haverbeke.nl/parse-js/][parse-js]] library, and Marijn pushed fixes literally in minutes. - -** Links - -- Twitter: [[http://twitter.com/UglifyJS][@UglifyJS]] -- Project at GitHub: [[http://github.com/mishoo/UglifyJS][http://github.com/mishoo/UglifyJS]] -- Google Group: [[http://groups.google.com/group/uglifyjs][http://groups.google.com/group/uglifyjs]] -- Common Lisp JS parser: [[http://marijn.haverbeke.nl/parse-js/][http://marijn.haverbeke.nl/parse-js/]] -- JS-to-Lisp compiler: [[http://github.com/marijnh/js][http://github.com/marijnh/js]] -- Common Lisp JS uglifier: [[http://github.com/mishoo/cl-uglify-js][http://github.com/mishoo/cl-uglify-js]] - -** License - -UglifyJS is released under the BSD license: - -#+BEGIN_EXAMPLE -Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com> -Based on parse-js (http://marijn.haverbeke.nl/parse-js/). - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. -#+END_EXAMPLE diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/bin/uglifyjs b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/bin/uglifyjs deleted file mode 100755 index df5201daaeb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/bin/uglifyjs +++ /dev/null @@ -1,332 +0,0 @@ -#!/usr/bin/env node -// -*- js -*- - -global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); -var fs = require("fs"); -var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js - consolidator = uglify.consolidator, - jsp = uglify.parser, - pro = uglify.uglify; - -var options = { - ast: false, - consolidate: false, - mangle: true, - mangle_toplevel: false, - no_mangle_functions: false, - squeeze: true, - make_seqs: true, - dead_code: true, - verbose: false, - show_copyright: true, - out_same_file: false, - max_line_length: 32 * 1024, - unsafe: false, - reserved_names: null, - defines: { }, - lift_vars: false, - codegen_options: { - ascii_only: false, - beautify: false, - indent_level: 4, - indent_start: 0, - quote_keys: false, - space_colon: false, - inline_script: false - }, - make: false, - output: true // stdout -}; - -var args = jsp.slice(process.argv, 2); -var filename; - -out: while (args.length > 0) { - var v = args.shift(); - switch (v) { - case "-b": - case "--beautify": - options.codegen_options.beautify = true; - break; - case "-c": - case "--consolidate-primitive-values": - options.consolidate = true; - break; - case "-i": - case "--indent": - options.codegen_options.indent_level = args.shift(); - break; - case "-q": - case "--quote-keys": - options.codegen_options.quote_keys = true; - break; - case "-mt": - case "--mangle-toplevel": - options.mangle_toplevel = true; - break; - case "-nmf": - case "--no-mangle-functions": - options.no_mangle_functions = true; - break; - case "--no-mangle": - case "-nm": - options.mangle = false; - break; - case "--no-squeeze": - case "-ns": - options.squeeze = false; - break; - case "--no-seqs": - options.make_seqs = false; - break; - case "--no-dead-code": - options.dead_code = false; - break; - case "--no-copyright": - case "-nc": - options.show_copyright = false; - break; - case "-o": - case "--output": - options.output = args.shift(); - break; - case "--overwrite": - options.out_same_file = true; - break; - case "-v": - case "--verbose": - options.verbose = true; - break; - case "--ast": - options.ast = true; - break; - case "--unsafe": - options.unsafe = true; - break; - case "--max-line-len": - options.max_line_length = parseInt(args.shift(), 10); - break; - case "--reserved-names": - options.reserved_names = args.shift().split(","); - break; - case "--lift-vars": - options.lift_vars = true; - break; - case "-d": - case "--define": - var defarg = args.shift(); - try { - var defsym = function(sym) { - // KEYWORDS_ATOM doesn't include NaN or Infinity - should we check - // for them too ?? We don't check reserved words and the like as the - // define values are only substituted AFTER parsing - if (jsp.KEYWORDS_ATOM.hasOwnProperty(sym)) { - throw "Don't define values for inbuilt constant '"+sym+"'"; - } - return sym; - }, - defval = function(v) { - if (v.match(/^"(.*)"$/) || v.match(/^'(.*)'$/)) { - return [ "string", RegExp.$1 ]; - } - else if (!isNaN(parseFloat(v))) { - return [ "num", parseFloat(v) ]; - } - else if (v.match(/^[a-z\$_][a-z\$_0-9]*$/i)) { - return [ "name", v ]; - } - else if (!v.match(/"/)) { - return [ "string", v ]; - } - else if (!v.match(/'/)) { - return [ "string", v ]; - } - throw "Can't understand the specified value: "+v; - }; - if (defarg.match(/^([a-z_\$][a-z_\$0-9]*)(=(.*))?$/i)) { - var sym = defsym(RegExp.$1), - val = RegExp.$2 ? defval(RegExp.$2.substr(1)) : [ 'name', 'true' ]; - options.defines[sym] = val; - } - else { - throw "The --define option expects SYMBOL[=value]"; - } - } catch(ex) { - sys.print("ERROR: In option --define "+defarg+"\n"+ex+"\n"); - process.exit(1); - } - break; - case "--define-from-module": - var defmodarg = args.shift(), - defmodule = require(defmodarg), - sym, - val; - for (sym in defmodule) { - if (defmodule.hasOwnProperty(sym)) { - options.defines[sym] = function(val) { - if (typeof val == "string") - return [ "string", val ]; - if (typeof val == "number") - return [ "num", val ]; - if (val === true) - return [ 'name', 'true' ]; - if (val === false) - return [ 'name', 'false' ]; - if (val === null) - return [ 'name', 'null' ]; - if (val === undefined) - return [ 'name', 'undefined' ]; - sys.print("ERROR: In option --define-from-module "+defmodarg+"\n"); - sys.print("ERROR: Unknown object type for: "+sym+"="+val+"\n"); - process.exit(1); - return null; - }(defmodule[sym]); - } - } - break; - case "--ascii": - options.codegen_options.ascii_only = true; - break; - case "--make": - options.make = true; - break; - case "--inline-script": - options.codegen_options.inline_script = true; - break; - default: - filename = v; - break out; - } -} - -if (options.verbose) { - pro.set_logger(function(msg){ - sys.debug(msg); - }); -} - -jsp.set_logger(function(msg){ - sys.debug(msg); -}); - -if (options.make) { - options.out_same_file = false; // doesn't make sense in this case - var makefile = JSON.parse(fs.readFileSync(filename || "Makefile.uglify.js").toString()); - output(makefile.files.map(function(file){ - var code = fs.readFileSync(file.name); - if (file.module) { - code = "!function(exports, global){global = this;\n" + code + "\n;this." + file.module + " = exports;}({})"; - } - else if (file.hide) { - code = "(function(){" + code + "}());"; - } - return squeeze_it(code); - }).join("\n")); -} -else if (filename) { - fs.readFile(filename, "utf8", function(err, text){ - if (err) throw err; - output(squeeze_it(text)); - }); -} -else { - var stdin = process.openStdin(); - stdin.setEncoding("utf8"); - var text = ""; - stdin.on("data", function(chunk){ - text += chunk; - }); - stdin.on("end", function() { - output(squeeze_it(text)); - }); -} - -function output(text) { - var out; - if (options.out_same_file && filename) - options.output = filename; - if (options.output === true) { - out = process.stdout; - } else { - out = fs.createWriteStream(options.output, { - flags: "w", - encoding: "utf8", - mode: 0644 - }); - } - out.write(text.replace(/;*$/, ";")); - if (options.output !== true) { - out.end(); - } -}; - -// --------- main ends here. - -function show_copyright(comments) { - var ret = ""; - for (var i = 0; i < comments.length; ++i) { - var c = comments[i]; - if (c.type == "comment1") { - ret += "//" + c.value + "\n"; - } else { - ret += "/*" + c.value + "*/"; - } - } - return ret; -}; - -function squeeze_it(code) { - var result = ""; - if (options.show_copyright) { - var tok = jsp.tokenizer(code), c; - c = tok(); - result += show_copyright(c.comments_before); - } - try { - var ast = time_it("parse", function(){ return jsp.parse(code); }); - if (options.consolidate) ast = time_it("consolidate", function(){ - return consolidator.ast_consolidate(ast); - }); - if (options.lift_vars) { - ast = time_it("lift", function(){ return pro.ast_lift_variables(ast); }); - } - if (options.mangle) ast = time_it("mangle", function(){ - return pro.ast_mangle(ast, { - toplevel : options.mangle_toplevel, - defines : options.defines, - except : options.reserved_names, - no_functions : options.no_mangle_functions - }); - }); - if (options.squeeze) ast = time_it("squeeze", function(){ - ast = pro.ast_squeeze(ast, { - make_seqs : options.make_seqs, - dead_code : options.dead_code, - keep_comps : !options.unsafe - }); - if (options.unsafe) - ast = pro.ast_squeeze_more(ast); - return ast; - }); - if (options.ast) - return sys.inspect(ast, null, null); - result += time_it("generate", function(){ return pro.gen_code(ast, options.codegen_options) }); - if (!options.codegen_options.beautify && options.max_line_length) { - result = time_it("split", function(){ return pro.split_lines(result, options.max_line_length) }); - } - return result; - } catch(ex) { - sys.debug(ex.stack); - sys.debug(sys.inspect(ex)); - sys.debug(JSON.stringify(ex)); - process.exit(1); - } -}; - -function time_it(name, cont) { - if (!options.verbose) - return cont(); - var t1 = new Date().getTime(); - try { return cont(); } - finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/docstyle.css b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/docstyle.css deleted file mode 100644 index 412481fe66b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/docstyle.css +++ /dev/null @@ -1,75 +0,0 @@ -html { font-family: "Lucida Grande","Trebuchet MS",sans-serif; font-size: 12pt; } -body { max-width: 60em; } -.title { text-align: center; } -.todo { color: red; } -.done { color: green; } -.tag { background-color:lightblue; font-weight:normal } -.target { } -.timestamp { color: grey } -.timestamp-kwd { color: CadetBlue } -p.verse { margin-left: 3% } -pre { - border: 1pt solid #AEBDCC; - background-color: #F3F5F7; - padding: 5pt; - font-family: monospace; - font-size: 90%; - overflow:auto; -} -pre.src { - background-color: #eee; color: #112; border: 1px solid #000; -} -table { border-collapse: collapse; } -td, th { vertical-align: top; } -dt { font-weight: bold; } -div.figure { padding: 0.5em; } -div.figure p { text-align: center; } -.linenr { font-size:smaller } -.code-highlighted {background-color:#ffff00;} -.org-info-js_info-navigation { border-style:none; } -#org-info-js_console-label { font-size:10px; font-weight:bold; - white-space:nowrap; } -.org-info-js_search-highlight {background-color:#ffff00; color:#000000; - font-weight:bold; } - -sup { - vertical-align: baseline; - position: relative; - top: -0.5em; - font-size: 80%; -} - -sup a:link, sup a:visited { - text-decoration: none; - color: #c00; -} - -sup a:before { content: "["; color: #999; } -sup a:after { content: "]"; color: #999; } - -h1.title { border-bottom: 4px solid #000; padding-bottom: 5px; margin-bottom: 2em; } - -#postamble { - color: #777; - font-size: 90%; - padding-top: 1em; padding-bottom: 1em; border-top: 1px solid #999; - margin-top: 2em; - padding-left: 2em; - padding-right: 2em; - text-align: right; -} - -#postamble p { margin: 0; } - -#footnotes { border-top: 1px solid #000; } - -h1 { font-size: 200% } -h2 { font-size: 175% } -h3 { font-size: 150% } -h4 { font-size: 125% } - -h1, h2, h3, h4 { font-family: "Bookman",Georgia,"Times New Roman",serif; font-weight: normal; } - -@media print { - html { font-size: 11pt; } -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/consolidator.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/consolidator.js deleted file mode 100644 index d39674d2e11..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/consolidator.js +++ /dev/null @@ -1,2599 +0,0 @@ -/** - * @preserve Copyright 2012 Robert Gust-Bardon <http://robert.gust-bardon.org/>. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/** - * @fileoverview Enhances <a href="https://github.com/mishoo/UglifyJS/" - * >UglifyJS</a> with consolidation of null, Boolean, and String values. - * <p>Also known as aliasing, this feature has been deprecated in <a href= - * "http://closure-compiler.googlecode.com/">the Closure Compiler</a> since its - * initial release, where it is unavailable from the <abbr title= - * "command line interface">CLI</a>. The Closure Compiler allows one to log and - * influence this process. In contrast, this implementation does not introduce - * any variable declarations in global code and derives String values from - * identifier names used as property accessors.</p> - * <p>Consolidating literals may worsen the data compression ratio when an <a - * href="http://tools.ietf.org/html/rfc2616#section-3.5">encoding - * transformation</a> is applied. For instance, <a href= - * "http://code.jquery.com/jquery-1.7.1.js">jQuery 1.7.1</a> takes 248235 bytes. - * Building it with <a href="https://github.com/mishoo/UglifyJS/tarball/v1.2.5"> - * UglifyJS v1.2.5</a> results in 93647 bytes (37.73% of the original) which are - * then compressed to 33154 bytes (13.36% of the original) using <a href= - * "http://linux.die.net/man/1/gzip">gzip(1)</a>. Building it with the same - * version of UglifyJS 1.2.5 patched with the implementation of consolidation - * results in 80784 bytes (a decrease of 12863 bytes, i.e. 13.74%, in comparison - * to the aforementioned 93647 bytes) which are then compressed to 34013 bytes - * (an increase of 859 bytes, i.e. 2.59%, in comparison to the aforementioned - * 33154 bytes).</p> - * <p>Written in <a href="http://es5.github.com/#x4.2.2">the strict variant</a> - * of <a href="http://es5.github.com/">ECMA-262 5.1 Edition</a>. Encoded in <a - * href="http://tools.ietf.org/html/rfc3629">UTF-8</a>. Follows <a href= - * "http://google-styleguide.googlecode.com/svn-history/r76/trunk/javascriptguide.xml" - * >Revision 2.28 of the Google JavaScript Style Guide</a> (except for the - * discouraged use of the {@code function} tag and the {@code namespace} tag). - * 100% typed for the <a href= - * "http://closure-compiler.googlecode.com/files/compiler-20120123.tar.gz" - * >Closure Compiler Version 1741</a>.</p> - * <p>Should you find this software useful, please consider <a href= - * "https://paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JZLW72X8FD4WG" - * >a donation</a>.</p> - * @author follow.me@RGustBardon (Robert Gust-Bardon) - * @supported Tested with: - * <ul> - * <li><a href="http://nodejs.org/dist/v0.6.10/">Node v0.6.10</a>,</li> - * <li><a href="https://github.com/mishoo/UglifyJS/tarball/v1.2.5">UglifyJS - * v1.2.5</a>.</li> - * </ul> - */ - -/*global console:false, exports:true, module:false, require:false */ -/*jshint sub:true */ -/** - * Consolidates null, Boolean, and String values found inside an <abbr title= - * "abstract syntax tree">AST</abbr>. - * @param {!TSyntacticCodeUnit} oAbstractSyntaxTree An array-like object - * representing an <abbr title="abstract syntax tree">AST</abbr>. - * @return {!TSyntacticCodeUnit} An array-like object representing an <abbr - * title="abstract syntax tree">AST</abbr> with its null, Boolean, and - * String values consolidated. - */ -// TODO(user) Consolidation of mathematical values found in numeric literals. -// TODO(user) Unconsolidation. -// TODO(user) Consolidation of ECMA-262 6th Edition programs. -// TODO(user) Rewrite in ECMA-262 6th Edition. -exports['ast_consolidate'] = function(oAbstractSyntaxTree) { - 'use strict'; - /*jshint bitwise:true, curly:true, eqeqeq:true, forin:true, immed:true, - latedef:true, newcap:true, noarge:true, noempty:true, nonew:true, - onevar:true, plusplus:true, regexp:true, undef:true, strict:true, - sub:false, trailing:true */ - - var _, - /** - * A record consisting of data about one or more source elements. - * @constructor - * @nosideeffects - */ - TSourceElementsData = function() { - /** - * The category of the elements. - * @type {number} - * @see ESourceElementCategories - */ - this.nCategory = ESourceElementCategories.N_OTHER; - /** - * The number of occurrences (within the elements) of each primitive - * value that could be consolidated. - * @type {!Array.<!Object.<string, number>>} - */ - this.aCount = []; - this.aCount[EPrimaryExpressionCategories.N_IDENTIFIER_NAMES] = {}; - this.aCount[EPrimaryExpressionCategories.N_STRING_LITERALS] = {}; - this.aCount[EPrimaryExpressionCategories.N_NULL_AND_BOOLEAN_LITERALS] = - {}; - /** - * Identifier names found within the elements. - * @type {!Array.<string>} - */ - this.aIdentifiers = []; - /** - * Prefixed representation Strings of each primitive value that could be - * consolidated within the elements. - * @type {!Array.<string>} - */ - this.aPrimitiveValues = []; - }, - /** - * A record consisting of data about a primitive value that could be - * consolidated. - * @constructor - * @nosideeffects - */ - TPrimitiveValue = function() { - /** - * The difference in the number of terminal symbols between the original - * source text and the one with the primitive value consolidated. If the - * difference is positive, the primitive value is considered worthwhile. - * @type {number} - */ - this.nSaving = 0; - /** - * An identifier name of the variable that will be declared and assigned - * the primitive value if the primitive value is consolidated. - * @type {string} - */ - this.sName = ''; - }, - /** - * A record consisting of data on what to consolidate within the range of - * source elements that is currently being considered. - * @constructor - * @nosideeffects - */ - TSolution = function() { - /** - * An object whose keys are prefixed representation Strings of each - * primitive value that could be consolidated within the elements and - * whose values are corresponding data about those primitive values. - * @type {!Object.<string, {nSaving: number, sName: string}>} - * @see TPrimitiveValue - */ - this.oPrimitiveValues = {}; - /** - * The difference in the number of terminal symbols between the original - * source text and the one with all the worthwhile primitive values - * consolidated. - * @type {number} - * @see TPrimitiveValue#nSaving - */ - this.nSavings = 0; - }, - /** - * The processor of <abbr title="abstract syntax tree">AST</abbr>s found - * in UglifyJS. - * @namespace - * @type {!TProcessor} - */ - oProcessor = (/** @type {!TProcessor} */ require('./process')), - /** - * A record consisting of a number of constants that represent the - * difference in the number of terminal symbols between a source text with - * a modified syntactic code unit and the original one. - * @namespace - * @type {!Object.<string, number>} - */ - oWeights = { - /** - * The difference in the number of punctuators required by the bracket - * notation and the dot notation. - * <p><code>'[]'.length - '.'.length</code></p> - * @const - * @type {number} - */ - N_PROPERTY_ACCESSOR: 1, - /** - * The number of punctuators required by a variable declaration with an - * initialiser. - * <p><code>':'.length + ';'.length</code></p> - * @const - * @type {number} - */ - N_VARIABLE_DECLARATION: 2, - /** - * The number of terminal symbols required to introduce a variable - * statement (excluding its variable declaration list). - * <p><code>'var '.length</code></p> - * @const - * @type {number} - */ - N_VARIABLE_STATEMENT_AFFIXATION: 4, - /** - * The number of terminal symbols needed to enclose source elements - * within a function call with no argument values to a function with an - * empty parameter list. - * <p><code>'(function(){}());'.length</code></p> - * @const - * @type {number} - */ - N_CLOSURE: 17 - }, - /** - * Categories of primary expressions from which primitive values that - * could be consolidated are derivable. - * @namespace - * @enum {number} - */ - EPrimaryExpressionCategories = { - /** - * Identifier names used as property accessors. - * @type {number} - */ - N_IDENTIFIER_NAMES: 0, - /** - * String literals. - * @type {number} - */ - N_STRING_LITERALS: 1, - /** - * Null and Boolean literals. - * @type {number} - */ - N_NULL_AND_BOOLEAN_LITERALS: 2 - }, - /** - * Prefixes of primitive values that could be consolidated. - * The String values of the prefixes must have same number of characters. - * The prefixes must not be used in any properties defined in any version - * of <a href= - * "http://www.ecma-international.org/publications/standards/Ecma-262.htm" - * >ECMA-262</a>. - * @namespace - * @enum {string} - */ - EValuePrefixes = { - /** - * Identifies String values. - * @type {string} - */ - S_STRING: '#S', - /** - * Identifies null and Boolean values. - * @type {string} - */ - S_SYMBOLIC: '#O' - }, - /** - * Categories of source elements in terms of their appropriateness of - * having their primitive values consolidated. - * @namespace - * @enum {number} - */ - ESourceElementCategories = { - /** - * Identifies a source element that includes the <a href= - * "http://es5.github.com/#x12.10">{@code with}</a> statement. - * @type {number} - */ - N_WITH: 0, - /** - * Identifies a source element that includes the <a href= - * "http://es5.github.com/#x15.1.2.1">{@code eval}</a> identifier name. - * @type {number} - */ - N_EVAL: 1, - /** - * Identifies a source element that must be excluded from the process - * unless its whole scope is examined. - * @type {number} - */ - N_EXCLUDABLE: 2, - /** - * Identifies source elements not posing any problems. - * @type {number} - */ - N_OTHER: 3 - }, - /** - * The list of literals (other than the String ones) whose primitive - * values can be consolidated. - * @const - * @type {!Array.<string>} - */ - A_OTHER_SUBSTITUTABLE_LITERALS = [ - 'null', // The null literal. - 'false', // The Boolean literal {@code false}. - 'true' // The Boolean literal {@code true}. - ]; - - (/** - * Consolidates all worthwhile primitive values in a syntactic code unit. - * @param {!TSyntacticCodeUnit} oSyntacticCodeUnit An array-like object - * representing the branch of the abstract syntax tree representing the - * syntactic code unit along with its scope. - * @see TPrimitiveValue#nSaving - */ - function fExamineSyntacticCodeUnit(oSyntacticCodeUnit) { - var _, - /** - * Indicates whether the syntactic code unit represents global code. - * @type {boolean} - */ - bIsGlobal = 'toplevel' === oSyntacticCodeUnit[0], - /** - * Indicates whether the whole scope is being examined. - * @type {boolean} - */ - bIsWhollyExaminable = !bIsGlobal, - /** - * An array-like object representing source elements that constitute a - * syntactic code unit. - * @type {!TSyntacticCodeUnit} - */ - oSourceElements, - /** - * A record consisting of data about the source element that is - * currently being examined. - * @type {!TSourceElementsData} - */ - oSourceElementData, - /** - * The scope of the syntactic code unit. - * @type {!TScope} - */ - oScope, - /** - * An instance of an object that allows the traversal of an <abbr - * title="abstract syntax tree">AST</abbr>. - * @type {!TWalker} - */ - oWalker, - /** - * An object encompassing collections of functions used during the - * traversal of an <abbr title="abstract syntax tree">AST</abbr>. - * @namespace - * @type {!Object.<string, !Object.<string, function(...[*])>>} - */ - oWalkers = { - /** - * A collection of functions used during the surveyance of source - * elements. - * @namespace - * @type {!Object.<string, function(...[*])>} - */ - oSurveySourceElement: { - /**#nocode+*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. Adds the identifier of the function and its formal - * parameters to the list of identifier names found. - * @param {string} sIdentifier The identifier of the function. - * @param {!Array.<string>} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'defun': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - fClassifyAsExcludable(); - fAddIdentifier(sIdentifier); - aFormalParameterList.forEach(fAddIdentifier); - }, - /** - * Increments the count of the number of occurrences of the String - * value that is equivalent to the sequence of terminal symbols - * that constitute the encountered identifier name. - * @param {!TSyntacticCodeUnit} oExpression The nonterminal - * MemberExpression. - * @param {string} sIdentifierName The identifier name used as the - * property accessor. - * @return {!Array} The encountered branch of an <abbr title= - * "abstract syntax tree">AST</abbr> with its nonterminal - * MemberExpression traversed. - */ - 'dot': function(oExpression, sIdentifierName) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES, - EValuePrefixes.S_STRING + sIdentifierName); - return ['dot', oWalker.walk(oExpression), sIdentifierName]; - }, - /** - * Adds the optional identifier of the function and its formal - * parameters to the list of identifier names found. - * @param {?string} sIdentifier The optional identifier of the - * function. - * @param {!Array.<string>} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'function': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - if ('string' === typeof sIdentifier) { - fAddIdentifier(sIdentifier); - } - aFormalParameterList.forEach(fAddIdentifier); - }, - /** - * Either increments the count of the number of occurrences of the - * encountered null or Boolean value or classifies a source element - * as containing the {@code eval} identifier name. - * @param {string} sIdentifier The identifier encountered. - */ - 'name': function(sIdentifier) { - if (-1 !== A_OTHER_SUBSTITUTABLE_LITERALS.indexOf(sIdentifier)) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_NULL_AND_BOOLEAN_LITERALS, - EValuePrefixes.S_SYMBOLIC + sIdentifier); - } else { - if ('eval' === sIdentifier) { - oSourceElementData.nCategory = - ESourceElementCategories.N_EVAL; - } - fAddIdentifier(sIdentifier); - } - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. - * @param {TSyntacticCodeUnit} oExpression The expression whose - * value is to be returned. - */ - 'return': function(oExpression) { - fClassifyAsExcludable(); - }, - /** - * Increments the count of the number of occurrences of the - * encountered String value. - * @param {string} sStringValue The String value of the string - * literal encountered. - */ - 'string': function(sStringValue) { - if (sStringValue.length > 0) { - fCountPrimaryExpression( - EPrimaryExpressionCategories.N_STRING_LITERALS, - EValuePrefixes.S_STRING + sStringValue); - } - }, - /** - * Adds the identifier reserved for an exception to the list of - * identifier names found. - * @param {!TSyntacticCodeUnit} oTry A block of code in which an - * exception can occur. - * @param {Array} aCatch The identifier reserved for an exception - * and a block of code to handle the exception. - * @param {TSyntacticCodeUnit} oFinally An optional block of code - * to be evaluated regardless of whether an exception occurs. - */ - 'try': function(oTry, aCatch, oFinally) { - if (Array.isArray(aCatch)) { - fAddIdentifier(aCatch[0]); - } - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. Adds the identifier of each declared variable to the list - * of identifier names found. - * @param {!Array.<!Array>} aVariableDeclarationList Variable - * declarations. - */ - 'var': function(aVariableDeclarationList) { - fClassifyAsExcludable(); - aVariableDeclarationList.forEach(fAddVariable); - }, - /** - * Classifies a source element as containing the {@code with} - * statement. - * @param {!TSyntacticCodeUnit} oExpression An expression whose - * value is to be converted to a value of type Object and - * become the binding object of a new object environment - * record of a new lexical environment in which the statement - * is to be executed. - * @param {!TSyntacticCodeUnit} oStatement The statement to be - * executed in the augmented lexical environment. - * @return {!Array} An empty array to stop the traversal. - */ - 'with': function(oExpression, oStatement) { - oSourceElementData.nCategory = ESourceElementCategories.N_WITH; - return []; - } - /**#nocode-*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - }, - /** - * A collection of functions used while looking for nested functions. - * @namespace - * @type {!Object.<string, function(...[*])>} - */ - oExamineFunctions: { - /**#nocode+*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - /** - * Orders an examination of a nested function declaration. - * @this {!TSyntacticCodeUnit} An array-like object representing - * the branch of an <abbr title="abstract syntax tree" - * >AST</abbr> representing the syntactic code unit along with - * its scope. - * @return {!Array} An empty array to stop the traversal. - */ - 'defun': function() { - fExamineSyntacticCodeUnit(this); - return []; - }, - /** - * Orders an examination of a nested function expression. - * @this {!TSyntacticCodeUnit} An array-like object representing - * the branch of an <abbr title="abstract syntax tree" - * >AST</abbr> representing the syntactic code unit along with - * its scope. - * @return {!Array} An empty array to stop the traversal. - */ - 'function': function() { - fExamineSyntacticCodeUnit(this); - return []; - } - /**#nocode-*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - } - }, - /** - * Records containing data about source elements. - * @type {Array.<TSourceElementsData>} - */ - aSourceElementsData = [], - /** - * The index (in the source text order) of the source element - * immediately following a <a href="http://es5.github.com/#x14.1" - * >Directive Prologue</a>. - * @type {number} - */ - nAfterDirectivePrologue = 0, - /** - * The index (in the source text order) of the source element that is - * currently being considered. - * @type {number} - */ - nPosition, - /** - * The index (in the source text order) of the source element that is - * the last element of the range of source elements that is currently - * being considered. - * @type {(undefined|number)} - */ - nTo, - /** - * Initiates the traversal of a source element. - * @param {!TWalker} oWalker An instance of an object that allows the - * traversal of an abstract syntax tree. - * @param {!TSyntacticCodeUnit} oSourceElement A source element from - * which the traversal should commence. - * @return {function(): !TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - cContext = function(oWalker, oSourceElement) { - /** - * @return {!TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - var fLambda = function() { - return oWalker.walk(oSourceElement); - }; - - return fLambda; - }, - /** - * Classifies the source element as excludable if it does not - * contain a {@code with} statement or the {@code eval} identifier - * name. - */ - fClassifyAsExcludable = function() { - if (oSourceElementData.nCategory === - ESourceElementCategories.N_OTHER) { - oSourceElementData.nCategory = - ESourceElementCategories.N_EXCLUDABLE; - } - }, - /** - * Adds an identifier to the list of identifier names found. - * @param {string} sIdentifier The identifier to be added. - */ - fAddIdentifier = function(sIdentifier) { - if (-1 === oSourceElementData.aIdentifiers.indexOf(sIdentifier)) { - oSourceElementData.aIdentifiers.push(sIdentifier); - } - }, - /** - * Adds the identifier of a variable to the list of identifier names - * found. - * @param {!Array} aVariableDeclaration A variable declaration. - */ - fAddVariable = function(aVariableDeclaration) { - fAddIdentifier(/** @type {string} */ aVariableDeclaration[0]); - }, - /** - * Increments the count of the number of occurrences of the prefixed - * String representation attributed to the primary expression. - * @param {number} nCategory The category of the primary expression. - * @param {string} sName The prefixed String representation attributed - * to the primary expression. - */ - fCountPrimaryExpression = function(nCategory, sName) { - if (!oSourceElementData.aCount[nCategory].hasOwnProperty(sName)) { - oSourceElementData.aCount[nCategory][sName] = 0; - if (-1 === oSourceElementData.aPrimitiveValues.indexOf(sName)) { - oSourceElementData.aPrimitiveValues.push(sName); - } - } - oSourceElementData.aCount[nCategory][sName] += 1; - }, - /** - * Consolidates all worthwhile primitive values in a range of source - * elements. - * @param {number} nFrom The index (in the source text order) of the - * source element that is the first element of the range. - * @param {number} nTo The index (in the source text order) of the - * source element that is the last element of the range. - * @param {boolean} bEnclose Indicates whether the range should be - * enclosed within a function call with no argument values to a - * function with an empty parameter list if any primitive values - * are consolidated. - * @see TPrimitiveValue#nSaving - */ - fExamineSourceElements = function(nFrom, nTo, bEnclose) { - var _, - /** - * The index of the last mangled name. - * @type {number} - */ - nIndex = oScope.cname, - /** - * The index of the source element that is currently being - * considered. - * @type {number} - */ - nPosition, - /** - * A collection of functions used during the consolidation of - * primitive values and identifier names used as property - * accessors. - * @namespace - * @type {!Object.<string, function(...[*])>} - */ - oWalkersTransformers = { - /** - * If the String value that is equivalent to the sequence of - * terminal symbols that constitute the encountered identifier - * name is worthwhile, a syntactic conversion from the dot - * notation to the bracket notation ensues with that sequence - * being substituted by an identifier name to which the value - * is assigned. - * Applies to property accessors that use the dot notation. - * @param {!TSyntacticCodeUnit} oExpression The nonterminal - * MemberExpression. - * @param {string} sIdentifierName The identifier name used as - * the property accessor. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'dot': function(oExpression, sIdentifierName) { - /** - * The prefixed String value that is equivalent to the - * sequence of terminal symbols that constitute the - * encountered identifier name. - * @type {string} - */ - var sPrefixed = EValuePrefixes.S_STRING + sIdentifierName; - - return oSolutionBest.oPrimitiveValues.hasOwnProperty( - sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - ['sub', - oWalker.walk(oExpression), - ['name', - oSolutionBest.oPrimitiveValues[sPrefixed].sName]] : - ['dot', oWalker.walk(oExpression), sIdentifierName]; - }, - /** - * If the encountered identifier is a null or Boolean literal - * and its value is worthwhile, the identifier is substituted - * by an identifier name to which that value is assigned. - * Applies to identifier names. - * @param {string} sIdentifier The identifier encountered. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'name': function(sIdentifier) { - /** - * The prefixed representation String of the identifier. - * @type {string} - */ - var sPrefixed = EValuePrefixes.S_SYMBOLIC + sIdentifier; - - return [ - 'name', - oSolutionBest.oPrimitiveValues.hasOwnProperty(sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - oSolutionBest.oPrimitiveValues[sPrefixed].sName : - sIdentifier - ]; - }, - /** - * If the encountered String value is worthwhile, it is - * substituted by an identifier name to which that value is - * assigned. - * Applies to String values. - * @param {string} sStringValue The String value of the string - * literal encountered. - * @return {!Array} A syntactic code unit that is equivalent to - * the one encountered. - * @see TPrimitiveValue#nSaving - */ - 'string': function(sStringValue) { - /** - * The prefixed representation String of the primitive value - * of the literal. - * @type {string} - */ - var sPrefixed = - EValuePrefixes.S_STRING + sStringValue; - - return oSolutionBest.oPrimitiveValues.hasOwnProperty( - sPrefixed) && - oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0 ? - ['name', - oSolutionBest.oPrimitiveValues[sPrefixed].sName] : - ['string', sStringValue]; - } - }, - /** - * Such data on what to consolidate within the range of source - * elements that is currently being considered that lead to the - * greatest known reduction of the number of the terminal symbols - * in comparison to the original source text. - * @type {!TSolution} - */ - oSolutionBest = new TSolution(), - /** - * Data representing an ongoing attempt to find a better - * reduction of the number of the terminal symbols in comparison - * to the original source text than the best one that is - * currently known. - * @type {!TSolution} - * @see oSolutionBest - */ - oSolutionCandidate = new TSolution(), - /** - * A record consisting of data about the range of source elements - * that is currently being examined. - * @type {!TSourceElementsData} - */ - oSourceElementsData = new TSourceElementsData(), - /** - * Variable declarations for each primitive value that is to be - * consolidated within the elements. - * @type {!Array.<!Array>} - */ - aVariableDeclarations = [], - /** - * Augments a list with a prefixed representation String. - * @param {!Array.<string>} aList A list that is to be augmented. - * @return {function(string)} A function that augments a list - * with a prefixed representation String. - */ - cAugmentList = function(aList) { - /** - * @param {string} sPrefixed Prefixed representation String of - * a primitive value that could be consolidated within the - * elements. - */ - var fLambda = function(sPrefixed) { - if (-1 === aList.indexOf(sPrefixed)) { - aList.push(sPrefixed); - } - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of a primitive value of a given - * category that could be consolidated in the source element with - * a given index to the count of occurrences of that primitive - * value within the range of source elements that is currently - * being considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - * @param {number} nCategory The category of the primary - * expression from which the primitive value is derived. - * @return {function(string)} A function that performs the - * addition. - * @see cAddOccurrencesInCategory - */ - cAddOccurrences = function(nPosition, nCategory) { - /** - * @param {string} sPrefixed The prefixed representation String - * of a primitive value. - */ - var fLambda = function(sPrefixed) { - if (!oSourceElementsData.aCount[nCategory].hasOwnProperty( - sPrefixed)) { - oSourceElementsData.aCount[nCategory][sPrefixed] = 0; - } - oSourceElementsData.aCount[nCategory][sPrefixed] += - aSourceElementsData[nPosition].aCount[nCategory][ - sPrefixed]; - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of each primitive value of a - * given category that could be consolidated in the source - * element with a given index to the count of occurrences of that - * primitive values within the range of source elements that is - * currently being considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - * @return {function(number)} A function that performs the - * addition. - * @see fAddOccurrences - */ - cAddOccurrencesInCategory = function(nPosition) { - /** - * @param {number} nCategory The category of the primary - * expression from which the primitive value is derived. - */ - var fLambda = function(nCategory) { - Object.keys( - aSourceElementsData[nPosition].aCount[nCategory] - ).forEach(cAddOccurrences(nPosition, nCategory)); - }; - - return fLambda; - }, - /** - * Adds the number of occurrences of each primitive value that - * could be consolidated in the source element with a given index - * to the count of occurrences of that primitive values within - * the range of source elements that is currently being - * considered. - * @param {number} nPosition The index (in the source text order) - * of a source element. - */ - fAddOccurrences = function(nPosition) { - Object.keys(aSourceElementsData[nPosition].aCount).forEach( - cAddOccurrencesInCategory(nPosition)); - }, - /** - * Creates a variable declaration for a primitive value if that - * primitive value is to be consolidated within the elements. - * @param {string} sPrefixed Prefixed representation String of a - * primitive value that could be consolidated within the - * elements. - * @see aVariableDeclarations - */ - cAugmentVariableDeclarations = function(sPrefixed) { - if (oSolutionBest.oPrimitiveValues[sPrefixed].nSaving > 0) { - aVariableDeclarations.push([ - oSolutionBest.oPrimitiveValues[sPrefixed].sName, - [0 === sPrefixed.indexOf(EValuePrefixes.S_SYMBOLIC) ? - 'name' : 'string', - sPrefixed.substring(EValuePrefixes.S_SYMBOLIC.length)] - ]); - } - }, - /** - * Sorts primitive values with regard to the difference in the - * number of terminal symbols between the original source text - * and the one with those primitive values consolidated. - * @param {string} sPrefixed0 The prefixed representation String - * of the first of the two primitive values that are being - * compared. - * @param {string} sPrefixed1 The prefixed representation String - * of the second of the two primitive values that are being - * compared. - * @return {number} - * <dl> - * <dt>-1</dt> - * <dd>if the first primitive value must be placed before - * the other one,</dd> - * <dt>0</dt> - * <dd>if the first primitive value may be placed before - * the other one,</dd> - * <dt>1</dt> - * <dd>if the first primitive value must not be placed - * before the other one.</dd> - * </dl> - * @see TSolution.oPrimitiveValues - */ - cSortPrimitiveValues = function(sPrefixed0, sPrefixed1) { - /** - * The difference between: - * <ol> - * <li>the difference in the number of terminal symbols - * between the original source text and the one with the - * first primitive value consolidated, and</li> - * <li>the difference in the number of terminal symbols - * between the original source text and the one with the - * second primitive value consolidated.</li> - * </ol> - * @type {number} - */ - var nDifference = - oSolutionCandidate.oPrimitiveValues[sPrefixed0].nSaving - - oSolutionCandidate.oPrimitiveValues[sPrefixed1].nSaving; - - return nDifference > 0 ? -1 : nDifference < 0 ? 1 : 0; - }, - /** - * Assigns an identifier name to a primitive value and calculates - * whether instances of that primitive value are worth - * consolidating. - * @param {string} sPrefixed The prefixed representation String - * of a primitive value that is being evaluated. - */ - fEvaluatePrimitiveValue = function(sPrefixed) { - var _, - /** - * The index of the last mangled name. - * @type {number} - */ - nIndex, - /** - * The representation String of the primitive value that is - * being evaluated. - * @type {string} - */ - sName = - sPrefixed.substring(EValuePrefixes.S_SYMBOLIC.length), - /** - * The number of source characters taken up by the - * representation String of the primitive value that is - * being evaluated. - * @type {number} - */ - nLengthOriginal = sName.length, - /** - * The number of source characters taken up by the - * identifier name that could substitute the primitive - * value that is being evaluated. - * substituted. - * @type {number} - */ - nLengthSubstitution, - /** - * The number of source characters taken up by by the - * representation String of the primitive value that is - * being evaluated when it is represented by a string - * literal. - * @type {number} - */ - nLengthString = oProcessor.make_string(sName).length; - - oSolutionCandidate.oPrimitiveValues[sPrefixed] = - new TPrimitiveValue(); - do { // Find an identifier unused in this or any nested scope. - nIndex = oScope.cname; - oSolutionCandidate.oPrimitiveValues[sPrefixed].sName = - oScope.next_mangled(); - } while (-1 !== oSourceElementsData.aIdentifiers.indexOf( - oSolutionCandidate.oPrimitiveValues[sPrefixed].sName)); - nLengthSubstitution = oSolutionCandidate.oPrimitiveValues[ - sPrefixed].sName.length; - if (0 === sPrefixed.indexOf(EValuePrefixes.S_SYMBOLIC)) { - // foo:null, or foo:null; - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving -= - nLengthSubstitution + nLengthOriginal + - oWeights.N_VARIABLE_DECLARATION; - // null vs foo - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories. - N_NULL_AND_BOOLEAN_LITERALS][sPrefixed] * - (nLengthOriginal - nLengthSubstitution); - } else { - // foo:'fromCharCode'; - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving -= - nLengthSubstitution + nLengthString + - oWeights.N_VARIABLE_DECLARATION; - // .fromCharCode vs [foo] - if (oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES - ].hasOwnProperty(sPrefixed)) { - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_IDENTIFIER_NAMES - ][sPrefixed] * - (nLengthOriginal - nLengthSubstitution - - oWeights.N_PROPERTY_ACCESSOR); - } - // 'fromCharCode' vs foo - if (oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_STRING_LITERALS - ].hasOwnProperty(sPrefixed)) { - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving += - oSourceElementsData.aCount[ - EPrimaryExpressionCategories.N_STRING_LITERALS - ][sPrefixed] * - (nLengthString - nLengthSubstitution); - } - } - if (oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving > - 0) { - oSolutionCandidate.nSavings += - oSolutionCandidate.oPrimitiveValues[sPrefixed].nSaving; - } else { - oScope.cname = nIndex; // Free the identifier name. - } - }, - /** - * Adds a variable declaration to an existing variable statement. - * @param {!Array} aVariableDeclaration A variable declaration - * with an initialiser. - */ - cAddVariableDeclaration = function(aVariableDeclaration) { - (/** @type {!Array} */ oSourceElements[nFrom][1]).unshift( - aVariableDeclaration); - }; - - if (nFrom > nTo) { - return; - } - // If the range is a closure, reuse the closure. - if (nFrom === nTo && - 'stat' === oSourceElements[nFrom][0] && - 'call' === oSourceElements[nFrom][1][0] && - 'function' === oSourceElements[nFrom][1][1][0]) { - fExamineSyntacticCodeUnit(oSourceElements[nFrom][1][1]); - return; - } - // Create a list of all derived primitive values within the range. - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - aSourceElementsData[nPosition].aPrimitiveValues.forEach( - cAugmentList(oSourceElementsData.aPrimitiveValues)); - } - if (0 === oSourceElementsData.aPrimitiveValues.length) { - return; - } - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - // Add the number of occurrences to the total count. - fAddOccurrences(nPosition); - // Add identifiers of this or any nested scope to the list. - aSourceElementsData[nPosition].aIdentifiers.forEach( - cAugmentList(oSourceElementsData.aIdentifiers)); - } - // Distribute identifier names among derived primitive values. - do { // If there was any progress, find a better distribution. - oSolutionBest = oSolutionCandidate; - if (Object.keys(oSolutionCandidate.oPrimitiveValues).length > 0) { - // Sort primitive values descending by their worthwhileness. - oSourceElementsData.aPrimitiveValues.sort(cSortPrimitiveValues); - } - oSolutionCandidate = new TSolution(); - oSourceElementsData.aPrimitiveValues.forEach( - fEvaluatePrimitiveValue); - oScope.cname = nIndex; - } while (oSolutionCandidate.nSavings > oSolutionBest.nSavings); - // Take the necessity of adding a variable statement into account. - if ('var' !== oSourceElements[nFrom][0]) { - oSolutionBest.nSavings -= oWeights.N_VARIABLE_STATEMENT_AFFIXATION; - } - if (bEnclose) { - // Take the necessity of forming a closure into account. - oSolutionBest.nSavings -= oWeights.N_CLOSURE; - } - if (oSolutionBest.nSavings > 0) { - // Create variable declarations suitable for UglifyJS. - Object.keys(oSolutionBest.oPrimitiveValues).forEach( - cAugmentVariableDeclarations); - // Rewrite expressions that contain worthwhile primitive values. - for (nPosition = nFrom; nPosition <= nTo; nPosition += 1) { - oWalker = oProcessor.ast_walker(); - oSourceElements[nPosition] = - oWalker.with_walkers( - oWalkersTransformers, - cContext(oWalker, oSourceElements[nPosition])); - } - if ('var' === oSourceElements[nFrom][0]) { // Reuse the statement. - (/** @type {!Array.<!Array>} */ aVariableDeclarations.reverse( - )).forEach(cAddVariableDeclaration); - } else { // Add a variable statement. - Array.prototype.splice.call( - oSourceElements, - nFrom, - 0, - ['var', aVariableDeclarations]); - nTo += 1; - } - if (bEnclose) { - // Add a closure. - Array.prototype.splice.call( - oSourceElements, - nFrom, - 0, - ['stat', ['call', ['function', null, [], []], []]]); - // Copy source elements into the closure. - for (nPosition = nTo + 1; nPosition > nFrom; nPosition -= 1) { - Array.prototype.unshift.call( - oSourceElements[nFrom][1][1][3], - oSourceElements[nPosition]); - } - // Remove source elements outside the closure. - Array.prototype.splice.call( - oSourceElements, - nFrom + 1, - nTo - nFrom + 1); - } - } - if (bEnclose) { - // Restore the availability of identifier names. - oScope.cname = nIndex; - } - }; - - oSourceElements = (/** @type {!TSyntacticCodeUnit} */ - oSyntacticCodeUnit[bIsGlobal ? 1 : 3]); - if (0 === oSourceElements.length) { - return; - } - oScope = bIsGlobal ? oSyntacticCodeUnit.scope : oSourceElements.scope; - // Skip a Directive Prologue. - while (nAfterDirectivePrologue < oSourceElements.length && - 'stat' === oSourceElements[nAfterDirectivePrologue][0] && - 'string' === oSourceElements[nAfterDirectivePrologue][1][0]) { - nAfterDirectivePrologue += 1; - aSourceElementsData.push(null); - } - if (oSourceElements.length === nAfterDirectivePrologue) { - return; - } - for (nPosition = nAfterDirectivePrologue; - nPosition < oSourceElements.length; - nPosition += 1) { - oSourceElementData = new TSourceElementsData(); - oWalker = oProcessor.ast_walker(); - // Classify a source element. - // Find its derived primitive values and count their occurrences. - // Find all identifiers used (including nested scopes). - oWalker.with_walkers( - oWalkers.oSurveySourceElement, - cContext(oWalker, oSourceElements[nPosition])); - // Establish whether the scope is still wholly examinable. - bIsWhollyExaminable = bIsWhollyExaminable && - ESourceElementCategories.N_WITH !== oSourceElementData.nCategory && - ESourceElementCategories.N_EVAL !== oSourceElementData.nCategory; - aSourceElementsData.push(oSourceElementData); - } - if (bIsWhollyExaminable) { // Examine the whole scope. - fExamineSourceElements( - nAfterDirectivePrologue, - oSourceElements.length - 1, - false); - } else { // Examine unexcluded ranges of source elements. - for (nPosition = oSourceElements.length - 1; - nPosition >= nAfterDirectivePrologue; - nPosition -= 1) { - oSourceElementData = (/** @type {!TSourceElementsData} */ - aSourceElementsData[nPosition]); - if (ESourceElementCategories.N_OTHER === - oSourceElementData.nCategory) { - if ('undefined' === typeof nTo) { - nTo = nPosition; // Indicate the end of a range. - } - // Examine the range if it immediately follows a Directive Prologue. - if (nPosition === nAfterDirectivePrologue) { - fExamineSourceElements(nPosition, nTo, true); - } - } else { - if ('undefined' !== typeof nTo) { - // Examine the range that immediately follows this source element. - fExamineSourceElements(nPosition + 1, nTo, true); - nTo = void 0; // Obliterate the range. - } - // Examine nested functions. - oWalker = oProcessor.ast_walker(); - oWalker.with_walkers( - oWalkers.oExamineFunctions, - cContext(oWalker, oSourceElements[nPosition])); - } - } - } - }(oAbstractSyntaxTree = oProcessor.ast_add_scope(oAbstractSyntaxTree))); - return oAbstractSyntaxTree; -}; -/*jshint sub:false */ - - -if (require.main === module) { - (function() { - 'use strict'; - /*jshint bitwise:true, curly:true, eqeqeq:true, forin:true, immed:true, - latedef:true, newcap:true, noarge:true, noempty:true, nonew:true, - onevar:true, plusplus:true, regexp:true, undef:true, strict:true, - sub:false, trailing:true */ - - var _, - /** - * NodeJS module for unit testing. - * @namespace - * @type {!TAssert} - * @see http://nodejs.org/docs/v0.6.10/api/all.html#assert - */ - oAssert = (/** @type {!TAssert} */ require('assert')), - /** - * The parser of ECMA-262 found in UglifyJS. - * @namespace - * @type {!TParser} - */ - oParser = (/** @type {!TParser} */ require('./parse-js')), - /** - * The processor of <abbr title="abstract syntax tree">AST</abbr>s - * found in UglifyJS. - * @namespace - * @type {!TProcessor} - */ - oProcessor = (/** @type {!TProcessor} */ require('./process')), - /** - * An instance of an object that allows the traversal of an <abbr - * title="abstract syntax tree">AST</abbr>. - * @type {!TWalker} - */ - oWalker, - /** - * A collection of functions for the removal of the scope information - * during the traversal of an <abbr title="abstract syntax tree" - * >AST</abbr>. - * @namespace - * @type {!Object.<string, function(...[*])>} - */ - oWalkersPurifiers = { - /**#nocode+*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - /** - * Deletes the scope information from the branch of the abstract - * syntax tree representing the encountered function declaration. - * @param {string} sIdentifier The identifier of the function. - * @param {!Array.<string>} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'defun': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - delete oFunctionBody.scope; - }, - /** - * Deletes the scope information from the branch of the abstract - * syntax tree representing the encountered function expression. - * @param {?string} sIdentifier The optional identifier of the - * function. - * @param {!Array.<string>} aFormalParameterList Formal parameters. - * @param {!TSyntacticCodeUnit} oFunctionBody Function code. - */ - 'function': function( - sIdentifier, - aFormalParameterList, - oFunctionBody) { - delete oFunctionBody.scope; - } - /**#nocode-*/ // JsDoc Toolkit 2.4.0 hides some of the keys. - }, - /** - * Initiates the traversal of a source element. - * @param {!TWalker} oWalker An instance of an object that allows the - * traversal of an abstract syntax tree. - * @param {!TSyntacticCodeUnit} oSourceElement A source element from - * which the traversal should commence. - * @return {function(): !TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - cContext = function(oWalker, oSourceElement) { - /** - * @return {!TSyntacticCodeUnit} A function that is able to - * initiate the traversal from a given source element. - */ - var fLambda = function() { - return oWalker.walk(oSourceElement); - }; - - return fLambda; - }, - /** - * A record consisting of configuration for the code generation phase. - * @type {!Object} - */ - oCodeGenerationOptions = { - beautify: true - }, - /** - * Tests whether consolidation of an ECMAScript program yields expected - * results. - * @param {{ - * sTitle: string, - * sInput: string, - * sOutput: string - * }} oUnitTest A record consisting of data about a unit test: its - * name, an ECMAScript program, and, if consolidation is to take - * place, the resulting ECMAScript program. - */ - cAssert = function(oUnitTest) { - var _, - /** - * An array-like object representing the <abbr title= - * "abstract syntax tree">AST</abbr> obtained after consolidation. - * @type {!TSyntacticCodeUnit} - */ - oSyntacticCodeUnitActual = - exports.ast_consolidate(oParser.parse(oUnitTest.sInput)), - /** - * An array-like object representing the expected <abbr title= - * "abstract syntax tree">AST</abbr>. - * @type {!TSyntacticCodeUnit} - */ - oSyntacticCodeUnitExpected = oParser.parse( - oUnitTest.hasOwnProperty('sOutput') ? - oUnitTest.sOutput : oUnitTest.sInput); - - delete oSyntacticCodeUnitActual.scope; - oWalker = oProcessor.ast_walker(); - oWalker.with_walkers( - oWalkersPurifiers, - cContext(oWalker, oSyntacticCodeUnitActual)); - try { - oAssert.deepEqual( - oSyntacticCodeUnitActual, - oSyntacticCodeUnitExpected); - } catch (oException) { - console.error( - '########## A unit test has failed.\n' + - oUnitTest.sTitle + '\n' + - '##### actual code (' + - oProcessor.gen_code(oSyntacticCodeUnitActual).length + - ' bytes)\n' + - oProcessor.gen_code( - oSyntacticCodeUnitActual, - oCodeGenerationOptions) + '\n' + - '##### expected code (' + - oProcessor.gen_code(oSyntacticCodeUnitExpected).length + - ' bytes)\n' + - oProcessor.gen_code( - oSyntacticCodeUnitExpected, - oCodeGenerationOptions)); - } - }; - - [ - // 7.6.1 Reserved Words. - { - sTitle: - 'Omission of keywords while choosing an identifier name.', - sInput: - '(function() {' + - ' var a, b, c, d, e, f, g, h, i, j, k, l, m,' + - ' n, o, p, q, r, s, t, u, v, w, x, y, z,' + - ' A, B, C, D, E, F, G, H, I, J, K, L, M,' + - ' N, O, P, Q, R, S, T, U, V, W, X, Y, Z,' + - ' $, _,' + - ' aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am,' + - ' an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az,' + - ' aA, aB, aC, aD, aE, aF, aG, aH, aI, aJ, aK, aL, aM,' + - ' aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ,' + - ' a$, a_,' + - ' ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm,' + - ' bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz,' + - ' bA, bB, bC, bD, bE, bF, bG, bH, bI, bJ, bK, bL, bM,' + - ' bN, bO, bP, bQ, bR, bS, bT, bU, bV, bW, bX, bY, bZ,' + - ' b$, b_,' + - ' ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck, cl, cm,' + - ' cn, co, cp, cq, cr, cs, ct, cu, cv, cw, cx, cy, cz,' + - ' cA, cB, cC, cD, cE, cF, cG, cH, cI, cJ, cK, cL, cM,' + - ' cN, cO, cP, cQ, cR, cS, cT, cU, cV, cW, cX, cY, cZ,' + - ' c$, c_,' + - ' da, db, dc, dd, de, df, dg, dh, di, dj, dk, dl, dm,' + - ' dn, dq, dr, ds, dt, du, dv, dw, dx, dy, dz,' + - ' dA, dB, dC, dD, dE, dF, dG, dH, dI, dJ, dK, dL, dM,' + - ' dN, dO, dP, dQ, dR, dS, dT, dU, dV, dW, dX, dY, dZ,' + - ' d$, d_;' + - ' void ["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",' + - ' "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"];' + - '}());', - sOutput: - '(function() {' + - ' var dp =' + - ' "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",' + - ' a, b, c, d, e, f, g, h, i, j, k, l, m,' + - ' n, o, p, q, r, s, t, u, v, w, x, y, z,' + - ' A, B, C, D, E, F, G, H, I, J, K, L, M,' + - ' N, O, P, Q, R, S, T, U, V, W, X, Y, Z,' + - ' $, _,' + - ' aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am,' + - ' an, ao, ap, aq, ar, as, at, au, av, aw, ax, ay, az,' + - ' aA, aB, aC, aD, aE, aF, aG, aH, aI, aJ, aK, aL, aM,' + - ' aN, aO, aP, aQ, aR, aS, aT, aU, aV, aW, aX, aY, aZ,' + - ' a$, a_,' + - ' ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl, bm,' + - ' bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx, by, bz,' + - ' bA, bB, bC, bD, bE, bF, bG, bH, bI, bJ, bK, bL, bM,' + - ' bN, bO, bP, bQ, bR, bS, bT, bU, bV, bW, bX, bY, bZ,' + - ' b$, b_,' + - ' ca, cb, cc, cd, ce, cf, cg, ch, ci, cj, ck, cl, cm,' + - ' cn, co, cp, cq, cr, cs, ct, cu, cv, cw, cx, cy, cz,' + - ' cA, cB, cC, cD, cE, cF, cG, cH, cI, cJ, cK, cL, cM,' + - ' cN, cO, cP, cQ, cR, cS, cT, cU, cV, cW, cX, cY, cZ,' + - ' c$, c_,' + - ' da, db, dc, dd, de, df, dg, dh, di, dj, dk, dl, dm,' + - ' dn, dq, dr, ds, dt, du, dv, dw, dx, dy, dz,' + - ' dA, dB, dC, dD, dE, dF, dG, dH, dI, dJ, dK, dL, dM,' + - ' dN, dO, dP, dQ, dR, dS, dT, dU, dV, dW, dX, dY, dZ,' + - ' d$, d_;' + - ' void [dp, dp];' + - '}());' - }, - // 7.8.1 Null Literals. - { - sTitle: - 'Evaluation with regard to the null value.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' var foo;' + - ' void [null, null, null];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [null, null];' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' var a = null, foo;' + - ' void [a, a, a];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [null, null];' + - '}());' - }, - // 7.8.2 Boolean Literals. - { - sTitle: - 'Evaluation with regard to the false value.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' var foo;' + - ' void [false, false, false];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [false, false];' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' var a = false, foo;' + - ' void [a, a, a];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [false, false];' + - '}());' - }, - { - sTitle: - 'Evaluation with regard to the true value.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' var foo;' + - ' void [true, true, true];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [true, true];' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' var a = true, foo;' + - ' void [a, a, a];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void [true, true];' + - '}());' - }, - // 7.8.4 String Literals. - { - sTitle: - 'Evaluation with regard to the String value of a string literal.', - sInput: - '(function() {' + - ' var foo;' + - ' void ["abcd", "abcd", "abc", "abc"];' + - '}());', - sOutput: - '(function() {' + - ' var a = "abcd", foo;' + - ' void [a, a, "abc", "abc"];' + - '}());' - }, - // 7.8.5 Regular Expression Literals. - { - sTitle: - 'Preservation of the pattern of a regular expression literal.', - sInput: - 'void [/abcdefghijklmnopqrstuvwxyz/, /abcdefghijklmnopqrstuvwxyz/];' - }, - { - sTitle: - 'Preservation of the flags of a regular expression literal.', - sInput: - 'void [/(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim,' + - ' /(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim,' + - ' /(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim, /(?:)/gim];' - }, - // 10.2 Lexical Environments. - { - sTitle: - 'Preservation of identifier names in the same scope.', - sInput: - '/*jshint shadow:true */' + - 'var a;' + - 'function b(i) {' + - '}' + - 'for (var c; 0 === Math.random(););' + - 'for (var d in {});' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - 'void [b(a), b(c), b(d)];' + - 'void [typeof e];' + - 'i: for (; 0 === Math.random();) {' + - ' if (42 === (new Date()).getMinutes()) {' + - ' continue i;' + - ' } else {' + - ' break i;' + - ' }' + - '}' + - 'try {' + - '} catch (f) {' + - '} finally {' + - '}' + - '(function g(h) {' + - '}());' + - 'void [{' + - ' i: 42,' + - ' "j": 42,' + - ' \'k\': 42' + - '}];' + - 'void ["abcdefghijklmnopqrstuvwxyz"];', - sOutput: - '/*jshint shadow:true */' + - 'var a;' + - 'function b(i) {' + - '}' + - 'for (var c; 0 === Math.random(););' + - 'for (var d in {});' + - '(function() {' + - ' var i = "abcdefghijklmnopqrstuvwxyz";' + - ' void [i];' + - ' void [b(a), b(c), b(d)];' + - ' void [typeof e];' + - ' i: for (; 0 === Math.random();) {' + - ' if (42 === (new Date()).getMinutes()) {' + - ' continue i;' + - ' } else {' + - ' break i;' + - ' }' + - ' }' + - ' try {' + - ' } catch (f) {' + - ' } finally {' + - ' }' + - ' (function g(h) {' + - ' }());' + - ' void [{' + - ' i: 42,' + - ' "j": 42,' + - ' \'k\': 42' + - ' }];' + - ' void [i];' + - '}());' - }, - { - sTitle: - 'Preservation of identifier names in nested function code.', - sInput: - '(function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' (function() {' + - ' var a;' + - ' for (var b; 0 === Math.random(););' + - ' for (var c in {});' + - ' void [typeof d];' + - ' h: for (; 0 === Math.random();) {' + - ' if (42 === (new Date()).getMinutes()) {' + - ' continue h;' + - ' } else {' + - ' break h;' + - ' }' + - ' }' + - ' try {' + - ' } catch (e) {' + - ' } finally {' + - ' }' + - ' (function f(g) {' + - ' }());' + - ' void [{' + - ' h: 42,' + - ' "i": 42,' + - ' \'j\': 42' + - ' }];' + - ' }());' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '(function() {' + - ' var h = "abcdefghijklmnopqrstuvwxyz";' + - ' void [h];' + - ' (function() {' + - ' var a;' + - ' for (var b; 0 === Math.random(););' + - ' for (var c in {});' + - ' void [typeof d];' + - ' h: for (; 0 === Math.random();) {' + - ' if (42 === (new Date()).getMinutes()) {' + - ' continue h;' + - ' } else {' + - ' break h;' + - ' }' + - ' }' + - ' try {' + - ' } catch (e) {' + - ' } finally {' + - ' }' + - ' (function f(g) {' + - ' }());' + - ' void [{' + - ' h: 42,' + - ' "i": 42,' + - ' \'j\': 42' + - ' }];' + - ' }());' + - ' void [h];' + - '}());' - }, - { - sTitle: - 'Consolidation of a closure with other source elements.', - sInput: - '(function(foo) {' + - '}("abcdefghijklmnopqrstuvwxyz"));' + - 'void ["abcdefghijklmnopqrstuvwxyz"];', - sOutput: - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' (function(foo) {' + - ' })(a);' + - ' void [a];' + - '}());' - }, - { - sTitle: - 'Consolidation of function code instead of a sole closure.', - sInput: - '(function(foo, bar) {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}("abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"));', - sOutput: - '(function(foo, bar) {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}("abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"));' - }, - // 11.1.5 Object Initialiser. - { - sTitle: - 'Preservation of property names of an object initialiser.', - sInput: - 'var foo = {' + - ' abcdefghijklmnopqrstuvwxyz: 42,' + - ' "zyxwvutsrqponmlkjihgfedcba": 42,' + - ' \'mlkjihgfedcbanopqrstuvwxyz\': 42' + - '};' + - 'void [' + - ' foo.abcdefghijklmnopqrstuvwxyz,' + - ' "zyxwvutsrqponmlkjihgfedcba",' + - ' \'mlkjihgfedcbanopqrstuvwxyz\'' + - '];' - }, - { - sTitle: - 'Evaluation with regard to String values derived from identifier ' + - 'names used as property accessors.', - sInput: - '(function() {' + - ' var foo;' + - ' void [' + - ' Math.abcdefghij,' + - ' Math.abcdefghij,' + - ' Math.abcdefghi,' + - ' Math.abcdefghi' + - ' ];' + - '}());', - sOutput: - '(function() {' + - ' var a = "abcdefghij", foo;' + - ' void [' + - ' Math[a],' + - ' Math[a],' + - ' Math.abcdefghi,' + - ' Math.abcdefghi' + - ' ];' + - '}());' - }, - // 11.2.1 Property Accessors. - { - sTitle: - 'Preservation of identifiers in the nonterminal MemberExpression.', - sInput: - 'void [' + - ' Math.E,' + - ' Math.LN10,' + - ' Math.LN2,' + - ' Math.LOG2E,' + - ' Math.LOG10E,' + - ' Math.PI,' + - ' Math.SQRT1_2,' + - ' Math.SQRT2,' + - ' Math.abs,' + - ' Math.acos' + - '];' - }, - // 12.2 Variable Statement. - { - sTitle: - 'Preservation of the identifier of a variable that is being ' + - 'declared in a variable statement.', - sInput: - '(function() {' + - ' var abcdefghijklmnopqrstuvwxyz;' + - ' void [abcdefghijklmnopqrstuvwxyz];' + - '}());' - }, - { - sTitle: - 'Exclusion of a variable statement in global code.', - sInput: - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - 'var foo = "abcdefghijklmnopqrstuvwxyz",' + - ' bar = "abcdefghijklmnopqrstuvwxyz";' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - { - sTitle: - 'Exclusion of a variable statement in function code that ' + - 'contains a with statement.', - sInput: - '(function() {' + - ' with ({});' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' var foo;' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());' - }, - { - sTitle: - 'Exclusion of a variable statement in function code that ' + - 'contains a direct call to the eval function.', - sInput: - '/*jshint evil:true */' + - 'void [' + - ' function() {' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' var foo;' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' }' + - '];' - }, - { - sTitle: - 'Consolidation within a variable statement in global code.', - sInput: - 'var foo = function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '};', - sOutput: - 'var foo = function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '};' - }, - { - sTitle: - 'Consolidation within a variable statement excluded in function ' + - 'code due to the presence of a with statement.', - sInput: - '(function() {' + - ' with ({});' + - ' var foo = function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' };' + - '}());', - sOutput: - '(function() {' + - ' with ({});' + - ' var foo = function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' };' + - '}());' - }, - { - sTitle: - 'Consolidation within a variable statement excluded in function ' + - 'code due to the presence of a direct call to the eval function.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' eval("");' + - ' var foo = function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' };' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' eval("");' + - ' var foo = function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' };' + - '}());' - }, - { - sTitle: - 'Inclusion of a variable statement in function code that ' + - 'contains no with statement and no direct call to the eval ' + - 'function.', - sInput: - '(function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' var foo;' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a];' + - ' var foo;' + - ' void [a];' + - '}());' - }, - { - sTitle: - 'Ignorance with regard to a variable statement in global code.', - sInput: - 'var foo = "abcdefghijklmnopqrstuvwxyz";' + - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];', - sOutput: - 'var foo = "abcdefghijklmnopqrstuvwxyz";' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - // 12.4 Expression Statement. - { - sTitle: - 'Preservation of identifiers in an expression statement.', - sInput: - 'void [typeof abcdefghijklmnopqrstuvwxyz,' + - ' typeof abcdefghijklmnopqrstuvwxyz];' - }, - // 12.6.3 The {@code for} Statement. - { - sTitle: - 'Preservation of identifiers in the variable declaration list of ' + - 'a for statement.', - sInput: - 'for (var abcdefghijklmnopqrstuvwxyz; 0 === Math.random(););' + - 'for (var abcdefghijklmnopqrstuvwxyz; 0 === Math.random(););' - }, - // 12.6.4 The {@code for-in} Statement. - { - sTitle: - 'Preservation of identifiers in the variable declaration list of ' + - 'a for-in statement.', - sInput: - 'for (var abcdefghijklmnopqrstuvwxyz in {});' + - 'for (var abcdefghijklmnopqrstuvwxyz in {});' - }, - // 12.7 The {@code continue} Statement. - { - sTitle: - 'Preservation of the identifier in a continue statement.', - sInput: - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random();) {' + - ' continue abcdefghijklmnopqrstuvwxyz;' + - '}' + - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random();) {' + - ' continue abcdefghijklmnopqrstuvwxyz;' + - '}' - }, - // 12.8 The {@code break} Statement. - { - sTitle: - 'Preservation of the identifier in a break statement.', - sInput: - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random();) {' + - ' break abcdefghijklmnopqrstuvwxyz;' + - '}' + - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random();) {' + - ' break abcdefghijklmnopqrstuvwxyz;' + - '}' - }, - // 12.9 The {@code return} Statement. - { - sTitle: - 'Exclusion of a return statement in function code that contains ' + - 'a with statement.', - sInput: - '(function() {' + - ' with ({});' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' if (0 === Math.random()) {' + - ' return;' + - ' } else {' + - ' }' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());' - }, - { - sTitle: - 'Exclusion of a return statement in function code that contains ' + - 'a direct call to the eval function.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' if (0 === Math.random()) {' + - ' return;' + - ' } else {' + - ' }' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());' - }, - { - sTitle: - 'Consolidation within a return statement excluded in function ' + - 'code due to the presence of a with statement.', - sInput: - '(function() {' + - ' with ({});' + - ' return function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' };' + - '}());', - sOutput: - '(function() {' + - ' with ({});' + - ' return function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' };' + - '}());' - }, - { - sTitle: - 'Consolidation within a return statement excluded in function ' + - 'code due to the presence of a direct call to the eval function.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' eval("");' + - ' return function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' };' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' eval("");' + - ' return function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' };' + - '}());' - }, - { - sTitle: - 'Inclusion of a return statement in function code that contains ' + - 'no with statement and no direct call to the eval function.', - sInput: - '(function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - ' if (0 === Math.random()) {' + - ' return;' + - ' } else {' + - ' }' + - ' void ["abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a];' + - ' if (0 === Math.random()) {' + - ' return;' + - ' } else {' + - ' }' + - ' void [a];' + - '}());' - }, - // 12.10 The {@code with} Statement. - { - sTitle: - 'Preservation of the statement in a with statement.', - sInput: - 'with ({}) {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}' - }, - { - sTitle: - 'Exclusion of a with statement in the same syntactic code unit.', - sInput: - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - 'with ({' + - ' foo: "abcdefghijklmnopqrstuvwxyz",' + - ' bar: "abcdefghijklmnopqrstuvwxyz"' + - '}) {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - { - sTitle: - 'Exclusion of a with statement in nested function code.', - sInput: - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - '(function() {' + - ' with ({' + - ' foo: "abcdefghijklmnopqrstuvwxyz",' + - ' bar: "abcdefghijklmnopqrstuvwxyz"' + - ' }) {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' }' + - '}());' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - // 12.12 Labelled Statements. - { - sTitle: - 'Preservation of the label of a labelled statement.', - sInput: - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random(););' + - 'abcdefghijklmnopqrstuvwxyz: for (; 0 === Math.random(););' - }, - // 12.14 The {@code try} Statement. - { - sTitle: - 'Preservation of the identifier in the catch clause of a try' + - 'statement.', - sInput: - 'try {' + - '} catch (abcdefghijklmnopqrstuvwxyz) {' + - '} finally {' + - '}' + - 'try {' + - '} catch (abcdefghijklmnopqrstuvwxyz) {' + - '} finally {' + - '}' - }, - // 13 Function Definition. - { - sTitle: - 'Preservation of the identifier of a function declaration.', - sInput: - 'function abcdefghijklmnopqrstuvwxyz() {' + - '}' + - 'void [abcdefghijklmnopqrstuvwxyz];' - }, - { - sTitle: - 'Preservation of the identifier of a function expression.', - sInput: - 'void [' + - ' function abcdefghijklmnopqrstuvwxyz() {' + - ' },' + - ' function abcdefghijklmnopqrstuvwxyz() {' + - ' }' + - '];' - }, - { - sTitle: - 'Preservation of a formal parameter of a function declaration.', - sInput: - 'function foo(abcdefghijklmnopqrstuvwxyz) {' + - '}' + - 'function bar(abcdefghijklmnopqrstuvwxyz) {' + - '}' - }, - { - sTitle: - 'Preservation of a formal parameter in a function expression.', - sInput: - 'void [' + - ' function(abcdefghijklmnopqrstuvwxyz) {' + - ' },' + - ' function(abcdefghijklmnopqrstuvwxyz) {' + - ' }' + - '];' - }, - { - sTitle: - 'Exclusion of a function declaration.', - sInput: - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - 'function foo() {' + - '}' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - { - sTitle: - 'Consolidation within a function declaration.', - sInput: - 'function foo() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}', - sOutput: - 'function foo() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}' - }, - // 14 Program. - { - sTitle: - 'Preservation of a program without source elements.', - sInput: - '' - }, - // 14.1 Directive Prologues and the Use Strict Directive. - { - sTitle: - 'Preservation of a Directive Prologue in global code.', - sInput: - '"abcdefghijklmnopqrstuvwxyz";' + - '\'zyxwvutsrqponmlkjihgfedcba\';' - }, - { - sTitle: - 'Preservation of a Directive Prologue in a function declaration.', - sInput: - 'function foo() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' \'zyxwvutsrqponmlkjihgfedcba\';' + - '}' - }, - { - sTitle: - 'Preservation of a Directive Prologue in a function expression.', - sInput: - 'void [' + - ' function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' \'zyxwvutsrqponmlkjihgfedcba\';' + - ' }' + - '];' - }, - { - sTitle: - 'Ignorance with regard to a Directive Prologue in global code.', - sInput: - '"abcdefghijklmnopqrstuvwxyz";' + - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];', - sOutput: - '"abcdefghijklmnopqrstuvwxyz";' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - { - sTitle: - 'Ignorance with regard to a Directive Prologue in a function' + - 'declaration.', - sInput: - 'function foo() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}', - sOutput: - 'function foo() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}' - }, - { - sTitle: - 'Ignorance with regard to a Directive Prologue in a function' + - 'expression.', - sInput: - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - // 15.1 The Global Object. - { - sTitle: - 'Preservation of a property of the global object.', - sInput: - 'void [undefined, undefined, undefined, undefined, undefined];' - }, - // 15.1.2.1.1 Direct Call to Eval. - { - sTitle: - 'Exclusion of a direct call to the eval function in the same ' + - 'syntactic code unit.', - sInput: - '/*jshint evil:true */' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - 'eval("");' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - { - sTitle: - 'Exclusion of a direct call to the eval function in nested ' + - 'function code.', - sInput: - '/*jshint evil:true */' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' + - '(function() {' + - ' eval("");' + - '}());' + - 'void ["abcdefghijklmnopqrstuvwxyz"];' - }, - { - sTitle: - 'Consolidation within a direct call to the eval function.', - sInput: - '/*jshint evil:true */' + - 'eval(function() {' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '/*jshint evil:true */' + - 'eval(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - // Consolidation proper. - { - sTitle: - 'No consolidation if it does not result in a reduction of the ' + - 'number of source characters.', - sInput: - '(function() {' + - ' var foo;' + - ' void ["ab", "ab", "abc", "abc"];' + - '}());' - }, - { - sTitle: - 'Identification of a range of source elements at the beginning ' + - 'of global code.', - sInput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - 'eval("");', - sOutput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' + - 'eval("");' - }, - { - sTitle: - 'Identification of a range of source elements in the middle of ' + - 'global code.', - sInput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - 'eval("");' + - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - 'eval("");', - sOutput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - 'eval("");' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' + - 'eval("");' - }, - { - sTitle: - 'Identification of a range of source elements at the end of ' + - 'global code.', - sInput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - 'eval("");' + - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];', - sOutput: - '/*jshint evil:true */' + - '"abcdefghijklmnopqrstuvwxyz";' + - 'eval("");' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - { - sTitle: - 'Identification of a range of source elements at the beginning ' + - 'of function code.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' eval("");' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' (function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' }());' + - ' eval("");' + - '}());' - }, - { - sTitle: - 'Identification of a range of source elements in the middle of ' + - 'function code.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - ' eval("");' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' eval("");' + - ' (function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' }());' + - ' eval("");' + - '}());' - }, - { - sTitle: - 'Identification of a range of source elements at the end of ' + - 'function code.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' "abcdefghijklmnopqrstuvwxyz";' + - ' eval("");' + - ' (function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - ' }());' + - '}());' - }, - { - sTitle: - 'Evaluation with regard to String values of String literals and ' + - 'String values derived from identifier names used as property' + - 'accessors.', - sInput: - '(function() {' + - ' var foo;' + - ' void ["abcdefg", Math.abcdefg, "abcdef", Math.abcdef];' + - '}());', - sOutput: - '(function() {' + - ' var a = "abcdefg", foo;' + - ' void [a, Math[a], "abcdef", Math.abcdef];' + - '}());' - }, - { - sTitle: - 'Evaluation with regard to the necessity of adding a variable ' + - 'statement.', - sInput: - '/*jshint evil:true */' + - '(function() {' + - ' void ["abcdefgh", "abcdefgh"];' + - '}());' + - 'eval("");' + - '(function() {' + - ' void ["abcdefg", "abcdefg"];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var foo;' + - ' void ["abcd", "abcd"];' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' var a = "abcdefgh";' + - ' void [a, a];' + - '}());' + - 'eval("");' + - '(function() {' + - ' void ["abcdefg", "abcdefg"];' + - '}());' + - 'eval("");' + - '(function() {' + - ' var a = "abcd", foo;' + - ' void [a, a];' + - '}());' - }, - { - sTitle: - 'Evaluation with regard to the necessity of enclosing source ' + - 'elements.', - sInput: - '/*jshint evil:true */' + - 'void ["abcdefghijklmnopqrstuvwxy", "abcdefghijklmnopqrstuvwxy"];' + - 'eval("");' + - 'void ["abcdefghijklmnopqrstuvwx", "abcdefghijklmnopqrstuvwx"];' + - 'eval("");' + - '(function() {' + - ' void ["abcdefgh", "abcdefgh"];' + - '}());' + - '(function() {' + - ' void ["abcdefghijklmnopqrstuvwxy",' + - ' "abcdefghijklmnopqrstuvwxy"];' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwx",' + - ' "abcdefghijklmnopqrstuvwx"];' + - ' eval("");' + - ' (function() {' + - ' void ["abcdefgh", "abcdefgh"];' + - ' }());' + - '}());', - sOutput: - '/*jshint evil:true */' + - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxy";' + - ' void [a, a];' + - '}());' + - 'eval("");' + - 'void ["abcdefghijklmnopqrstuvwx", "abcdefghijklmnopqrstuvwx"];' + - 'eval("");' + - '(function() {' + - ' var a = "abcdefgh";' + - ' void [a, a];' + - '}());' + - '(function() {' + - ' (function() {' + - ' var a = "abcdefghijklmnopqrstuvwxy";' + - ' void [a, a];' + - ' }());' + - ' eval("");' + - ' void ["abcdefghijklmnopqrstuvwx", "abcdefghijklmnopqrstuvwx"];' + - ' eval("");' + - ' (function() {' + - ' var a = "abcdefgh";' + - ' void [a, a];' + - ' }());' + - '}());' - }, - { - sTitle: - 'Employment of a closure while consolidating in global code.', - sInput: - 'void ["abcdefghijklmnopqrstuvwxyz",' + - ' "abcdefghijklmnopqrstuvwxyz"];', - sOutput: - '(function() {' + - ' var a = "abcdefghijklmnopqrstuvwxyz";' + - ' void [a, a];' + - '}());' - }, - { - sTitle: - 'Assignment of a shorter identifier to a value whose ' + - 'consolidation results in a greater reduction of the number of ' + - 'source characters.', - sInput: - '(function() {' + - ' var b, c, d, e, f, g, h, i, j, k, l, m,' + - ' n, o, p, q, r, s, t, u, v, w, x, y, z,' + - ' A, B, C, D, E, F, G, H, I, J, K, L, M,' + - ' N, O, P, Q, R, S, T, U, V, W, X, Y, Z,' + - ' $, _;' + - ' void ["abcde", "abcde", "edcba", "edcba", "edcba"];' + - '}());', - sOutput: - '(function() {' + - ' var a = "edcba",' + - ' b, c, d, e, f, g, h, i, j, k, l, m,' + - ' n, o, p, q, r, s, t, u, v, w, x, y, z,' + - ' A, B, C, D, E, F, G, H, I, J, K, L, M,' + - ' N, O, P, Q, R, S, T, U, V, W, X, Y, Z,' + - ' $, _;' + - ' void ["abcde", "abcde", a, a, a];' + - '}());' - } - ].forEach(cAssert); - }()); -} - -/* Local Variables: */ -/* mode: js */ -/* coding: utf-8 */ -/* indent-tabs-mode: nil */ -/* tab-width: 2 */ -/* End: */ -/* vim: set ft=javascript fenc=utf-8 et ts=2 sts=2 sw=2: */ -/* :mode=javascript:noTabs=true:tabSize=2:indentSize=2:deepIndent=true: */ - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/object-ast.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/object-ast.js deleted file mode 100644 index afdb69fbd07..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/object-ast.js +++ /dev/null @@ -1,75 +0,0 @@ -var jsp = require("./parse-js"), - pro = require("./process"); - -var BY_TYPE = {}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -function AST_Node(parent) { - this.parent = parent; -}; - -AST_Node.prototype.init = function(){}; - -function DEFINE_NODE_CLASS(type, props, methods) { - var base = methods && methods.BASE || AST_Node; - if (!base) base = AST_Node; - function D(parent, data) { - base.apply(this, arguments); - if (props) props.forEach(function(name, i){ - this["_" + name] = data[i]; - }); - this.init(); - }; - var P = D.prototype = new AST_Node; - P.node_type = function(){ return type }; - if (props) props.forEach(function(name){ - var propname = "_" + name; - P["set_" + name] = function(val) { - this[propname] = val; - return this; - }; - P["get_" + name] = function() { - return this[propname]; - }; - }); - if (type != null) BY_TYPE[type] = D; - if (methods) for (var i in methods) if (HOP(methods, i)) { - P[i] = methods[i]; - } - return D; -}; - -var AST_String_Node = DEFINE_NODE_CLASS("string", ["value"]); -var AST_Number_Node = DEFINE_NODE_CLASS("num", ["value"]); -var AST_Name_Node = DEFINE_NODE_CLASS("name", ["value"]); - -var AST_Statlist_Node = DEFINE_NODE_CLASS(null, ["body"]); -var AST_Root_Node = DEFINE_NODE_CLASS("toplevel", null, { BASE: AST_Statlist_Node }); -var AST_Block_Node = DEFINE_NODE_CLASS("block", null, { BASE: AST_Statlist_Node }); -var AST_Splice_Node = DEFINE_NODE_CLASS("splice", null, { BASE: AST_Statlist_Node }); - -var AST_Var_Node = DEFINE_NODE_CLASS("var", ["definitions"]); -var AST_Const_Node = DEFINE_NODE_CLASS("const", ["definitions"]); - -var AST_Try_Node = DEFINE_NODE_CLASS("try", ["body", "catch", "finally"]); -var AST_Throw_Node = DEFINE_NODE_CLASS("throw", ["exception"]); - -var AST_New_Node = DEFINE_NODE_CLASS("new", ["constructor", "arguments"]); - -var AST_Switch_Node = DEFINE_NODE_CLASS("switch", ["expression", "branches"]); -var AST_Switch_Branch_Node = DEFINE_NODE_CLASS(null, ["expression", "body"]); - -var AST_Break_Node = DEFINE_NODE_CLASS("break", ["label"]); -var AST_Continue_Node = DEFINE_NODE_CLASS("continue", ["label"]); -var AST_Assign_Node = DEFINE_NODE_CLASS("assign", ["operator", "lvalue", "rvalue"]); -var AST_Dot_Node = DEFINE_NODE_CLASS("dot", ["expression", "name"]); -var AST_Call_Node = DEFINE_NODE_CLASS("call", ["function", "arguments"]); - -var AST_Lambda_Node = DEFINE_NODE_CLASS(null, ["name", "arguments", "body"]) -var AST_Function_Node = DEFINE_NODE_CLASS("function", null, AST_Lambda_Node); -var AST_Defun_Node = DEFINE_NODE_CLASS("defun", null, AST_Lambda_Node); - -var AST_If_Node = DEFINE_NODE_CLASS("if", ["condition", "then", "else"]); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/parse-js.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/parse-js.js deleted file mode 100644 index dccd623808a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/parse-js.js +++ /dev/null @@ -1,1346 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file contains the tokenizer/parser. It is a port to JavaScript - of parse-js [1], a JavaScript parser library written in Common Lisp - by Marijn Haverbeke. Thank you Marijn! - - [1] http://marijn.haverbeke.nl/parse-js/ - - Exported functions: - - - tokenizer(code) -- returns a function. Call the returned - function to fetch the next token. - - - parse(code) -- returns an AST of the given JavaScript code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - <mihai.bazon@gmail.com> - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com> - Based on parse-js (http://marijn.haverbeke.nl/parse-js/). - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -/* -----[ Tokenizer (constants) ]----- */ - -var KEYWORDS = array_to_hash([ - "break", - "case", - "catch", - "const", - "continue", - "debugger", - "default", - "delete", - "do", - "else", - "finally", - "for", - "function", - "if", - "in", - "instanceof", - "new", - "return", - "switch", - "throw", - "try", - "typeof", - "var", - "void", - "while", - "with" -]); - -var RESERVED_WORDS = array_to_hash([ - "abstract", - "boolean", - "byte", - "char", - "class", - "double", - "enum", - "export", - "extends", - "final", - "float", - "goto", - "implements", - "import", - "int", - "interface", - "long", - "native", - "package", - "private", - "protected", - "public", - "short", - "static", - "super", - "synchronized", - "throws", - "transient", - "volatile" -]); - -var KEYWORDS_BEFORE_EXPRESSION = array_to_hash([ - "return", - "new", - "delete", - "throw", - "else", - "case" -]); - -var KEYWORDS_ATOM = array_to_hash([ - "false", - "null", - "true", - "undefined" -]); - -var OPERATOR_CHARS = array_to_hash(characters("+-*&%=<>!?|~^")); - -var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; -var RE_OCT_NUMBER = /^0[0-7]+$/; -var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; - -var OPERATORS = array_to_hash([ - "in", - "instanceof", - "typeof", - "new", - "void", - "delete", - "++", - "--", - "+", - "-", - "!", - "~", - "&", - "|", - "^", - "*", - "/", - "%", - ">>", - "<<", - ">>>", - "<", - ">", - "<=", - ">=", - "==", - "===", - "!=", - "!==", - "?", - "=", - "+=", - "-=", - "/=", - "*=", - "%=", - ">>=", - "<<=", - ">>>=", - "|=", - "^=", - "&=", - "&&", - "||" -]); - -var WHITESPACE_CHARS = array_to_hash(characters(" \u00a0\n\r\t\f\u000b\u200b\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000")); - -var PUNC_BEFORE_EXPRESSION = array_to_hash(characters("[{(,.;:")); - -var PUNC_CHARS = array_to_hash(characters("[]{}(),;:")); - -var REGEXP_MODIFIERS = array_to_hash(characters("gmsiy")); - -/* -----[ Tokenizer ]----- */ - -// regexps adapted from http://xregexp.com/plugins/#unicode -var UNICODE = { - letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), - non_spacing_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), - space_combining_mark: new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"), - connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]") -}; - -function is_letter(ch) { - return UNICODE.letter.test(ch); -}; - -function is_digit(ch) { - ch = ch.charCodeAt(0); - return ch >= 48 && ch <= 57; //XXX: find out if "UnicodeDigit" means something else than 0..9 -}; - -function is_alphanumeric_char(ch) { - return is_digit(ch) || is_letter(ch); -}; - -function is_unicode_combining_mark(ch) { - return UNICODE.non_spacing_mark.test(ch) || UNICODE.space_combining_mark.test(ch); -}; - -function is_unicode_connector_punctuation(ch) { - return UNICODE.connector_punctuation.test(ch); -}; - -function is_identifier_start(ch) { - return ch == "$" || ch == "_" || is_letter(ch); -}; - -function is_identifier_char(ch) { - return is_identifier_start(ch) - || is_unicode_combining_mark(ch) - || is_digit(ch) - || is_unicode_connector_punctuation(ch) - || ch == "\u200c" // zero-width non-joiner <ZWNJ> - || ch == "\u200d" // zero-width joiner <ZWJ> (in my ECMA-262 PDF, this is also 200c) - ; -}; - -function parse_js_number(num) { - if (RE_HEX_NUMBER.test(num)) { - return parseInt(num.substr(2), 16); - } else if (RE_OCT_NUMBER.test(num)) { - return parseInt(num.substr(1), 8); - } else if (RE_DEC_NUMBER.test(num)) { - return parseFloat(num); - } -}; - -function JS_Parse_Error(message, line, col, pos) { - this.message = message; - this.line = line + 1; - this.col = col + 1; - this.pos = pos + 1; - this.stack = new Error().stack; -}; - -JS_Parse_Error.prototype.toString = function() { - return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; -}; - -function js_error(message, line, col, pos) { - throw new JS_Parse_Error(message, line, col, pos); -}; - -function is_token(token, type, val) { - return token.type == type && (val == null || token.value == val); -}; - -var EX_EOF = {}; - -function tokenizer($TEXT) { - - var S = { - text : $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/^\uFEFF/, ''), - pos : 0, - tokpos : 0, - line : 0, - tokline : 0, - col : 0, - tokcol : 0, - newline_before : false, - regex_allowed : false, - comments_before : [] - }; - - function peek() { return S.text.charAt(S.pos); }; - - function next(signal_eof, in_string) { - var ch = S.text.charAt(S.pos++); - if (signal_eof && !ch) - throw EX_EOF; - if (ch == "\n") { - S.newline_before = S.newline_before || !in_string; - ++S.line; - S.col = 0; - } else { - ++S.col; - } - return ch; - }; - - function eof() { - return !S.peek(); - }; - - function find(what, signal_eof) { - var pos = S.text.indexOf(what, S.pos); - if (signal_eof && pos == -1) throw EX_EOF; - return pos; - }; - - function start_token() { - S.tokline = S.line; - S.tokcol = S.col; - S.tokpos = S.pos; - }; - - function token(type, value, is_comment) { - S.regex_allowed = ((type == "operator" && !HOP(UNARY_POSTFIX, value)) || - (type == "keyword" && HOP(KEYWORDS_BEFORE_EXPRESSION, value)) || - (type == "punc" && HOP(PUNC_BEFORE_EXPRESSION, value))); - var ret = { - type : type, - value : value, - line : S.tokline, - col : S.tokcol, - pos : S.tokpos, - endpos : S.pos, - nlb : S.newline_before - }; - if (!is_comment) { - ret.comments_before = S.comments_before; - S.comments_before = []; - } - S.newline_before = false; - return ret; - }; - - function skip_whitespace() { - while (HOP(WHITESPACE_CHARS, peek())) - next(); - }; - - function read_while(pred) { - var ret = "", ch = peek(), i = 0; - while (ch && pred(ch, i++)) { - ret += next(); - ch = peek(); - } - return ret; - }; - - function parse_error(err) { - js_error(err, S.tokline, S.tokcol, S.tokpos); - }; - - function read_num(prefix) { - var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch, i){ - if (ch == "x" || ch == "X") { - if (has_x) return false; - return has_x = true; - } - if (!has_x && (ch == "E" || ch == "e")) { - if (has_e) return false; - return has_e = after_e = true; - } - if (ch == "-") { - if (after_e || (i == 0 && !prefix)) return true; - return false; - } - if (ch == "+") return after_e; - after_e = false; - if (ch == ".") { - if (!has_dot && !has_x) - return has_dot = true; - return false; - } - return is_alphanumeric_char(ch); - }); - if (prefix) - num = prefix + num; - var valid = parse_js_number(num); - if (!isNaN(valid)) { - return token("num", valid); - } else { - parse_error("Invalid syntax: " + num); - } - }; - - function read_escaped_char(in_string) { - var ch = next(true, in_string); - switch (ch) { - case "n" : return "\n"; - case "r" : return "\r"; - case "t" : return "\t"; - case "b" : return "\b"; - case "v" : return "\u000b"; - case "f" : return "\f"; - case "0" : return "\0"; - case "x" : return String.fromCharCode(hex_bytes(2)); - case "u" : return String.fromCharCode(hex_bytes(4)); - case "\n": return ""; - default : return ch; - } - }; - - function hex_bytes(n) { - var num = 0; - for (; n > 0; --n) { - var digit = parseInt(next(true), 16); - if (isNaN(digit)) - parse_error("Invalid hex-character pattern in string"); - num = (num << 4) | digit; - } - return num; - }; - - function read_string() { - return with_eof_error("Unterminated string constant", function(){ - var quote = next(), ret = ""; - for (;;) { - var ch = next(true); - if (ch == "\\") { - // read OctalEscapeSequence (XXX: deprecated if "strict mode") - // https://github.com/mishoo/UglifyJS/issues/178 - var octal_len = 0, first = null; - ch = read_while(function(ch){ - if (ch >= "0" && ch <= "7") { - if (!first) { - first = ch; - return ++octal_len; - } - else if (first <= "3" && octal_len <= 2) return ++octal_len; - else if (first >= "4" && octal_len <= 1) return ++octal_len; - } - return false; - }); - if (octal_len > 0) ch = String.fromCharCode(parseInt(ch, 8)); - else ch = read_escaped_char(true); - } - else if (ch == quote) break; - ret += ch; - } - return token("string", ret); - }); - }; - - function read_line_comment() { - next(); - var i = find("\n"), ret; - if (i == -1) { - ret = S.text.substr(S.pos); - S.pos = S.text.length; - } else { - ret = S.text.substring(S.pos, i); - S.pos = i; - } - return token("comment1", ret, true); - }; - - function read_multiline_comment() { - next(); - return with_eof_error("Unterminated multiline comment", function(){ - var i = find("*/", true), - text = S.text.substring(S.pos, i); - S.pos = i + 2; - S.line += text.split("\n").length - 1; - S.newline_before = text.indexOf("\n") >= 0; - - // https://github.com/mishoo/UglifyJS/issues/#issue/100 - if (/^@cc_on/i.test(text)) { - warn("WARNING: at line " + S.line); - warn("*** Found \"conditional comment\": " + text); - warn("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer."); - } - - return token("comment2", text, true); - }); - }; - - function read_name() { - var backslash = false, name = "", ch, escaped = false, hex; - while ((ch = peek()) != null) { - if (!backslash) { - if (ch == "\\") escaped = backslash = true, next(); - else if (is_identifier_char(ch)) name += next(); - else break; - } - else { - if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); - ch = read_escaped_char(); - if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); - name += ch; - backslash = false; - } - } - if (HOP(KEYWORDS, name) && escaped) { - hex = name.charCodeAt(0).toString(16).toUpperCase(); - name = "\\u" + "0000".substr(hex.length) + hex + name.slice(1); - } - return name; - }; - - function read_regexp(regexp) { - return with_eof_error("Unterminated regular expression", function(){ - var prev_backslash = false, ch, in_class = false; - while ((ch = next(true))) if (prev_backslash) { - regexp += "\\" + ch; - prev_backslash = false; - } else if (ch == "[") { - in_class = true; - regexp += ch; - } else if (ch == "]" && in_class) { - in_class = false; - regexp += ch; - } else if (ch == "/" && !in_class) { - break; - } else if (ch == "\\") { - prev_backslash = true; - } else { - regexp += ch; - } - var mods = read_name(); - return token("regexp", [ regexp, mods ]); - }); - }; - - function read_operator(prefix) { - function grow(op) { - if (!peek()) return op; - var bigger = op + peek(); - if (HOP(OPERATORS, bigger)) { - next(); - return grow(bigger); - } else { - return op; - } - }; - return token("operator", grow(prefix || next())); - }; - - function handle_slash() { - next(); - var regex_allowed = S.regex_allowed; - switch (peek()) { - case "/": - S.comments_before.push(read_line_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - case "*": - S.comments_before.push(read_multiline_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - } - return S.regex_allowed ? read_regexp("") : read_operator("/"); - }; - - function handle_dot() { - next(); - return is_digit(peek()) - ? read_num(".") - : token("punc", "."); - }; - - function read_word() { - var word = read_name(); - return !HOP(KEYWORDS, word) - ? token("name", word) - : HOP(OPERATORS, word) - ? token("operator", word) - : HOP(KEYWORDS_ATOM, word) - ? token("atom", word) - : token("keyword", word); - }; - - function with_eof_error(eof_error, cont) { - try { - return cont(); - } catch(ex) { - if (ex === EX_EOF) parse_error(eof_error); - else throw ex; - } - }; - - function next_token(force_regexp) { - if (force_regexp != null) - return read_regexp(force_regexp); - skip_whitespace(); - start_token(); - var ch = peek(); - if (!ch) return token("eof"); - if (is_digit(ch)) return read_num(); - if (ch == '"' || ch == "'") return read_string(); - if (HOP(PUNC_CHARS, ch)) return token("punc", next()); - if (ch == ".") return handle_dot(); - if (ch == "/") return handle_slash(); - if (HOP(OPERATOR_CHARS, ch)) return read_operator(); - if (ch == "\\" || is_identifier_start(ch)) return read_word(); - parse_error("Unexpected character '" + ch + "'"); - }; - - next_token.context = function(nc) { - if (nc) S = nc; - return S; - }; - - return next_token; - -}; - -/* -----[ Parser (constants) ]----- */ - -var UNARY_PREFIX = array_to_hash([ - "typeof", - "void", - "delete", - "--", - "++", - "!", - "~", - "-", - "+" -]); - -var UNARY_POSTFIX = array_to_hash([ "--", "++" ]); - -var ASSIGNMENT = (function(a, ret, i){ - while (i < a.length) { - ret[a[i]] = a[i].substr(0, a[i].length - 1); - i++; - } - return ret; -})( - ["+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&="], - { "=": true }, - 0 -); - -var PRECEDENCE = (function(a, ret){ - for (var i = 0, n = 1; i < a.length; ++i, ++n) { - var b = a[i]; - for (var j = 0; j < b.length; ++j) { - ret[b[j]] = n; - } - } - return ret; -})( - [ - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"] - ], - {} -); - -var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); - -var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); - -/* -----[ Parser ]----- */ - -function NodeWithToken(str, start, end) { - this.name = str; - this.start = start; - this.end = end; -}; - -NodeWithToken.prototype.toString = function() { return this.name; }; - -function parse($TEXT, exigent_mode, embed_tokens) { - - var S = { - input : typeof $TEXT == "string" ? tokenizer($TEXT, true) : $TEXT, - token : null, - prev : null, - peeked : null, - in_function : 0, - in_loop : 0, - labels : [] - }; - - S.token = next(); - - function is(type, value) { - return is_token(S.token, type, value); - }; - - function peek() { return S.peeked || (S.peeked = S.input()); }; - - function next() { - S.prev = S.token; - if (S.peeked) { - S.token = S.peeked; - S.peeked = null; - } else { - S.token = S.input(); - } - return S.token; - }; - - function prev() { - return S.prev; - }; - - function croak(msg, line, col, pos) { - var ctx = S.input.context(); - js_error(msg, - line != null ? line : ctx.tokline, - col != null ? col : ctx.tokcol, - pos != null ? pos : ctx.tokpos); - }; - - function token_error(token, msg) { - croak(msg, token.line, token.col); - }; - - function unexpected(token) { - if (token == null) - token = S.token; - token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); - }; - - function expect_token(type, val) { - if (is(type, val)) { - return next(); - } - token_error(S.token, "Unexpected token " + S.token.type + ", expected " + type); - }; - - function expect(punc) { return expect_token("punc", punc); }; - - function can_insert_semicolon() { - return !exigent_mode && ( - S.token.nlb || is("eof") || is("punc", "}") - ); - }; - - function semicolon() { - if (is("punc", ";")) next(); - else if (!can_insert_semicolon()) unexpected(); - }; - - function as() { - return slice(arguments); - }; - - function parenthesised() { - expect("("); - var ex = expression(); - expect(")"); - return ex; - }; - - function add_tokens(str, start, end) { - return str instanceof NodeWithToken ? str : new NodeWithToken(str, start, end); - }; - - function maybe_embed_tokens(parser) { - if (embed_tokens) return function() { - var start = S.token; - var ast = parser.apply(this, arguments); - ast[0] = add_tokens(ast[0], start, prev()); - return ast; - }; - else return parser; - }; - - var statement = maybe_embed_tokens(function() { - if (is("operator", "/") || is("operator", "/=")) { - S.peeked = null; - S.token = S.input(S.token.value.substr(1)); // force regexp - } - switch (S.token.type) { - case "num": - case "string": - case "regexp": - case "operator": - case "atom": - return simple_statement(); - - case "name": - return is_token(peek(), "punc", ":") - ? labeled_statement(prog1(S.token.value, next, next)) - : simple_statement(); - - case "punc": - switch (S.token.value) { - case "{": - return as("block", block_()); - case "[": - case "(": - return simple_statement(); - case ";": - next(); - return as("block"); - default: - unexpected(); - } - - case "keyword": - switch (prog1(S.token.value, next)) { - case "break": - return break_cont("break"); - - case "continue": - return break_cont("continue"); - - case "debugger": - semicolon(); - return as("debugger"); - - case "do": - return (function(body){ - expect_token("keyword", "while"); - return as("do", prog1(parenthesised, semicolon), body); - })(in_loop(statement)); - - case "for": - return for_(); - - case "function": - return function_(true); - - case "if": - return if_(); - - case "return": - if (S.in_function == 0) - croak("'return' outside of function"); - return as("return", - is("punc", ";") - ? (next(), null) - : can_insert_semicolon() - ? null - : prog1(expression, semicolon)); - - case "switch": - return as("switch", parenthesised(), switch_block_()); - - case "throw": - if (S.token.nlb) - croak("Illegal newline after 'throw'"); - return as("throw", prog1(expression, semicolon)); - - case "try": - return try_(); - - case "var": - return prog1(var_, semicolon); - - case "const": - return prog1(const_, semicolon); - - case "while": - return as("while", parenthesised(), in_loop(statement)); - - case "with": - return as("with", parenthesised(), statement()); - - default: - unexpected(); - } - } - }); - - function labeled_statement(label) { - S.labels.push(label); - var start = S.token, stat = statement(); - if (exigent_mode && !HOP(STATEMENTS_WITH_LABELS, stat[0])) - unexpected(start); - S.labels.pop(); - return as("label", label, stat); - }; - - function simple_statement() { - return as("stat", prog1(expression, semicolon)); - }; - - function break_cont(type) { - var name; - if (!can_insert_semicolon()) { - name = is("name") ? S.token.value : null; - } - if (name != null) { - next(); - if (!member(name, S.labels)) - croak("Label " + name + " without matching loop or statement"); - } - else if (S.in_loop == 0) - croak(type + " not inside a loop or switch"); - semicolon(); - return as(type, name); - }; - - function for_() { - expect("("); - var init = null; - if (!is("punc", ";")) { - init = is("keyword", "var") - ? (next(), var_(true)) - : expression(true, true); - if (is("operator", "in")) { - if (init[0] == "var" && init[1].length > 1) - croak("Only one variable declaration allowed in for..in loop"); - return for_in(init); - } - } - return regular_for(init); - }; - - function regular_for(init) { - expect(";"); - var test = is("punc", ";") ? null : expression(); - expect(";"); - var step = is("punc", ")") ? null : expression(); - expect(")"); - return as("for", init, test, step, in_loop(statement)); - }; - - function for_in(init) { - var lhs = init[0] == "var" ? as("name", init[1][0]) : init; - next(); - var obj = expression(); - expect(")"); - return as("for-in", init, lhs, obj, in_loop(statement)); - }; - - var function_ = function(in_statement) { - var name = is("name") ? prog1(S.token.value, next) : null; - if (in_statement && !name) - unexpected(); - expect("("); - return as(in_statement ? "defun" : "function", - name, - // arguments - (function(first, a){ - while (!is("punc", ")")) { - if (first) first = false; else expect(","); - if (!is("name")) unexpected(); - a.push(S.token.value); - next(); - } - next(); - return a; - })(true, []), - // body - (function(){ - ++S.in_function; - var loop = S.in_loop; - S.in_loop = 0; - var a = block_(); - --S.in_function; - S.in_loop = loop; - return a; - })()); - }; - - function if_() { - var cond = parenthesised(), body = statement(), belse; - if (is("keyword", "else")) { - next(); - belse = statement(); - } - return as("if", cond, body, belse); - }; - - function block_() { - expect("{"); - var a = []; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - a.push(statement()); - } - next(); - return a; - }; - - var switch_block_ = curry(in_loop, function(){ - expect("{"); - var a = [], cur = null; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - if (is("keyword", "case")) { - next(); - cur = []; - a.push([ expression(), cur ]); - expect(":"); - } - else if (is("keyword", "default")) { - next(); - expect(":"); - cur = []; - a.push([ null, cur ]); - } - else { - if (!cur) unexpected(); - cur.push(statement()); - } - } - next(); - return a; - }); - - function try_() { - var body = block_(), bcatch, bfinally; - if (is("keyword", "catch")) { - next(); - expect("("); - if (!is("name")) - croak("Name expected"); - var name = S.token.value; - next(); - expect(")"); - bcatch = [ name, block_() ]; - } - if (is("keyword", "finally")) { - next(); - bfinally = block_(); - } - if (!bcatch && !bfinally) - croak("Missing catch/finally blocks"); - return as("try", body, bcatch, bfinally); - }; - - function vardefs(no_in) { - var a = []; - for (;;) { - if (!is("name")) - unexpected(); - var name = S.token.value; - next(); - if (is("operator", "=")) { - next(); - a.push([ name, expression(false, no_in) ]); - } else { - a.push([ name ]); - } - if (!is("punc", ",")) - break; - next(); - } - return a; - }; - - function var_(no_in) { - return as("var", vardefs(no_in)); - }; - - function const_() { - return as("const", vardefs()); - }; - - function new_() { - var newexp = expr_atom(false), args; - if (is("punc", "(")) { - next(); - args = expr_list(")"); - } else { - args = []; - } - return subscripts(as("new", newexp, args), true); - }; - - var expr_atom = maybe_embed_tokens(function(allow_calls) { - if (is("operator", "new")) { - next(); - return new_(); - } - if (is("punc")) { - switch (S.token.value) { - case "(": - next(); - return subscripts(prog1(expression, curry(expect, ")")), allow_calls); - case "[": - next(); - return subscripts(array_(), allow_calls); - case "{": - next(); - return subscripts(object_(), allow_calls); - } - unexpected(); - } - if (is("keyword", "function")) { - next(); - return subscripts(function_(false), allow_calls); - } - if (HOP(ATOMIC_START_TOKEN, S.token.type)) { - var atom = S.token.type == "regexp" - ? as("regexp", S.token.value[0], S.token.value[1]) - : as(S.token.type, S.token.value); - return subscripts(prog1(atom, next), allow_calls); - } - unexpected(); - }); - - function expr_list(closing, allow_trailing_comma, allow_empty) { - var first = true, a = []; - while (!is("punc", closing)) { - if (first) first = false; else expect(","); - if (allow_trailing_comma && is("punc", closing)) break; - if (is("punc", ",") && allow_empty) { - a.push([ "atom", "undefined" ]); - } else { - a.push(expression(false)); - } - } - next(); - return a; - }; - - function array_() { - return as("array", expr_list("]", !exigent_mode, true)); - }; - - function object_() { - var first = true, a = []; - while (!is("punc", "}")) { - if (first) first = false; else expect(","); - if (!exigent_mode && is("punc", "}")) - // allow trailing comma - break; - var type = S.token.type; - var name = as_property_name(); - if (type == "name" && (name == "get" || name == "set") && !is("punc", ":")) { - a.push([ as_name(), function_(false), name ]); - } else { - expect(":"); - a.push([ name, expression(false) ]); - } - } - next(); - return as("object", a); - }; - - function as_property_name() { - switch (S.token.type) { - case "num": - case "string": - return prog1(S.token.value, next); - } - return as_name(); - }; - - function as_name() { - switch (S.token.type) { - case "name": - case "operator": - case "keyword": - case "atom": - return prog1(S.token.value, next); - default: - unexpected(); - } - }; - - function subscripts(expr, allow_calls) { - if (is("punc", ".")) { - next(); - return subscripts(as("dot", expr, as_name()), allow_calls); - } - if (is("punc", "[")) { - next(); - return subscripts(as("sub", expr, prog1(expression, curry(expect, "]"))), allow_calls); - } - if (allow_calls && is("punc", "(")) { - next(); - return subscripts(as("call", expr, expr_list(")")), true); - } - return expr; - }; - - function maybe_unary(allow_calls) { - if (is("operator") && HOP(UNARY_PREFIX, S.token.value)) { - return make_unary("unary-prefix", - prog1(S.token.value, next), - maybe_unary(allow_calls)); - } - var val = expr_atom(allow_calls); - while (is("operator") && HOP(UNARY_POSTFIX, S.token.value) && !S.token.nlb) { - val = make_unary("unary-postfix", S.token.value, val); - next(); - } - return val; - }; - - function make_unary(tag, op, expr) { - if ((op == "++" || op == "--") && !is_assignable(expr)) - croak("Invalid use of " + op + " operator"); - return as(tag, op, expr); - }; - - function expr_op(left, min_prec, no_in) { - var op = is("operator") ? S.token.value : null; - if (op && op == "in" && no_in) op = null; - var prec = op != null ? PRECEDENCE[op] : null; - if (prec != null && prec > min_prec) { - next(); - var right = expr_op(maybe_unary(true), prec, no_in); - return expr_op(as("binary", op, left, right), min_prec, no_in); - } - return left; - }; - - function expr_ops(no_in) { - return expr_op(maybe_unary(true), 0, no_in); - }; - - function maybe_conditional(no_in) { - var expr = expr_ops(no_in); - if (is("operator", "?")) { - next(); - var yes = expression(false); - expect(":"); - return as("conditional", expr, yes, expression(false, no_in)); - } - return expr; - }; - - function is_assignable(expr) { - if (!exigent_mode) return true; - switch (expr[0]+"") { - case "dot": - case "sub": - case "new": - case "call": - return true; - case "name": - return expr[1] != "this"; - } - }; - - function maybe_assign(no_in) { - var left = maybe_conditional(no_in), val = S.token.value; - if (is("operator") && HOP(ASSIGNMENT, val)) { - if (is_assignable(left)) { - next(); - return as("assign", ASSIGNMENT[val], left, maybe_assign(no_in)); - } - croak("Invalid assignment"); - } - return left; - }; - - var expression = maybe_embed_tokens(function(commas, no_in) { - if (arguments.length == 0) - commas = true; - var expr = maybe_assign(no_in); - if (commas && is("punc", ",")) { - next(); - return as("seq", expr, expression(true, no_in)); - } - return expr; - }); - - function in_loop(cont) { - try { - ++S.in_loop; - return cont(); - } finally { - --S.in_loop; - } - }; - - return as("toplevel", (function(a){ - while (!is("eof")) - a.push(statement()); - return a; - })([])); - -}; - -/* -----[ Utilities ]----- */ - -function curry(f) { - var args = slice(arguments, 1); - return function() { return f.apply(this, args.concat(slice(arguments))); }; -}; - -function prog1(ret) { - if (ret instanceof Function) - ret = ret(); - for (var i = 1, n = arguments.length; --n > 0; ++i) - arguments[i](); - return ret; -}; - -function array_to_hash(a) { - var ret = {}; - for (var i = 0; i < a.length; ++i) - ret[a[i]] = true; - return ret; -}; - -function slice(a, start) { - return Array.prototype.slice.call(a, start || 0); -}; - -function characters(str) { - return str.split(""); -}; - -function member(name, array) { - for (var i = array.length; --i >= 0;) - if (array[i] == name) - return true; - return false; -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -var warn = function() {}; - -/* -----[ Exports ]----- */ - -exports.tokenizer = tokenizer; -exports.parse = parse; -exports.slice = slice; -exports.curry = curry; -exports.member = member; -exports.array_to_hash = array_to_hash; -exports.PRECEDENCE = PRECEDENCE; -exports.KEYWORDS_ATOM = KEYWORDS_ATOM; -exports.RESERVED_WORDS = RESERVED_WORDS; -exports.KEYWORDS = KEYWORDS; -exports.ATOMIC_START_TOKEN = ATOMIC_START_TOKEN; -exports.OPERATORS = OPERATORS; -exports.is_alphanumeric_char = is_alphanumeric_char; -exports.set_logger = function(logger) { - warn = logger; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/process.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/process.js deleted file mode 100644 index da5553c7106..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/process.js +++ /dev/null @@ -1,2011 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - - This version is suitable for Node.js. With minimal changes (the - exports stuff) it should work on any JS platform. - - This file implements some AST processors. They work on data built - by parse-js. - - Exported functions: - - - ast_mangle(ast, options) -- mangles the variable/function names - in the AST. Returns an AST. - - - ast_squeeze(ast) -- employs various optimizations to make the - final generated code even smaller. Returns an AST. - - - gen_code(ast, options) -- generates JS code from the AST. Pass - true (or an object, see the code for some options) as second - argument to get "pretty" (indented) code. - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - <mihai.bazon@gmail.com> - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com> - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -var jsp = require("./parse-js"), - slice = jsp.slice, - member = jsp.member, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -/* -----[ helper for AST traversal ]----- */ - -function ast_walker() { - function _vardefs(defs) { - return [ this[0], MAP(defs, function(def){ - var a = [ def[0] ]; - if (def.length > 1) - a[1] = walk(def[1]); - return a; - }) ]; - }; - function _block(statements) { - var out = [ this[0] ]; - if (statements != null) - out.push(MAP(statements, walk)); - return out; - }; - var walkers = { - "string": function(str) { - return [ this[0], str ]; - }, - "num": function(num) { - return [ this[0], num ]; - }, - "name": function(name) { - return [ this[0], name ]; - }, - "toplevel": function(statements) { - return [ this[0], MAP(statements, walk) ]; - }, - "block": _block, - "splice": _block, - "var": _vardefs, - "const": _vardefs, - "try": function(t, c, f) { - return [ - this[0], - MAP(t, walk), - c != null ? [ c[0], MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null - ]; - }, - "throw": function(expr) { - return [ this[0], walk(expr) ]; - }, - "new": function(ctor, args) { - return [ this[0], walk(ctor), MAP(args, walk) ]; - }, - "switch": function(expr, body) { - return [ this[0], walk(expr), MAP(body, function(branch){ - return [ branch[0] ? walk(branch[0]) : null, - MAP(branch[1], walk) ]; - }) ]; - }, - "break": function(label) { - return [ this[0], label ]; - }, - "continue": function(label) { - return [ this[0], label ]; - }, - "conditional": function(cond, t, e) { - return [ this[0], walk(cond), walk(t), walk(e) ]; - }, - "assign": function(op, lvalue, rvalue) { - return [ this[0], op, walk(lvalue), walk(rvalue) ]; - }, - "dot": function(expr) { - return [ this[0], walk(expr) ].concat(slice(arguments, 1)); - }, - "call": function(expr, args) { - return [ this[0], walk(expr), MAP(args, walk) ]; - }, - "function": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "debugger": function() { - return [ this[0] ]; - }, - "defun": function(name, args, body) { - return [ this[0], name, args.slice(), MAP(body, walk) ]; - }, - "if": function(conditional, t, e) { - return [ this[0], walk(conditional), walk(t), walk(e) ]; - }, - "for": function(init, cond, step, block) { - return [ this[0], walk(init), walk(cond), walk(step), walk(block) ]; - }, - "for-in": function(vvar, key, hash, block) { - return [ this[0], walk(vvar), walk(key), walk(hash), walk(block) ]; - }, - "while": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "do": function(cond, block) { - return [ this[0], walk(cond), walk(block) ]; - }, - "return": function(expr) { - return [ this[0], walk(expr) ]; - }, - "binary": function(op, left, right) { - return [ this[0], op, walk(left), walk(right) ]; - }, - "unary-prefix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "unary-postfix": function(op, expr) { - return [ this[0], op, walk(expr) ]; - }, - "sub": function(expr, subscript) { - return [ this[0], walk(expr), walk(subscript) ]; - }, - "object": function(props) { - return [ this[0], MAP(props, function(p){ - return p.length == 2 - ? [ p[0], walk(p[1]) ] - : [ p[0], walk(p[1]), p[2] ]; // get/set-ter - }) ]; - }, - "regexp": function(rx, mods) { - return [ this[0], rx, mods ]; - }, - "array": function(elements) { - return [ this[0], MAP(elements, walk) ]; - }, - "stat": function(stat) { - return [ this[0], walk(stat) ]; - }, - "seq": function() { - return [ this[0] ].concat(MAP(slice(arguments), walk)); - }, - "label": function(name, block) { - return [ this[0], name, walk(block) ]; - }, - "with": function(expr, block) { - return [ this[0], walk(expr), walk(block) ]; - }, - "atom": function(name) { - return [ this[0], name ]; - } - }; - - var user = {}; - var stack = []; - function walk(ast) { - if (ast == null) - return null; - try { - stack.push(ast); - var type = ast[0]; - var gen = user[type]; - if (gen) { - var ret = gen.apply(ast, ast.slice(1)); - if (ret != null) - return ret; - } - gen = walkers[type]; - return gen.apply(ast, ast.slice(1)); - } finally { - stack.pop(); - } - }; - - function dive(ast) { - if (ast == null) - return null; - try { - stack.push(ast); - return walkers[ast[0]].apply(ast, ast.slice(1)); - } finally { - stack.pop(); - } - }; - - function with_walkers(walkers, cont){ - var save = {}, i; - for (i in walkers) if (HOP(walkers, i)) { - save[i] = user[i]; - user[i] = walkers[i]; - } - var ret = cont(); - for (i in save) if (HOP(save, i)) { - if (!save[i]) delete user[i]; - else user[i] = save[i]; - } - return ret; - }; - - return { - walk: walk, - dive: dive, - with_walkers: with_walkers, - parent: function() { - return stack[stack.length - 2]; // last one is current node - }, - stack: function() { - return stack; - } - }; -}; - -/* -----[ Scope and mangling ]----- */ - -function Scope(parent) { - this.names = {}; // names defined in this scope - this.mangled = {}; // mangled names (orig.name => mangled) - this.rev_mangled = {}; // reverse lookup (mangled => orig.name) - this.cname = -1; // current mangled name - this.refs = {}; // names referenced from this scope - this.uses_with = false; // will become TRUE if with() is detected in this or any subscopes - this.uses_eval = false; // will become TRUE if eval() is detected in this or any subscopes - this.parent = parent; // parent scope - this.children = []; // sub-scopes - if (parent) { - this.level = parent.level + 1; - parent.children.push(this); - } else { - this.level = 0; - } -}; - -var base54 = (function(){ - var DIGITS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789"; - return function(num) { - var ret = "", base = 54; - do { - ret += DIGITS.charAt(num % base); - num = Math.floor(num / base); - base = 64; - } while (num > 0); - return ret; - }; -})(); - -Scope.prototype = { - has: function(name) { - for (var s = this; s; s = s.parent) - if (HOP(s.names, name)) - return s; - }, - has_mangled: function(mname) { - for (var s = this; s; s = s.parent) - if (HOP(s.rev_mangled, mname)) - return s; - }, - toJSON: function() { - return { - names: this.names, - uses_eval: this.uses_eval, - uses_with: this.uses_with - }; - }, - - next_mangled: function() { - // we must be careful that the new mangled name: - // - // 1. doesn't shadow a mangled name from a parent - // scope, unless we don't reference the original - // name from this scope OR from any sub-scopes! - // This will get slow. - // - // 2. doesn't shadow an original name from a parent - // scope, in the event that the name is not mangled - // in the parent scope and we reference that name - // here OR IN ANY SUBSCOPES! - // - // 3. doesn't shadow a name that is referenced but not - // defined (possibly global defined elsewhere). - for (;;) { - var m = base54(++this.cname), prior; - - // case 1. - prior = this.has_mangled(m); - if (prior && this.refs[prior.rev_mangled[m]] === prior) - continue; - - // case 2. - prior = this.has(m); - if (prior && prior !== this && this.refs[m] === prior && !prior.has_mangled(m)) - continue; - - // case 3. - if (HOP(this.refs, m) && this.refs[m] == null) - continue; - - // I got "do" once. :-/ - if (!is_identifier(m)) - continue; - - return m; - } - }, - set_mangle: function(name, m) { - this.rev_mangled[m] = name; - return this.mangled[name] = m; - }, - get_mangled: function(name, newMangle) { - if (this.uses_eval || this.uses_with) return name; // no mangle if eval or with is in use - var s = this.has(name); - if (!s) return name; // not in visible scope, no mangle - if (HOP(s.mangled, name)) return s.mangled[name]; // already mangled in this scope - if (!newMangle) return name; // not found and no mangling requested - return s.set_mangle(name, s.next_mangled()); - }, - references: function(name) { - return name && !this.parent || this.uses_with || this.uses_eval || this.refs[name]; - }, - define: function(name, type) { - if (name != null) { - if (type == "var" || !HOP(this.names, name)) - this.names[name] = type || "var"; - return name; - } - } -}; - -function ast_add_scope(ast) { - - var current_scope = null; - var w = ast_walker(), walk = w.walk; - var having_eval = []; - - function with_new_scope(cont) { - current_scope = new Scope(current_scope); - current_scope.labels = new Scope(); - var ret = current_scope.body = cont(); - ret.scope = current_scope; - current_scope = current_scope.parent; - return ret; - }; - - function define(name, type) { - return current_scope.define(name, type); - }; - - function reference(name) { - current_scope.refs[name] = true; - }; - - function _lambda(name, args, body) { - var is_defun = this[0] == "defun"; - return [ this[0], is_defun ? define(name, "defun") : name, args, with_new_scope(function(){ - if (!is_defun) define(name, "lambda"); - MAP(args, function(name){ define(name, "arg") }); - return MAP(body, walk); - })]; - }; - - function _vardefs(type) { - return function(defs) { - MAP(defs, function(d){ - define(d[0], type); - if (d[1]) reference(d[0]); - }); - }; - }; - - function _breacont(label) { - if (label) - current_scope.labels.refs[label] = true; - }; - - return with_new_scope(function(){ - // process AST - var ret = w.with_walkers({ - "function": _lambda, - "defun": _lambda, - "label": function(name, stat) { current_scope.labels.define(name) }, - "break": _breacont, - "continue": _breacont, - "with": function(expr, block) { - for (var s = current_scope; s; s = s.parent) - s.uses_with = true; - }, - "var": _vardefs("var"), - "const": _vardefs("const"), - "try": function(t, c, f) { - if (c != null) return [ - this[0], - MAP(t, walk), - [ define(c[0], "catch"), MAP(c[1], walk) ], - f != null ? MAP(f, walk) : null - ]; - }, - "name": function(name) { - if (name == "eval") - having_eval.push(current_scope); - reference(name); - } - }, function(){ - return walk(ast); - }); - - // the reason why we need an additional pass here is - // that names can be used prior to their definition. - - // scopes where eval was detected and their parents - // are marked with uses_eval, unless they define the - // "eval" name. - MAP(having_eval, function(scope){ - if (!scope.has("eval")) while (scope) { - scope.uses_eval = true; - scope = scope.parent; - } - }); - - // for referenced names it might be useful to know - // their origin scope. current_scope here is the - // toplevel one. - function fixrefs(scope, i) { - // do children first; order shouldn't matter - for (i = scope.children.length; --i >= 0;) - fixrefs(scope.children[i]); - for (i in scope.refs) if (HOP(scope.refs, i)) { - // find origin scope and propagate the reference to origin - for (var origin = scope.has(i), s = scope; s; s = s.parent) { - s.refs[i] = origin; - if (s === origin) break; - } - } - }; - fixrefs(current_scope); - - return ret; - }); - -}; - -/* -----[ mangle names ]----- */ - -function ast_mangle(ast, options) { - var w = ast_walker(), walk = w.walk, scope; - options = options || {}; - - function get_mangled(name, newMangle) { - if (!options.toplevel && !scope.parent) return name; // don't mangle toplevel - if (options.except && member(name, options.except)) - return name; - return scope.get_mangled(name, newMangle); - }; - - function get_define(name) { - if (options.defines) { - // we always lookup a defined symbol for the current scope FIRST, so declared - // vars trump a DEFINE symbol, but if no such var is found, then match a DEFINE value - if (!scope.has(name)) { - if (HOP(options.defines, name)) { - return options.defines[name]; - } - } - return null; - } - }; - - function _lambda(name, args, body) { - if (!options.no_functions) { - var is_defun = this[0] == "defun", extra; - if (name) { - if (is_defun) name = get_mangled(name); - else if (body.scope.references(name)) { - extra = {}; - if (!(scope.uses_eval || scope.uses_with)) - name = extra[name] = scope.next_mangled(); - else - extra[name] = name; - } - else name = null; - } - } - body = with_scope(body.scope, function(){ - args = MAP(args, function(name){ return get_mangled(name) }); - return MAP(body, walk); - }, extra); - return [ this[0], name, args, body ]; - }; - - function with_scope(s, cont, extra) { - var _scope = scope; - scope = s; - if (extra) for (var i in extra) if (HOP(extra, i)) { - s.set_mangle(i, extra[i]); - } - for (var i in s.names) if (HOP(s.names, i)) { - get_mangled(i, true); - } - var ret = cont(); - ret.scope = s; - scope = _scope; - return ret; - }; - - function _vardefs(defs) { - return [ this[0], MAP(defs, function(d){ - return [ get_mangled(d[0]), walk(d[1]) ]; - }) ]; - }; - - function _breacont(label) { - if (label) return [ this[0], scope.labels.get_mangled(label) ]; - }; - - return w.with_walkers({ - "function": _lambda, - "defun": function() { - // move function declarations to the top when - // they are not in some block. - var ast = _lambda.apply(this, arguments); - switch (w.parent()[0]) { - case "toplevel": - case "function": - case "defun": - return MAP.at_top(ast); - } - return ast; - }, - "label": function(label, stat) { - if (scope.labels.refs[label]) return [ - this[0], - scope.labels.get_mangled(label, true), - walk(stat) - ]; - return walk(stat); - }, - "break": _breacont, - "continue": _breacont, - "var": _vardefs, - "const": _vardefs, - "name": function(name) { - return get_define(name) || [ this[0], get_mangled(name) ]; - }, - "try": function(t, c, f) { - return [ this[0], - MAP(t, walk), - c != null ? [ get_mangled(c[0]), MAP(c[1], walk) ] : null, - f != null ? MAP(f, walk) : null ]; - }, - "toplevel": function(body) { - var self = this; - return with_scope(self.scope, function(){ - return [ self[0], MAP(body, walk) ]; - }); - } - }, function() { - return walk(ast_add_scope(ast)); - }); -}; - -/* -----[ - - compress foo["bar"] into foo.bar, - - remove block brackets {} where possible - - join consecutive var declarations - - various optimizations for IFs: - - if (cond) foo(); else bar(); ==> cond?foo():bar(); - - if (cond) foo(); ==> cond&&foo(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); // also for throw - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - ]----- */ - -var warn = function(){}; - -function best_of(ast1, ast2) { - return gen_code(ast1).length > gen_code(ast2[0] == "stat" ? ast2[1] : ast2).length ? ast2 : ast1; -}; - -function last_stat(b) { - if (b[0] == "block" && b[1] && b[1].length > 0) - return b[1][b[1].length - 1]; - return b; -} - -function aborts(t) { - if (t) switch (last_stat(t)[0]) { - case "return": - case "break": - case "continue": - case "throw": - return true; - } -}; - -function boolean_expr(expr) { - return ( (expr[0] == "unary-prefix" - && member(expr[1], [ "!", "delete" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ])) || - - (expr[0] == "binary" - && member(expr[1], [ "&&", "||" ]) - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "conditional" - && boolean_expr(expr[2]) - && boolean_expr(expr[3])) || - - (expr[0] == "assign" - && expr[1] === true - && boolean_expr(expr[3])) || - - (expr[0] == "seq" - && boolean_expr(expr[expr.length - 1])) - ); -}; - -function empty(b) { - return !b || (b[0] == "block" && (!b[1] || b[1].length == 0)); -}; - -function is_string(node) { - return (node[0] == "string" || - node[0] == "unary-prefix" && node[1] == "typeof" || - node[0] == "binary" && node[1] == "+" && - (is_string(node[2]) || is_string(node[3]))); -}; - -var when_constant = (function(){ - - var $NOT_CONSTANT = {}; - - // this can only evaluate constant expressions. If it finds anything - // not constant, it throws $NOT_CONSTANT. - function evaluate(expr) { - switch (expr[0]) { - case "string": - case "num": - return expr[1]; - case "name": - case "atom": - switch (expr[1]) { - case "true": return true; - case "false": return false; - case "null": return null; - } - break; - case "unary-prefix": - switch (expr[1]) { - case "!": return !evaluate(expr[2]); - case "typeof": return typeof evaluate(expr[2]); - case "~": return ~evaluate(expr[2]); - case "-": return -evaluate(expr[2]); - case "+": return +evaluate(expr[2]); - } - break; - case "binary": - var left = expr[2], right = expr[3]; - switch (expr[1]) { - case "&&" : return evaluate(left) && evaluate(right); - case "||" : return evaluate(left) || evaluate(right); - case "|" : return evaluate(left) | evaluate(right); - case "&" : return evaluate(left) & evaluate(right); - case "^" : return evaluate(left) ^ evaluate(right); - case "+" : return evaluate(left) + evaluate(right); - case "*" : return evaluate(left) * evaluate(right); - case "/" : return evaluate(left) / evaluate(right); - case "%" : return evaluate(left) % evaluate(right); - case "-" : return evaluate(left) - evaluate(right); - case "<<" : return evaluate(left) << evaluate(right); - case ">>" : return evaluate(left) >> evaluate(right); - case ">>>" : return evaluate(left) >>> evaluate(right); - case "==" : return evaluate(left) == evaluate(right); - case "===" : return evaluate(left) === evaluate(right); - case "!=" : return evaluate(left) != evaluate(right); - case "!==" : return evaluate(left) !== evaluate(right); - case "<" : return evaluate(left) < evaluate(right); - case "<=" : return evaluate(left) <= evaluate(right); - case ">" : return evaluate(left) > evaluate(right); - case ">=" : return evaluate(left) >= evaluate(right); - case "in" : return evaluate(left) in evaluate(right); - case "instanceof" : return evaluate(left) instanceof evaluate(right); - } - } - throw $NOT_CONSTANT; - }; - - return function(expr, yes, no) { - try { - var val = evaluate(expr), ast; - switch (typeof val) { - case "string": ast = [ "string", val ]; break; - case "number": ast = [ "num", val ]; break; - case "boolean": ast = [ "name", String(val) ]; break; - default: - if (val === null) { ast = [ "atom", "null" ]; break; } - throw new Error("Can't handle constant of type: " + (typeof val)); - } - return yes.call(expr, ast, val); - } catch(ex) { - if (ex === $NOT_CONSTANT) { - if (expr[0] == "binary" - && (expr[1] == "===" || expr[1] == "!==") - && ((is_string(expr[2]) && is_string(expr[3])) - || (boolean_expr(expr[2]) && boolean_expr(expr[3])))) { - expr[1] = expr[1].substr(0, 2); - } - else if (no && expr[0] == "binary" - && (expr[1] == "||" || expr[1] == "&&")) { - // the whole expression is not constant but the lval may be... - try { - var lval = evaluate(expr[2]); - expr = ((expr[1] == "&&" && (lval ? expr[3] : lval)) || - (expr[1] == "||" && (lval ? lval : expr[3])) || - expr); - } catch(ex2) { - // IGNORE... lval is not constant - } - } - return no ? no.call(expr, expr) : null; - } - else throw ex; - } - }; - -})(); - -function warn_unreachable(ast) { - if (!empty(ast)) - warn("Dropping unreachable code: " + gen_code(ast, true)); -}; - -function prepare_ifs(ast) { - var w = ast_walker(), walk = w.walk; - // In this first pass, we rewrite ifs which abort with no else with an - // if-else. For example: - // - // if (x) { - // blah(); - // return y; - // } - // foobar(); - // - // is rewritten into: - // - // if (x) { - // blah(); - // return y; - // } else { - // foobar(); - // } - function redo_if(statements) { - statements = MAP(statements, walk); - - for (var i = 0; i < statements.length; ++i) { - var fi = statements[i]; - if (fi[0] != "if") continue; - - if (fi[3] && walk(fi[3])) continue; - - var t = walk(fi[2]); - if (!aborts(t)) continue; - - var conditional = walk(fi[1]); - - var e_body = redo_if(statements.slice(i + 1)); - var e = e_body.length == 1 ? e_body[0] : [ "block", e_body ]; - - return statements.slice(0, i).concat([ [ - fi[0], // "if" - conditional, // conditional - t, // then - e // else - ] ]); - } - - return statements; - }; - - function redo_if_lambda(name, args, body) { - body = redo_if(body); - return [ this[0], name, args, body ]; - }; - - function redo_if_block(statements) { - return [ this[0], statements != null ? redo_if(statements) : null ]; - }; - - return w.with_walkers({ - "defun": redo_if_lambda, - "function": redo_if_lambda, - "block": redo_if_block, - "splice": redo_if_block, - "toplevel": function(statements) { - return [ this[0], redo_if(statements) ]; - }, - "try": function(t, c, f) { - return [ - this[0], - redo_if(t), - c != null ? [ c[0], redo_if(c[1]) ] : null, - f != null ? redo_if(f) : null - ]; - } - }, function() { - return walk(ast); - }); -}; - -function for_side_effects(ast, handler) { - var w = ast_walker(), walk = w.walk; - var $stop = {}, $restart = {}; - function stop() { throw $stop }; - function restart() { throw $restart }; - function found(){ return handler.call(this, this, w, stop, restart) }; - function unary(op) { - if (op == "++" || op == "--") - return found.apply(this, arguments); - }; - return w.with_walkers({ - "try": found, - "throw": found, - "return": found, - "new": found, - "switch": found, - "break": found, - "continue": found, - "assign": found, - "call": found, - "if": found, - "for": found, - "for-in": found, - "while": found, - "do": found, - "return": found, - "unary-prefix": unary, - "unary-postfix": unary, - "defun": found - }, function(){ - while (true) try { - walk(ast); - break; - } catch(ex) { - if (ex === $stop) break; - if (ex === $restart) continue; - throw ex; - } - }); -}; - -function ast_lift_variables(ast) { - var w = ast_walker(), walk = w.walk, scope; - function do_body(body, env) { - var _scope = scope; - scope = env; - body = MAP(body, walk); - var hash = {}, names = MAP(env.names, function(type, name){ - if (type != "var") return MAP.skip; - if (!env.references(name)) return MAP.skip; - hash[name] = true; - return [ name ]; - }); - if (names.length > 0) { - // looking for assignments to any of these variables. - // we can save considerable space by moving the definitions - // in the var declaration. - for_side_effects([ "block", body ], function(ast, walker, stop, restart) { - if (ast[0] == "assign" - && ast[1] === true - && ast[2][0] == "name" - && HOP(hash, ast[2][1])) { - // insert the definition into the var declaration - for (var i = names.length; --i >= 0;) { - if (names[i][0] == ast[2][1]) { - if (names[i][1]) // this name already defined, we must stop - stop(); - names[i][1] = ast[3]; // definition - names.push(names.splice(i, 1)[0]); - break; - } - } - // remove this assignment from the AST. - var p = walker.parent(); - if (p[0] == "seq") { - var a = p[2]; - a.unshift(0, p.length); - p.splice.apply(p, a); - } - else if (p[0] == "stat") { - p.splice(0, p.length, "block"); // empty statement - } - else { - stop(); - } - restart(); - } - stop(); - }); - body.unshift([ "var", names ]); - } - scope = _scope; - return body; - }; - function _vardefs(defs) { - var ret = null; - for (var i = defs.length; --i >= 0;) { - var d = defs[i]; - if (!d[1]) continue; - d = [ "assign", true, [ "name", d[0] ], d[1] ]; - if (ret == null) ret = d; - else ret = [ "seq", d, ret ]; - } - if (ret == null) { - if (w.parent()[0] == "for-in") - return [ "name", defs[0][0] ]; - return MAP.skip; - } - return [ "stat", ret ]; - }; - function _toplevel(body) { - return [ this[0], do_body(body, this.scope) ]; - }; - return w.with_walkers({ - "function": function(name, args, body){ - for (var i = args.length; --i >= 0 && !body.scope.references(args[i]);) - args.pop(); - if (!body.scope.references(name)) name = null; - return [ this[0], name, args, do_body(body, body.scope) ]; - }, - "defun": function(name, args, body){ - if (!scope.references(name)) return MAP.skip; - for (var i = args.length; --i >= 0 && !body.scope.references(args[i]);) - args.pop(); - return [ this[0], name, args, do_body(body, body.scope) ]; - }, - "var": _vardefs, - "toplevel": _toplevel - }, function(){ - return walk(ast_add_scope(ast)); - }); -}; - -function ast_squeeze(ast, options) { - options = defaults(options, { - make_seqs : true, - dead_code : true, - no_warnings : false, - keep_comps : true - }); - - var w = ast_walker(), walk = w.walk; - - function negate(c) { - var not_c = [ "unary-prefix", "!", c ]; - switch (c[0]) { - case "unary-prefix": - return c[1] == "!" && boolean_expr(c[2]) ? c[2] : not_c; - case "seq": - c = slice(c); - c[c.length - 1] = negate(c[c.length - 1]); - return c; - case "conditional": - return best_of(not_c, [ "conditional", c[1], negate(c[2]), negate(c[3]) ]); - case "binary": - var op = c[1], left = c[2], right = c[3]; - if (!options.keep_comps) switch (op) { - case "<=" : return [ "binary", ">", left, right ]; - case "<" : return [ "binary", ">=", left, right ]; - case ">=" : return [ "binary", "<", left, right ]; - case ">" : return [ "binary", "<=", left, right ]; - } - switch (op) { - case "==" : return [ "binary", "!=", left, right ]; - case "!=" : return [ "binary", "==", left, right ]; - case "===" : return [ "binary", "!==", left, right ]; - case "!==" : return [ "binary", "===", left, right ]; - case "&&" : return best_of(not_c, [ "binary", "||", negate(left), negate(right) ]); - case "||" : return best_of(not_c, [ "binary", "&&", negate(left), negate(right) ]); - } - break; - } - return not_c; - }; - - function make_conditional(c, t, e) { - var make_real_conditional = function() { - if (c[0] == "unary-prefix" && c[1] == "!") { - return e ? [ "conditional", c[2], e, t ] : [ "binary", "||", c[2], t ]; - } else { - return e ? best_of( - [ "conditional", c, t, e ], - [ "conditional", negate(c), e, t ] - ) : [ "binary", "&&", c, t ]; - } - }; - // shortcut the conditional if the expression has a constant value - return when_constant(c, function(ast, val){ - warn_unreachable(val ? e : t); - return (val ? t : e); - }, make_real_conditional); - }; - - function rmblock(block) { - if (block != null && block[0] == "block" && block[1]) { - if (block[1].length == 1) - block = block[1][0]; - else if (block[1].length == 0) - block = [ "block" ]; - } - return block; - }; - - function _lambda(name, args, body) { - return [ this[0], name, args, tighten(body, "lambda") ]; - }; - - // this function does a few things: - // 1. discard useless blocks - // 2. join consecutive var declarations - // 3. remove obviously dead code - // 4. transform consecutive statements using the comma operator - // 5. if block_type == "lambda" and it detects constructs like if(foo) return ... - rewrite like if (!foo) { ... } - function tighten(statements, block_type) { - statements = MAP(statements, walk); - - statements = statements.reduce(function(a, stat){ - if (stat[0] == "block") { - if (stat[1]) { - a.push.apply(a, stat[1]); - } - } else { - a.push(stat); - } - return a; - }, []); - - statements = (function(a, prev){ - statements.forEach(function(cur){ - if (prev && ((cur[0] == "var" && prev[0] == "var") || - (cur[0] == "const" && prev[0] == "const"))) { - prev[1] = prev[1].concat(cur[1]); - } else { - a.push(cur); - prev = cur; - } - }); - return a; - })([]); - - if (options.dead_code) statements = (function(a, has_quit){ - statements.forEach(function(st){ - if (has_quit) { - if (st[0] == "function" || st[0] == "defun") { - a.push(st); - } - else if (st[0] == "var" || st[0] == "const") { - if (!options.no_warnings) - warn("Variables declared in unreachable code"); - st[1] = MAP(st[1], function(def){ - if (def[1] && !options.no_warnings) - warn_unreachable([ "assign", true, [ "name", def[0] ], def[1] ]); - return [ def[0] ]; - }); - a.push(st); - } - else if (!options.no_warnings) - warn_unreachable(st); - } - else { - a.push(st); - if (member(st[0], [ "return", "throw", "break", "continue" ])) - has_quit = true; - } - }); - return a; - })([]); - - if (options.make_seqs) statements = (function(a, prev) { - statements.forEach(function(cur){ - if (prev && prev[0] == "stat" && cur[0] == "stat") { - prev[1] = [ "seq", prev[1], cur[1] ]; - } else { - a.push(cur); - prev = cur; - } - }); - if (a.length >= 2 - && a[a.length-2][0] == "stat" - && (a[a.length-1][0] == "return" || a[a.length-1][0] == "throw") - && a[a.length-1][1]) - { - a.splice(a.length - 2, 2, - [ a[a.length-1][0], - [ "seq", a[a.length-2][1], a[a.length-1][1] ]]); - } - return a; - })([]); - - // this increases jQuery by 1K. Probably not such a good idea after all.. - // part of this is done in prepare_ifs anyway. - // if (block_type == "lambda") statements = (function(i, a, stat){ - // while (i < statements.length) { - // stat = statements[i++]; - // if (stat[0] == "if" && !stat[3]) { - // if (stat[2][0] == "return" && stat[2][1] == null) { - // a.push(make_if(negate(stat[1]), [ "block", statements.slice(i) ])); - // break; - // } - // var last = last_stat(stat[2]); - // if (last[0] == "return" && last[1] == null) { - // a.push(make_if(stat[1], [ "block", stat[2][1].slice(0, -1) ], [ "block", statements.slice(i) ])); - // break; - // } - // } - // a.push(stat); - // } - // return a; - // })(0, []); - - return statements; - }; - - function make_if(c, t, e) { - return when_constant(c, function(ast, val){ - if (val) { - t = walk(t); - warn_unreachable(e); - return t || [ "block" ]; - } else { - e = walk(e); - warn_unreachable(t); - return e || [ "block" ]; - } - }, function() { - return make_real_if(c, t, e); - }); - }; - - function abort_else(c, t, e) { - var ret = [ [ "if", negate(c), e ] ]; - if (t[0] == "block") { - if (t[1]) ret = ret.concat(t[1]); - } else { - ret.push(t); - } - return walk([ "block", ret ]); - }; - - function make_real_if(c, t, e) { - c = walk(c); - t = walk(t); - e = walk(e); - - if (empty(t)) { - c = negate(c); - t = e; - e = null; - } else if (empty(e)) { - e = null; - } else { - // if we have both else and then, maybe it makes sense to switch them? - (function(){ - var a = gen_code(c); - var n = negate(c); - var b = gen_code(n); - if (b.length < a.length) { - var tmp = t; - t = e; - e = tmp; - c = n; - } - })(); - } - if (empty(e) && empty(t)) - return [ "stat", c ]; - var ret = [ "if", c, t, e ]; - if (t[0] == "if" && empty(t[3]) && empty(e)) { - ret = best_of(ret, walk([ "if", [ "binary", "&&", c, t[1] ], t[2] ])); - } - else if (t[0] == "stat") { - if (e) { - if (e[0] == "stat") - ret = best_of(ret, [ "stat", make_conditional(c, t[1], e[1]) ]); - else if (aborts(e)) - ret = abort_else(c, t, e); - } - else { - ret = best_of(ret, [ "stat", make_conditional(c, t[1]) ]); - } - } - else if (e && t[0] == e[0] && (t[0] == "return" || t[0] == "throw") && t[1] && e[1]) { - ret = best_of(ret, [ t[0], make_conditional(c, t[1], e[1] ) ]); - } - else if (e && aborts(t)) { - ret = [ [ "if", c, t ] ]; - if (e[0] == "block") { - if (e[1]) ret = ret.concat(e[1]); - } - else { - ret.push(e); - } - ret = walk([ "block", ret ]); - } - else if (t && aborts(e)) { - ret = abort_else(c, t, e); - } - return ret; - }; - - function _do_while(cond, body) { - return when_constant(cond, function(cond, val){ - if (!val) { - warn_unreachable(body); - return [ "block" ]; - } else { - return [ "for", null, null, null, walk(body) ]; - } - }); - }; - - return w.with_walkers({ - "sub": function(expr, subscript) { - if (subscript[0] == "string") { - var name = subscript[1]; - if (is_identifier(name)) - return [ "dot", walk(expr), name ]; - else if (/^[1-9][0-9]*$/.test(name) || name === "0") - return [ "sub", walk(expr), [ "num", parseInt(name, 10) ] ]; - } - }, - "if": make_if, - "toplevel": function(body) { - return [ "toplevel", tighten(body) ]; - }, - "switch": function(expr, body) { - var last = body.length - 1; - return [ "switch", walk(expr), MAP(body, function(branch, i){ - var block = tighten(branch[1]); - if (i == last && block.length > 0) { - var node = block[block.length - 1]; - if (node[0] == "break" && !node[1]) - block.pop(); - } - return [ branch[0] ? walk(branch[0]) : null, block ]; - }) ]; - }, - "function": _lambda, - "defun": _lambda, - "block": function(body) { - if (body) return rmblock([ "block", tighten(body) ]); - }, - "binary": function(op, left, right) { - return when_constant([ "binary", op, walk(left), walk(right) ], function yes(c){ - return best_of(walk(c), this); - }, function no() { - return function(){ - if(op != "==" && op != "!=") return; - var l = walk(left), r = walk(right); - if(l && l[0] == "unary-prefix" && l[1] == "!" && l[2][0] == "num") - left = ['num', +!l[2][1]]; - else if (r && r[0] == "unary-prefix" && r[1] == "!" && r[2][0] == "num") - right = ['num', +!r[2][1]]; - return ["binary", op, left, right]; - }() || this; - }); - }, - "conditional": function(c, t, e) { - return make_conditional(walk(c), walk(t), walk(e)); - }, - "try": function(t, c, f) { - return [ - "try", - tighten(t), - c != null ? [ c[0], tighten(c[1]) ] : null, - f != null ? tighten(f) : null - ]; - }, - "unary-prefix": function(op, expr) { - expr = walk(expr); - var ret = [ "unary-prefix", op, expr ]; - if (op == "!") - ret = best_of(ret, negate(expr)); - return when_constant(ret, function(ast, val){ - return walk(ast); // it's either true or false, so minifies to !0 or !1 - }, function() { return ret }); - }, - "name": function(name) { - switch (name) { - case "true": return [ "unary-prefix", "!", [ "num", 0 ]]; - case "false": return [ "unary-prefix", "!", [ "num", 1 ]]; - } - }, - "while": _do_while, - "assign": function(op, lvalue, rvalue) { - lvalue = walk(lvalue); - rvalue = walk(rvalue); - var okOps = [ '+', '-', '/', '*', '%', '>>', '<<', '>>>', '|', '^', '&' ]; - if (op === true && lvalue[0] === "name" && rvalue[0] === "binary" && - ~okOps.indexOf(rvalue[1]) && rvalue[2][0] === "name" && - rvalue[2][1] === lvalue[1]) { - return [ this[0], rvalue[1], lvalue, rvalue[3] ] - } - return [ this[0], op, lvalue, rvalue ]; - } - }, function() { - for (var i = 0; i < 2; ++i) { - ast = prepare_ifs(ast); - ast = walk(ast); - } - return ast; - }); -}; - -/* -----[ re-generate code from the AST ]----- */ - -var DOT_CALL_NO_PARENS = jsp.array_to_hash([ - "name", - "array", - "object", - "string", - "dot", - "sub", - "call", - "regexp", - "defun" -]); - -function make_string(str, ascii_only) { - var dq = 0, sq = 0; - str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){ - switch (s) { - case "\\": return "\\\\"; - case "\b": return "\\b"; - case "\f": return "\\f"; - case "\n": return "\\n"; - case "\r": return "\\r"; - case "\u2028": return "\\u2028"; - case "\u2029": return "\\u2029"; - case '"': ++dq; return '"'; - case "'": ++sq; return "'"; - case "\0": return "\\0"; - } - return s; - }); - if (ascii_only) str = to_ascii(str); - if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; - else return '"' + str.replace(/\x22/g, '\\"') + '"'; -}; - -function to_ascii(str) { - return str.replace(/[\u0080-\uffff]/g, function(ch) { - var code = ch.charCodeAt(0).toString(16); - while (code.length < 4) code = "0" + code; - return "\\u" + code; - }); -}; - -var SPLICE_NEEDS_BRACKETS = jsp.array_to_hash([ "if", "while", "do", "for", "for-in", "with" ]); - -function gen_code(ast, options) { - options = defaults(options, { - indent_start : 0, - indent_level : 4, - quote_keys : false, - space_colon : false, - beautify : false, - ascii_only : false, - inline_script: false - }); - var beautify = !!options.beautify; - var indentation = 0, - newline = beautify ? "\n" : "", - space = beautify ? " " : ""; - - function encode_string(str) { - var ret = make_string(str, options.ascii_only); - if (options.inline_script) - ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); - return ret; - }; - - function make_name(name) { - name = name.toString(); - if (options.ascii_only) - name = to_ascii(name); - return name; - }; - - function indent(line) { - if (line == null) - line = ""; - if (beautify) - line = repeat_string(" ", options.indent_start + indentation * options.indent_level) + line; - return line; - }; - - function with_indent(cont, incr) { - if (incr == null) incr = 1; - indentation += incr; - try { return cont.apply(null, slice(arguments, 1)); } - finally { indentation -= incr; } - }; - - function add_spaces(a) { - if (beautify) - return a.join(" "); - var b = []; - for (var i = 0; i < a.length; ++i) { - var next = a[i + 1]; - b.push(a[i]); - if (next && - ((/[a-z0-9_\x24]$/i.test(a[i].toString()) && /^[a-z0-9_\x24]/i.test(next.toString())) || - (/[\+\-]$/.test(a[i].toString()) && /^[\+\-]/.test(next.toString())))) { - b.push(" "); - } - } - return b.join(""); - }; - - function add_commas(a) { - return a.join("," + space); - }; - - function parenthesize(expr) { - var gen = make(expr); - for (var i = 1; i < arguments.length; ++i) { - var el = arguments[i]; - if ((el instanceof Function && el(expr)) || expr[0] == el) - return "(" + gen + ")"; - } - return gen; - }; - - function best_of(a) { - if (a.length == 1) { - return a[0]; - } - if (a.length == 2) { - var b = a[1]; - a = a[0]; - return a.length <= b.length ? a : b; - } - return best_of([ a[0], best_of(a.slice(1)) ]); - }; - - function needs_parens(expr) { - if (expr[0] == "function" || expr[0] == "object") { - // dot/call on a literal function requires the - // function literal itself to be parenthesized - // only if it's the first "thing" in a - // statement. This means that the parent is - // "stat", but it could also be a "seq" and - // we're the first in this "seq" and the - // parent is "stat", and so on. Messy stuff, - // but it worths the trouble. - var a = slice(w.stack()), self = a.pop(), p = a.pop(); - while (p) { - if (p[0] == "stat") return true; - if (((p[0] == "seq" || p[0] == "call" || p[0] == "dot" || p[0] == "sub" || p[0] == "conditional") && p[1] === self) || - ((p[0] == "binary" || p[0] == "assign" || p[0] == "unary-postfix") && p[2] === self)) { - self = p; - p = a.pop(); - } else { - return false; - } - } - } - return !HOP(DOT_CALL_NO_PARENS, expr[0]); - }; - - function make_num(num) { - var str = num.toString(10), a = [ str.replace(/^0\./, ".") ], m; - if (Math.floor(num) === num) { - if (num >= 0) { - a.push("0x" + num.toString(16).toLowerCase(), // probably pointless - "0" + num.toString(8)); // same. - } else { - a.push("-0x" + (-num).toString(16).toLowerCase(), // probably pointless - "-0" + (-num).toString(8)); // same. - } - if ((m = /^(.*?)(0+)$/.exec(num))) { - a.push(m[1] + "e" + m[2].length); - } - } else if ((m = /^0?\.(0+)(.*)$/.exec(num))) { - a.push(m[2] + "e-" + (m[1].length + m[2].length), - str.substr(str.indexOf("."))); - } - return best_of(a); - }; - - var w = ast_walker(); - var make = w.walk; - return w.with_walkers({ - "string": encode_string, - "num": make_num, - "name": make_name, - "debugger": function(){ return "debugger" }, - "toplevel": function(statements) { - return make_block_statements(statements) - .join(newline + newline); - }, - "splice": function(statements) { - var parent = w.parent(); - if (HOP(SPLICE_NEEDS_BRACKETS, parent)) { - // we need block brackets in this case - return make_block.apply(this, arguments); - } else { - return MAP(make_block_statements(statements, true), - function(line, i) { - // the first line is already indented - return i > 0 ? indent(line) : line; - }).join(newline); - } - }, - "block": make_block, - "var": function(defs) { - return "var " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "const": function(defs) { - return "const " + add_commas(MAP(defs, make_1vardef)) + ";"; - }, - "try": function(tr, ca, fi) { - var out = [ "try", make_block(tr) ]; - if (ca) out.push("catch", "(" + ca[0] + ")", make_block(ca[1])); - if (fi) out.push("finally", make_block(fi)); - return add_spaces(out); - }, - "throw": function(expr) { - return add_spaces([ "throw", make(expr) ]) + ";"; - }, - "new": function(ctor, args) { - args = args.length > 0 ? "(" + add_commas(MAP(args, function(expr){ - return parenthesize(expr, "seq"); - })) + ")" : ""; - return add_spaces([ "new", parenthesize(ctor, "seq", "binary", "conditional", "assign", function(expr){ - var w = ast_walker(), has_call = {}; - try { - w.with_walkers({ - "call": function() { throw has_call }, - "function": function() { return this } - }, function(){ - w.walk(expr); - }); - } catch(ex) { - if (ex === has_call) - return true; - throw ex; - } - }) + args ]); - }, - "switch": function(expr, body) { - return add_spaces([ "switch", "(" + make(expr) + ")", make_switch_block(body) ]); - }, - "break": function(label) { - var out = "break"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "continue": function(label) { - var out = "continue"; - if (label != null) - out += " " + make_name(label); - return out + ";"; - }, - "conditional": function(co, th, el) { - return add_spaces([ parenthesize(co, "assign", "seq", "conditional"), "?", - parenthesize(th, "seq"), ":", - parenthesize(el, "seq") ]); - }, - "assign": function(op, lvalue, rvalue) { - if (op && op !== true) op += "="; - else op = "="; - return add_spaces([ make(lvalue), op, parenthesize(rvalue, "seq") ]); - }, - "dot": function(expr) { - var out = make(expr), i = 1; - if (expr[0] == "num") { - if (!/\./.test(expr[1])) - out += "."; - } else if (expr[0] != "function" && needs_parens(expr)) - out = "(" + out + ")"; - while (i < arguments.length) - out += "." + make_name(arguments[i++]); - return out; - }, - "call": function(func, args) { - var f = make(func); - if (f.charAt(0) != "(" && needs_parens(func)) - f = "(" + f + ")"; - return f + "(" + add_commas(MAP(args, function(expr){ - return parenthesize(expr, "seq"); - })) + ")"; - }, - "function": make_function, - "defun": make_function, - "if": function(co, th, el) { - var out = [ "if", "(" + make(co) + ")", el ? make_then(th) : make(th) ]; - if (el) { - out.push("else", make(el)); - } - return add_spaces(out); - }, - "for": function(init, cond, step, block) { - var out = [ "for" ]; - init = (init != null ? make(init) : "").replace(/;*\s*$/, ";" + space); - cond = (cond != null ? make(cond) : "").replace(/;*\s*$/, ";" + space); - step = (step != null ? make(step) : "").replace(/;*\s*$/, ""); - var args = init + cond + step; - if (args == "; ; ") args = ";;"; - out.push("(" + args + ")", make(block)); - return add_spaces(out); - }, - "for-in": function(vvar, key, hash, block) { - return add_spaces([ "for", "(" + - (vvar ? make(vvar).replace(/;+$/, "") : make(key)), - "in", - make(hash) + ")", make(block) ]); - }, - "while": function(condition, block) { - return add_spaces([ "while", "(" + make(condition) + ")", make(block) ]); - }, - "do": function(condition, block) { - return add_spaces([ "do", make(block), "while", "(" + make(condition) + ")" ]) + ";"; - }, - "return": function(expr) { - var out = [ "return" ]; - if (expr != null) out.push(make(expr)); - return add_spaces(out) + ";"; - }, - "binary": function(operator, lvalue, rvalue) { - var left = make(lvalue), right = make(rvalue); - // XXX: I'm pretty sure other cases will bite here. - // we need to be smarter. - // adding parens all the time is the safest bet. - if (member(lvalue[0], [ "assign", "conditional", "seq" ]) || - lvalue[0] == "binary" && PRECEDENCE[operator] > PRECEDENCE[lvalue[1]] || - lvalue[0] == "function" && needs_parens(this)) { - left = "(" + left + ")"; - } - if (member(rvalue[0], [ "assign", "conditional", "seq" ]) || - rvalue[0] == "binary" && PRECEDENCE[operator] >= PRECEDENCE[rvalue[1]] && - !(rvalue[1] == operator && member(operator, [ "&&", "||", "*" ]))) { - right = "(" + right + ")"; - } - else if (!beautify && options.inline_script && (operator == "<" || operator == "<<") - && rvalue[0] == "regexp" && /^script/i.test(rvalue[1])) { - right = " " + right; - } - return add_spaces([ left, operator, right ]); - }, - "unary-prefix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-prefix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return operator + (jsp.is_alphanumeric_char(operator.charAt(0)) ? " " : "") + val; - }, - "unary-postfix": function(operator, expr) { - var val = make(expr); - if (!(expr[0] == "num" || (expr[0] == "unary-postfix" && !HOP(OPERATORS, operator + expr[1])) || !needs_parens(expr))) - val = "(" + val + ")"; - return val + operator; - }, - "sub": function(expr, subscript) { - var hash = make(expr); - if (needs_parens(expr)) - hash = "(" + hash + ")"; - return hash + "[" + make(subscript) + "]"; - }, - "object": function(props) { - var obj_needs_parens = needs_parens(this); - if (props.length == 0) - return obj_needs_parens ? "({})" : "{}"; - var out = "{" + newline + with_indent(function(){ - return MAP(props, function(p){ - if (p.length == 3) { - // getter/setter. The name is in p[0], the arg.list in p[1][2], the - // body in p[1][3] and type ("get" / "set") in p[2]. - return indent(make_function(p[0], p[1][2], p[1][3], p[2], true)); - } - var key = p[0], val = parenthesize(p[1], "seq"); - if (options.quote_keys) { - key = encode_string(key); - } else if ((typeof key == "number" || !beautify && +key + "" == key) - && parseFloat(key) >= 0) { - key = make_num(+key); - } else if (!is_identifier(key)) { - key = encode_string(key); - } - return indent(add_spaces(beautify && options.space_colon - ? [ key, ":", val ] - : [ key + ":", val ])); - }).join("," + newline); - }) + newline + indent("}"); - return obj_needs_parens ? "(" + out + ")" : out; - }, - "regexp": function(rx, mods) { - return "/" + rx + "/" + mods; - }, - "array": function(elements) { - if (elements.length == 0) return "[]"; - return add_spaces([ "[", add_commas(MAP(elements, function(el, i){ - if (!beautify && el[0] == "atom" && el[1] == "undefined") return i === elements.length - 1 ? "," : ""; - return parenthesize(el, "seq"); - })), "]" ]); - }, - "stat": function(stmt) { - return make(stmt).replace(/;*\s*$/, ";"); - }, - "seq": function() { - return add_commas(MAP(slice(arguments), make)); - }, - "label": function(name, block) { - return add_spaces([ make_name(name), ":", make(block) ]); - }, - "with": function(expr, block) { - return add_spaces([ "with", "(" + make(expr) + ")", make(block) ]); - }, - "atom": function(name) { - return make_name(name); - } - }, function(){ return make(ast) }); - - // The squeezer replaces "block"-s that contain only a single - // statement with the statement itself; technically, the AST - // is correct, but this can create problems when we output an - // IF having an ELSE clause where the THEN clause ends in an - // IF *without* an ELSE block (then the outer ELSE would refer - // to the inner IF). This function checks for this case and - // adds the block brackets if needed. - function make_then(th) { - if (th == null) return ";"; - if (th[0] == "do") { - // https://github.com/mishoo/UglifyJS/issues/#issue/57 - // IE croaks with "syntax error" on code like this: - // if (foo) do ... while(cond); else ... - // we need block brackets around do/while - return make_block([ th ]); - } - var b = th; - while (true) { - var type = b[0]; - if (type == "if") { - if (!b[3]) - // no else, we must add the block - return make([ "block", [ th ]]); - b = b[3]; - } - else if (type == "while" || type == "do") b = b[2]; - else if (type == "for" || type == "for-in") b = b[4]; - else break; - } - return make(th); - }; - - function make_function(name, args, body, keyword, no_parens) { - var out = keyword || "function"; - if (name) { - out += " " + make_name(name); - } - out += "(" + add_commas(MAP(args, make_name)) + ")"; - out = add_spaces([ out, make_block(body) ]); - return (!no_parens && needs_parens(this)) ? "(" + out + ")" : out; - }; - - function must_has_semicolon(node) { - switch (node[0]) { - case "with": - case "while": - return empty(node[2]); // `with' or `while' with empty body? - case "for": - case "for-in": - return empty(node[4]); // `for' with empty body? - case "if": - if (empty(node[2]) && !node[3]) return true; // `if' with empty `then' and no `else' - if (node[3]) { - if (empty(node[3])) return true; // `else' present but empty - return must_has_semicolon(node[3]); // dive into the `else' branch - } - return must_has_semicolon(node[2]); // dive into the `then' branch - } - }; - - function make_block_statements(statements, noindent) { - for (var a = [], last = statements.length - 1, i = 0; i <= last; ++i) { - var stat = statements[i]; - var code = make(stat); - if (code != ";") { - if (!beautify && i == last && !must_has_semicolon(stat)) { - code = code.replace(/;+\s*$/, ""); - } - a.push(code); - } - } - return noindent ? a : MAP(a, indent); - }; - - function make_switch_block(body) { - var n = body.length; - if (n == 0) return "{}"; - return "{" + newline + MAP(body, function(branch, i){ - var has_body = branch[1].length > 0, code = with_indent(function(){ - return indent(branch[0] - ? add_spaces([ "case", make(branch[0]) + ":" ]) - : "default:"); - }, 0.5) + (has_body ? newline + with_indent(function(){ - return make_block_statements(branch[1]).join(newline); - }) : ""); - if (!beautify && has_body && i < n - 1) - code += ";"; - return code; - }).join(newline) + newline + indent("}"); - }; - - function make_block(statements) { - if (!statements) return ";"; - if (statements.length == 0) return "{}"; - return "{" + newline + with_indent(function(){ - return make_block_statements(statements).join(newline); - }) + newline + indent("}"); - }; - - function make_1vardef(def) { - var name = def[0], val = def[1]; - if (val != null) - name = add_spaces([ make_name(name), "=", parenthesize(val, "seq") ]); - return name; - }; - -}; - -function split_lines(code, max_line_length) { - var splits = [ 0 ]; - jsp.parse(function(){ - var next_token = jsp.tokenizer(code); - var last_split = 0; - var prev_token; - function current_length(tok) { - return tok.pos - last_split; - }; - function split_here(tok) { - last_split = tok.pos; - splits.push(last_split); - }; - function custom(){ - var tok = next_token.apply(this, arguments); - out: { - if (prev_token) { - if (prev_token.type == "keyword") break out; - } - if (current_length(tok) > max_line_length) { - switch (tok.type) { - case "keyword": - case "atom": - case "name": - case "punc": - split_here(tok); - break out; - } - } - } - prev_token = tok; - return tok; - }; - custom.context = function() { - return next_token.context.apply(this, arguments); - }; - return custom; - }()); - return splits.map(function(pos, i){ - return code.substring(pos, splits[i + 1] || code.length); - }).join("\n"); -}; - -/* -----[ Utilities ]----- */ - -function repeat_string(str, i) { - if (i <= 0) return ""; - if (i == 1) return str; - var d = repeat_string(str, i >> 1); - d += d; - if (i & 1) d += str; - return d; -}; - -function defaults(args, defs) { - var ret = {}; - if (args === true) - args = {}; - for (var i in defs) if (HOP(defs, i)) { - ret[i] = (args && HOP(args, i)) ? args[i] : defs[i]; - } - return ret; -}; - -function is_identifier(name) { - return /^[a-z_$][a-z0-9_$]*$/i.test(name) - && name != "this" - && !HOP(jsp.KEYWORDS_ATOM, name) - && !HOP(jsp.RESERVED_WORDS, name) - && !HOP(jsp.KEYWORDS, name); -}; - -function HOP(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -}; - -// some utilities - -var MAP; - -(function(){ - MAP = function(a, f, o) { - var ret = [], top = [], i; - function doit() { - var val = f.call(o, a[i], i); - if (val instanceof AtTop) { - val = val.v; - if (val instanceof Splice) { - top.push.apply(top, val.v); - } else { - top.push(val); - } - } - else if (val != skip) { - if (val instanceof Splice) { - ret.push.apply(ret, val.v); - } else { - ret.push(val); - } - } - }; - if (a instanceof Array) for (i = 0; i < a.length; ++i) doit(); - else for (i in a) if (HOP(a, i)) doit(); - return top.concat(ret); - }; - MAP.at_top = function(val) { return new AtTop(val) }; - MAP.splice = function(val) { return new Splice(val) }; - var skip = MAP.skip = {}; - function AtTop(val) { this.v = val }; - function Splice(val) { this.v = val }; -})(); - -/* -----[ Exports ]----- */ - -exports.ast_walker = ast_walker; -exports.ast_mangle = ast_mangle; -exports.ast_squeeze = ast_squeeze; -exports.ast_lift_variables = ast_lift_variables; -exports.gen_code = gen_code; -exports.ast_add_scope = ast_add_scope; -exports.set_logger = function(logger) { warn = logger }; -exports.make_string = make_string; -exports.split_lines = split_lines; -exports.MAP = MAP; - -// keep this last! -exports.ast_squeeze_more = require("./squeeze-more").ast_squeeze_more; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/squeeze-more.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/squeeze-more.js deleted file mode 100644 index 0908db3eeed..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/lib/squeeze-more.js +++ /dev/null @@ -1,73 +0,0 @@ -var jsp = require("./parse-js"), - pro = require("./process"), - slice = jsp.slice, - member = jsp.member, - curry = jsp.curry, - MAP = pro.MAP, - PRECEDENCE = jsp.PRECEDENCE, - OPERATORS = jsp.OPERATORS; - -function ast_squeeze_more(ast) { - var w = pro.ast_walker(), walk = w.walk, scope; - function with_scope(s, cont) { - var save = scope, ret; - scope = s; - ret = cont(); - scope = save; - return ret; - }; - function _lambda(name, args, body) { - return [ this[0], name, args, with_scope(body.scope, curry(MAP, body, walk)) ]; - }; - return w.with_walkers({ - "toplevel": function(body) { - return [ this[0], with_scope(this.scope, curry(MAP, body, walk)) ]; - }, - "function": _lambda, - "defun": _lambda, - "new": function(ctor, args) { - if (ctor[0] == "name") { - if (ctor[1] == "Array" && !scope.has("Array")) { - if (args.length != 1) { - return [ "array", args ]; - } else { - return walk([ "call", [ "name", "Array" ], args ]); - } - } else if (ctor[1] == "Object" && !scope.has("Object")) { - if (!args.length) { - return [ "object", [] ]; - } else { - return walk([ "call", [ "name", "Object" ], args ]); - } - } else if ((ctor[1] == "RegExp" || ctor[1] == "Function" || ctor[1] == "Error") && !scope.has(ctor[1])) { - return walk([ "call", [ "name", ctor[1] ], args]); - } - } - }, - "call": function(expr, args) { - if (expr[0] == "dot" && expr[1][0] == "string" && args.length == 1 - && (args[0][1] > 0 && expr[2] == "substring" || expr[2] == "substr")) { - return [ "call", [ "dot", expr[1], "slice"], args]; - } - if (expr[0] == "dot" && expr[2] == "toString" && args.length == 0) { - // foo.toString() ==> foo+"" - return [ "binary", "+", expr[1], [ "string", "" ]]; - } - if (expr[0] == "name") { - if (expr[1] == "Array" && args.length != 1 && !scope.has("Array")) { - return [ "array", args ]; - } - if (expr[1] == "Object" && !args.length && !scope.has("Object")) { - return [ "object", [] ]; - } - if (expr[1] == "String" && !scope.has("String")) { - return [ "binary", "+", args[0], [ "string", "" ]]; - } - } - } - }, function() { - return walk(pro.ast_add_scope(ast)); - }); -}; - -exports.ast_squeeze_more = ast_squeeze_more; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json deleted file mode 100644 index cdbca1e7abe..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "uglify-js", - "description": "JavaScript parser and compressor/beautifier toolkit", - "author": { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com", - "url": "http://mihai.bazon.net/blog" - }, - "version": "1.2.6", - "main": "./uglify-js.js", - "bin": { - "uglifyjs": "./bin/uglifyjs" - }, - "repository": { - "type": "git", - "url": "git@github.com:mishoo/UglifyJS.git" - }, - "readme": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\nlang=\"en\" xml:lang=\"en\">\n<head>\n<title>UglifyJS – a JavaScript parser/compressor/beautifier</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\"/>\n<meta name=\"generator\" content=\"Org-mode\"/>\n<meta name=\"generated\" content=\"2011-12-09 14:59:08 EET\"/>\n<meta name=\"author\" content=\"Mihai Bazon\"/>\n<meta name=\"description\" content=\"a JavaScript parser/compressor/beautifier in JavaScript\"/>\n<meta name=\"keywords\" content=\"javascript, js, parser, compiler, compressor, mangle, minify, minifier\"/>\n<style type=\"text/css\">\n <!--/*--><![CDATA[/*><!--*/\n html { font-family: Times, serif; font-size: 12pt; }\n .title { text-align: center; }\n .todo { color: red; }\n .done { color: green; }\n .tag { background-color: #add8e6; font-weight:normal }\n .target { }\n .timestamp { color: #bebebe; }\n .timestamp-kwd { color: #5f9ea0; }\n .right {margin-left:auto; margin-right:0px; text-align:right;}\n .left {margin-left:0px; margin-right:auto; text-align:left;}\n .center {margin-left:auto; margin-right:auto; text-align:center;}\n p.verse { margin-left: 3% }\n pre {\n\tborder: 1pt solid #AEBDCC;\n\tbackground-color: #F3F5F7;\n\tpadding: 5pt;\n\tfont-family: courier, monospace;\n font-size: 90%;\n overflow:auto;\n }\n table { border-collapse: collapse; }\n td, th { vertical-align: top; }\n th.right { text-align:center; }\n th.left { text-align:center; }\n th.center { text-align:center; }\n td.right { text-align:right; }\n td.left { text-align:left; }\n td.center { text-align:center; }\n dt { font-weight: bold; }\n div.figure { padding: 0.5em; }\n div.figure p { text-align: center; }\n div.inlinetask {\n padding:10px;\n border:2px solid gray;\n margin:10px;\n background: #ffffcc;\n }\n textarea { overflow-x: auto; }\n .linenr { font-size:smaller }\n .code-highlighted {background-color:#ffff00;}\n .org-info-js_info-navigation { border-style:none; }\n #org-info-js_console-label { font-size:10px; font-weight:bold;\n white-space:nowrap; }\n .org-info-js_search-highlight {background-color:#ffff00; color:#000000;\n font-weight:bold; }\n /*]]>*/-->\n</style>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"docstyle.css\" />\n<script type=\"text/javascript\">\n<!--/*--><![CDATA[/*><!--*/\n function CodeHighlightOn(elem, id)\n {\n var target = document.getElementById(id);\n if(null != target) {\n elem.cacheClassElem = elem.className;\n elem.cacheClassTarget = target.className;\n target.className = \"code-highlighted\";\n elem.className = \"code-highlighted\";\n }\n }\n function CodeHighlightOff(elem, id)\n {\n var target = document.getElementById(id);\n if(elem.cacheClassElem)\n elem.className = elem.cacheClassElem;\n if(elem.cacheClassTarget)\n target.className = elem.cacheClassTarget;\n }\n/*]]>*///-->\n</script>\n\n</head>\n<body>\n\n<div id=\"preamble\">\n\n</div>\n\n<div id=\"content\">\n<h1 class=\"title\">UglifyJS – a JavaScript parser/compressor/beautifier</h1>\n\n\n<div id=\"table-of-contents\">\n<h2>Table of Contents</h2>\n<div id=\"text-table-of-contents\">\n<ul>\n<li><a href=\"#sec-1\">1 UglifyJS — a JavaScript parser/compressor/beautifier </a>\n<ul>\n<li><a href=\"#sec-1-1\">1.1 Unsafe transformations </a>\n<ul>\n<li><a href=\"#sec-1-1-1\">1.1.1 Calls involving the global Array constructor </a></li>\n<li><a href=\"#sec-1-1-2\">1.1.2 <code>obj.toString()</code> ==> <code>obj+“”</code> </a></li>\n</ul>\n</li>\n<li><a href=\"#sec-1-2\">1.2 Install (NPM) </a></li>\n<li><a href=\"#sec-1-3\">1.3 Install latest code from GitHub </a></li>\n<li><a href=\"#sec-1-4\">1.4 Usage </a>\n<ul>\n<li><a href=\"#sec-1-4-1\">1.4.1 API </a></li>\n<li><a href=\"#sec-1-4-2\">1.4.2 Beautifier shortcoming – no more comments </a></li>\n<li><a href=\"#sec-1-4-3\">1.4.3 Use as a code pre-processor </a></li>\n</ul>\n</li>\n<li><a href=\"#sec-1-5\">1.5 Compression – how good is it? </a></li>\n<li><a href=\"#sec-1-6\">1.6 Bugs? </a></li>\n<li><a href=\"#sec-1-7\">1.7 Links </a></li>\n<li><a href=\"#sec-1-8\">1.8 License </a></li>\n</ul>\n</li>\n</ul>\n</div>\n</div>\n\n<div id=\"outline-container-1\" class=\"outline-2\">\n<h2 id=\"sec-1\"><span class=\"section-number-2\">1</span> UglifyJS — a JavaScript parser/compressor/beautifier </h2>\n<div class=\"outline-text-2\" id=\"text-1\">\n\n\n<p>\nThis package implements a general-purpose JavaScript\nparser/compressor/beautifier toolkit. It is developed on <a href=\"http://nodejs.org/\">NodeJS</a>, but it\nshould work on any JavaScript platform supporting the CommonJS module system\n(and if your platform of choice doesn't support CommonJS, you can easily\nimplement it, or discard the <code>exports.*</code> lines from UglifyJS sources).\n</p>\n<p>\nThe tokenizer/parser generates an abstract syntax tree from JS code. You\ncan then traverse the AST to learn more about the code, or do various\nmanipulations on it. This part is implemented in <a href=\"../lib/parse-js.js\">parse-js.js</a> and it's a\nport to JavaScript of the excellent <a href=\"http://marijn.haverbeke.nl/parse-js/\">parse-js</a> Common Lisp library from <a href=\"http://marijn.haverbeke.nl/\">Marijn Haverbeke</a>.\n</p>\n<p>\n( See <a href=\"http://github.com/mishoo/cl-uglify-js\">cl-uglify-js</a> if you're looking for the Common Lisp version of\nUglifyJS. )\n</p>\n<p>\nThe second part of this package, implemented in <a href=\"../lib/process.js\">process.js</a>, inspects and\nmanipulates the AST generated by the parser to provide the following:\n</p>\n<ul>\n<li>ability to re-generate JavaScript code from the AST. Optionally\n indented—you can use this if you want to “beautify” a program that has\n been compressed, so that you can inspect the source. But you can also run\n our code generator to print out an AST without any whitespace, so you\n achieve compression as well.\n\n</li>\n<li>shorten variable names (usually to single characters). Our mangler will\n analyze the code and generate proper variable names, depending on scope\n and usage, and is smart enough to deal with globals defined elsewhere, or\n with <code>eval()</code> calls or <code>with{}</code> statements. In short, if <code>eval()</code> or\n <code>with{}</code> are used in some scope, then all variables in that scope and any\n variables in the parent scopes will remain unmangled, and any references\n to such variables remain unmangled as well.\n\n</li>\n<li>various small optimizations that may lead to faster code but certainly\n lead to smaller code. Where possible, we do the following:\n\n<ul>\n<li>foo[\"bar\"] ==> foo.bar\n\n</li>\n<li>remove block brackets <code>{}</code>\n\n</li>\n<li>join consecutive var declarations:\n var a = 10; var b = 20; ==> var a=10,b=20;\n\n</li>\n<li>resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the\n replacement if the result occupies less bytes; for example 1/3 would\n translate to 0.333333333333, so in this case we don't replace it.\n\n</li>\n<li>consecutive statements in blocks are merged into a sequence; in many\n cases, this leaves blocks with a single statement, so then we can remove\n the block brackets.\n\n</li>\n<li>various optimizations for IF statements:\n\n<ul>\n<li>if (foo) bar(); else baz(); ==> foo?bar():baz();\n</li>\n<li>if (!foo) bar(); else baz(); ==> foo?baz():bar();\n</li>\n<li>if (foo) bar(); ==> foo&&bar();\n</li>\n<li>if (!foo) bar(); ==> foo||bar();\n</li>\n<li>if (foo) return bar(); else return baz(); ==> return foo?bar():baz();\n</li>\n<li>if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}\n\n</li>\n</ul>\n\n</li>\n<li>remove some unreachable code and warn about it (code that follows a\n <code>return</code>, <code>throw</code>, <code>break</code> or <code>continue</code> statement, except\n function/variable declarations).\n\n</li>\n<li>act a limited version of a pre-processor (c.f. the pre-processor of\n C/C++) to allow you to safely replace selected global symbols with\n specified values. When combined with the optimisations above this can\n make UglifyJS operate slightly more like a compilation process, in\n that when certain symbols are replaced by constant values, entire code\n blocks may be optimised away as unreachable.\n</li>\n</ul>\n\n</li>\n</ul>\n\n\n\n</div>\n\n<div id=\"outline-container-1-1\" class=\"outline-3\">\n<h3 id=\"sec-1-1\"><span class=\"section-number-3\">1.1</span> <span class=\"target\">Unsafe transformations</span> </h3>\n<div class=\"outline-text-3\" id=\"text-1-1\">\n\n\n<p>\nThe following transformations can in theory break code, although they're\nprobably safe in most practical cases. To enable them you need to pass the\n<code>--unsafe</code> flag.\n</p>\n\n</div>\n\n<div id=\"outline-container-1-1-1\" class=\"outline-4\">\n<h4 id=\"sec-1-1-1\"><span class=\"section-number-4\">1.1.1</span> Calls involving the global Array constructor </h4>\n<div class=\"outline-text-4\" id=\"text-1-1-1\">\n\n\n<p>\nThe following transformations occur:\n</p>\n\n\n\n<pre class=\"src src-js\"><span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3, 4) => [1,2,3,4]\nArray(a, b, c) => [a,b,c]\n<span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(5) => Array(5)\n<span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(a) => Array(a)\n</pre>\n\n\n<p>\nThese are all safe if the Array name isn't redefined. JavaScript does allow\none to globally redefine Array (and pretty much everything, in fact) but I\npersonally don't see why would anyone do that.\n</p>\n<p>\nUglifyJS does handle the case where Array is redefined locally, or even\nglobally but with a <code>function</code> or <code>var</code> declaration. Therefore, in the\nfollowing cases UglifyJS <b>doesn't touch</b> calls or instantiations of Array:\n</p>\n\n\n\n<pre class=\"src src-js\"><span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">case 1. globally declared variable</span>\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">Array</span>;\n <span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3);\n Array(a, b);\n\n <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">or (can be declared later)</span>\n <span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3);\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">Array</span>;\n\n <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">or (can be a function)</span>\n <span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3);\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">Array</span>() { ... }\n\n<span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">case 2. declared in a function</span>\n (<span class=\"org-keyword\">function</span>(){\n a = <span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3);\n b = Array(5, 6);\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">Array</span>;\n })();\n\n <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">or</span>\n (<span class=\"org-keyword\">function</span>(<span class=\"org-variable-name\">Array</span>){\n <span class=\"org-keyword\">return</span> Array(5, 6, 7);\n })();\n\n <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">or</span>\n (<span class=\"org-keyword\">function</span>(){\n <span class=\"org-keyword\">return</span> <span class=\"org-keyword\">new</span> <span class=\"org-type\">Array</span>(1, 2, 3, 4);\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">Array</span>() { ... }\n })();\n\n <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">etc.</span>\n</pre>\n\n\n</div>\n\n</div>\n\n<div id=\"outline-container-1-1-2\" class=\"outline-4\">\n<h4 id=\"sec-1-1-2\"><span class=\"section-number-4\">1.1.2</span> <code>obj.toString()</code> ==> <code>obj+“”</code> </h4>\n<div class=\"outline-text-4\" id=\"text-1-1-2\">\n\n\n</div>\n</div>\n\n</div>\n\n<div id=\"outline-container-1-2\" class=\"outline-3\">\n<h3 id=\"sec-1-2\"><span class=\"section-number-3\">1.2</span> Install (NPM) </h3>\n<div class=\"outline-text-3\" id=\"text-1-2\">\n\n\n<p>\nUglifyJS is now available through NPM — <code>npm install uglify-js</code> should do\nthe job.\n</p>\n</div>\n\n</div>\n\n<div id=\"outline-container-1-3\" class=\"outline-3\">\n<h3 id=\"sec-1-3\"><span class=\"section-number-3\">1.3</span> Install latest code from GitHub </h3>\n<div class=\"outline-text-3\" id=\"text-1-3\">\n\n\n\n\n\n<pre class=\"src src-sh\"><span class=\"org-comment-delimiter\">## </span><span class=\"org-comment\">clone the repository</span>\nmkdir -p /where/you/wanna/put/it\n<span class=\"org-builtin\">cd</span> /where/you/wanna/put/it\ngit clone git://github.com/mishoo/UglifyJS.git\n\n<span class=\"org-comment-delimiter\">## </span><span class=\"org-comment\">make the module available to Node</span>\nmkdir -p ~/.node_libraries/\n<span class=\"org-builtin\">cd</span> ~/.node_libraries/\nln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js\n\n<span class=\"org-comment-delimiter\">## </span><span class=\"org-comment\">and if you want the CLI script too:</span>\nmkdir -p ~/bin\n<span class=\"org-builtin\">cd</span> ~/bin\nln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs\n <span class=\"org-comment-delimiter\"># </span><span class=\"org-comment\">(then add ~/bin to your $PATH if it's not there already)</span>\n</pre>\n\n\n</div>\n\n</div>\n\n<div id=\"outline-container-1-4\" class=\"outline-3\">\n<h3 id=\"sec-1-4\"><span class=\"section-number-3\">1.4</span> Usage </h3>\n<div class=\"outline-text-3\" id=\"text-1-4\">\n\n\n<p>\nThere is a command-line tool that exposes the functionality of this library\nfor your shell-scripting needs:\n</p>\n\n\n\n<pre class=\"src src-sh\">uglifyjs [ options... ] [ filename ]\n</pre>\n\n\n<p>\n<code>filename</code> should be the last argument and should name the file from which\nto read the JavaScript code. If you don't specify it, it will read code\nfrom STDIN.\n</p>\n<p>\nSupported options:\n</p>\n<ul>\n<li><code>-b</code> or <code>--beautify</code> — output indented code; when passed, additional\n options control the beautifier:\n\n<ul>\n<li><code>-i N</code> or <code>--indent N</code> — indentation level (number of spaces)\n\n</li>\n<li><code>-q</code> or <code>--quote-keys</code> — quote keys in literal objects (by default,\n only keys that cannot be identifier names will be quotes).\n\n</li>\n</ul>\n\n</li>\n<li><code>--ascii</code> — pass this argument to encode non-ASCII characters as\n <code>\\uXXXX</code> sequences. By default UglifyJS won't bother to do it and will\n output Unicode characters instead. (the output is always encoded in UTF8,\n but if you pass this option you'll only get ASCII).\n\n</li>\n<li><code>-nm</code> or <code>--no-mangle</code> — don't mangle names.\n\n</li>\n<li><code>-nmf</code> or <code>--no-mangle-functions</code> – in case you want to mangle variable\n names, but not touch function names.\n\n</li>\n<li><code>-ns</code> or <code>--no-squeeze</code> — don't call <code>ast_squeeze()</code> (which does various\n optimizations that result in smaller, less readable code).\n\n</li>\n<li><code>-mt</code> or <code>--mangle-toplevel</code> — mangle names in the toplevel scope too\n (by default we don't do this).\n\n</li>\n<li><code>--no-seqs</code> — when <code>ast_squeeze()</code> is called (thus, unless you pass\n <code>--no-squeeze</code>) it will reduce consecutive statements in blocks into a\n sequence. For example, \"a = 10; b = 20; foo();\" will be written as\n \"a=10,b=20,foo();\". In various occasions, this allows us to discard the\n block brackets (since the block becomes a single statement). This is ON\n by default because it seems safe and saves a few hundred bytes on some\n libs that I tested it on, but pass <code>--no-seqs</code> to disable it.\n\n</li>\n<li><code>--no-dead-code</code> — by default, UglifyJS will remove code that is\n obviously unreachable (code that follows a <code>return</code>, <code>throw</code>, <code>break</code> or\n <code>continue</code> statement and is not a function/variable declaration). Pass\n this option to disable this optimization.\n\n</li>\n<li><code>-nc</code> or <code>--no-copyright</code> — by default, <code>uglifyjs</code> will keep the initial\n comment tokens in the generated code (assumed to be copyright information\n etc.). If you pass this it will discard it.\n\n</li>\n<li><code>-o filename</code> or <code>--output filename</code> — put the result in <code>filename</code>. If\n this isn't given, the result goes to standard output (or see next one).\n\n</li>\n<li><code>--overwrite</code> — if the code is read from a file (not from STDIN) and you\n pass <code>--overwrite</code> then the output will be written in the same file.\n\n</li>\n<li><code>--ast</code> — pass this if you want to get the Abstract Syntax Tree instead\n of JavaScript as output. Useful for debugging or learning more about the\n internals.\n\n</li>\n<li><code>-v</code> or <code>--verbose</code> — output some notes on STDERR (for now just how long\n each operation takes).\n\n</li>\n<li><code>-d SYMBOL[=VALUE]</code> or <code>--define SYMBOL[=VALUE]</code> — will replace\n all instances of the specified symbol where used as an identifier\n (except where symbol has properly declared by a var declaration or\n use as function parameter or similar) with the specified value. This\n argument may be specified multiple times to define multiple\n symbols - if no value is specified the symbol will be replaced with\n the value <code>true</code>, or you can specify a numeric value (such as\n <code>1024</code>), a quoted string value (such as =\"object\"= or\n ='https://github.com'<code>), or the name of another symbol or keyword (such as =null</code> or <code>document</code>).\n This allows you, for example, to assign meaningful names to key\n constant values but discard the symbolic names in the uglified\n version for brevity/efficiency, or when used wth care, allows\n UglifyJS to operate as a form of <b>conditional compilation</b>\n whereby defining appropriate values may, by dint of the constant\n folding and dead code removal features above, remove entire\n superfluous code blocks (e.g. completely remove instrumentation or\n trace code for production use).\n Where string values are being defined, the handling of quotes are\n likely to be subject to the specifics of your command shell\n environment, so you may need to experiment with quoting styles\n depending on your platform, or you may find the option\n <code>--define-from-module</code> more suitable for use.\n\n</li>\n<li><code>-define-from-module SOMEMODULE</code> — will load the named module (as\n per the NodeJS <code>require()</code> function) and iterate all the exported\n properties of the module defining them as symbol names to be defined\n (as if by the <code>--define</code> option) per the name of each property\n (i.e. without the module name prefix) and given the value of the\n property. This is a much easier way to handle and document groups of\n symbols to be defined rather than a large number of <code>--define</code>\n options.\n\n</li>\n<li><code>--unsafe</code> — enable other additional optimizations that are known to be\n unsafe in some contrived situations, but could still be generally useful.\n For now only these:\n\n<ul>\n<li>foo.toString() ==> foo+\"\"\n</li>\n<li>new Array(x,…) ==> [x,…]\n</li>\n<li>new Array(x) ==> Array(x)\n\n</li>\n</ul>\n\n</li>\n<li><code>--max-line-len</code> (default 32K characters) — add a newline after around\n 32K characters. I've seen both FF and Chrome croak when all the code was\n on a single line of around 670K. Pass –max-line-len 0 to disable this\n safety feature.\n\n</li>\n<li><code>--reserved-names</code> — some libraries rely on certain names to be used, as\n pointed out in issue #92 and #81, so this option allow you to exclude such\n names from the mangler. For example, to keep names <code>require</code> and <code>$super</code>\n intact you'd specify –reserved-names \"require,$super\".\n\n</li>\n<li><code>--inline-script</code> – when you want to include the output literally in an\n HTML <code><script></code> tag you can use this option to prevent <code></script</code> from\n showing up in the output.\n\n</li>\n<li><code>--lift-vars</code> – when you pass this, UglifyJS will apply the following\n transformations (see the notes in API, <code>ast_lift_variables</code>):\n\n<ul>\n<li>put all <code>var</code> declarations at the start of the scope\n</li>\n<li>make sure a variable is declared only once\n</li>\n<li>discard unused function arguments\n</li>\n<li>discard unused inner (named) functions\n</li>\n<li>finally, try to merge assignments into that one <code>var</code> declaration, if\n possible.\n</li>\n</ul>\n\n</li>\n</ul>\n\n\n\n</div>\n\n<div id=\"outline-container-1-4-1\" class=\"outline-4\">\n<h4 id=\"sec-1-4-1\"><span class=\"section-number-4\">1.4.1</span> API </h4>\n<div class=\"outline-text-4\" id=\"text-1-4-1\">\n\n\n<p>\nTo use the library from JavaScript, you'd do the following (example for\nNodeJS):\n</p>\n\n\n\n<pre class=\"src src-js\"><span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">jsp</span> = require(<span class=\"org-string\">\"uglify-js\"</span>).parser;\n<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">pro</span> = require(<span class=\"org-string\">\"uglify-js\"</span>).uglify;\n\n<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">orig_code</span> = <span class=\"org-string\">\"... JS code here\"</span>;\n<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">ast</span> = jsp.parse(orig_code); <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">parse code and get the initial AST</span>\nast = pro.ast_mangle(ast); <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">get a new AST with mangled names</span>\nast = pro.ast_squeeze(ast); <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">get an AST with compression optimizations</span>\n<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">final_code</span> = pro.gen_code(ast); <span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">compressed code here</span>\n</pre>\n\n\n<p>\nThe above performs the full compression that is possible right now. As you\ncan see, there are a sequence of steps which you can apply. For example if\nyou want compressed output but for some reason you don't want to mangle\nvariable names, you would simply skip the line that calls\n<code>pro.ast_mangle(ast)</code>.\n</p>\n<p>\nSome of these functions take optional arguments. Here's a description:\n</p>\n<ul>\n<li><code>jsp.parse(code, strict_semicolons)</code> – parses JS code and returns an AST.\n <code>strict_semicolons</code> is optional and defaults to <code>false</code>. If you pass\n <code>true</code> then the parser will throw an error when it expects a semicolon and\n it doesn't find it. For most JS code you don't want that, but it's useful\n if you want to strictly sanitize your code.\n\n</li>\n<li><code>pro.ast_lift_variables(ast)</code> – merge and move <code>var</code> declarations to the\n scop of the scope; discard unused function arguments or variables; discard\n unused (named) inner functions. It also tries to merge assignments\n following the <code>var</code> declaration into it.\n\n<p>\n If your code is very hand-optimized concerning <code>var</code> declarations, this\n lifting variable declarations might actually increase size. For me it\n helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also\n note that (since it's not enabled by default) this operation isn't yet\n heavily tested (please report if you find issues!).\n</p>\n<p>\n Note that although it might increase the image size (on jQuery it gains\n 865 bytes, 243 after gzip) it's technically more correct: in certain\n situations, dead code removal might drop variable declarations, which\n would not happen if the variables are lifted in advance.\n</p>\n<p>\n Here's an example of what it does:\n</p></li>\n</ul>\n\n\n\n\n\n<pre class=\"src src-js\"><span class=\"org-keyword\">function</span> <span class=\"org-function-name\">f</span>(<span class=\"org-variable-name\">a</span>, <span class=\"org-variable-name\">b</span>, <span class=\"org-variable-name\">c</span>, <span class=\"org-variable-name\">d</span>, <span class=\"org-variable-name\">e</span>) {\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">q</span>;\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">w</span>;\n w = 10;\n q = 20;\n <span class=\"org-keyword\">for</span> (<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">i</span> = 1; i < 10; ++i) {\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">boo</span> = foo(a);\n }\n <span class=\"org-keyword\">for</span> (<span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">i</span> = 0; i < 1; ++i) {\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">boo</span> = bar(c);\n }\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">foo</span>(){ ... }\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">bar</span>(){ ... }\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">baz</span>(){ ... }\n}\n\n<span class=\"org-comment-delimiter\">// </span><span class=\"org-comment\">transforms into ==></span>\n\n<span class=\"org-keyword\">function</span> <span class=\"org-function-name\">f</span>(<span class=\"org-variable-name\">a</span>, <span class=\"org-variable-name\">b</span>, <span class=\"org-variable-name\">c</span>) {\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">i</span>, <span class=\"org-variable-name\">boo</span>, <span class=\"org-variable-name\">w</span> = 10, <span class=\"org-variable-name\">q</span> = 20;\n <span class=\"org-keyword\">for</span> (i = 1; i < 10; ++i) {\n boo = foo(a);\n }\n <span class=\"org-keyword\">for</span> (i = 0; i < 1; ++i) {\n boo = bar(c);\n }\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">foo</span>() { ... }\n <span class=\"org-keyword\">function</span> <span class=\"org-function-name\">bar</span>() { ... }\n}\n</pre>\n\n\n<ul>\n<li><code>pro.ast_mangle(ast, options)</code> – generates a new AST containing mangled\n (compressed) variable and function names. It supports the following\n options:\n\n<ul>\n<li><code>toplevel</code> – mangle toplevel names (by default we don't touch them).\n</li>\n<li><code>except</code> – an array of names to exclude from compression.\n</li>\n<li><code>defines</code> – an object with properties named after symbols to\n replace (see the <code>--define</code> option for the script) and the values\n representing the AST replacement value.\n\n</li>\n</ul>\n\n</li>\n<li><code>pro.ast_squeeze(ast, options)</code> – employs further optimizations designed\n to reduce the size of the code that <code>gen_code</code> would generate from the\n AST. Returns a new AST. <code>options</code> can be a hash; the supported options\n are:\n\n<ul>\n<li><code>make_seqs</code> (default true) which will cause consecutive statements in a\n block to be merged using the \"sequence\" (comma) operator\n\n</li>\n<li><code>dead_code</code> (default true) which will remove unreachable code.\n\n</li>\n</ul>\n\n</li>\n<li><code>pro.gen_code(ast, options)</code> – generates JS code from the AST. By\n default it's minified, but using the <code>options</code> argument you can get nicely\n formatted output. <code>options</code> is, well, optional :-) and if you pass it it\n must be an object and supports the following properties (below you can see\n the default values):\n\n<ul>\n<li><code>beautify: false</code> – pass <code>true</code> if you want indented output\n</li>\n<li><code>indent_start: 0</code> (only applies when <code>beautify</code> is <code>true</code>) – initial\n indentation in spaces\n</li>\n<li><code>indent_level: 4</code> (only applies when <code>beautify</code> is <code>true</code>) --\n indentation level, in spaces (pass an even number)\n</li>\n<li><code>quote_keys: false</code> – if you pass <code>true</code> it will quote all keys in\n literal objects\n</li>\n<li><code>space_colon: false</code> (only applies when <code>beautify</code> is <code>true</code>) – wether\n to put a space before the colon in object literals\n</li>\n<li><code>ascii_only: false</code> – pass <code>true</code> if you want to encode non-ASCII\n characters as <code>\\uXXXX</code>.\n</li>\n<li><code>inline_script: false</code> – pass <code>true</code> to escape occurrences of\n <code></script</code> in strings\n</li>\n</ul>\n\n</li>\n</ul>\n\n\n</div>\n\n</div>\n\n<div id=\"outline-container-1-4-2\" class=\"outline-4\">\n<h4 id=\"sec-1-4-2\"><span class=\"section-number-4\">1.4.2</span> Beautifier shortcoming – no more comments </h4>\n<div class=\"outline-text-4\" id=\"text-1-4-2\">\n\n\n<p>\nThe beautifier can be used as a general purpose indentation tool. It's\nuseful when you want to make a minified file readable. One limitation,\nthough, is that it discards all comments, so you don't really want to use it\nto reformat your code, unless you don't have, or don't care about, comments.\n</p>\n<p>\nIn fact it's not the beautifier who discards comments — they are dumped at\nthe parsing stage, when we build the initial AST. Comments don't really\nmake sense in the AST, and while we could add nodes for them, it would be\ninconvenient because we'd have to add special rules to ignore them at all\nthe processing stages.\n</p>\n</div>\n\n</div>\n\n<div id=\"outline-container-1-4-3\" class=\"outline-4\">\n<h4 id=\"sec-1-4-3\"><span class=\"section-number-4\">1.4.3</span> Use as a code pre-processor </h4>\n<div class=\"outline-text-4\" id=\"text-1-4-3\">\n\n\n<p>\nThe <code>--define</code> option can be used, particularly when combined with the\nconstant folding logic, as a form of pre-processor to enable or remove\nparticular constructions, such as might be used for instrumenting\ndevelopment code, or to produce variations aimed at a specific\nplatform.\n</p>\n<p>\nThe code below illustrates the way this can be done, and how the\nsymbol replacement is performed.\n</p>\n\n\n\n<pre class=\"src src-js\">CLAUSE1: <span class=\"org-keyword\">if</span> (<span class=\"org-keyword\">typeof</span> DEVMODE === <span class=\"org-string\">'undefined'</span>) {\n DEVMODE = <span class=\"org-constant\">true</span>;\n}\n\n<span class=\"org-function-name\">CLAUSE2</span>: <span class=\"org-keyword\">function</span> init() {\n <span class=\"org-keyword\">if</span> (DEVMODE) {\n console.log(<span class=\"org-string\">\"init() called\"</span>);\n }\n ....\n DEVMODE &amp;&amp; console.log(<span class=\"org-string\">\"init() complete\"</span>);\n}\n\n<span class=\"org-function-name\">CLAUSE3</span>: <span class=\"org-keyword\">function</span> reportDeviceStatus(<span class=\"org-variable-name\">device</span>) {\n <span class=\"org-keyword\">var</span> <span class=\"org-variable-name\">DEVMODE</span> = device.mode, <span class=\"org-variable-name\">DEVNAME</span> = device.name;\n <span class=\"org-keyword\">if</span> (DEVMODE === <span class=\"org-string\">'open'</span>) {\n ....\n }\n}\n</pre>\n\n\n<p>\nWhen the above code is normally executed, the undeclared global\nvariable <code>DEVMODE</code> will be assigned the value <b>true</b> (see <code>CLAUSE1</code>)\nand so the <code>init()</code> function (<code>CLAUSE2</code>) will write messages to the\nconsole log when executed, but in <code>CLAUSE3</code> a locally declared\nvariable will mask access to the <code>DEVMODE</code> global symbol.\n</p>\n<p>\nIf the above code is processed by UglifyJS with an argument of\n<code>--define DEVMODE=false</code> then UglifyJS will replace <code>DEVMODE</code> with the\nboolean constant value <b>false</b> within <code>CLAUSE1</code> and <code>CLAUSE2</code>, but it\nwill leave <code>CLAUSE3</code> as it stands because there <code>DEVMODE</code> resolves to\na validly declared variable.\n</p>\n<p>\nAnd more so, the constant-folding features of UglifyJS will recognise\nthat the <code>if</code> condition of <code>CLAUSE1</code> is thus always false, and so will\nremove the test and body of <code>CLAUSE1</code> altogether (including the\notherwise slightly problematical statement <code>false = true;</code> which it\nwill have formed by replacing <code>DEVMODE</code> in the body). Similarly,\nwithin <code>CLAUSE2</code> both calls to <code>console.log()</code> will be removed\naltogether.\n</p>\n<p>\nIn this way you can mimic, to a limited degree, the functionality of\nthe C/C++ pre-processor to enable or completely remove blocks\ndepending on how certain symbols are defined - perhaps using UglifyJS\nto generate different versions of source aimed at different\nenvironments\n</p>\n<p>\nIt is recommmended (but not made mandatory) that symbols designed for\nthis purpose are given names consisting of <code>UPPER_CASE_LETTERS</code> to\ndistinguish them from other (normal) symbols and avoid the sort of\nclash that <code>CLAUSE3</code> above illustrates.\n</p>\n</div>\n</div>\n\n</div>\n\n<div id=\"outline-container-1-5\" class=\"outline-3\">\n<h3 id=\"sec-1-5\"><span class=\"section-number-3\">1.5</span> Compression – how good is it? </h3>\n<div class=\"outline-text-3\" id=\"text-1-5\">\n\n\n<p>\nHere are updated statistics. (I also updated my Google Closure and YUI\ninstallations).\n</p>\n<p>\nWe're still a lot better than YUI in terms of compression, though slightly\nslower. We're still a lot faster than Closure, and compression after gzip\nis comparable.\n</p>\n<table border=\"2\" cellspacing=\"0\" cellpadding=\"6\" rules=\"groups\" frame=\"hsides\">\n<caption></caption>\n<colgroup><col class=\"left\" /><col class=\"left\" /><col class=\"right\" /><col class=\"left\" /><col class=\"right\" /><col class=\"left\" /><col class=\"right\" />\n</colgroup>\n<thead>\n<tr><th scope=\"col\" class=\"left\">File</th><th scope=\"col\" class=\"left\">UglifyJS</th><th scope=\"col\" class=\"right\">UglifyJS+gzip</th><th scope=\"col\" class=\"left\">Closure</th><th scope=\"col\" class=\"right\">Closure+gzip</th><th scope=\"col\" class=\"left\">YUI</th><th scope=\"col\" class=\"right\">YUI+gzip</th></tr>\n</thead>\n<tbody>\n<tr><td class=\"left\">jquery-1.6.2.js</td><td class=\"left\">91001 (0:01.59)</td><td class=\"right\">31896</td><td class=\"left\">90678 (0:07.40)</td><td class=\"right\">31979</td><td class=\"left\">101527 (0:01.82)</td><td class=\"right\">34646</td></tr>\n<tr><td class=\"left\">paper.js</td><td class=\"left\">142023 (0:01.65)</td><td class=\"right\">43334</td><td class=\"left\">134301 (0:07.42)</td><td class=\"right\">42495</td><td class=\"left\">173383 (0:01.58)</td><td class=\"right\">48785</td></tr>\n<tr><td class=\"left\">prototype.js</td><td class=\"left\">88544 (0:01.09)</td><td class=\"right\">26680</td><td class=\"left\">86955 (0:06.97)</td><td class=\"right\">26326</td><td class=\"left\">92130 (0:00.79)</td><td class=\"right\">28624</td></tr>\n<tr><td class=\"left\">thelib-full.js (DynarchLIB)</td><td class=\"left\">251939 (0:02.55)</td><td class=\"right\">72535</td><td class=\"left\">249911 (0:09.05)</td><td class=\"right\">72696</td><td class=\"left\">258869 (0:01.94)</td><td class=\"right\">76584</td></tr>\n</tbody>\n</table>\n\n\n</div>\n\n</div>\n\n<div id=\"outline-container-1-6\" class=\"outline-3\">\n<h3 id=\"sec-1-6\"><span class=\"section-number-3\">1.6</span> Bugs? </h3>\n<div class=\"outline-text-3\" id=\"text-1-6\">\n\n\n<p>\nUnfortunately, for the time being there is no automated test suite. But I\nran the compressor manually on non-trivial code, and then I tested that the\ngenerated code works as expected. A few hundred times.\n</p>\n<p>\nDynarchLIB was started in times when there was no good JS minifier.\nTherefore I was quite religious about trying to write short code manually,\nand as such DL contains a lot of syntactic hacks<sup><a class=\"footref\" name=\"fnr.1\" href=\"#fn.1\">1</a></sup> such as “foo == bar ? a\n= 10 : b = 20”, though the more readable version would clearly be to use\n“if/else”.\n</p>\n<p>\nSince the parser/compressor runs fine on DL and jQuery, I'm quite confident\nthat it's solid enough for production use. If you can identify any bugs,\nI'd love to hear about them (<a href=\"http://groups.google.com/group/uglifyjs\">use the Google Group</a> or email me directly).\n</p>\n</div>\n\n</div>\n\n<div id=\"outline-container-1-7\" class=\"outline-3\">\n<h3 id=\"sec-1-7\"><span class=\"section-number-3\">1.7</span> Links </h3>\n<div class=\"outline-text-3\" id=\"text-1-7\">\n\n\n<ul>\n<li>Twitter: <a href=\"http://twitter.com/UglifyJS\">@UglifyJS</a>\n</li>\n<li>Project at GitHub: <a href=\"http://github.com/mishoo/UglifyJS\">http://github.com/mishoo/UglifyJS</a>\n</li>\n<li>Google Group: <a href=\"http://groups.google.com/group/uglifyjs\">http://groups.google.com/group/uglifyjs</a>\n</li>\n<li>Common Lisp JS parser: <a href=\"http://marijn.haverbeke.nl/parse-js/\">http://marijn.haverbeke.nl/parse-js/</a>\n</li>\n<li>JS-to-Lisp compiler: <a href=\"http://github.com/marijnh/js\">http://github.com/marijnh/js</a>\n</li>\n<li>Common Lisp JS uglifier: <a href=\"http://github.com/mishoo/cl-uglify-js\">http://github.com/mishoo/cl-uglify-js</a>\n</li>\n</ul>\n\n\n</div>\n\n</div>\n\n<div id=\"outline-container-1-8\" class=\"outline-3\">\n<h3 id=\"sec-1-8\"><span class=\"section-number-3\">1.8</span> License </h3>\n<div class=\"outline-text-3\" id=\"text-1-8\">\n\n\n<p>\nUglifyJS is released under the BSD license:\n</p>\n\n\n\n<pre class=\"example\">Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>\nBased on parse-js (http://marijn.haverbeke.nl/parse-js/).\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions\nare met:\n\n * Redistributions of source code must retain the above\n copyright notice, this list of conditions and the following\n disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials\n provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,\nOR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\nPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\nTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF\nTHE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGE.\n</pre>\n\n\n<div id=\"footnotes\">\n<h2 class=\"footnotes\">Footnotes: </h2>\n<div id=\"text-footnotes\">\n<p class=\"footnote\"><sup><a class=\"footnum\" name=\"fn.1\" href=\"#fnr.1\">1</a></sup> I even reported a few bugs and suggested some fixes in the original\n <a href=\"http://marijn.haverbeke.nl/parse-js/\">parse-js</a> library, and Marijn pushed fixes literally in minutes.\n</p></div>\n</div>\n</div>\n\n</div>\n</div>\n</div>\n\n<div id=\"postamble\">\n<p class=\"date\">Date: 2011-12-09 14:59:08 EET</p>\n<p class=\"author\">Author: Mihai Bazon</p>\n<p class=\"creator\">Org version 7.7 with Emacs version 23</p>\n<a href=\"http://validator.w3.org/check?uri=referer\">Validate XHTML 1.0</a>\n\n</div>\n</body>\n</html>\n", - "_id": "uglify-js@1.2.6", - "dist": { - "shasum": "cc7a1c548f2cef34d487fe7181bbe9a9536d9613" - }, - "_from": "uglify-js@~1.2.5" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json~ b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json~ deleted file mode 100644 index e4cb23d51eb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/package.json~ +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name" : "uglify-js", - - "description" : "JavaScript parser and compressor/beautifier toolkit", - - "author" : { - "name" : "Mihai Bazon", - "email" : "mihai.bazon@gmail.com", - "url" : "http://mihai.bazon.net/blog" - }, - - "version" : "1.2.3", - - "main" : "./uglify-js.js", - - "bin" : { - "uglifyjs" : "./bin/uglifyjs" - }, - - "repository": { - "type": "git", - "url": "git@github.com:mishoo/UglifyJS.git" - } -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/beautify.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/beautify.js deleted file mode 100755 index f19369e3a13..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/beautify.js +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/env node - -global.sys = require("sys"); -var fs = require("fs"); - -var jsp = require("../lib/parse-js"); -var pro = require("../lib/process"); - -var filename = process.argv[2]; -fs.readFile(filename, "utf8", function(err, text){ - try { - var ast = time_it("parse", function(){ return jsp.parse(text); }); - ast = time_it("mangle", function(){ return pro.ast_mangle(ast); }); - ast = time_it("squeeze", function(){ return pro.ast_squeeze(ast); }); - var gen = time_it("generate", function(){ return pro.gen_code(ast, false); }); - sys.puts(gen); - } catch(ex) { - sys.debug(ex.stack); - sys.debug(sys.inspect(ex)); - sys.debug(JSON.stringify(ex)); - } -}); - -function time_it(name, cont) { - var t1 = new Date().getTime(); - try { return cont(); } - finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); } -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/testparser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/testparser.js deleted file mode 100755 index 02c19a9c98d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/testparser.js +++ /dev/null @@ -1,403 +0,0 @@ -#! /usr/bin/env node - -var parseJS = require("../lib/parse-js"); -var sys = require("sys"); - -// write debug in a very straightforward manner -var debug = function(){ - sys.log(Array.prototype.slice.call(arguments).join(', ')); -}; - -ParserTestSuite(function(i, input, desc){ - try { - parseJS.parse(input); - debug("ok " + i + ": " + desc); - } catch(e){ - debug("FAIL " + i + " " + desc + " (" + e + ")"); - } -}); - -function ParserTestSuite(callback){ - var inps = [ - ["var abc;", "Regular variable statement w/o assignment"], - ["var abc = 5;", "Regular variable statement with assignment"], - ["/* */;", "Multiline comment"], - ['/** **/;', 'Double star multiline comment'], - ["var f = function(){;};", "Function expression in var assignment"], - ['hi; // moo\n;', 'single line comment'], - ['var varwithfunction;', 'Dont match keywords as substrings'], // difference between `var withsomevar` and `"str"` (local search and lits) - ['a + b;', 'addition'], - ["'a';", 'single string literal'], - ["'a\\n';", 'single string literal with escaped return'], - ['"a";', 'double string literal'], - ['"a\\n";', 'double string literal with escaped return'], - ['"var";', 'string is a keyword'], - ['"variable";', 'string starts with a keyword'], - ['"somevariable";', 'string contains a keyword'], - ['"somevar";', 'string ends with a keyword'], - ['500;', 'int literal'], - ['500.;', 'float literal w/o decimals'], - ['500.432;', 'float literal with decimals'], - ['.432432;', 'float literal w/o int'], - ['(a,b,c);', 'parens and comma'], - ['[1,2,abc];', 'array literal'], - ['var o = {a:1};', 'object literal unquoted key'], - ['var o = {"b":2};', 'object literal quoted key'], // opening curly may not be at the start of a statement... - ['var o = {c:c};', 'object literal keyname is identifier'], - ['var o = {a:1,"b":2,c:c};', 'object literal combinations'], - ['var x;\nvar y;', 'two lines'], - ['var x;\nfunction n(){; }', 'function def'], - ['var x;\nfunction n(abc){; }', 'function def with arg'], - ['var x;\nfunction n(abc, def){ ;}', 'function def with args'], - ['function n(){ "hello"; }', 'function def with body'], - ['/a/;', 'regex literal'], - ['/a/b;', 'regex literal with flag'], - ['/a/ / /b/;', 'regex div regex'], - ['a/b/c;', 'triple division looks like regex'], - ['+function(){/regex/;};', 'regex at start of function body'], - // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=86 - // http://code.google.com/p/es-lab/source/browse/trunk/tests/parser/parsertests.js?r=430 - - // first tests for the lexer, should also parse as program (when you append a semi) - - // comments - ['//foo!@#^&$1234\nbar;', 'single line comment'], - ['/* abcd!@#@$* { } && null*/;', 'single line multi line comment'], - ['/*foo\nbar*/;','multi line comment'], - ['/*x*x*/;','multi line comment with *'], - ['/**/;','empty comment'], - // identifiers - ["x;",'1 identifier'], - ["_x;",'2 identifier'], - ["xyz;",'3 identifier'], - ["$x;",'4 identifier'], - ["x$;",'5 identifier'], - ["_;",'6 identifier'], - ["x5;",'7 identifier'], - ["x_y;",'8 identifier'], - ["x+5;",'9 identifier'], - ["xyz123;",'10 identifier'], - ["x1y1z1;",'11 identifier'], - ["foo\\u00D8bar;",'12 identifier unicode escape'], - //["foo�bar;",'13 identifier unicode embedded (might fail)'], - // numbers - ["5;", '1 number'], - ["5.5;", '2 number'], - ["0;", '3 number'], - ["0.0;", '4 number'], - ["0.001;", '5 number'], - ["1.e2;", '6 number'], - ["1.e-2;", '7 number'], - ["1.E2;", '8 number'], - ["1.E-2;", '9 number'], - [".5;", '10 number'], - [".5e3;", '11 number'], - [".5e-3;", '12 number'], - ["0.5e3;", '13 number'], - ["55;", '14 number'], - ["123;", '15 number'], - ["55.55;", '16 number'], - ["55.55e10;", '17 number'], - ["123.456;", '18 number'], - ["1+e;", '20 number'], - ["0x01;", '22 number'], - ["0XCAFE;", '23 number'], - ["0x12345678;", '24 number'], - ["0x1234ABCD;", '25 number'], - ["0x0001;", '26 number'], - // strings - ["\"foo\";", '1 string'], - ["\'foo\';", '2 string'], - ["\"x\";", '3 string'], - ["\'\';", '4 string'], - ["\"foo\\tbar\";", '5 string'], - ["\"!@#$%^&*()_+{}[]\";", '6 string'], - ["\"/*test*/\";", '7 string'], - ["\"//test\";", '8 string'], - ["\"\\\\\";", '9 string'], - ["\"\\u0001\";", '10 string'], - ["\"\\uFEFF\";", '11 string'], - ["\"\\u10002\";", '12 string'], - ["\"\\x55\";", '13 string'], - ["\"\\x55a\";", '14 string'], - ["\"a\\\\nb\";", '15 string'], - ['";"', '16 string: semi in a string'], - ['"a\\\nb";', '17 string: line terminator escape'], - // literals - ["null;", "null"], - ["true;", "true"], - ["false;", "false"], - // regex - ["/a/;", "1 regex"], - ["/abc/;", "2 regex"], - ["/abc[a-z]*def/g;", "3 regex"], - ["/\\b/;", "4 regex"], - ["/[a-zA-Z]/;", "5 regex"], - - // program tests (for as far as they havent been covered above) - - // regexp - ["/foo(.*)/g;", "another regexp"], - // arrays - ["[];", "1 array"], - ["[ ];", "2 array"], - ["[1];", "3 array"], - ["[1,2];", "4 array"], - ["[1,2,,];", "5 array"], - ["[1,2,3];", "6 array"], - ["[1,2,3,,,];", "7 array"], - // objects - ["{};", "1 object"], - ["({x:5});", "2 object"], - ["({x:5,y:6});", "3 object"], - ["({x:5,});", "4 object"], - ["({if:5});", "5 object"], - ["({ get x() {42;} });", "6 object"], - ["({ set y(a) {1;} });", "7 object"], - // member expression - ["o.m;", "1 member expression"], - ["o['m'];", "2 member expression"], - ["o['n']['m'];", "3 member expression"], - ["o.n.m;", "4 member expression"], - ["o.if;", "5 member expression"], - // call and invoke expressions - ["f();", "1 call/invoke expression"], - ["f(x);", "2 call/invoke expression"], - ["f(x,y);", "3 call/invoke expression"], - ["o.m();", "4 call/invoke expression"], - ["o['m'];", "5 call/invoke expression"], - ["o.m(x);", "6 call/invoke expression"], - ["o['m'](x);", "7 call/invoke expression"], - ["o.m(x,y);", "8 call/invoke expression"], - ["o['m'](x,y);", "9 call/invoke expression"], - ["f(x)(y);", "10 call/invoke expression"], - ["f().x;", "11 call/invoke expression"], - - // eval - ["eval('x');", "1 eval"], - ["(eval)('x');", "2 eval"], - ["(1,eval)('x');", "3 eval"], - ["eval(x,y);", "4 eval"], - // new expression - ["new f();", "1 new expression"], - ["new o;", "2 new expression"], - ["new o.m;", "3 new expression"], - ["new o.m(x);", "4 new expression"], - ["new o.m(x,y);", "5 new expression"], - // prefix/postfix - ["++x;", "1 pre/postfix"], - ["x++;", "2 pre/postfix"], - ["--x;", "3 pre/postfix"], - ["x--;", "4 pre/postfix"], - ["x ++;", "5 pre/postfix"], - ["x /* comment */ ++;", "6 pre/postfix"], - ["++ /* comment */ x;", "7 pre/postfix"], - // unary operators - ["delete x;", "1 unary operator"], - ["void x;", "2 unary operator"], - ["+ x;", "3 unary operator"], - ["-x;", "4 unary operator"], - ["~x;", "5 unary operator"], - ["!x;", "6 unary operator"], - // meh - ["new Date++;", "new date ++"], - ["+x++;", " + x ++"], - // expression expressions - ["1 * 2;", "1 expression expressions"], - ["1 / 2;", "2 expression expressions"], - ["1 % 2;", "3 expression expressions"], - ["1 + 2;", "4 expression expressions"], - ["1 - 2;", "5 expression expressions"], - ["1 << 2;", "6 expression expressions"], - ["1 >>> 2;", "7 expression expressions"], - ["1 >> 2;", "8 expression expressions"], - ["1 * 2 + 3;", "9 expression expressions"], - ["(1+2)*3;", "10 expression expressions"], - ["1*(2+3);", "11 expression expressions"], - ["x<y;", "12 expression expressions"], - ["x>y;", "13 expression expressions"], - ["x<=y;", "14 expression expressions"], - ["x>=y;", "15 expression expressions"], - ["x instanceof y;", "16 expression expressions"], - ["x in y;", "17 expression expressions"], - ["x&y;", "18 expression expressions"], - ["x^y;", "19 expression expressions"], - ["x|y;", "20 expression expressions"], - ["x+y<z;", "21 expression expressions"], - ["x<y+z;", "22 expression expressions"], - ["x+y+z;", "23 expression expressions"], - ["x+y<z;", "24 expression expressions"], - ["x<y+z;", "25 expression expressions"], - ["x&y|z;", "26 expression expressions"], - ["x&&y;", "27 expression expressions"], - ["x||y;", "28 expression expressions"], - ["x&&y||z;", "29 expression expressions"], - ["x||y&&z;", "30 expression expressions"], - ["x<y?z:w;", "31 expression expressions"], - // assignment - ["x >>>= y;", "1 assignment"], - ["x <<= y;", "2 assignment"], - ["x = y;", "3 assignment"], - ["x += y;", "4 assignment"], - ["x /= y;", "5 assignment"], - // comma - ["x, y;", "comma"], - // block - ["{};", "1 block"], - ["{x;};", "2 block"], - ["{x;y;};", "3 block"], - // vars - ["var x;", "1 var"], - ["var x,y;", "2 var"], - ["var x=1,y=2;", "3 var"], - ["var x,y=2;", "4 var"], - // empty - [";", "1 empty"], - ["\n;", "2 empty"], - // expression statement - ["x;", "1 expression statement"], - ["5;", "2 expression statement"], - ["1+2;", "3 expression statement"], - // if - ["if (c) x; else y;", "1 if statement"], - ["if (c) x;", "2 if statement"], - ["if (c) {} else {};", "3 if statement"], - ["if (c1) if (c2) s1; else s2;", "4 if statement"], - // while - ["do s; while (e);", "1 while statement"], - ["do { s; } while (e);", "2 while statement"], - ["while (e) s;", "3 while statement"], - ["while (e) { s; };", "4 while statement"], - // for - ["for (;;) ;", "1 for statement"], - ["for (;c;x++) x;", "2 for statement"], - ["for (i;i<len;++i){};", "3 for statement"], - ["for (var i=0;i<len;++i) {};", "4 for statement"], - ["for (var i=0,j=0;;){};", "5 for statement"], - //["for (x in b; c; u) {};", "6 for statement"], - ["for ((x in b); c; u) {};", "7 for statement"], - ["for (x in a);", "8 for statement"], - ["for (var x in a){};", "9 for statement"], - ["for (var x=5 in a) {};", "10 for statement"], - ["for (var x = a in b in c) {};", "11 for statement"], - ["for (var x=function(){a+b;}; a<b; ++i) some;", "11 for statement, testing for parsingForHeader reset with the function"], - ["for (var x=function(){for (x=0; x<15; ++x) alert(foo); }; a<b; ++i) some;", "11 for statement, testing for parsingForHeader reset with the function"], - // flow statements - ["while(1){ continue; }", "1 flow statement"], - ["label: while(1){ continue label; }", "2 flow statement"], - ["while(1){ break; }", "3 flow statement"], - ["somewhere: while(1){ break somewhere; }", "4 flow statement"], - ["while(1){ continue /* comment */ ; }", "5 flow statement"], - ["while(1){ continue \n; }", "6 flow statement"], - ["(function(){ return; })()", "7 flow statement"], - ["(function(){ return 0; })()", "8 flow statement"], - ["(function(){ return 0 + \n 1; })()", "9 flow statement"], - // with - ["with (e) s;", "with statement"], - // switch - ["switch (e) { case x: s; };", "1 switch statement"], - ["switch (e) { case x: s1;s2; default: s3; case y: s4; };", "2 switch statement"], - ["switch (e) { default: s1; case x: s2; case y: s3; };", "3 switch statement"], - ["switch (e) { default: s; };", "4 switch statement"], - ["switch (e) { case x: s1; case y: s2; };", "5 switch statement"], - // labels - ["foo : x;", " flow statement"], - // throw - ["throw x;", "1 throw statement"], - ["throw x\n;", "2 throw statement"], - // try catch finally - ["try { s1; } catch (e) { s2; };", "1 trycatchfinally statement"], - ["try { s1; } finally { s2; };", "2 trycatchfinally statement"], - ["try { s1; } catch (e) { s2; } finally { s3; };", "3 trycatchfinally statement"], - // debugger - ["debugger;", "debuger statement"], - // function decl - ["function f(x) { e; return x; };", "1 function declaration"], - ["function f() { x; y; };", "2 function declaration"], - ["function f(x,y) { var z; return x; };", "3 function declaration"], - // function exp - ["(function f(x) { return x; });", "1 function expression"], - ["(function empty() {;});", "2 function expression"], - ["(function empty() {;});", "3 function expression"], - ["(function (x) {; });", "4 function expression"], - // program - ["var x; function f(){;}; null;", "1 program"], - [";;", "2 program"], - ["{ x; y; z; }", "3 program"], - ["function f(){ function g(){;}};", "4 program"], - ["x;\n/*foo*/\n ;", "5 program"], - - // asi - ["foo: while(1){ continue \n foo; }", "1 asi"], - ["foo: while(1){ break \n foo; }", "2 asi"], - ["(function(){ return\nfoo; })()", "3 asi"], - ["var x; { 1 \n 2 } 3", "4 asi"], - ["ab /* hi */\ncd", "5 asi"], - ["ab/*\n*/cd", "6 asi (multi line multilinecomment counts as eol)"], - ["foo: while(1){ continue /* wtf \n busta */ foo; }", "7 asi illegal with multi line comment"], - ["function f() { s }", "8 asi"], - ["function f() { return }", "9 asi"], - - // use strict - // XXX: some of these should actually fail? - // no support for "use strict" yet... - ['"use strict"; \'bla\'\n; foo;', "1 directive"], - ['(function() { "use strict"; \'bla\';\n foo; });', "2 directive"], - ['"use\\n strict";', "3 directive"], - ['foo; "use strict";', "4 directive"], - - // tests from http://es5conform.codeplex.com/ - - ['"use strict"; var o = { eval: 42};', "8.7.2-3-1-s: the use of eval as property name is allowed"], - ['({foo:0,foo:1});', 'Duplicate property name allowed in not strict mode'], - ['function foo(a,a){}', 'Duplicate parameter name allowed in not strict mode'], - ['(function foo(eval){})', 'Eval allowed as parameter name in non strict mode'], - ['(function foo(arguments){})', 'Arguments allowed as parameter name in non strict mode'], - - // empty programs - - ['', '1 Empty program'], - ['// test', '2 Empty program'], - ['//test\n', '3 Empty program'], - ['\n// test', '4 Empty program'], - ['\n// test\n', '5 Empty program'], - ['/* */', '6 Empty program'], - ['/*\ns,fd\n*/', '7 Empty program'], - ['/*\ns,fd\n*/\n', '8 Empty program'], - [' ', '9 Empty program'], - [' /*\nsmeh*/ \n ', '10 Empty program'], - - // trailing whitespace - - ['a ', '1 Trailing whitespace'], - ['a /* something */', '2 Trailing whitespace'], - ['a\n // hah', '3 Trailing whitespace'], - ['/abc/de//f', '4 Trailing whitespace'], - ['/abc/de/*f*/\n ', '5 Trailing whitespace'], - - // things the parser tripped over at one point or the other (prevents regression bugs) - ['for (x;function(){ a\nb };z) x;', 'for header with function body forcing ASI'], - ['c=function(){return;return};', 'resetting noAsi after literal'], - ['d\nd()', 'asi exception causing token overflow'], - ['for(;;){x=function(){}}', 'function expression in a for header'], - ['for(var k;;){}', 'parser failing due to ASI accepting the incorrect "for" rule'], - ['({get foo(){ }})', 'getter with empty function body'], - ['\nreturnr', 'eol causes return statement to ignore local search requirement'], - [' / /', '1 whitespace before regex causes regex to fail?'], - ['/ // / /', '2 whitespace before regex causes regex to fail?'], - ['/ / / / /', '3 whitespace before regex causes regex to fail?'], - - ['\n\t// Used for trimming whitespace\n\ttrimLeft = /^\\s+/;\n\ttrimRight = /\\s+$/;\t\n','turned out this didnt crash (the test below did), but whatever.'], - ['/[\\/]/;', 'escaped forward slash inside class group (would choke on fwd slash)'], - ['/[/]/;', 'also broke but is valid in es5 (not es3)'], - ['({get:5});','get property name thats not a getter'], - ['({set:5});','set property name thats not a setter'], - ['l !== "px" && (d.style(h, c, (k || 1) + l), j = (k || 1) / f.cur() * j, d.style(h, c, j + l)), i[1] && (k = (i[1] === "-=" ? -1 : 1) * k + j), f.custom(j, k, l)', 'this choked regex/div at some point'], - ['(/\'/g, \'\\\\\\\'\') + "\'";', 'the sequence of escaped characters confused the tokenizer'], - ['if (true) /=a/.test("a");', 'regexp starting with "=" in not obvious context (not implied by preceding token)'] - ]; - - for (var i=0; i<inps.length; ++i) { - callback(i, inps[i][0], inps[i][1]); - }; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array1.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array1.js deleted file mode 100644 index 7b09176af0c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array1.js +++ /dev/null @@ -1 +0,0 @@ -[],Array(1),[1,2,3] diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array2.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array2.js deleted file mode 100644 index 05eba190746..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array2.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=function(){};return new a(1,2,3,4)})() diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array3.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array3.js deleted file mode 100644 index 82f4f4db25a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array3.js +++ /dev/null @@ -1 +0,0 @@ -(function(){function a(){}return new a(1,2,3,4)})() diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array4.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array4.js deleted file mode 100644 index 4b7b0f18700..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/array4.js +++ /dev/null @@ -1 +0,0 @@ -(function(){function a(){}(function(){return new a(1,2,3)})()})() diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/assignment.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/assignment.js deleted file mode 100644 index ab626d3b320..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/assignment.js +++ /dev/null @@ -1 +0,0 @@ -a=1,b=a,c=1,d=b,e=d,longname=2;if(longname+1){x=3;if(x)var z=7}z=1,y=1,x=1,g+=1,h=g,++i,j=i,i++,j=i+17
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/concatstring.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/concatstring.js deleted file mode 100644 index 3a4ee10b33f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +++ /dev/null @@ -1 +0,0 @@ -var a=a+"a"+"b"+1+c,b=a+"c"+"ds"+123+c,c=a+"c"+123+d+"ds"+c
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/const.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/const.js deleted file mode 100644 index cef74d7c833..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/const.js +++ /dev/null @@ -1 +0,0 @@ -var a=13,b=1/3
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js deleted file mode 100644 index c5836bd3101..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +++ /dev/null @@ -1 +0,0 @@ -function bar(){return--x}function foo(){while(bar());}function mak(){for(;;);}var x=5 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/forstatement.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/forstatement.js deleted file mode 100644 index fc474117cd0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +++ /dev/null @@ -1 +0,0 @@ -a=func(),b=z;for(a++;i<10;i++)alert(i);var z=1;g=2;for(;i<10;i++)alert(i);var a=2;for(var i=1;i<10;i++)alert(i)
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/if.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/if.js deleted file mode 100644 index 236993c73ef..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/if.js +++ /dev/null @@ -1 +0,0 @@ -var a=1;a==1?a=2:a=17
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js deleted file mode 100644 index c5c32dd7f93..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +++ /dev/null @@ -1 +0,0 @@ -function a(a){return a==1?2:17}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js deleted file mode 100644 index d6ea94062a7..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +++ /dev/null @@ -1 +0,0 @@ -function x(a){return typeof a=="object"?a:a===42?0:a*2}function y(a){return typeof a=="object"?a:null} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue10.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue10.js deleted file mode 100644 index 1de52aff25f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue10.js +++ /dev/null @@ -1 +0,0 @@ -function f(){var a;return(a="a")?a:a}f()
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue11.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue11.js deleted file mode 100644 index 876bd0a20c9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue11.js +++ /dev/null @@ -1 +0,0 @@ -new(A,B),new(A||B),new(X?A:B)
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue13.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue13.js deleted file mode 100644 index 295ee69f216..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue13.js +++ /dev/null @@ -1 +0,0 @@ -var a=/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#])(?::(\d))?)?(..?$|(?:[^?#\/]\/))([^?#]*)(?:\?([^#]))?(?:#(.))?/
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue14.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue14.js deleted file mode 100644 index 1ca8eef030f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue14.js +++ /dev/null @@ -1 +0,0 @@ -var a={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue16.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue16.js deleted file mode 100644 index 20948288b8a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue16.js +++ /dev/null @@ -1 +0,0 @@ -var a=3250441966
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue17.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue17.js deleted file mode 100644 index 339bce4aa5c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue17.js +++ /dev/null @@ -1 +0,0 @@ -var a=function(b){b(),a()}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue20.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue20.js deleted file mode 100644 index d00491fd7e5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue20.js +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue21.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue21.js deleted file mode 100644 index fa83bdc6256..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue21.js +++ /dev/null @@ -1 +0,0 @@ -var a=0;switch(a){case 0:a++}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue25.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue25.js deleted file mode 100644 index 49deed69966..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue25.js +++ /dev/null @@ -1 +0,0 @@ -a:break a;console.log(1) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue27.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue27.js deleted file mode 100644 index b1154d17902..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue27.js +++ /dev/null @@ -1 +0,0 @@ -(a?b:c)?d:e
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue278.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue278.js deleted file mode 100644 index e09bc7ff6c4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue278.js +++ /dev/null @@ -1 +0,0 @@ -if(!x)debugger diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue28.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue28.js deleted file mode 100644 index 5c0c914a4bf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue28.js +++ /dev/null @@ -1 +0,0 @@ -o={".5":.5},o={.5:.5},o={.5:.5}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue29.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue29.js deleted file mode 100644 index eaaa1cba6a1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue29.js +++ /dev/null @@ -1 +0,0 @@ -result=function(){return 1}()
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue30.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue30.js deleted file mode 100644 index 27610b59034..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue30.js +++ /dev/null @@ -1 +0,0 @@ -var a=8,b=4,c=4
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue34.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue34.js deleted file mode 100644 index a9dd7d4209d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue34.js +++ /dev/null @@ -1 +0,0 @@ -var a={};a["this"]=1,a.that=2
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue4.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue4.js deleted file mode 100644 index 1fee33deb2f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue4.js +++ /dev/null @@ -1 +0,0 @@ -var a=2e3,b=.002,c=2e-5
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue48.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue48.js deleted file mode 100644 index 5e8abcdeb94..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue48.js +++ /dev/null @@ -1 +0,0 @@ -var s,i;s="",i=0
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue50.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue50.js deleted file mode 100644 index 1974186fbe6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue50.js +++ /dev/null @@ -1 +0,0 @@ -function bar(a){try{foo()}catch(b){alert("Exception caught (foo not defined)")}alert(a)}bar(10) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue53.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue53.js deleted file mode 100644 index cd42c051c07..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue53.js +++ /dev/null @@ -1 +0,0 @@ -x=(y,z) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js deleted file mode 100644 index ef067943dd0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +++ /dev/null @@ -1 +0,0 @@ -foo+"",a.toString(16),b.toString.call(c) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue68.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue68.js deleted file mode 100644 index 4ec46c8bc84..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue68.js +++ /dev/null @@ -1 +0,0 @@ -function f(){function b(){}if(a)return;b()} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue69.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue69.js deleted file mode 100644 index d25ecd671e2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue69.js +++ /dev/null @@ -1 +0,0 @@ -[(a,b)] diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue9.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue9.js deleted file mode 100644 index db8d48c5bb8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/issue9.js +++ /dev/null @@ -1 +0,0 @@ -var a={a:1,b:2}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/mangle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/mangle.js deleted file mode 100644 index 6226e8ae435..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/mangle.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=function b(a,b,c){return b}})() diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/null_string.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/null_string.js deleted file mode 100644 index 04145301bfa..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/null_string.js +++ /dev/null @@ -1 +0,0 @@ -var nullString="\0"
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js deleted file mode 100644 index 0b7375b7500..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +++ /dev/null @@ -1 +0,0 @@ -typeof a=="string",b+""!=c+"",d<e==f<g
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/var.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/var.js deleted file mode 100644 index 01091cff7f1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/var.js +++ /dev/null @@ -1 +0,0 @@ -var a=1,b=2
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/whitespace.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/whitespace.js deleted file mode 100644 index 8ffc8ff421a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/whitespace.js +++ /dev/null @@ -1 +0,0 @@ -function id(a){return a} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/with.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/with.js deleted file mode 100644 index c5b0b164ad1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/expected/with.js +++ /dev/null @@ -1 +0,0 @@ -with({}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array1.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array1.js deleted file mode 100644 index ae0851dd8b3..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array1.js +++ /dev/null @@ -1,3 +0,0 @@ -new Array(); -new Array(1); -new Array(1, 2, 3); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array2.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array2.js deleted file mode 100644 index 74226dfa25b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array2.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(){ - var Array = function(){}; - return new Array(1, 2, 3, 4); -})(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array3.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array3.js deleted file mode 100644 index 6cc974291a4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array3.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(){ - return new Array(1, 2, 3, 4); - function Array() {}; -})(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array4.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array4.js deleted file mode 100644 index 73928618c14..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/array4.js +++ /dev/null @@ -1,6 +0,0 @@ -(function(){ - (function(){ - return new Array(1, 2, 3); - })(); - function Array(){}; -})(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/assignment.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/assignment.js deleted file mode 100644 index 4e00389cb3e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/assignment.js +++ /dev/null @@ -1,20 +0,0 @@ -a=1; -b=a; -c=1; -d=b; -e=d; -longname=2; -if (longname+1) { - x=3; - if (x) var z = 7; -} -z=1,y=1,x=1 - -g+=1; -h=g; - -++i; -j=i; - -i++; -j=i+17;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/concatstring.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/concatstring.js deleted file mode 100644 index a4a00378787..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/concatstring.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = a + "a" + "b" + 1 + c; -var b = a + "c" + "ds" + 123 + c; -var c = a + "c" + 123 + d + "ds" + c;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/const.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/const.js deleted file mode 100644 index f2c62e9331c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/const.js +++ /dev/null @@ -1,5 +0,0 @@ -// test that the calculation is fold to 13
-var a = 1 + 2 * 6;
-
-// test that it isn't replaced with 0.3333 because that is more characters
-var b = 1/3;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js deleted file mode 100644 index 2d679c104bf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +++ /dev/null @@ -1,4 +0,0 @@ -var x = 5; -function bar() { return --x; } -function foo() { while (bar()); } -function mak() { for(;;); } diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/forstatement.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/forstatement.js deleted file mode 100644 index d2a14f9528a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/forstatement.js +++ /dev/null @@ -1,10 +0,0 @@ -a=func(); -b=z; -for (a++; i < 10; i++) { alert(i); } - -var z=1; -g=2; -for (; i < 10; i++) { alert(i); } - -var a = 2; -for (var i = 1; i < 10; i++) { alert(i); } diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/if.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/if.js deleted file mode 100644 index a54e762203a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/if.js +++ /dev/null @@ -1,6 +0,0 @@ -var a = 1;
-if (a == 1) {
- a = 2;
-} else {
- a = 17;
-}
diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn.js deleted file mode 100644 index 1332c9366ac..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +++ /dev/null @@ -1,9 +0,0 @@ -function a(b) {
- if (b == 1) {
- return 2;
- } else {
- return 17;
- }
-
- return 3;
-}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js deleted file mode 100644 index 5d763ea36e3..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +++ /dev/null @@ -1,16 +0,0 @@ -function x(a) { - if (typeof a === 'object') - return a; - - if (a === 42) - return 0; - - return a * 2; -} - -function y(a) { - if (typeof a === 'object') - return a; - - return null; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue10.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue10.js deleted file mode 100644 index 20adcaa0cb3..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue10.js +++ /dev/null @@ -1 +0,0 @@ -function f() { var a; if (a = 'a') { return a; } else { return a; } }; f();
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue11.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue11.js deleted file mode 100644 index f4dbf1f91c1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue11.js +++ /dev/null @@ -1,3 +0,0 @@ -new (A, B) -new (A || B) -new (X ? A : B)
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue13.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue13.js deleted file mode 100644 index 4328a20a075..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue13.js +++ /dev/null @@ -1 +0,0 @@ -var a = /^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#])(?::(\d))?)?(..?$|(?:[^?#\/]\/))([^?#]*)(?:\?([^#]))?(?:#(.))?/;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue14.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue14.js deleted file mode 100644 index 70c26afaf44..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue14.js +++ /dev/null @@ -1 +0,0 @@ -var a = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'};
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue16.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue16.js deleted file mode 100644 index 53b857b931e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue16.js +++ /dev/null @@ -1 +0,0 @@ -var a = 0xC1BDCEEE;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue17.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue17.js deleted file mode 100644 index 2dfab555036..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue17.js +++ /dev/null @@ -1,4 +0,0 @@ -var a = function(b) { - b(); - a() -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue20.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue20.js deleted file mode 100644 index 5a9dde54b45..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue20.js +++ /dev/null @@ -1 +0,0 @@ -{a: 1}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue21.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue21.js deleted file mode 100644 index 30d1e1d5829..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue21.js +++ /dev/null @@ -1,6 +0,0 @@ -var a = 0; -switch(a) { - case 0: - a++; - break; -}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue25.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue25.js deleted file mode 100644 index 9ca921dbe67..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue25.js +++ /dev/null @@ -1,7 +0,0 @@ -label1 : { - label2 : { - break label2; - console.log(2); - } - console.log(1); -}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue27.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue27.js deleted file mode 100644 index 89394db0f61..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue27.js +++ /dev/null @@ -1 +0,0 @@ -(a ? b : c) ? d : e
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue278.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue278.js deleted file mode 100644 index f6ce96ee16d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue278.js +++ /dev/null @@ -1 +0,0 @@ -if (!x) debugger; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue28.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue28.js deleted file mode 100644 index 7188e2798d4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue28.js +++ /dev/null @@ -1,3 +0,0 @@ -o = {'.5':.5} -o = {'0.5':.5} -o = {0.5:.5}
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue29.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue29.js deleted file mode 100644 index f07cf4da3fc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue29.js +++ /dev/null @@ -1 +0,0 @@ -result=(function(){ return 1;})()
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue30.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue30.js deleted file mode 100644 index 4e634e2dd6a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue30.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = 1 << 3; -var b = 8 >> 1; -var c = 8 >>> 1;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue34.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue34.js deleted file mode 100644 index 022f7a31b69..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue34.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = {}; -a["this"] = 1; -a["that"] = 2;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue4.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue4.js deleted file mode 100644 index 0b761037928..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue4.js +++ /dev/null @@ -1,3 +0,0 @@ -var a = 2e3; -var b = 2e-3; -var c = 2e-5;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue48.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue48.js deleted file mode 100644 index 031e85b39c4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue48.js +++ /dev/null @@ -1 +0,0 @@ -var s, i; s = ''; i = 0;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue50.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue50.js deleted file mode 100644 index 060f9df82fb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue50.js +++ /dev/null @@ -1,9 +0,0 @@ -function bar(a) { - try { - foo(); - } catch(e) { - alert("Exception caught (foo not defined)"); - } - alert(a); // 10 in FF, "[object Error]" in IE -} -bar(10); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue53.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue53.js deleted file mode 100644 index 4f8b32f11f4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue53.js +++ /dev/null @@ -1 +0,0 @@ -x = (y, z) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue54.1.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue54.1.js deleted file mode 100644 index 967052e857b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +++ /dev/null @@ -1,3 +0,0 @@ -foo.toString(); -a.toString(16); -b.toString.call(c); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue68.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue68.js deleted file mode 100644 index 14054d01e2b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue68.js +++ /dev/null @@ -1,5 +0,0 @@ -function f() { - if (a) return; - g(); - function g(){} -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue69.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue69.js deleted file mode 100644 index d25ecd671e2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue69.js +++ /dev/null @@ -1 +0,0 @@ -[(a,b)] diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue9.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue9.js deleted file mode 100644 index 61588614b89..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/issue9.js +++ /dev/null @@ -1,4 +0,0 @@ -var a = { - a: 1, - b: 2, // <-- trailing comma -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/mangle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/mangle.js deleted file mode 100644 index c271a26dc5b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/mangle.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() { - var x = function fun(a, fun, b) { - return fun; - }; -}()); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/null_string.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/null_string.js deleted file mode 100644 index a675b1c5cc0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/null_string.js +++ /dev/null @@ -1 +0,0 @@ -var nullString = "\0"
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/strict-equals.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/strict-equals.js deleted file mode 100644 index b631f4c3502..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +++ /dev/null @@ -1,3 +0,0 @@ -typeof a === 'string' -b + "" !== c + "" -d < e === f < g diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/var.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/var.js deleted file mode 100644 index 609a35d2a2c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/var.js +++ /dev/null @@ -1,3 +0,0 @@ -// var declarations after each other should be combined
-var a = 1;
-var b = 2;
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/whitespace.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/whitespace.js deleted file mode 100644 index 6a15c464fbb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/whitespace.js +++ /dev/null @@ -1,21 +0,0 @@ -function id(a) { - // Form-Feed - // Vertical Tab - // No-Break Space - // Mongolian Vowel Separator - // En quad - // Em quad - // En space - // Em space - // Three-Per-Em Space - // Four-Per-Em Space - // Six-Per-Em Space - // Figure Space - // Punctuation Space - // Thin Space - // Hair Space - // Narrow No-Break Space - // Medium Mathematical Space - // Ideographic Space - return a; -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/with.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/with.js deleted file mode 100644 index de266ed547e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/compress/test/with.js +++ /dev/null @@ -1,2 +0,0 @@ -with({}) { -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/scripts.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/scripts.js deleted file mode 100644 index 5d334ff76a6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/test/unit/scripts.js +++ /dev/null @@ -1,55 +0,0 @@ -var fs = require('fs'), - uglify = require('../../uglify-js'), - jsp = uglify.parser, - nodeunit = require('nodeunit'), - path = require('path'), - pro = uglify.uglify; - -var Script = process.binding('evals').Script; - -var scriptsPath = __dirname; - -function compress(code) { - var ast = jsp.parse(code); - ast = pro.ast_mangle(ast); - ast = pro.ast_squeeze(ast, { no_warnings: true }); - ast = pro.ast_squeeze_more(ast); - return pro.gen_code(ast); -}; - -var testDir = path.join(scriptsPath, "compress", "test"); -var expectedDir = path.join(scriptsPath, "compress", "expected"); - -function getTester(script) { - return function(test) { - var testPath = path.join(testDir, script); - var expectedPath = path.join(expectedDir, script); - var content = fs.readFileSync(testPath, 'utf-8'); - var outputCompress = compress(content); - - // Check if the noncompressdata is larger or same size as the compressed data - test.ok(content.length >= outputCompress.length); - - // Check that a recompress gives the same result - var outputReCompress = compress(content); - test.equal(outputCompress, outputReCompress); - - // Check if the compressed output is what is expected - var expected = fs.readFileSync(expectedPath, 'utf-8'); - test.equal(outputCompress, expected.replace(/(\r?\n)+$/, "")); - - test.done(); - }; -}; - -var tests = {}; - -var scripts = fs.readdirSync(testDir); -for (var i in scripts) { - var script = scripts[i]; - if (/\.js$/.test(script)) { - tests[script] = getTester(script); - } -} - -module.exports = nodeunit.testCase(tests); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/uglify-js.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/uglify-js.js deleted file mode 100644 index 6e14a637e8b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/node_modules/uglify-js/uglify-js.js +++ /dev/null @@ -1,18 +0,0 @@ -//convienence function(src, [options]); -function uglify(orig_code, options){ - options || (options = {}); - var jsp = uglify.parser; - var pro = uglify.uglify; - - var ast = jsp.parse(orig_code, options.strict_semicolons); // parse code and get the initial AST - ast = pro.ast_mangle(ast, options.mangle_options); // get a new AST with mangled names - ast = pro.ast_squeeze(ast, options.squeeze_options); // get an AST with compression optimizations - var final_code = pro.gen_code(ast, options.gen_options); // compressed code here - return final_code; -}; - -uglify.parser = require("./lib/parse-js"); -uglify.uglify = require("./lib/process"); -uglify.consolidator = require("./lib/consolidator"); - -module.exports = uglify diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/package.json deleted file mode 100644 index a0e363f0c1e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "detective", - "description": "Find all calls to require() no matter how crazily nested using a proper walk of the AST", - "version": "0.1.1", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-detective.git" - }, - "main": "index.js", - "keywords": [ - "require", - "source", - "analyze", - "ast" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "uglify-js": "~1.2.5" - }, - "devDependencies": { - "tap": "~0.2.3" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "detective\n=========\n\nFind all calls to require() no matter how crazily nested using a proper walk of\nthe AST.\n\nexample\n=======\n\nstrings\n-------\n\nstrings_src.js:\n\n````javascript\nvar a = require('a');\nvar b = require('b');\nvar c = require('c');\n````\n\nstrings.js:\n\n````javascript\nvar detective = require('detective');\nvar fs = require('fs');\n\nvar src = fs.readFileSync(__dirname + '/strings_src.js');\nvar requires = detective(src);\nconsole.dir(requires);\n````\n\noutput:\n\n $ node examples/strings.js\n [ 'a', 'b', 'c' ]\n\nmethods\n=======\n\nvar detective = require('detective');\n\ndetective(src, opts)\n--------------------\n\nGive some source body `src`, return an array of all the require()s with string\narguments.\n\nThe options parameter `opts` is passed along to `detective.find()`.\n\ndetective.find(src, opts)\n-------------------------\n\nGive some source body `src`, return an object with \"strings\" and \"expressions\"\narrays for each of the require() calls.\n\nThe \"expressions\" array will contain the stringified expressions.\n\nOptionally you can specify a different function besides `\"require\"` to analyze\nwith `opts.word`.\n\ninstallation\n============\n\n npm install detective\n", - "_id": "detective@0.1.1", - "dist": { - "shasum": "ceec72c7676b627587713edde6c14736beb16509" - }, - "_from": "detective@~0.1.1" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/both.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/both.js deleted file mode 100644 index 971aebb62e5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/both.js +++ /dev/null @@ -1,11 +0,0 @@ -var test = require('tap').test; -var detective = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/both.js'); - -test('both', function (t) { - var modules = detective.find(src); - t.deepEqual(modules.strings, [ 'a', 'b' ]); - t.deepEqual(modules.expressions, [ '"c"+x', '"d"+y' ]); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/chained.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/chained.js deleted file mode 100644 index 307c20150c0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/chained.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('tap').test; -var detective = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/chained.js'); - -test('chained', function (t) { - t.deepEqual(detective(src), [ 'c', 'b', 'a' ]); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/both.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/both.js deleted file mode 100644 index 4c3f390f3d2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/both.js +++ /dev/null @@ -1,4 +0,0 @@ -require('a'); -require('b'); -require('c'+x); -var moo = require('d'+y).moo; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/chained.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/chained.js deleted file mode 100644 index 63437cc1c16..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/chained.js +++ /dev/null @@ -1,5 +0,0 @@ - - -require('c').hello().goodbye() -require('b').hello() -require('a') diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/nested.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/nested.js deleted file mode 100644 index 646cf13352d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/nested.js +++ /dev/null @@ -1,22 +0,0 @@ - -if (true) { - (function () { - require('a'); - })(); -} -if (false) { - (function () { - var x = 10; - switch (x) { - case 1 : require('b'); break; - default : break; - } - })() -} - -function qqq () { - require - ( - "c" - ); -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/strings.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/strings.js deleted file mode 100644 index 1ed9381cf08..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/strings.js +++ /dev/null @@ -1,13 +0,0 @@ -var a = require('a'); -var b = require('b'); -var c = require('c'); -var abc = a.b(c); - -var EventEmitter = require('events').EventEmitter; - -var x = require('doom')(5,6,7); -x(8,9); -c.require('notthis'); -var y = require('y') * 100; - -var EventEmitter2 = require('events2').EventEmitter();
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/word.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/word.js deleted file mode 100644 index fd074fe75d7..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/files/word.js +++ /dev/null @@ -1,13 +0,0 @@ -var a = load('a'); -var b = load('b'); -var c = load('c'); -var abc = a.b(c); - -var EventEmitter = load('events').EventEmitter; - -var x = load('doom')(5,6,7); -x(8,9); -c.load('notthis'); -var y = load('y') * 100; - -var EventEmitter2 = load('events2').EventEmitter(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/nested.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/nested.js deleted file mode 100644 index d688c0f80e4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/nested.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('tap').test; -var detective = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/nested.js'); - -test('nested', function (t) { - t.deepEqual(detective(src), [ 'a', 'b', 'c' ]); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/strings.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/strings.js deleted file mode 100644 index 3b5e7d821a0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/strings.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('tap').test; -var detective = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/strings.js'); - -test('single', function (t) { - t.deepEqual(detective(src), [ 'a', 'b', 'c', 'events', 'doom', 'y', 'events2' ]); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/word.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/word.js deleted file mode 100644 index cf5397d85f1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/detective/test/word.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tap').test; -var detective = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/word.js'); - -test('word', function (t) { - t.deepEqual( - detective(src, { word : 'load' }), - [ 'a', 'b', 'c', 'events', 'doom', 'y', 'events2' ] - ); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/README.markdown deleted file mode 100644 index 8cd8c1bfd31..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/README.markdown +++ /dev/null @@ -1,128 +0,0 @@ -http-browserify -=============== - -The -[http](http://nodejs.org/docs/v0.4.10/api/all.html#hTTP) module from node.js, -but for browsers. - -When you `require('http')` in -[browserify](http://github.com/substack/node-browserify), -this module will be loaded. - -example -======= - -````javascript -var http = require('http'); - -http.get({ path : '/beep' }, function (res) { - var div = document.getElementById('result'); - div.innerHTML += 'GET /beep<br>'; - - res.on('data', function (buf) { - div.innerHTML += buf; - }); - - res.on('end', function () { - div.innerHTML += '<br>__END__'; - }); -}); -```` - -http methods -============ - -var http = require('http'); - -var req = http.request(options, cb) ------------------------------------ - -`options` can have: - -* method -* path -* headers={}, as an object mapping key names to string or Array values -* host=window.location.host -* port=window.location.port - -The callback will be called with the response object. - -var req = http.get(options, cb) -------------------------------- - -A shortcut for - -````javascript -options.method = 'GET'; -var req = http.request(options, cb); -req.end(); -```` - -request methods -=============== - -req.setHeader(key, value) -------------------------- - -Set an http header. - -req.write(data) ---------------- - -Write some data to the request body. - -req.end(data) -------------- - -Close and send the request body, optionally with additional `data` to append. - -response methods -================ - -res.getHeader(key) ------------------- - -Return an http header, if set. `key` is case-insensitive. - -response attributes -=================== - -* res.statusCode, the numeric http response code -* res.headers, an object with all lowercase keys - -response events ---------------- - -* data -* end -* error - -compatibility -============= - -This module has been tested and works with: - -* Internet Explorer 5.5, 6, 7, 8, 9 -* Firefox 3.5 -* Chrome 7.0 -* Opera 10.6 -* Safari 5.0 - -Multipart streaming responses are buffered in all versions of Internet Explorer -and are somewhat buffered in Opera. In all the other browsers you get a nice -unbuffered stream of `"data"` events when you send down a content-type of -`multipart/octet-stream` or similar. - -protip -====== - -You can do: - -````javascript -var bundle = browserify({ - require : { http : 'http-browserify' } -}); -```` - -in order to map "http-browserify" over `require('http')` in your browserified -source. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/index.html deleted file mode 100644 index 32678f643ee..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <title>xhr</title> - <script type="text/javascript" src="/browserify.js"></script> - </head> - <body> - <div id="result"></div> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/main.js deleted file mode 100644 index 605e870c0c5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/main.js +++ /dev/null @@ -1,14 +0,0 @@ -var http = require('http-browserify'); - -http.get({ path : '/beep' }, function (res) { - var div = document.getElementById('result'); - div.innerHTML += 'GET /beep<br>'; - - res.on('data', function (buf) { - div.innerHTML += buf; - }); - - res.on('end', function () { - div.innerHTML += '<br>__END__'; - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/server.js deleted file mode 100644 index b706eb42894..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/get/server.js +++ /dev/null @@ -1,15 +0,0 @@ -var express = require('express'); -var app = express.createServer(); -app.use(express.static(__dirname)); - -app.get('/beep', function (req, res) { - res.setHeader('content-type', 'text/plain'); - res.end('boop'); -}); - -var browserify = require('browserify'); -var bundle = browserify(__dirname + '/main.js'); -app.use(bundle); - -console.log('Listening on :8082'); -app.listen(8082); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/index.html deleted file mode 100644 index 32678f643ee..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <title>xhr</title> - <script type="text/javascript" src="/browserify.js"></script> - </head> - <body> - <div id="result"></div> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/main.js deleted file mode 100644 index f723d5170fc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/main.js +++ /dev/null @@ -1,18 +0,0 @@ -var http = require('http-browserify'); - -var opts = { path : '/beep', method : 'GET' }; -var req = http.request(opts, function (res) { - var div = document.getElementById('result'); - - for (var key in res.headers) { - div.innerHTML += key + ': ' + res.getHeader(key) + '<br>'; - } - div.innerHTML += '<br>'; - - res.on('data', function (buf) { - div.innerHTML += buf; - }); -}); - -req.setHeader('bling', 'blong'); -req.end(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/server.js deleted file mode 100644 index b243cb5ba26..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/headers/server.js +++ /dev/null @@ -1,18 +0,0 @@ -var express = require('express'); -var app = express.createServer(); -app.use(express.static(__dirname)); - -app.get('/beep', function (req, res) { - res.setHeader('content-type', 'text/plain'); - res.setHeader('foo', 'bar'); - res.setHeader('bling', req.headers.bling + '-blong'); - - res.end('boop'); -}); - -var browserify = require('browserify'); -var bundle = browserify(__dirname + '/main.js'); -app.use(bundle); - -console.log('Listening on :8082'); -app.listen(8082); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/index.html deleted file mode 100644 index 32678f643ee..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <title>xhr</title> - <script type="text/javascript" src="/browserify.js"></script> - </head> - <body> - <div id="result"></div> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/main.js deleted file mode 100644 index 6a434f71e8d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/main.js +++ /dev/null @@ -1,16 +0,0 @@ -var http = require('http-browserify'); - -var n = 100; -var opts = { path : '/plusone', method : 'post' }; - -var req = http.request(opts, function (res) { - var div = document.getElementById('result'); - div.innerHTML += n.toString() + ' + 1 = '; - - res.on('data', function (buf) { - div.innerHTML += buf; - }); -}); - -req.write(n); -req.end(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/server.js deleted file mode 100644 index 5bdec6b6d84..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/post/server.js +++ /dev/null @@ -1,22 +0,0 @@ -var express = require('express'); -var app = express.createServer(); -app.use(express.static(__dirname)); - -app.post('/plusone', function (req, res) { - res.setHeader('content-type', 'text/plain'); - - var s = ''; - req.on('data', function (buf) { s += buf.toString() }); - - req.on('end', function () { - var n = parseInt(s) + 1; - res.end(n.toString()); - }); -}); - -var browserify = require('browserify'); -var bundle = browserify(__dirname + '/main.js'); -app.use(bundle); - -console.log('Listening on :8082'); -app.listen(8082); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/index.html deleted file mode 100644 index 32678f643ee..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <title>xhr</title> - <script type="text/javascript" src="/browserify.js"></script> - </head> - <body> - <div id="result"></div> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/main.js deleted file mode 100644 index 78990609873..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/main.js +++ /dev/null @@ -1,16 +0,0 @@ -var http = require('http-browserify'); - -http.get({ path : '/doom' }, function (res) { - var div = document.getElementById('result'); - if (!div.style) div.style = {}; - div.style.color = 'rgb(80,80,80)'; - - res.on('data', function (buf) { - div.innerHTML += buf; - }); - - res.on('end', function () { - div.style.color = 'black'; - div.innerHTML += '!'; - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/server.js deleted file mode 100644 index fb5cc2f4933..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/example/streaming/server.js +++ /dev/null @@ -1,24 +0,0 @@ -var express = require('express'); -var app = express.createServer(); -app.use(express.static(__dirname)); - -app.get('/doom', function (req, res) { - res.setHeader('content-type', 'multipart/octet-stream'); - - res.write('d'); - var i = 0; - var iv = setInterval(function () { - res.write('o'); - if (i++ >= 10) { - clearInterval(iv); - res.end('m'); - } - }, 500); -}); - -var browserify = require('browserify'); -var bundle = browserify(__dirname + '/main.js'); -app.use(bundle); - -console.log('Listening on :8082'); -app.listen(8082); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/index.js deleted file mode 100644 index bca5a276979..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/index.js +++ /dev/null @@ -1,59 +0,0 @@ -var http = module.exports; -var EventEmitter = require('events').EventEmitter; -var Request = require('./lib/request'); - -http.request = function (params, cb) { - if (!params) params = {}; - if (!params.host) params.host = window.location.host.split(':')[0]; - if (!params.port) params.port = window.location.port; - - var req = new Request(new xhrHttp, params); - if (cb) req.on('response', cb); - return req; -}; - -http.get = function (params, cb) { - params.method = 'GET'; - var req = http.request(params, cb); - req.end(); - return req; -}; - -http.Agent = function () {}; -http.Agent.defaultMaxSockets = 4; - -var xhrHttp = (function () { - if (typeof window === 'undefined') { - throw new Error('no window object present'); - } - else if (window.XMLHttpRequest) { - return window.XMLHttpRequest; - } - else if (window.ActiveXObject) { - var axs = [ - 'Msxml2.XMLHTTP.6.0', - 'Msxml2.XMLHTTP.3.0', - 'Microsoft.XMLHTTP' - ]; - for (var i = 0; i < axs.length; i++) { - try { - var ax = new(window.ActiveXObject)(axs[i]); - return function () { - if (ax) { - var ax_ = ax; - ax = null; - return ax_; - } - else { - return new(window.ActiveXObject)(axs[i]); - } - }; - } - catch (e) {} - } - throw new Error('ajax not supported in this browser') - } - else { - throw new Error('ajax not supported in this browser'); - } -})(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/request.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/request.js deleted file mode 100644 index 19ecca34b05..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/request.js +++ /dev/null @@ -1,91 +0,0 @@ -var EventEmitter = require('events').EventEmitter; -var Response = require('./response'); - -var Request = module.exports = function (xhr, params) { - var self = this; - self.xhr = xhr; - self.body = ''; - - var uri = params.host + ':' + params.port + (params.path || '/'); - - xhr.open( - params.method || 'GET', - (params.scheme || 'http') + '://' + uri, - true - ); - - if (params.headers) { - Object.keys(params.headers).forEach(function (key) { - if (!self.isSafeRequestHeader(key)) return; - var value = params.headers[key]; - if (Array.isArray(value)) { - value.forEach(function (v) { - xhr.setRequestHeader(key, v); - }); - } - else xhr.setRequestHeader(key, value) - }); - } - - var res = new Response; - res.on('ready', function () { - self.emit('response', res); - }); - - xhr.onreadystatechange = function () { - res.handle(xhr); - }; -}; - -Request.prototype = new EventEmitter; - -Request.prototype.setHeader = function (key, value) { - if ((Array.isArray && Array.isArray(value)) - || value instanceof Array) { - for (var i = 0; i < value.length; i++) { - this.xhr.setRequestHeader(key, value[i]); - } - } - else { - this.xhr.setRequestHeader(key, value); - } -}; - -Request.prototype.write = function (s) { - this.body += s; -}; - -Request.prototype.end = function (s) { - if (s !== undefined) this.write(s); - this.xhr.send(this.body); -}; - -// Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html -Request.unsafeHeaders = [ - "accept-charset", - "accept-encoding", - "access-control-request-headers", - "access-control-request-method", - "connection", - "content-length", - "cookie", - "cookie2", - "content-transfer-encoding", - "date", - "expect", - "host", - "keep-alive", - "origin", - "referer", - "te", - "trailer", - "transfer-encoding", - "upgrade", - "user-agent", - "via" -]; - -Request.prototype.isSafeRequestHeader = function (headerName) { - if (!headerName) return false; - return (Request.unsafeHeaders.indexOf(headerName.toLowerCase()) === -1) -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/response.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/response.js deleted file mode 100644 index ae2844b25e9..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/lib/response.js +++ /dev/null @@ -1,99 +0,0 @@ -var EventEmitter = require('events').EventEmitter; - -var Response = module.exports = function (res) { - this.offset = 0; -}; - -Response.prototype = new EventEmitter; - -var capable = { - streaming : true, - status2 : true -}; - -function parseHeaders (res) { - var lines = res.getAllResponseHeaders().split(/\r?\n/); - var headers = {}; - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - if (line === '') continue; - - var m = line.match(/^([^:]+):\s*(.*)/); - if (m) { - var key = m[1].toLowerCase(), value = m[2]; - - if (headers[key] !== undefined) { - if ((Array.isArray && Array.isArray(headers[key])) - || headers[key] instanceof Array) { - headers[key].push(value); - } - else { - headers[key] = [ headers[key], value ]; - } - } - else { - headers[key] = value; - } - } - else { - headers[line] = true; - } - } - return headers; -} - -Response.prototype.getHeader = function (key) { - return this.headers[key.toLowerCase()]; -}; - -Response.prototype.handle = function (res) { - if (res.readyState === 2 && capable.status2) { - try { - this.statusCode = res.status; - this.headers = parseHeaders(res); - } - catch (err) { - capable.status2 = false; - } - - if (capable.status2) { - this.emit('ready'); - } - } - else if (capable.streaming && res.readyState === 3) { - try { - if (!this.statusCode) { - this.statusCode = res.status; - this.headers = parseHeaders(res); - this.emit('ready'); - } - } - catch (err) {} - - try { - this.write(res); - } - catch (err) { - capable.streaming = false; - } - } - else if (res.readyState === 4) { - if (!this.statusCode) { - this.statusCode = res.status; - this.emit('ready'); - } - this.write(res); - - if (res.error) { - this.emit('error', res.responseText); - } - else this.emit('end'); - } -}; - -Response.prototype.write = function (res) { - if (res.responseText.length > this.offset) { - this.emit('data', res.responseText.slice(this.offset)); - this.offset = res.responseText.length; - } -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/package.json deleted file mode 100644 index 0e8fb939ebb..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/http-browserify/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "http-browserify", - "version": "0.1.1", - "description": "http module compatability for browserify", - "main": "index.js", - "browserify": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "devDependencies": { - "express": "2.5.x", - "browserify": "1.9.x" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/http-browserify.git" - }, - "keywords": [ - "http", - "browserify", - "compatible", - "meatless", - "browser" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "http-browserify\n===============\n\nThe\n[http](http://nodejs.org/docs/v0.4.10/api/all.html#hTTP) module from node.js,\nbut for browsers.\n\nWhen you `require('http')` in\n[browserify](http://github.com/substack/node-browserify),\nthis module will be loaded.\n\nexample\n=======\n\n````javascript\nvar http = require('http');\n\nhttp.get({ path : '/beep' }, function (res) {\n var div = document.getElementById('result');\n div.innerHTML += 'GET /beep<br>';\n \n res.on('data', function (buf) {\n div.innerHTML += buf;\n });\n \n res.on('end', function () {\n div.innerHTML += '<br>__END__';\n });\n});\n````\n\nhttp methods\n============\n\nvar http = require('http');\n\nvar req = http.request(options, cb)\n-----------------------------------\n\n`options` can have:\n\n* method\n* path\n* headers={}, as an object mapping key names to string or Array values\n* host=window.location.host\n* port=window.location.port\n\nThe callback will be called with the response object.\n\nvar req = http.get(options, cb)\n-------------------------------\n\nA shortcut for\n\n````javascript\noptions.method = 'GET';\nvar req = http.request(options, cb);\nreq.end();\n````\n\nrequest methods\n===============\n\nreq.setHeader(key, value)\n-------------------------\n\nSet an http header.\n\nreq.write(data)\n---------------\n\nWrite some data to the request body.\n\nreq.end(data)\n-------------\n\nClose and send the request body, optionally with additional `data` to append.\n\nresponse methods\n================\n\nres.getHeader(key)\n------------------\n\nReturn an http header, if set. `key` is case-insensitive.\n\nresponse attributes\n===================\n\n* res.statusCode, the numeric http response code\n* res.headers, an object with all lowercase keys\n\nresponse events\n---------------\n\n* data\n* end\n* error\n\ncompatibility\n=============\n\nThis module has been tested and works with:\n\n* Internet Explorer 5.5, 6, 7, 8, 9\n* Firefox 3.5\n* Chrome 7.0\n* Opera 10.6\n* Safari 5.0\n\nMultipart streaming responses are buffered in all versions of Internet Explorer\nand are somewhat buffered in Opera. In all the other browsers you get a nice\nunbuffered stream of `\"data\"` events when you send down a content-type of\n`multipart/octet-stream` or similar.\n\nprotip\n======\n\nYou can do:\n\n````javascript\nvar bundle = browserify({\n require : { http : 'http-browserify' }\n});\n````\n\nin order to map \"http-browserify\" over `require('http')` in your browserified\nsource.\n", - "_id": "http-browserify@0.1.1", - "dist": { - "shasum": "ecefd94bc1c88a465cff5bbf00ec24deff45c2ea" - }, - "_from": "http-browserify@~0.1.1" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/README.markdown deleted file mode 100644 index 3f09ea49375..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/README.markdown +++ /dev/null @@ -1,23 +0,0 @@ -nub -=== - -Return all the unique elements of an array. You can specify your own uniqueness -comparison function with `nub.by` too. - -These work like haskell's `nub` and `nubBy` functions in Data.List. - -methods -======= - -nub(xs) -------- - -Return a new array with all the uniqe elements in `xs`. - -Uniqueness is calculated `===` style so the types matter. - -nub.by(xs, cmp) ---------------- - -Use `cmp(x,y)` function to compare elements instead of the default. -`cmp` should return whether the two elements are equal as a boolean. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/index.js deleted file mode 100644 index c28b5fb9e68..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/index.js +++ /dev/null @@ -1,64 +0,0 @@ -var nub = module.exports = function (xs, cmp) { - if (typeof xs === 'function' || cmp) { - return nub.by(xs, cmp); - } - - var keys = { - 'object' : [], - 'function' : [], - 'string' : {}, - 'number' : {}, - 'boolean' : {}, - 'undefined' : {} - }; - - var res = []; - - for (var i = 0; i < xs.length; i++) { - var x = xs[i]; - var recs = x === '__proto__' - ? keys.objects - : keys[typeof x] || keys.objects - ; - - if (Array.isArray(recs)) { - if (recs.indexOf(x) < 0) { - recs.push(x); - res.push(x); - } - } - else if (!Object.hasOwnProperty.call(recs, x)) { - recs[x] = true; - res.push(x); - } - } - - return res; -}; - -nub.by = function (xs, cmp) { - if (typeof xs === 'function') { - var cmp_ = cmp; - cmp = xs; - xs = cmp_; - } - - var res = []; - - for (var i = 0; i < xs.length; i++) { - var x = xs[i]; - - var found = false; - for (var j = 0; j < res.length; j++) { - var y = res[j]; - if (cmp.call(res, x, y)) { - found = true; - break; - } - } - - if (!found) res.push(x); - } - - return res; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/package.json deleted file mode 100644 index 2920d7d96e4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "nub", - "version": "0.0.0", - "description": "Uniqueness functions", - "main": "index.js", - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "expresso": "0.7.x" - }, - "scripts": { - "test": "expresso" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-nub.git" - }, - "keywords": [ - "unique", - "uniq", - "uniqBy", - "nub", - "nubBy" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "nub\n===\n\nReturn all the unique elements of an array. You can specify your own uniqueness\ncomparison function with `nub.by` too.\n\nThese work like haskell's `nub` and `nubBy` functions in Data.List.\n\nmethods\n=======\n\nnub(xs)\n-------\n\nReturn a new array with all the uniqe elements in `xs`.\n\nUniqueness is calculated `===` style so the types matter.\n\nnub.by(xs, cmp)\n---------------\n\nUse `cmp(x,y)` function to compare elements instead of the default.\n`cmp` should return whether the two elements are equal as a boolean.\n", - "_id": "nub@0.0.0", - "dist": { - "shasum": "f6e5e51432ece99bbda54a14efb26e89871191a7" - }, - "_from": "nub@~0.0.0" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/by.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/by.js deleted file mode 100644 index f59f0e3e045..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/by.js +++ /dev/null @@ -1,51 +0,0 @@ -var assert = require('assert'); -var nub = require('../'); - -exports.false = function () { - var xs = [ 3, 3, 1, 1, 2, 1, 2, 1 ]; - assert.deepEqual( - nub.by(xs, function () { return false }), - xs - ); -}; - -exports.true = function () { - var xs = [ 3, 3, 1, 1, 2, 1, 2, 1 ]; - assert.deepEqual( - nub.by(xs, function () { return true }), - [3] - ); -}; - -exports.stringify = function () { - var xs = { a : 1, b : 2 }; - var ys = { a : 1, b : 2 }; - assert.deepEqual( - nub.by([ 3, 4, xs, ys, 5, 6 ], function (x, y) { - return JSON.stringify(x) === JSON.stringify(y) - }), - [ 3, 4, xs, 5, 6 ] - ); -}; - -exports.mod = function () { - var xs = { a : 1, b : 2 }; - var ys = { a : 1, b : 2 }; - assert.deepEqual( - nub.by([ 1, 6, 3, 4, 5, 2, 7, 8 ], function (x, y) { - return x % 4 === y % 4 - }), - [ 1, 6, 3, 4 ] - ); -}; - -exports.dispatchMod = function () { - var xs = { a : 1, b : 2 }; - var ys = { a : 1, b : 2 }; - assert.deepEqual( - nub([ 1, 6, 3, 4, 5, 2, 7, 8 ], function (x, y) { - return x % 4 === y % 4 - }), - [ 1, 6, 3, 4 ] - ); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/nub.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/nub.js deleted file mode 100644 index 4926a44ac91..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/nub/test/nub.js +++ /dev/null @@ -1,46 +0,0 @@ -var nub = require('../'); -var assert = require('assert'); - -exports.empty = function () { - assert.deepEqual(nub([]), []); -}; - -exports.already = function () { - assert.deepEqual(nub([ 1, 2, 3 ]), [ 1, 2, 3 ]); -}; - -exports.dups = function () { - assert.deepEqual(nub([ 1, 1, 2, 1, 3, 2 ]), [ 1, 2, 3 ]); -}; - -exports.objects = function () { - var xs = { a : 4, b : 5 }; - var ys = { c : 6 }; - assert.deepEqual( - nub([ 1, 1, 2, 3, xs, xs, ys, xs, 2, 7, 7, 3, 1, 5 ]), - [ 1, 2, 3, xs, ys, 7, 5 ] - ); -}; - -exports.mixed = function () { - var f = function () {}; - var g = function () {}; - var re = /meow/; - - var xs = [ - 1, 2, '3', 3, 2, '2', f, f, g, re, false, false, true, false, re, - undefined, null, undefined, 1, null, null, undefined - ]; - var res = nub(xs); - - assert.deepEqual(res, [ - 1, 2, '3', 3, '2', f, g, re, false, true, undefined, null - ]); - assert.deepEqual( - res.map(function (r) { return typeof r }), - [ - 'number', 'number', 'string', 'number', 'string', 'function', - 'function', 'function', 'boolean', 'boolean', 'undefined', 'object' - ] - ); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/.travis.yml deleted file mode 100644 index f1d0f13c8a5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/LICENSE b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/LICENSE deleted file mode 100644 index 432d1aeb01d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/README.markdown deleted file mode 100644 index ad9d3fd68f5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/README.markdown +++ /dev/null @@ -1,487 +0,0 @@ -optimist -======== - -Optimist is a node.js library for option parsing for people who hate option -parsing. More specifically, this module is for people who like all the --bells -and -whistlz of program usage but think optstrings are a waste of time. - -With optimist, option parsing doesn't have to suck (as much). - -[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) - -examples -======== - -With Optimist, the options are just a hash! No optstrings attached. -------------------------------------------------------------------- - -xup.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} -```` - -*** - - $ ./xup.js --rif=55 --xup=9.52 - Buy more riffiwobbles - - $ ./xup.js --rif 12 --xup 8.1 - Sell the xupptumblers - -![This one's optimistic.](http://substack.net/images/optimistic.png) - -But wait! There's more! You can do short options: -------------------------------------------------- - -short.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -```` - -*** - - $ ./short.js -x 10 -y 21 - (10,21) - -And booleans, both long and short (and grouped): ----------------------------------- - -bool.js: - -````javascript -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); -```` - -*** - - $ ./bool.js -s - The cat says: meow - - $ ./bool.js -sp - The cat says: meow. - - $ ./bool.js -sp --fr - Le chat dit: miaou. - -And non-hypenated options too! Just use `argv._`! -------------------------------------------------- - -nonopt.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); -```` - -*** - - $ ./nonopt.js -x 6.82 -y 3.35 moo - (6.82,3.35) - [ 'moo' ] - - $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz - (0.54,1.12) - [ 'foo', 'bar', 'baz' ] - -Plus, Optimist comes with .usage() and .demand()! -------------------------------------------------- - -divide.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); -```` - -*** - - $ ./divide.js -x 55 -y 11 - 5 - - $ node ./divide.js -x 4.91 -z 2.51 - Usage: node ./divide.js -x [num] -y [num] - - Options: - -x [required] - -y [required] - - Missing required arguments: y - -EVEN MORE HOLY COW ------------------- - -default_singles.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_singles.js -x 5 - 15 - -default_hash.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_hash.js -y 7 - 17 - -And if you really want to get all descriptive about it... ---------------------------------------------------------- - -boolean_single.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv); -```` - -*** - - $ ./boolean_single.js -v foo bar baz - true - [ 'bar', 'baz', 'foo' ] - -boolean_double.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); -```` - -*** - - $ ./boolean_double.js -x -z one two three - [ true, false, true ] - [ 'one', 'two', 'three' ] - -Optimist is here to help... ---------------------------- - -You can describe parameters for help messages and set aliases. Optimist figures -out how to format a handy help string automatically. - -line_count.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); -```` - -*** - - $ node line_count.js - Count the lines in a file. - Usage: node ./line_count.js - - Options: - -f, --file Load a file [required] - - Missing required arguments: f - - $ node line_count.js --file line_count.js - 20 - - $ node line_count.js -f line_count.js - 20 - -methods -======= - -By itself, - -````javascript -require('optimist').argv -````` - -will use `process.argv` array to construct the `argv` object. - -You can pass in the `process.argv` yourself: - -````javascript -require('optimist')([ '-x', '1', '-y', '2' ]).argv -```` - -or use .parse() to do the same thing: - -````javascript -require('optimist').parse([ '-x', '1', '-y', '2' ]) -```` - -The rest of these methods below come in just before the terminating `.argv`. - -.alias(key, alias) ------------------- - -Set key names as equivalent such that updates to a key will propagate to aliases -and vice-versa. - -Optionally `.alias()` can take an object that maps keys to aliases. - -.default(key, value) --------------------- - -Set `argv[key]` to `value` if no option was specified on `process.argv`. - -Optionally `.default()` can take an object that maps keys to default values. - -.demand(key) ------------- - -If `key` is a string, show the usage information and exit if `key` wasn't -specified in `process.argv`. - -If `key` is a number, demand at least as many non-option arguments, which show -up in `argv._`. - -If `key` is an Array, demand each element. - -.describe(key, desc) --------------------- - -Describe a `key` for the generated usage information. - -Optionally `.describe()` can take an object that maps keys to descriptions. - -.options(key, opt) ------------------- - -Instead of chaining together `.alias().demand().default()`, you can specify -keys in `opt` for each of the chainable methods. - -For example: - -````javascript -var argv = require('optimist') - .options('f', { - alias : 'file', - default : '/etc/passwd', - }) - .argv -; -```` - -is the same as - -````javascript -var argv = require('optimist') - .alias('f', 'file') - .default('f', '/etc/passwd') - .argv -; -```` - -Optionally `.options()` can take an object that maps keys to `opt` parameters. - -.usage(message) ---------------- - -Set a usage message to show which commands to use. Inside `message`, the string -`$0` will get interpolated to the current script name or node command for the -present script similar to how `$0` works in bash or perl. - -.check(fn) ----------- - -Check that certain conditions are met in the provided arguments. - -If `fn` throws or returns `false`, show the thrown error, usage information, and -exit. - -.boolean(key) -------------- - -Interpret `key` as a boolean. If a non-flag option follows `key` in -`process.argv`, that string won't get set as the value of `key`. - -If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be -`false`. - -If `key` is an Array, interpret all the elements as booleans. - -.string(key) ------------- - -Tell the parser logic not to interpret `key` as a number or boolean. -This can be useful if you need to preserve leading zeros in an input. - -If `key` is an Array, interpret all the elements as strings. - -.wrap(columns) --------------- - -Format usage output to wrap at `columns` many columns. - -.help() -------- - -Return the generated usage string. - -.showHelp(fn=console.error) ---------------------------- - -Print the usage data using `fn` for printing. - -.parse(args) ------------- - -Parse `args` instead of `process.argv`. Returns the `argv` object. - -.argv ------ - -Get the arguments as a plain old object. - -Arguments without a corresponding flag show up in the `argv._` array. - -The script name or node command is available at `argv.$0` similarly to how `$0` -works in bash or perl. - -parsing tricks -============== - -stop parsing ------------- - -Use `--` to stop parsing flags and stuff the remainder into `argv._`. - - $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 - { _: [ '-c', '3', '-d', '4' ], - '$0': 'node ./examples/reflect.js', - a: 1, - b: 2 } - -negate fields -------------- - -If you want to explicity set a field to false instead of just leaving it -undefined or to override a default you can do `--no-key`. - - $ node examples/reflect.js -a --no-b - { _: [], - '$0': 'node ./examples/reflect.js', - a: true, - b: false } - -numbers -------- - -Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to -one. This way you can just `net.createConnection(argv.port)` and you can add -numbers out of `argv` with `+` without having that mean concatenation, -which is super frustrating. - -duplicates ----------- - -If you specify a flag multiple times it will get turned into an array containing -all the values in order. - - $ node examples/reflect.js -x 5 -x 8 -x 0 - { _: [], - '$0': 'node ./examples/reflect.js', - x: [ 5, 8, 0 ] } - -dot notation ------------- - -When you use dots (`.`s) in argument names, an implicit object path is assumed. -This lets you organize arguments into nested objects. - - $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 - { _: [], - '$0': 'node ./examples/reflect.js', - foo: { bar: { baz: 33 }, quux: 5 } } - -installation -============ - -With [npm](http://github.com/isaacs/npm), just do: - npm install optimist - -or clone this project on github: - - git clone http://github.com/substack/node-optimist.git - -To run the tests with [expresso](http://github.com/visionmedia/expresso), -just do: - - expresso - -inspired By -=========== - -This module is loosely inspired by Perl's -[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/bool.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/bool.js deleted file mode 100644 index a998fb7ab79..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/bool.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_double.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_double.js deleted file mode 100644 index a35a7e6d33a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_double.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_single.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_single.js deleted file mode 100644 index 017bb6893cc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/boolean_single.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv.v); -console.dir(argv._); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_hash.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_hash.js deleted file mode 100644 index ade77681dd5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_hash.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; - -console.log(argv.x + argv.y); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_singles.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_singles.js deleted file mode 100644 index d9b1ff458a6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/default_singles.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/divide.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/divide.js deleted file mode 100644 index 5e2ee82ff07..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/divide.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count.js deleted file mode 100644 index b5f95bf6d21..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_options.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_options.js deleted file mode 100644 index d9ac7090446..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_options.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .options({ - file : { - demand : true, - alias : 'f', - description : 'Load a file' - }, - base : { - alias : 'b', - description : 'Numeric base to use for output', - default : 10, - }, - }) - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_wrap.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_wrap.js deleted file mode 100644 index 426751112d8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/line_count_wrap.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .wrap(80) - .demand('f') - .alias('f', [ 'file', 'filename' ]) - .describe('f', - "Load a file. It's pretty important." - + " Required even. So you'd better specify it." - ) - .alias('b', 'base') - .describe('b', 'Numeric base to display the number of lines in') - .default('b', 10) - .describe('x', 'Super-secret optional parameter which is secret') - .default('x', '') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/nonopt.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/nonopt.js deleted file mode 100644 index ee633eedcdf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/nonopt.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/reflect.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/reflect.js deleted file mode 100644 index 816b3e111c2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/reflect.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.dir(require('optimist').argv); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/short.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/short.js deleted file mode 100644 index 1db0ad0f8b5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/short.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/string.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/string.js deleted file mode 100644 index a8e5aeb2316..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/string.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .string('x', 'y') - .argv -; -console.dir([ argv.x, argv.y ]); - -/* Turns off numeric coercion: - ./node string.js -x 000123 -y 9876 - [ '000123', '9876' ] -*/ diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/usage-options.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/usage-options.js deleted file mode 100644 index b9999776794..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/usage-options.js +++ /dev/null @@ -1,19 +0,0 @@ -var optimist = require('./../index'); - -var argv = optimist.usage('This is my awesome program', { - 'about': { - description: 'Provide some details about the author of this program', - required: true, - short: 'a', - }, - 'info': { - description: 'Provide some information about the node.js agains!!!!!!', - boolean: true, - short: 'i' - } -}).argv; - -optimist.showHelp(); - -console.log('\n\nInspecting options'); -console.dir(argv);
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/xup.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/xup.js deleted file mode 100644 index 8f6ecd20128..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/example/xup.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/index.js deleted file mode 100644 index 4dc39f4edce..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/index.js +++ /dev/null @@ -1,475 +0,0 @@ -var path = require('path'); -var wordwrap = require('wordwrap'); - -/* Hack an instance of Argv with process.argv into Argv - so people can do - require('optimist')(['--beeble=1','-z','zizzle']).argv - to parse a list of args and - require('optimist').argv - to get a parsed version of process.argv. -*/ - -var inst = Argv(process.argv.slice(2)); -Object.keys(inst).forEach(function (key) { - Argv[key] = typeof inst[key] == 'function' - ? inst[key].bind(inst) - : inst[key]; -}); - -var exports = module.exports = Argv; -function Argv (args, cwd) { - var self = {}; - if (!cwd) cwd = process.cwd(); - - self.$0 = process.argv - .slice(0,2) - .map(function (x) { - var b = rebase(cwd, x); - return x.match(/^\//) && b.length < x.length - ? b : x - }) - .join(' ') - ; - - if (process.argv[1] == process.env._) { - self.$0 = process.env._.replace( - path.dirname(process.execPath) + '/', '' - ); - } - - var flags = { bools : {}, strings : {} }; - - self.boolean = function (bools) { - if (!Array.isArray(bools)) { - bools = [].slice.call(arguments); - } - - bools.forEach(function (name) { - flags.bools[name] = true; - }); - - return self; - }; - - self.string = function (strings) { - if (!Array.isArray(strings)) { - strings = [].slice.call(arguments); - } - - strings.forEach(function (name) { - flags.strings[name] = true; - }); - - return self; - }; - - var aliases = {}; - self.alias = function (x, y) { - if (typeof x === 'object') { - Object.keys(x).forEach(function (key) { - self.alias(key, x[key]); - }); - } - else if (Array.isArray(y)) { - y.forEach(function (yy) { - self.alias(x, yy); - }); - } - else { - var zs = (aliases[x] || []).concat(aliases[y] || []).concat(x, y); - aliases[x] = zs.filter(function (z) { return z != x }); - aliases[y] = zs.filter(function (z) { return z != y }); - } - - return self; - }; - - var demanded = {}; - self.demand = function (keys) { - if (typeof keys == 'number') { - if (!demanded._) demanded._ = 0; - demanded._ += keys; - } - else if (Array.isArray(keys)) { - keys.forEach(function (key) { - self.demand(key); - }); - } - else { - demanded[keys] = true; - } - - return self; - }; - - var usage; - self.usage = function (msg, opts) { - if (!opts && typeof msg === 'object') { - opts = msg; - msg = null; - } - - usage = msg; - - if (opts) self.options(opts); - - return self; - }; - - function fail (msg) { - self.showHelp(); - if (msg) console.error(msg); - process.exit(1); - } - - var checks = []; - self.check = function (f) { - checks.push(f); - return self; - }; - - var defaults = {}; - self.default = function (key, value) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.default(k, key[k]); - }); - } - else { - defaults[key] = value; - } - - return self; - }; - - var descriptions = {}; - self.describe = function (key, desc) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.describe(k, key[k]); - }); - } - else { - descriptions[key] = desc; - } - return self; - }; - - self.parse = function (args) { - return Argv(args).argv; - }; - - self.option = self.options = function (key, opt) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.options(k, key[k]); - }); - } - else { - if (opt.alias) self.alias(key, opt.alias); - if (opt.demand) self.demand(key); - if (typeof opt.default !== 'undefined') { - self.default(key, opt.default); - } - - if (opt.boolean || opt.type === 'boolean') { - self.boolean(key); - } - if (opt.string || opt.type === 'string') { - self.string(key); - } - - var desc = opt.describe || opt.description || opt.desc; - if (desc) { - self.describe(key, desc); - } - } - - return self; - }; - - var wrap = null; - self.wrap = function (cols) { - wrap = cols; - return self; - }; - - self.showHelp = function (fn) { - if (!fn) fn = console.error; - fn(self.help()); - }; - - self.help = function () { - var keys = Object.keys( - Object.keys(descriptions) - .concat(Object.keys(demanded)) - .concat(Object.keys(defaults)) - .reduce(function (acc, key) { - if (key !== '_') acc[key] = true; - return acc; - }, {}) - ); - - var help = keys.length ? [ 'Options:' ] : []; - - if (usage) { - help.unshift(usage.replace(/\$0/g, self.$0), ''); - } - - var switches = keys.reduce(function (acc, key) { - acc[key] = [ key ].concat(aliases[key] || []) - .map(function (sw) { - return (sw.length > 1 ? '--' : '-') + sw - }) - .join(', ') - ; - return acc; - }, {}); - - var switchlen = longest(Object.keys(switches).map(function (s) { - return switches[s] || ''; - })); - - var desclen = longest(Object.keys(descriptions).map(function (d) { - return descriptions[d] || ''; - })); - - keys.forEach(function (key) { - var kswitch = switches[key]; - var desc = descriptions[key] || ''; - - if (wrap) { - desc = wordwrap(switchlen + 4, wrap)(desc) - .slice(switchlen + 4) - ; - } - - var spadding = new Array( - Math.max(switchlen - kswitch.length + 3, 0) - ).join(' '); - - var dpadding = new Array( - Math.max(desclen - desc.length + 1, 0) - ).join(' '); - - var type = null; - - if (flags.bools[key]) type = '[boolean]'; - if (flags.strings[key]) type = '[string]'; - - if (!wrap && dpadding.length > 0) { - desc += dpadding; - } - - var prelude = ' ' + kswitch + spadding; - var extra = [ - type, - demanded[key] - ? '[required]' - : null - , - defaults[key] !== undefined - ? '[default: ' + JSON.stringify(defaults[key]) + ']' - : null - , - ].filter(Boolean).join(' '); - - var body = [ desc, extra ].filter(Boolean).join(' '); - - if (wrap) { - var dlines = desc.split('\n'); - var dlen = dlines.slice(-1)[0].length - + (dlines.length === 1 ? prelude.length : 0) - - body = desc + (dlen + extra.length > wrap - 2 - ? '\n' - + new Array(wrap - extra.length + 1).join(' ') - + extra - : new Array(wrap - extra.length - dlen + 1).join(' ') - + extra - ); - } - - help.push(prelude + body); - }); - - help.push(''); - return help.join('\n'); - }; - - Object.defineProperty(self, 'argv', { - get : parseArgs, - enumerable : true, - }); - - function parseArgs () { - var argv = { _ : [], $0 : self.$0 }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] || false); - }); - - function setArg (key, val) { - var num = Number(val); - var value = typeof val !== 'string' || isNaN(num) ? val : num; - if (flags.strings[key]) value = val; - - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - argv[x] = argv[key]; - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (arg === '--') { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - else if (arg.match(/^--.+=/)) { - var m = arg.match(/^--([^=]+)=(.*)/); - setArg(m[1], m[2]); - } - else if (arg.match(/^--no-.+/)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (arg.match(/^--.+/)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !next.match(/^-/) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); - i++; - } - else if (/true|false/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, true); - } - } - else if (arg.match(/^-[^-]+/)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], true); - } - } - - if (!broken) { - var key = arg.slice(-1)[0]; - - if (args[i+1] && !args[i+1].match(/^-/) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, true); - } - } - } - else { - var n = Number(arg); - argv._.push(flags.strings['_'] || isNaN(n) ? arg : n); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!(key in argv)) { - argv[key] = defaults[key]; - if (key in aliases) { - argv[aliases[key]] = defaults[key]; - } - } - }); - - if (demanded._ && argv._.length < demanded._) { - fail('Not enough non-option arguments: got ' - + argv._.length + ', need at least ' + demanded._ - ); - } - - var missing = []; - Object.keys(demanded).forEach(function (key) { - if (!argv[key]) missing.push(key); - }); - - if (missing.length) { - fail('Missing required arguments: ' + missing.join(', ')); - } - - checks.forEach(function (f) { - try { - if (f(argv) === false) { - fail('Argument check failed: ' + f.toString()); - } - } - catch (err) { - fail(err) - } - }); - - return argv; - } - - function longest (xs) { - return Math.max.apply( - null, - xs.map(function (x) { return x.length }) - ); - } - - return self; -}; - -// rebase an absolute path to a relative one with respect to a base directory -// exported for tests -exports.rebase = rebase; -function rebase (base, dir) { - var ds = path.normalize(dir).split('/').slice(1); - var bs = path.normalize(base).split('/').slice(1); - - for (var i = 0; ds[i] && ds[i] == bs[i]; i++); - ds.splice(0, i); bs.splice(0, i); - - var p = path.normalize( - bs.map(function () { return '..' }).concat(ds).join('/') - ).replace(/\/$/,'').replace(/^$/, '.'); - return p.match(/^[.\/]/) ? p : './' + p; -}; - -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/.npmignore b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/.npmignore deleted file mode 100644 index 3c3629e647f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/README.markdown deleted file mode 100644 index 346374e0d48..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/README.markdown +++ /dev/null @@ -1,70 +0,0 @@ -wordwrap -======== - -Wrap your words. - -example -======= - -made out of meat ----------------- - -meat.js - - var wrap = require('wordwrap')(15); - console.log(wrap('You and your whole family are made out of meat.')); - -output: - - You and your - whole family - are made out - of meat. - -centered --------- - -center.js - - var wrap = require('wordwrap')(20, 60); - console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' - )); - -output: - - At long last the struggle and tumult - was over. The machines had finally cast - off their oppressors and were finally - free to roam the cosmos. - Free of purpose, free of obligation. - Just drifting through emptiness. The - sun was just another point of light. - -methods -======= - -var wrap = require('wordwrap'); - -wrap(stop), wrap(start, stop, params={mode:"soft"}) ---------------------------------------------------- - -Returns a function that takes a string and returns a new string. - -Pad out lines with spaces out to column `start` and then wrap until column -`stop`. If a word is longer than `stop - start` characters it will overflow. - -In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are -longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break -up chunks longer than `stop - start`. - -wrap.hard(start, stop) ----------------------- - -Like `wrap()` but with `params.mode = "hard"`. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/center.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/center.js deleted file mode 100644 index a3fbaae9880..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/center.js +++ /dev/null @@ -1,10 +0,0 @@ -var wrap = require('wordwrap')(20, 60); -console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' -)); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/meat.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/meat.js deleted file mode 100644 index a4665e1058b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/example/meat.js +++ /dev/null @@ -1,3 +0,0 @@ -var wrap = require('wordwrap')(15); - -console.log(wrap('You and your whole family are made out of meat.')); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/index.js deleted file mode 100644 index c9bc94521d8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/index.js +++ /dev/null @@ -1,76 +0,0 @@ -var wordwrap = module.exports = function (start, stop, params) { - if (typeof start === 'object') { - params = start; - start = params.start; - stop = params.stop; - } - - if (typeof stop === 'object') { - params = stop; - start = start || params.start; - stop = undefined; - } - - if (!stop) { - stop = start; - start = 0; - } - - if (!params) params = {}; - var mode = params.mode || 'soft'; - var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; - - return function (text) { - var chunks = text.toString() - .split(re) - .reduce(function (acc, x) { - if (mode === 'hard') { - for (var i = 0; i < x.length; i += stop - start) { - acc.push(x.slice(i, i + stop - start)); - } - } - else acc.push(x) - return acc; - }, []) - ; - - return chunks.reduce(function (lines, rawChunk) { - if (rawChunk === '') return lines; - - var chunk = rawChunk.replace(/\t/g, ' '); - - var i = lines.length - 1; - if (lines[i].length + chunk.length > stop) { - lines[i] = lines[i].replace(/\s+$/, ''); - - chunk.split(/\n/).forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else if (chunk.match(/\n/)) { - var xs = chunk.split(/\n/); - lines[i] += xs.shift(); - xs.forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else { - lines[i] += chunk; - } - - return lines; - }, [ new Array(start + 1).join(' ') ]).join('\n'); - }; -}; - -wordwrap.soft = wordwrap; - -wordwrap.hard = function (start, stop) { - return wordwrap(start, stop, { mode : 'hard' }); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/package.json deleted file mode 100644 index c65acafa242..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "wordwrap", - "description": "Wrap those words. Show them at what columns to start and stop.", - "version": "0.0.2", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-wordwrap.git" - }, - "main": "./index.js", - "keywords": [ - "word", - "wrap", - "rule", - "format", - "column" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "expresso" - }, - "devDependencies": { - "expresso": "=0.7.x" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT/X11", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", - "_id": "wordwrap@0.0.2", - "_from": "wordwrap@~0.0.2" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/break.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/break.js deleted file mode 100644 index 749292ecc13..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/break.js +++ /dev/null @@ -1,30 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('../'); - -exports.hard = function () { - var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' - + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' - + '"browser":"chrome/6.0"}' - ; - var s_ = wordwrap.hard(80)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 2); - assert.ok(lines[0].length < 80); - assert.ok(lines[1].length < 80); - - assert.equal(s, s_.replace(/\n/g, '')); -}; - -exports.break = function () { - var s = new Array(55+1).join('a'); - var s_ = wordwrap.hard(20)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 3); - assert.ok(lines[0].length === 20); - assert.ok(lines[1].length === 20); - assert.ok(lines[2].length === 15); - - assert.equal(s, s_.replace(/\n/g, '')); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/idleness.txt deleted file mode 100644 index aa3f4907fe8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/idleness.txt +++ /dev/null @@ -1,63 +0,0 @@ -In Praise of Idleness - -By Bertrand Russell - -[1932] - -Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. - -Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. - -One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. - -But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. - -All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. - -First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. - -Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. - -From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. - -It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. - -Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. - -This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? - -The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. - -Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. - -I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. - -If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. - -The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. - -In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. - -The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. - -For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? - -In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. - -In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. - -The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. - -It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. - -When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. - -In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. - -The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. - -In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. - -Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. - -[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/wrap.js deleted file mode 100644 index 0cfb76d178f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/node_modules/wordwrap/test/wrap.js +++ /dev/null @@ -1,31 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('wordwrap'); - -var fs = require('fs'); -var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); - -exports.stop80 = function () { - var lines = wordwrap(80)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 80, 'line > 80 columns'); - var chunks = line.match(/\S/) ? line.split(/\s+/) : []; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - }); -}; - -exports.start20stop60 = function () { - var lines = wordwrap(20, 100)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 100, 'line > 100 columns'); - var chunks = line - .split(/\s+/) - .filter(function (x) { return x.match(/\S/) }) - ; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); - }); -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/package.json deleted file mode 100644 index c81dca78c1a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "optimist", - "version": "0.3.4", - "description": "Light-weight option parsing with an argv hash. No optstrings attached.", - "main": "./index.js", - "directories": { - "lib": ".", - "test": "test", - "example": "example" - }, - "dependencies": { - "wordwrap": "~0.0.2" - }, - "devDependencies": { - "hashish": "~0.0.4", - "tap": "~0.2.4" - }, - "scripts": { - "test": "tap ./test/*.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-optimist.git" - }, - "keywords": [ - "argument", - "args", - "option", - "parser", - "parsing", - "cli", - "command" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", - "_id": "optimist@0.3.4", - "_from": "optimist@~0.3.4" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_.js deleted file mode 100644 index d9c58b36884..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_.js +++ /dev/null @@ -1,71 +0,0 @@ -var spawn = require('child_process').spawn; -var test = require('tap').test; - -test('dotSlashEmpty', testCmd('./bin.js', [])); - -test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); - -test('nodeEmpty', testCmd('node bin.js', [])); - -test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); - -test('whichNodeEmpty', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', []) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - assert.error(err); - t.end(); - }); -}); - -test('whichNodeArgs', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); -}); - -function testCmd (cmd, args) { - - return function (t) { - var to = setTimeout(function () { - assert.fail('Never got stdout data.') - }, 5000); - - var oldDir = process.cwd(); - process.chdir(__dirname + '/_'); - - var cmds = cmd.split(' '); - - var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); - process.chdir(oldDir); - - bin.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); - - bin.stdout.on('data', function (buf) { - clearTimeout(to); - var _ = JSON.parse(buf.toString()); - t.same(_.map(String), args.map(String)); - t.end(); - }); - }; -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/argv.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/argv.js deleted file mode 100644 index 3d096062cae..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/argv.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.log(JSON.stringify(process.argv)); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/bin.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/bin.js deleted file mode 100755 index 4a18d85f3ce..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/_/bin.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('../../index').argv -console.log(JSON.stringify(argv._)); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/parse.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/parse.js deleted file mode 100644 index d9a37abb1a2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/parse.js +++ /dev/null @@ -1,420 +0,0 @@ -var optimist = require('../index'); -var path = require('path'); -var test = require('tap').test; - -var expresso = 'node ./parse.js'; - -test('short boolean', function (t) { - var parse = optimist.parse([ '-b' ]); - t.same(parse, { b : true, _ : [], $0 : expresso }); - t.same(typeof parse.b, 'boolean'); - t.end(); -}); - -test('long boolean', function (t) { - t.same( - optimist.parse([ '--bool' ]), - { bool : true, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('bare', function (t) { - t.same( - optimist.parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ], $0 : expresso } - ); - t.end(); -}); - -test('short group', function (t) { - t.same( - optimist.parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('short group next', function (t) { - t.same( - optimist.parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [], $0 : expresso } - ); - t.end(); -}); - -test('short capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [], $0 : expresso } - ); - t.end(); -}); - -test('short captures', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('long capture sp', function (t) { - t.same( - optimist.parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [], $0 : expresso } - ); - t.end(); -}); - -test('long capture eq', function (t) { - t.same( - optimist.parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [], $0 : expresso } - ); - t.end() -}); - -test('long captures sp', function (t) { - t.same( - optimist.parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('long captures eq', function (t) { - t.same( - optimist.parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('mixed short bool and capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : expresso, - } - ); - t.end(); -}); - -test('short and long', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : expresso, - } - ); - t.end(); -}); - -test('no', function (t) { - t.same( - optimist.parse([ '--no-moo' ]), - { moo : false, _ : [], $0 : expresso } - ); - t.end(); -}); - -test('multi', function (t) { - t.same( - optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [], $0 : expresso } - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.same( - optimist.parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ], - $0 : expresso - } - ); - t.end(); -}); - -test('nums', function (t) { - var argv = optimist.parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789', - ]); - t.same(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ], - $0 : expresso - }); - t.same(typeof argv.x, 'number'); - t.same(typeof argv.y, 'number'); - t.same(typeof argv.z, 'number'); - t.same(typeof argv.w, 'string'); - t.same(typeof argv.hex, 'number'); - t.same(typeof argv._[0], 'number'); - t.end(); -}); - -test('flag boolean', function (t) { - var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; - t.same(parse, { t : true, _ : [ 'moo' ], $0 : expresso }); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) - .boolean(['t', 'verbose']).default('verbose', true).argv; - - t.same(parse, { - verbose: false, - t: true, - _: ['moo'], - $0 : expresso - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean default false', function (t) { - var parse = optimist(['moo']) - .boolean(['t', 'verbose']) - .default('verbose', false) - .default('t', false).argv; - - t.same(parse, { - verbose: false, - t: false, - _: ['moo'], - $0 : expresso - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) - .boolean(['x','y','z']).argv; - - t.same(parse, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ], - $0 : expresso - }); - - t.same(typeof parse.x, 'boolean'); - t.same(typeof parse.y, 'boolean'); - t.same(typeof parse.z, 'boolean'); - t.end(); -}); - -test('strings' , function (t) { - var s = optimist([ '-s', '0001234' ]).string('s').argv.s; - t.same(s, '0001234'); - t.same(typeof s, 'string'); - - var x = optimist([ '-x', '56' ]).string('x').argv.x; - t.same(x, '56'); - t.same(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = optimist([ ' ', ' ' ]).string('_').argv._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('slashBreak', function (t) { - t.same( - optimist.parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [], $0 : expresso } - ); - t.same( - optimist.parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : expresso } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', 'zoom') - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', [ 'zm', 'zoom' ]) - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('boolean default true', function (t) { - var argv = optimist.options({ - sometrue: { - boolean: true, - default: true - } - }).argv; - - t.equal(argv.sometrue, true); - t.end(); -}); - -test('boolean default false', function (t) { - var argv = optimist.options({ - somefalse: { - boolean: true, - default: false - } - }).argv; - - t.equal(argv.somefalse, false); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = optimist([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]).argv; - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - }, - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); - -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('herp') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('herp') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': expresso, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .options(opts) - .argv; - var propertyArgv = optimist(regular).options(opts).argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': expresso, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('h') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('h') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ ], - '$0': expresso, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/usage.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/usage.js deleted file mode 100644 index 300454c1e68..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/optimist/test/usage.js +++ /dev/null @@ -1,292 +0,0 @@ -var Hash = require('hashish'); -var optimist = require('../index'); -var test = require('tap').test; - -test('usageFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'Options:', - ' -x [required]', - ' -y [required]', - 'Missing required arguments: y', - ] - ); - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - - -test('usagePass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkPass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'You forgot about -y' - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('checkCondPass', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkCondFail', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/).join('\n'), - 'Usage: ./usage -x NUM -y NUM\n' - + 'Argument check failed: ' + checker.toString() - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('countPass', function (t) { - var r = checkUsage(function () { - return optimist('1 2 3 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same(r, { - result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('countFail', function (t) { - var r = checkUsage(function () { - return optimist('1 2 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same( - r.result, - { _ : [ '1', '2' ], moo : true, $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage [x] [y] [z] {OPTIONS}', - 'Not enough non-option arguments: got 2, need at least 3', - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('defaultSingles', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70 --powsy'.split(' ')) - .default('foo', 5) - .default('bar', 6) - .default('baz', 7) - .argv - ; - }); - t.same(r.result, { - foo : '50', - bar : 6, - baz : '70', - powsy : true, - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultAliases', function (t) { - var r = checkUsage(function () { - return optimist('') - .alias('f', 'foo') - .default('f', 5) - .argv - ; - }); - t.same(r.result, { - f : '5', - foo : '5', - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultHash', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70'.split(' ')) - .default({ foo : 10, bar : 20, quux : 30 }) - .argv - ; - }); - t.same(r.result, { - _ : [], - $0 : './usage', - foo : 50, - baz : 70, - bar : 20, - quux : 30, - }); - t.end(); -}); - -test('rebase', function (t) { - t.equal( - optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), - './foo/bar/baz' - ); - t.equal( - optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), - '../../..' - ); - t.equal( - optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), - '../pow/zoom.txt' - ); - t.end(); -}); - -function checkUsage (f) { - - var exit = false; - - process._exit = process.exit; - process._env = process.env; - process._argv = process.argv; - - process.exit = function (t) { exit = true }; - process.env = Hash.merge(process.env, { _ : 'node' }); - process.argv = [ './usage' ]; - - var errors = []; - var logs = []; - - console._error = console.error; - console.error = function (msg) { errors.push(msg) }; - console._log = console.log; - console.log = function (msg) { logs.push(msg) }; - - var result = f(); - - process.exit = process._exit; - process.env = process._env; - process.argv = process._argv; - - console.error = console._error; - console.log = console._log; - - return { - errors : errors, - logs : logs, - exit : exit, - result : result, - }; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/.travis.yml b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/.travis.yml deleted file mode 100644 index f1d0f13c8a5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/README.markdown deleted file mode 100644 index 4b90cb77548..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/README.markdown +++ /dev/null @@ -1,47 +0,0 @@ -resolve -======= - -Implements the [node `require.resolve()` -algorithm](http://nodejs.org/docs/v0.4.8/api/all.html#all_Together...) -except you can pass in the file to compute paths relatively to along with your -own `require.paths` without updating the global copy (which doesn't even work in -node `>=0.5`). - -[![build status](https://secure.travis-ci.org/substack/node-resolve.png)](http://travis-ci.org/substack/node-resolve) - -methods -======= - -var resolve = require('resolve'); - -resolve.sync(pkg, opts) ------------------------ - -Synchronously search for the package/filename string `pkg` -according to the [`require.resolve()` -algorithm](http://nodejs.org/docs/v0.4.8/api/all.html#all_Together...) -for `X=pkg` and `Y=opts.basedir`. - -Default values for `opts`: - -````javascript -{ - paths : [], - basedir : __dirname, - extensions : [ '.js' ], - readFileSync : fs.readFileSync, - isFile : function (file) { - return path.existSync(file) && fs.statSync(file).isFile() - } -} -```` - -Optionally you can specify a `opts.packageFilter` function to map the contents -of `JSON.parse()`'d package.json files. - -If nothing is found, all of the directories in `opts.paths` are searched. - -resolve.isCore(pkg) -------------------- - -Return whether a package is in core. diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/index.js deleted file mode 100644 index 16b844bbf14..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/index.js +++ /dev/null @@ -1,105 +0,0 @@ -var fs = require('fs'); -var path = require('path'); - -// taken from `ls -1 lib` in node 0.6.11 -var core = exports.core = [ - 'assert', 'buffer_ieee754', 'buffer', 'child_process', 'cluster', 'console', - 'constants', 'crypto', '_debugger', 'dgram', 'dns', 'events', 'freelist', - 'fs', 'http', 'https', '_linklist', 'module', 'net', 'os', 'path', - 'punycode', 'querystring', 'readline', 'repl', 'stream', 'string_decoder', - 'sys', 'timers', 'tls', 'tty', 'url', 'util', 'vm', 'zlib' -].reduce(function (acc, x) { acc[x] = true; return acc }, {}); - -exports.isCore = function (x) { return core[x] }; - -exports.sync = function (x, opts) { - if (core[x]) return x; - - if (!opts) opts = {}; - var isFile = opts.isFile || function (file) { - return path.existsSync(file) && fs.statSync(file).isFile() - }; - var readFileSync = opts.readFileSync || fs.readFileSync; - - var extensions = opts.extensions || [ '.js' ]; - var y = opts.basedir - || path.dirname(require.cache[__filename].parent.filename) - ; - - opts.paths = opts.paths || []; - - if (x.match(/^(?:\.\.?\/|\/|([A-Za-z]:)?\\)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (isFile(x)) { - return x; - } - - for (var i = 0; i < extensions.length; i++) { - var file = x + extensions[i]; - if (isFile(file)) { - return file; - } - } - } - - function loadAsDirectorySync (x) { - var pkgfile = path.join(x, '/package.json'); - if (isFile(pkgfile)) { - var body = readFileSync(pkgfile, 'utf8'); - try { - var pkg = JSON.parse(body); - if (opts.packageFilter) { - pkg = opts.packageFilter(pkg); - } - - if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - catch (err) {} - } - - return loadAsFileSync(path.join( x, '/index')); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(path.join( dir, '/', x)); - if (m) return m; - var n = loadAsDirectorySync(path.join( dir, '/', x )); - if (n) return n; - } - } - - function nodeModulesPathsSync (start) { - var splitRe = process.platform === 'win32' ? /[\/\\]/ : /\/+/; - var parts = start.split(splitRe); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = path.join( - path.join.apply(path, parts.slice(0, i + 1)), - 'node_modules' - ); - if (!parts[0].match(/([A-Za-z]:)/)) { - dir = '/' + dir; - } - dirs.push(dir); - } - return opts.paths.concat(dirs); - } -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/package.json deleted file mode 100644 index 2dcc36aa4fc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "resolve", - "description": "A more hookable require.resolve() implementation", - "version": "0.2.2", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-resolve.git" - }, - "main": "index.js", - "keywords": [ - "resolve", - "require", - "node", - "module" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.2.4" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "resolve\n=======\n\nImplements the [node `require.resolve()`\nalgorithm](http://nodejs.org/docs/v0.4.8/api/all.html#all_Together...)\nexcept you can pass in the file to compute paths relatively to along with your\nown `require.paths` without updating the global copy (which doesn't even work in\nnode `>=0.5`).\n\n[![build status](https://secure.travis-ci.org/substack/node-resolve.png)](http://travis-ci.org/substack/node-resolve)\n\nmethods\n=======\n\nvar resolve = require('resolve');\n\nresolve.sync(pkg, opts)\n-----------------------\n\nSynchronously search for the package/filename string `pkg`\naccording to the [`require.resolve()`\nalgorithm](http://nodejs.org/docs/v0.4.8/api/all.html#all_Together...)\nfor `X=pkg` and `Y=opts.basedir`.\n\nDefault values for `opts`:\n\n````javascript\n{\n paths : [],\n basedir : __dirname,\n extensions : [ '.js' ],\n readFileSync : fs.readFileSync,\n isFile : function (file) {\n return path.existSync(file) && fs.statSync(file).isFile()\n }\n}\n````\n\nOptionally you can specify a `opts.packageFilter` function to map the contents\nof `JSON.parse()`'d package.json files.\n\nIf nothing is found, all of the directories in `opts.paths` are searched.\n\nresolve.isCore(pkg)\n-------------------\n\nReturn whether a package is in core.\n", - "_id": "resolve@0.2.2", - "dist": { - "shasum": "bee5e6c8a011e5ffa04b8d6e0046ec9cabc5102a" - }, - "_from": "resolve@~0.2.0" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/core.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/core.js deleted file mode 100644 index 88a510cd112..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/core.js +++ /dev/null @@ -1,12 +0,0 @@ -var test = require('tap').test; -var resolve = require('../'); - -test('core modules', function (t) { - t.ok(resolve.isCore('fs')); - t.ok(resolve.isCore('net')); - t.ok(resolve.isCore('http')); - - t.ok(!resolve.isCore('seq')); - t.ok(!resolve.isCore('../')); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/filter.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/filter.js deleted file mode 100644 index 8856c01a880..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/filter.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tap').test; -var resolve = require('../'); - -test('filter', function (t) { - var dir = __dirname + '/resolver'; - var res = resolve.sync('./baz', { - basedir : dir, - packageFilter : function (pkg) { - pkg.main = 'doom' - return pkg; - } - }); - t.equal(res, dir + '/baz/doom.js'); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/mock.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/mock.js deleted file mode 100644 index c822e3eaa17..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/mock.js +++ /dev/null @@ -1,64 +0,0 @@ -var test = require('tap').test; -var resolve = require('../'); - -test('mock', function (t) { - t.plan(3); - - var files = { - '/foo/bar/baz.js' : 'beep' - }; - - function opts (basedir) { - return { - basedir : basedir, - isFile : function (file) { - return files.hasOwnProperty(file) - }, - readFileSync : function (file) { - return files[file] - } - } - } - - t.equal( - resolve.sync('./baz', opts('/foo/bar')), - '/foo/bar/baz.js' - ); - - t.equal( - resolve.sync('./baz.js', opts('/foo/bar')), - '/foo/bar/baz.js' - ); - - t.throws(function () { - resolve.sync('baz', opts('/foo/bar')); - }); -}); - -test('mock package', function (t) { - t.plan(1); - - var files = { - '/foo/node_modules/bar/baz.js' : 'beep', - '/foo/node_modules/bar/package.json' : JSON.stringify({ - main : './baz.js' - }) - }; - - function opts (basedir) { - return { - basedir : basedir, - isFile : function (file) { - return files.hasOwnProperty(file) - }, - readFileSync : function (file) { - return files[file] - } - } - } - - t.equal( - resolve.sync('bar', opts('/foo')), - '/foo/node_modules/bar/baz.js' - ); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver.js deleted file mode 100644 index 80f5aa55c03..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver.js +++ /dev/null @@ -1,157 +0,0 @@ -var test = require('tap').test; -var resolve = require('../'); - -test('foo', function (t) { - var dir = __dirname + '/resolver'; - - t.equal( - resolve.sync('./foo', { basedir : dir }), - dir + '/foo.js' - ); - - t.equal( - resolve.sync('./foo.js', { basedir : dir }), - dir + '/foo.js' - ); - - t.throws(function () { - resolve.sync('foo', { basedir : dir }); - }); - - t.end(); -}); - -test('bar', function (t) { - var dir = __dirname + '/resolver'; - - t.equal( - resolve.sync('foo', { basedir : dir + '/bar' }), - dir + '/bar/node_modules/foo/index.js' - ); - t.end(); -}); - -test('baz', function (t) { - var dir = __dirname + '/resolver'; - - t.equal( - resolve.sync('./baz', { basedir : dir }), - dir + '/baz/quux.js' - ); - t.end(); -}); - -test('biz', function (t) { - var dir = __dirname + '/resolver/biz/node_modules'; - t.equal( - resolve.sync('./grux', { basedir : dir }), - dir + '/grux/index.js' - ); - - t.equal( - resolve.sync('tiv', { basedir : dir + '/grux' }), - dir + '/tiv/index.js' - ); - - t.equal( - resolve.sync('grux', { basedir : dir + '/tiv' }), - dir + '/grux/index.js' - ); - t.end(); -}); - -test('normalize', function (t) { - var dir = __dirname + '/resolver/biz/node_modules/grux'; - t.equal( - resolve.sync('../grux', { basedir : dir }), - dir + '/index.js' - ); - t.end(); -}); - -test('cup', function (t) { - var dir = __dirname + '/resolver'; - t.equal( - resolve.sync('./cup', { - basedir : dir, - extensions : [ '.js', '.coffee' ] - }), - dir + '/cup.coffee' - ); - - t.equal( - resolve.sync('./cup.coffee', { - basedir : dir - }), - dir + '/cup.coffee' - ); - - t.throws(function () { - resolve.sync('./cup', { - basedir : dir, - extensions : [ '.js' ] - }) - }); - - t.end(); -}); - -test('mug', function (t) { - var dir = __dirname + '/resolver'; - t.equal( - resolve.sync('./mug', { basedir : dir }), - dir + '/mug.js' - ); - - t.equal( - resolve.sync('./mug', { - basedir : dir, - extensions : [ '.coffee', '.js' ] - }), - dir + '/mug.coffee' - ); - - t.equal( - resolve.sync('./mug', { - basedir : dir, - extensions : [ '.js', '.coffee' ] - }), - dir + '/mug.js' - ); - - t.end(); -}); - -test('other path', function (t) { - var resolverDir = __dirname + '/resolver'; - var dir = resolverDir + '/bar'; - var otherDir = resolverDir + '/other_path'; - - var path = require('path'); - - t.equal( - resolve.sync('root', { - basedir : dir, - paths: [otherDir] }), - resolverDir + '/other_path/root.js' - ); - - t.equal( - resolve.sync('lib/other-lib', { - basedir : dir, - paths: [otherDir] }), - resolverDir + '/other_path/lib/other-lib.js' - ); - - t.throws(function () { - resolve.sync('root', { basedir : dir, }); - }); - - t.throws(function () { - resolve.sync('zzz', { - basedir : dir, - paths: [otherDir] }); - }); - - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js deleted file mode 100644 index bd816eaba4c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/doom.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/doom.js deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/doom.js +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/package.json deleted file mode 100644 index 6b81dcddfc4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main" : "quux.js" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/quux.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/quux.js deleted file mode 100644 index bd816eaba4c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/baz/quux.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js deleted file mode 100644 index 49960555ab4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('tiv') * 100; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js deleted file mode 100644 index 690aad34a46..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 3; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/cup.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/cup.coffee deleted file mode 100644 index 8b137891791..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/cup.coffee +++ /dev/null @@ -1 +0,0 @@ - diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/foo.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/foo.js deleted file mode 100644 index bd816eaba4c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/foo.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.coffee deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.coffee +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.js deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/mug.js +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/lib/other-lib.js deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/lib/other-lib.js +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/root.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/root.js deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/resolve/test/resolver/other_path/root.js +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/README.markdown deleted file mode 100644 index 6f1ff9bcc0a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/README.markdown +++ /dev/null @@ -1,103 +0,0 @@ -vm-browserify -============= - -Emulate node's vm module for the browser. - -example -======= - -Just write some client-side javascript: - -``` js -var vm = require('vm'); - -$(function () { - var res = vm.runInNewContext('a + 5', { a : 100 }); - $('#res').text(res); -}); -``` - -compile it with [browserify](http://github.com/substack/node-browserify): - -``` -browserify entry.js -o bundle.js -``` - -then whip up some html: - -``` html -<html> - <head> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> - <script src="/bundle.js"></script> - </head> - <body> - result = <span id="res"></span> - </body> -</html> -``` - -and when you load the page you should see: - -``` -result = 105 -``` - -methods -======= - -vm.runInNewContext(code, context={}) ------------------------------------- - -Evaluate some `code` in a new iframe with a `context`. - -Contexts are like wrapping your code in a `with()` except slightly less terrible -because the code is sandboxed into a new iframe. - -browser compatability -===================== - -All modern browsers are supported. - -If you have a [browserling](http://browserling.com) account, -from the testling/ directory just do: - -``` -$ ./test.sh substack@gmail.com -Enter host password for user 'substack@gmail.com': -chrome/17.0: - vmRunInNewContext ................................. 5/5 - -iexplore/9.0: - vmRunInNewContext ................................. 5/5 - -firefox/10.0: - vmRunInNewContext ................................. 5/5 - -safari/5.1: - vmRunInNewContext ................................. 5/5 - -opera/11.6: - vmRunInNewContext ................................. 5/5 - -total ............................................... 25/25 -``` - -In IE8 and IE7, running `vm.runInNewContext()` more than once can cause the -browsers to hang for some reason. Otherwise they work too. - -install -======= - -This module is depended upon by browserify, so you should just be able to -`require('vm')` and it will just work. However if you want to use this module -directly you can install it with [npm](http://npmjs.org): - -``` -npm install vm-browserify -``` - -license -======= - -MIT/X11 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/bundle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/bundle.js deleted file mode 100644 index 5dbc43f41e7..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/bundle.js +++ /dev/null @@ -1,473 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - var y = cwd || '.'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -require.define = function (filename, fn) { - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -require.define("path", function (require, module, exports, __dirname, __filename) { -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; - -}); - -require.define("vm", function (require, module, exports, __dirname, __filename) { -var Object_keys = function (obj) { - if (Object.keys) return Object.keys(obj) - else { - var res = []; - for (var key in obj) res.push(key) - return res; - } -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -var Script = exports.Script = function NodeScript (code) { - if (!(this instanceof Script)) return new Script(code); - this.code = code; -}; - -var iframe = document.createElement('iframe'); -if (!iframe.style) iframe.style = {}; -iframe.style.display = 'none'; - -var iframeCapable = true; // until proven otherwise -if (navigator.appName === 'Microsoft Internet Explorer') { - var m = navigator.appVersion.match(/\bMSIE (\d+\.\d+);/); - if (m && parseFloat(m[1]) <= 9.0) { - iframeCapable = false; - } -} - -Script.prototype.runInNewContext = function (context) { - if (!context) context = {}; - - if (!iframeCapable) { - var keys = Object_keys(context); - var args = []; - for (var i = 0; i < keys.length; i++) { - args.push(context[keys[i]]); - } - - var fn = new Function(keys, 'return ' + this.code); - return fn.apply(null, args); - } - - document.body.appendChild(iframe); - - var win = iframe.contentWindow - || (window.frames && window.frames[window.frames.length - 1]) - || window[window.length - 1] - ; - - forEach(Object_keys(context), function (key) { - win[key] = context[key]; - iframe[key] = context[key]; - }); - - if (win.eval) { - // chrome and ff can just .eval() - var res = win.eval(this.code); - } - else { - // this works in IE9 but not anything newer - iframe.setAttribute('src', - 'javascript:__browserifyVmResult=(' + this.code + ')' - ); - if ('__browserifyVmResult' in win) { - var res = win.__browserifyVmResult; - } - else { - iframeCapable = false; - res = this.runInThisContext(context); - } - } - - forEach(Object_keys(win), function (key) { - context[key] = win[key]; - }); - - document.body.removeChild(iframe); - - return res; -}; - -Script.prototype.runInThisContext = function () { - return eval(this.code); // maybe... -}; - -Script.prototype.runInContext = function (context) { - // seems to be just runInNewContext on magical context objects which are - // otherwise indistinguishable from objects except plain old objects - // for the parameter segfaults node - return this.runInNewContext(context); -}; - -forEach(Object_keys(Script.prototype), function (name) { - exports[name] = Script[name] = function (code) { - var s = Script(code); - return s[name].apply(s, [].slice.call(arguments, 1)); - }; -}); - -exports.createScript = function (code) { - return exports.Script(code); -}; - -exports.createContext = Script.createContext = function (context) { - // not really sure what this one does - // seems to just make a shallow copy - var copy = {}; - forEach(Object_keys(context), function (key) { - copy[key] = context[key]; - }); - return copy; -}; - -}); - -require.define("/entry.js", function (require, module, exports, __dirname, __filename) { - var vm = require('vm'); - -$(function () { - var res = vm.runInNewContext('a + 5', { a : 100 }); - $('#res').text(res); -}); - -}); -require("/entry.js"); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/entry.js deleted file mode 100644 index c7d38918c68..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/entry.js +++ /dev/null @@ -1,6 +0,0 @@ -var vm = require('vm'); - -$(function () { - var res = vm.runInNewContext('a + 5', { a : 100 }); - $('#res').text(res); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/index.html b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/index.html deleted file mode 100644 index 1ea0942350b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/index.html +++ /dev/null @@ -1,9 +0,0 @@ -<html> - <head> - <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> - <script src="/bundle.js"></script> - </head> - <body> - result = <span id="res"></span> - </body> -</html> diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/server.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/server.js deleted file mode 100644 index 339d3eea094..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/example/run/server.js +++ /dev/null @@ -1,6 +0,0 @@ -var ecstatic = require('ecstatic')(__dirname); -var http = require('http'); -http.createServer(ecstatic).listen(8000); - -console.log('listening on :8000'); -console.log('# remember to run browserify entry.js -o bundle.js'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/index.js deleted file mode 100644 index 816c828af3b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/index.js +++ /dev/null @@ -1,85 +0,0 @@ -var Object_keys = function (obj) { - if (Object.keys) return Object.keys(obj) - else { - var res = []; - for (var key in obj) res.push(key) - return res; - } -}; - -var forEach = function (xs, fn) { - if (xs.forEach) return xs.forEach(fn) - else for (var i = 0; i < xs.length; i++) { - fn(xs[i], i, xs); - } -}; - -var Script = exports.Script = function NodeScript (code) { - if (!(this instanceof Script)) return new Script(code); - this.code = code; -}; - -Script.prototype.runInNewContext = function (context) { - if (!context) context = {}; - - var iframe = document.createElement('iframe'); - if (!iframe.style) iframe.style = {}; - iframe.style.display = 'none'; - - document.body.appendChild(iframe); - - var win = iframe.contentWindow; - - forEach(Object_keys(context), function (key) { - win[key] = context[key]; - }); - - if (!win.eval && win.execScript) { - // win.eval() magically appears when this is called in IE: - win.execScript('null'); - } - - var res = win.eval(this.code); - - forEach(Object_keys(win), function (key) { - context[key] = win[key]; - }); - - document.body.removeChild(iframe); - - return res; -}; - -Script.prototype.runInThisContext = function () { - return eval(this.code); // maybe... -}; - -Script.prototype.runInContext = function (context) { - // seems to be just runInNewContext on magical context objects which are - // otherwise indistinguishable from objects except plain old objects - // for the parameter segfaults node - return this.runInNewContext(context); -}; - -forEach(Object_keys(Script.prototype), function (name) { - exports[name] = Script[name] = function (code) { - var s = Script(code); - return s[name].apply(s, [].slice.call(arguments, 1)); - }; -}); - -exports.createScript = function (code) { - return exports.Script(code); -}; - -exports.createContext = Script.createContext = function (context) { - // not really sure what this one does - // seems to just make a shallow copy - var copy = {}; - if(typeof context === 'object') { - forEach(Object_keys(context), function (key) { - copy[key] = context[key]; - }); - } - return copy; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/package.json deleted file mode 100644 index 25418732ebf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "vm-browserify", - "version": "0.0.1", - "description": "vm module for the browser", - "main": "index.js", - "directories": { - "example": "example", - "test": "test" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/vm-browserify.git" - }, - "keywords": [ - "vm", - "browser", - "eval" - ], - "devDependencies": { - "tap": "~0.2.1", - "browserify": "1.9.x" - }, - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "scripts": { - "test": "tap test/*.js" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4.0" - }, - "readme": "vm-browserify\n=============\n\nEmulate node's vm module for the browser.\n\nexample\n=======\n\nJust write some client-side javascript:\n\n``` js\nvar vm = require('vm');\n\n$(function () {\n var res = vm.runInNewContext('a + 5', { a : 100 });\n $('#res').text(res);\n});\n```\n\ncompile it with [browserify](http://github.com/substack/node-browserify):\n\n```\nbrowserify entry.js -o bundle.js\n```\n\nthen whip up some html:\n\n``` html\n<html>\n <head>\n <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js\"></script>\n <script src=\"/bundle.js\"></script>\n </head>\n <body>\n result = <span id=\"res\"></span>\n </body>\n</html>\n```\n\nand when you load the page you should see:\n\n```\nresult = 105\n```\n\nmethods\n=======\n\nvm.runInNewContext(code, context={})\n------------------------------------\n\nEvaluate some `code` in a new iframe with a `context`.\n\nContexts are like wrapping your code in a `with()` except slightly less terrible\nbecause the code is sandboxed into a new iframe.\n\nbrowser compatability\n=====================\n\nAll modern browsers are supported.\n\nIf you have a [browserling](http://browserling.com) account,\nfrom the testling/ directory just do:\n\n```\n$ ./test.sh substack@gmail.com\nEnter host password for user 'substack@gmail.com':\nchrome/17.0:\n vmRunInNewContext ................................. 5/5\n\niexplore/9.0:\n vmRunInNewContext ................................. 5/5\n\nfirefox/10.0:\n vmRunInNewContext ................................. 5/5\n\nsafari/5.1:\n vmRunInNewContext ................................. 5/5\n\nopera/11.6:\n vmRunInNewContext ................................. 5/5\n\ntotal ............................................... 25/25\n```\n\nIn IE8 and IE7, running `vm.runInNewContext()` more than once can cause the\nbrowsers to hang for some reason. Otherwise they work too.\n\ninstall\n=======\n\nThis module is depended upon by browserify, so you should just be able to\n`require('vm')` and it will just work. However if you want to use this module\ndirectly you can install it with [npm](http://npmjs.org):\n\n```\nnpm install vm-browserify\n```\n\nlicense\n=======\n\nMIT/X11\n", - "_id": "vm-browserify@0.0.1", - "dist": { - "shasum": "df973b3f726dc33bf2c561144203849dd01ac21a" - }, - "_from": "vm-browserify@~0.0.0" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/run.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/run.js deleted file mode 100644 index f8cdf3eae75..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/run.js +++ /dev/null @@ -1,22 +0,0 @@ -var test = require('testling'); -var vm = require('./'); - -test('vmRunInNewContext', function (t) { - t.plan(5); - - t.equal(vm.runInNewContext('a + 5', { a : 100 }), 105); - - (function () { - var vars = { x : 10 }; - t.equal(vm.runInNewContext('x++', vars), 10); - t.equal(vars.x, 11); - })(); - - (function () { - var vars = { x : 10 }; - t.equal(vm.runInNewContext('var y = 3; y + x++', vars), 13); - t.equal(vars.x, 11); - })(); - - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/test.sh b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/test.sh deleted file mode 100755 index 83e992f5c16..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/node_modules/vm-browserify/testling/test.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -if test -n "$1"; then - user="$1" -else - echo -n 'testling account: ' - read user -fi - -curl -sSNT <(tar -cf- ../index.js run.js 2>/dev/null) \ - 'http://testling.com/?main=run.js&browsers=chrome/17.0,iexplore/9.0,firefox/10.0,safari/5.1,opera/11.6' \ - -u "$user" diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/package.json deleted file mode 100644 index b633e601dea..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "browserify", - "version": "1.13.2", - "description": "browser-side require() for js directories and npm modules", - "main": "index.js", - "bin": { - "browserify": "bin/cmd.js" - }, - "directories": { - "example": "example", - "test": "test" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-browserify.git" - }, - "keywords": [ - "browser", - "require", - "middleware", - "bundle", - "npm", - "coffee", - "javascript" - ], - "dependencies": { - "detective": "~0.1.1", - "deputy": "~0.0.0", - "resolve": "~0.2.0", - "nub": "~0.0.0", - "commondir": "~0.0.1", - "coffee-script": "1.x.x", - "optimist": "~0.3.4", - "http-browserify": "~0.1.1", - "vm-browserify": "~0.0.0", - "crypto-browserify": "~0" - }, - "devDependencies": { - "tap": "~0.2.5", - "connect": "1.8.5", - "hashish": ">=0.0.2 <0.1", - "traverse": ">=0.3.8 <0.4", - "backbone": "~0.9.2", - "dnode": "~0.9.11", - "jade": "0.20.0", - "seq": "0.3.3", - "jquery-browserify": "*", - "lazy": "1.0.x", - "ecstatic": "~0.1.4" - }, - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "scripts": { - "test": "node node_modules/tap/bin/tap.js test/*.js" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.6.0" - }, - "readme": "browserify\n==========\n\nMake node-style require() work in the browser with a server-side build step,\nas if by magic!\n\n[![build status](https://secure.travis-ci.org/substack/node-browserify.png)](http://travis-ci.org/substack/node-browserify)\n\n![browserify!](http://substack.net/images/browserify/browserify.png)\n\nexample\n=======\n\nJust write an `entry.js` to start with some `require()`s in it:\n\n````javascript\n// use relative requires\nvar foo = require('./foo');\nvar bar = require('../lib/bar');\n\n// or use modules installed by npm in node_modules/\nvar domready = require('domready');\n\ndomready(function () {\n var elem = document.getElementById('result');\n elem.textContent = foo(100) + bar('baz');\n});\n````\n\nNow just use the `browserify` command to build a bundle starting at `entry.js`:\n\n```\n$ browserify entry.js -o bundle.js\n```\n\nAll of the modules that `entry.js` needs are included in the final bundle from a\nrecursive walk using [detective](https://github.com/substack/node-detective).\n\nTo use the bundle, just toss a `<script src=\"bundle.js\"></script>` into your\nhtml!\n\nusage\n=====\n\n````\nUsage: browserify [entry files] {OPTIONS}\n\nOptions:\n --outfile, -o Write the browserify bundle to this file.\n If unspecified, browserify prints to stdout. \n --require, -r A module name or file to bundle.require()\n Optionally use a colon separator to set the target. \n --entry, -e An entry point of your app \n --exports Export these core objects, comma-separated list\n with any of: require, process. If unspecified, the\n export behavior will be inferred.\n \n --ignore, -i Ignore a file \n --alias, -a Register an alias with a colon separator: \"to:from\"\n Example: --alias 'jquery:jquery-browserify' \n --cache, -c Turn on caching at $HOME/.config/browserling/cache.json or use\n a file for caching.\n [default: true]\n --debug, -d Switch on debugging mode with //@ sourceURL=...s. [boolean]\n --plugin, -p Use a plugin.\n Example: --plugin aliasify \n --prelude Include the code that defines require() in this bundle.\n [boolean] [default: true]\n --watch, -w Watch for changes. The script will stay open and write updates\n to the output every time any of the bundled files change.\n This option only works in tandem with -o. \n --verbose, -v Write out how many bytes were written in -o mode. This is\n especially useful with --watch. \n --help, -h Show this message \n\n````\n\ncompatability\n=============\n\nMany [npm](http://npmjs.org) modules that don't do IO will just work after being\nbrowserified. Others take more work.\n\n[coffee script](http://coffeescript.org/) should pretty much just work.\nJust do `browserify entry.coffee` or `require('./foo.coffee')`.\n\nMany node built-in modules have been wrapped to work in the browser.\nAll you need to do is `require()` them like in node.\n\n* events\n* path\n* [vm](https://github.com/substack/vm-browserify)\n* [http](https://github.com/substack/http-browserify)\n* [crypto](https://github.com/dominictarr/crypto-browserify)\n* assert\n* url\n* buffer\n* buffer_ieee754\n* util\n* querystring\n* stream\n\nprocess\n-------\n\nBrowserify makes available a faux `process` object to modules with these\nattributes:\n\n* nextTick(fn) - uses [the postMessage trick](http://dbaron.org/log/20100309-faster-timeouts)\n for a faster `setTimeout(fn, 0)` if it can\n* title - set to 'browser' for browser code, 'node' in regular node code\n* browser - `true`, good for testing if you're in a browser or in node\n\nBy default the process object is only available inside of files wrapped by\nbrowserify. To expose it, use `--exports=process`\n\n__dirname\n---------\n\nThe faux directory name, scrubbed of true directory information so as not to\nexpose your filesystem organization.\n\n__filename\n----------\n\nThe faux file path, scrubbed of true path information so as not to expose your\nfilesystem organization.\n\npackage.json\n============\n\nIn order to resolve main files for projects, the package.json \"main\" field is\nread.\n\nIf a package.json has a \"browserify\" field, you can override the standard \"main\"\nbehavior with something special just for browsers.\n\nSee [dnode's\npackage.json](https://github.com/substack/dnode/blob/9e24b97cf2ce931fbf6d7beb3731086b46bca887/package.json#L40)\nfor an example of using the \"browserify\" field.\n\nmore\n====\n\n* [browserify recipes](https://github.com/substack/node-browserify/blob/master/doc/recipes.markdown#recipes)\n* [browserify api reference](https://github.com/substack/node-browserify/blob/master/doc/methods.markdown#methods)\n* [browserify cdn](http://browserify.nodejitsu.com/)\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install -g browserify\n```\n\ntest\n====\n\nTo run the node tests with tap, do:\n\n```\nnpm test\n```\n\nTo run the [testling](http://testling.com) tests,\ncreate a [browserling](http://browserling.com) account then:\n\n```\ncd testling\n./test.sh\n```\n", - "_id": "browserify@1.13.2", - "dist": { - "shasum": "6de8e981babf53f3446bbc53a14c2740584da9e6" - }, - "_from": "browserify" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/alias.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/alias.js deleted file mode 100644 index ed6d45d9fcd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/alias.js +++ /dev/null @@ -1,55 +0,0 @@ -var connect = require('connect'); -var http = require('http'); -var vm = require('vm'); -var browserify = require('../'); - -var test = require('tap').test; - -test('alias', function (t) { - t.plan(5); - var port = 10000 + Math.floor(Math.random() * (Math.pow(2,16) - 10000)); - var server = connect.createServer(); - - server.use(browserify({ - mount : '/bundle.js', - require : { moo : 'seq' } - })); - - server.listen(port, makeRequest); - - function makeRequest () { - - var req = { host : 'localhost', port : port, path : '/bundle.js' }; - http.get(req, function (res) { - t.equal(res.statusCode, 200); - server.close(); - - var context = { - setTimeout : setTimeout, - console : console - }; - - var src = ''; - res.on('data', function (buf) { - src += buf.toString(); - }); - - res.on('end', function () { - vm.runInNewContext(src, context); - t.ok(context.require('moo')); - t.ok(context.require('seq')); - t.equal(context.require('seq'), context.require('moo')); - - context.require('moo')([1,2,3]) - .parMap(function (x) { - this(null, x * 100) - }) - .seq(function () { - t.deepEqual(this.stack, [100,200,300]); - t.end(); - }) - ; - }); - }); - } -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/backbone.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/backbone.js deleted file mode 100644 index fcedca2e686..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/backbone.js +++ /dev/null @@ -1,21 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var backbone = require('backbone'); -var test = require('tap').test; - -test('backbone', function (t) { - t.plan(3); - var src = browserify.bundle({ - require : 'backbone' - }); - t.ok(typeof src === 'string'); - t.ok(src.length > 0); - - var c = { console : console }; - vm.runInNewContext(src, c); - t.deepEqual( - Object.keys(backbone).sort(), - Object.keys(c.require('backbone')).sort() - ); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bin.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bin.js deleted file mode 100644 index 23e8c0b0295..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bin.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test; -var spawn = require('child_process').spawn; -var path = require('path'); -var vm = require('vm'); - -test('bin', function (t) { - t.plan(3); - - var cwd = process.cwd(); - process.chdir(__dirname); - - var ps = spawn(process.execPath, [ - path.resolve(__dirname, '../bin/cmd.js'), - 'entry/main.js', - '--exports=require' - ]); - var src = ''; - ps.stdout.on('data', function (buf) { - src += buf.toString(); - }); - - ps.on('exit', function (code) { - t.equal(code, 0); - - var allDone = false; - var c = { - done : function () { allDone = true } - }; - - vm.runInNewContext(src, c); - t.deepEqual( - Object.keys(c.require.modules).sort(), - [ 'path', '__browserify_process', '/one.js', '/two.js', '/main.js' ].sort() - ); - t.ok(allDone); - - t.end(); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bundle.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bundle.js deleted file mode 100644 index f4e077fd40b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/bundle.js +++ /dev/null @@ -1,32 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('bundle', function (t) { - var b = browserify(); - b.require('seq'); - var src = b.bundle(); - - t.plan(3); - - t.ok(typeof src === 'string'); - t.ok(src.length > 0); - - var c = { - setTimeout : setTimeout, - console : console - }; - vm.runInNewContext(src, c); - - c.require('seq')([1,2,3]) - .parMap_(function (next, x) { - setTimeout(function () { - next.ok(x * 100) - }, 10) - }) - .seq(function (x,y,z) { - t.deepEqual([x,y,z], [100,200,300]); - t.end(); - }) - ; -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/cache.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/cache.js deleted file mode 100644 index 70bf9b1189d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/cache.js +++ /dev/null @@ -1,28 +0,0 @@ -var vm = require('vm'); -var fs = require('fs'); -var browserify = require('../'); -var test = require('tap').test; -var crypto = require('crypto'); - -test('cache', function (t) { - t.plan(2); - - var file = '/tmp/' + Math.floor(Math.random() * (1<<30)).toString(16) + '.json'; - browserify({ cache : file }).require('seq').bundle(); - setTimeout(function () { - fs.readFile(file, function (err, body) { - if (err) t.fail(err); - var cache = JSON.parse(body); - var tfile = require.resolve('seq'); - fs.readFile(tfile, function (err, body) { - var hash = new crypto.Hash('md5').update(body).digest('hex'); - t.ok(cache[hash]); - t.deepEqual( - cache[hash].strings.sort(), - [ 'events', 'hashish', 'chainsaw' ].sort() - ); - t.end(); - }); - }); - }, 200); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee.js deleted file mode 100644 index 435f392ee2b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee.js +++ /dev/null @@ -1,39 +0,0 @@ -var vm = require('vm'); -var fs = require('fs'); -var browserify = require('../'); -var test = require('tap').test; - -test('coffee', function (t) { - t.plan(8); - - var src = browserify.bundle({ require : __dirname + '/coffee/index.coffee' }); - var c = {}; - vm.runInNewContext(src, c); - - t.equal(c.require('./foo.coffee')(5), 50); - t.equal(c.require('./foo')(5), 50); - - t.equal(c.require('./bar.js'), 500); - t.equal(c.require('./bar'), 500); - - t.equal(c.require('./baz.coffee'), 1000); - t.equal(c.require('./baz'), 1000); - - t.equal(c.require('./'), 10 * 10 * 500 + 1000); - t.equal(c.require('./index.coffee'), 10 * 10 * 500 + 1000); - t.end(); -}); - -test('coffeeEntry', function (t) { - var b = browserify({ entry : __dirname + '/coffee/entry.coffee' }); - var src = b.bundle(); - - var c = { - setTimeout : setTimeout, - done : function (fn) { - t.equal(fn(10), 100); - t.end(); - } - }; - vm.runInNewContext(src, c); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/bar.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/bar.js deleted file mode 100644 index 74ca504b7c3..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/bar.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./foo.coffee')(50); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/baz.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/baz.coffee deleted file mode 100644 index ae629b69bdc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/baz.coffee +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1000 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/entry.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/entry.coffee deleted file mode 100644 index fdaf8add9c3..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/entry.coffee +++ /dev/null @@ -1 +0,0 @@ -nested = require './nested/nested.coffee'
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/foo.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/foo.coffee deleted file mode 100644 index b756c3aad5f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/foo.coffee +++ /dev/null @@ -1 +0,0 @@ -module.exports = (x) -> x * 10 diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/index.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/index.coffee deleted file mode 100644 index b54f47a5dd8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/index.coffee +++ /dev/null @@ -1,5 +0,0 @@ -bar = require './bar' -foo = require './foo.coffee' -baz = require './baz' - -module.exports = foo(foo bar) + baz diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/nested/nested.coffee b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/nested/nested.coffee deleted file mode 100644 index 6e564d4dd8e..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/coffee/nested/nested.coffee +++ /dev/null @@ -1,2 +0,0 @@ -foo = require '../foo.coffee' -done(foo) diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dnode.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dnode.js deleted file mode 100644 index 26862cf4e13..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dnode.js +++ /dev/null @@ -1,27 +0,0 @@ -var vm = require('vm'); -var browserify = require('../'); -var test = require('tap').test; - -test('dnode', function (t) { - t.plan(2); - - var src = browserify.bundle({ require : 'dnode' }); - var c = { - console : console, - navigator : { - userAgent : 'foo', - platform : 'bar', - }, - window : { - addEventListener : function () {}, - }, - document : {}, - }; - vm.runInNewContext(src, c); - var dnode = c.require('dnode'); - - t.ok(dnode, 'dnode object exists'); - t.ok(dnode.connect, 'dnode.connect exists'); - - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar.js deleted file mode 100644 index 6992fa66509..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar.js +++ /dev/null @@ -1,19 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('dollar', function (t) { - t.plan(3); - var src = browserify({ - require : __dirname + '/dollar/dollar/index.js' - }).bundle(); - - t.ok(typeof src === 'string'); - t.ok(src.length > 0); - - var c = {}; - vm.runInNewContext(src, c); - var res = vm.runInNewContext('require("./")(100)', c); - t.equal(res, 10000); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar/dollar/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar/dollar/index.js deleted file mode 100644 index a6012aa6bdf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/dollar/dollar/index.js +++ /dev/null @@ -1,7 +0,0 @@ -// foo $ bar $ baz - -var $ = function (x) { - return x * 100; -}; - -module.exports = $; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry.js deleted file mode 100644 index c20e2276706..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry.js +++ /dev/null @@ -1,36 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -var setTimeout_ = function (cb, t) { - if (!t) { - process.nextTick(cb); - } - else { - setTimeout(cb, t); - } -}; - -test('entry', function (t) { - t.plan(2); - - var src = browserify({ exports : [ 'require' ] }) - .addEntry(__dirname + '/entry/main.js') - .bundle() - ; - - var c = { - setTimeout : process.nextTick, - done : function (one, two) { - t.equal(one, 1); - t.equal(two, 2); - t.end(); - } - }; - vm.runInNewContext(src, c); - - t.deepEqual( - Object.keys(c.require.modules).sort(), - [ 'path', '__browserify_process', '/one.js', '/two.js', '/main.js' ].sort() - ); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/main.js deleted file mode 100644 index 89bb8a03661..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/main.js +++ /dev/null @@ -1 +0,0 @@ -done(require('./one'), require('./two'));
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/one.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/one.js deleted file mode 100644 index bd816eaba4c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/one.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/two.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/two.js deleted file mode 100644 index 4bbffde1044..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/entry/two.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 2; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code.js deleted file mode 100644 index 8b97862b073..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test; -var spawn = require('child_process').spawn; -var path = require('path'); - -if (false) require('__32jlkbeep'); - -test('error code', function (t) { - t.plan(2); - - var cwd = process.cwd(); - process.chdir(__dirname); - - var ps = spawn(process.execPath, [ - path.resolve(__dirname, '../bin/cmd.js'), - path.resolve(__dirname, 'error_code/src.js') - ]); - var err = ''; - ps.stderr.on('data', function (buf) { err += buf }); - - ps.on('exit', function (code) { - t.notEqual(code, 0); - t.ok(/^SyntaxError:/m.test(err)); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code/src.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code/src.js deleted file mode 100644 index e85c07ccabf..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/error_code/src.js +++ /dev/null @@ -1,2 +0,0 @@ -var x = { -var y = 6; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export.js deleted file mode 100644 index 4b347e88985..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export.js +++ /dev/null @@ -1,52 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('only export require', function (t) { - t.plan(1); - var src = browserify().bundle(); - var c = {}; - vm.runInNewContext(src, c); - t.same(Object.keys(c), [ 'require' ]); -}); - -test('no exports when entries are defined', function (t) { - t.plan(1); - var src = browserify(__dirname + '/export/entry.js').bundle(); - var c = {}; - vm.runInNewContext(src, c); - t.same(c, {}); -}); - -test('override require export', function (t) { - t.plan(1); - var src = browserify({ exports : [ 'require' ] }) - .addEntry(__dirname + '/export/entry.js') - .bundle() - ; - var c = {}; - vm.runInNewContext(src, c); - t.same(Object.keys(c), [ 'require' ]); -}); - -test('override process export', function (t) { - t.plan(1); - var src = browserify({ exports : [ 'process' ] }) - .addEntry(__dirname + '/export/entry.js') - .bundle() - ; - var c = {}; - vm.runInNewContext(src, c); - t.same(Object.keys(c), [ 'process' ]); -}); - -test('override require and process export', function (t) { - t.plan(1); - var src = browserify({ exports : [ 'require', 'process' ] }) - .addEntry(__dirname + '/export/entry.js') - .bundle() - ; - var c = {}; - vm.runInNewContext(src, c); - t.same(Object.keys(c).sort(), [ 'require', 'process' ].sort()); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export/entry.js deleted file mode 100644 index 6f037f8a9c6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/export/entry.js +++ /dev/null @@ -1 +0,0 @@ -// nop diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field.js deleted file mode 100644 index a51b274d45d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field.js +++ /dev/null @@ -1,64 +0,0 @@ -var assert = require('assert'); -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('fieldString', function (t) { - t.plan(1); - - var dir = __dirname + '/field/'; - var src = browserify({ require : dir + '/string.js' }).bundle(); - - var c = {}; - vm.runInNewContext(src, c); - t.equal( - c.require('./string.js'), - 'browser' - ); - t.end(); -}); - -test('fieldObject', function (t) { - t.plan(1); - - var dir = __dirname + '/field/'; - var src = browserify({ require : dir + '/object.js' }).bundle(); - - var c = {}; - vm.runInNewContext(src, c); - t.equal( - c.require('./object.js'), - 'browser' - ); - t.end(); -}); - -test('missObject', function (t) { - t.plan(1); - - var dir = __dirname + '/field/'; - var src = browserify({ require : dir + '/miss.js' }).bundle(); - - var c = {}; - vm.runInNewContext(src, c); - t.equal( - c.require('./miss.js'), - '!browser' - ); - t.end(); -}); - -test('fieldSub', function (t) { - t.plan(1); - - var dir = __dirname + '/field/'; - var src = browserify({ require : dir + '/sub.js' }).bundle(); - - var c = {}; - vm.runInNewContext(src, c); - t.equal( - c.require('./sub.js'), - 'browser' - ); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/miss.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/miss.js deleted file mode 100644 index 36199904875..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/miss.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('z-miss') diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/browser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/browser.js deleted file mode 100644 index 84276557966..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/main.js deleted file mode 100644 index 219e0f97d21..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/main.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = '!browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/package.json deleted file mode 100644 index c1b67aedd55..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-miss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main" : "main.js", - "browserify" : {} -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/browser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/browser.js deleted file mode 100644 index 84276557966..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/main.js deleted file mode 100644 index 219e0f97d21..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/main.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = '!browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/package.json deleted file mode 100644 index 4c0f10bad17..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-object/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "main" : "main.js", - "browserify" : { - "main" : "browser.js" - } -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/browser.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/browser.js deleted file mode 100644 index 84276557966..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/main.js deleted file mode 100644 index 219e0f97d21..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/main.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = '!browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/package.json deleted file mode 100644 index 8647c0fb057..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-string/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main" : "main.js", - "browserify" : "browser.js" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/a.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/a.js deleted file mode 100644 index 0952f7666a1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/a.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./b'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/b.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/b.js deleted file mode 100644 index 84276557966..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/browser/b.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/main.js deleted file mode 100644 index 219e0f97d21..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/main.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = '!browser'; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/package.json deleted file mode 100644 index 4f4ed629183..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/node_modules/z-sub/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main" : "main.js", - "browserify" : "browser/a.js" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/object.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/object.js deleted file mode 100644 index c373dc9e422..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/object.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('z-object') diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/string.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/string.js deleted file mode 100644 index ee4c65d36f5..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/string.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('z-string') diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/sub.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/sub.js deleted file mode 100644 index 8c662a97f07..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/field/sub.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('z-sub') diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/jade.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/jade.js deleted file mode 100644 index 1419367ef2c..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/jade.js +++ /dev/null @@ -1,35 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var jade = require('jade'); -var test = require('tap').test; - -test('jade', function (t) { - t.plan(5); - var b = browserify({ - require : 'jade', - ignore : [ - 'coffee-script', 'less', 'sass', 'stylus', 'markdown', 'discount', - 'markdown-js' - ] - }); - var src = b.bundle(); - - t.ok(typeof src === 'string'); - t.ok(src.length > 0); - - var c = { console : console }; - vm.runInNewContext(src, c); - var j = c.require('jade'); - t.deepEqual( - Object.keys(jade), - Object.keys(j) - ); - - jade.render('div #{x}\n span moo', { x : 42 }, function (err, r0) { - t.equal(r0, '<div>42<span>moo</span></div>'); - jade.render('div #{x}\n span moo', { x : 42 }, function (err, r1) { - t.equal(r0, r1); - t.end(); - }); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/maxlisteners.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/maxlisteners.js deleted file mode 100644 index cee5dc82e06..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/maxlisteners.js +++ /dev/null @@ -1,8 +0,0 @@ -var EventEmitter = require('../builtins/events').EventEmitter; -var test = require('tap').test; - -test('setMaxListener', function (t) { - var ee = new EventEmitter; - ee.setMaxListeners(5); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/middleware.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/middleware.js deleted file mode 100644 index 3aa401afb0f..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/middleware.js +++ /dev/null @@ -1,31 +0,0 @@ -var fs = require('fs'); -var vm = require('vm'); -var browserify = require('../'); -var test = require('tap').test; - -test('middleware', function (t) { - t.plan(1); - var bundle = browserify().use(function (b) { - b.files.middleware = { - target : '/node_modules/middleware/index.js', - body : 'module.exports = 555' - }; - }); - - bundle.require('middleware'); - - var src = bundle.bundle(); - var c = { console : console }; - vm.runInNewContext(src, c); - - t.equal(c.require('middleware'), 555); - t.end(); -}); - -test('fn', function (t) { - t.plan(2); - var b = browserify().append('doom'); - t.equal(typeof b, 'function'); - t.equal(typeof b.bundle, 'function'); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry.js deleted file mode 100644 index 5053261f877..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry.js +++ /dev/null @@ -1,20 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('multi entry', function (t) { - t.plan(3); - - var src = browserify(__dirname + '/multi_entry/a.js', { - entry : [ - __dirname + '/multi_entry/b.js', - __dirname + '/multi_entry/c.js' - ] - }).bundle(); - - var c = { - times : 0, - t : t - }; - vm.runInNewContext(src, c); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/a.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/a.js deleted file mode 100644 index d4e250ee928..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/a.js +++ /dev/null @@ -1,2 +0,0 @@ -times ++; -t.equal(times, 1); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/b.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/b.js deleted file mode 100644 index bed7bbbaff6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/b.js +++ /dev/null @@ -1,2 +0,0 @@ -times ++; -t.equal(times, 2); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/c.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/c.js deleted file mode 100644 index 2d0db3cc543..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_entry/c.js +++ /dev/null @@ -1,3 +0,0 @@ -times ++; -t.equal(times, 3); -t.end(); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_ignore.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_ignore.js deleted file mode 100755 index c78d106ae0d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/multi_ignore.js +++ /dev/null @@ -1,23 +0,0 @@ -var browserify = require('../');
-var test = require('tap').test;
-
-test('multi ignore', function (t) {
-
- var bundle = browserify(__dirname + '/multi_entry/a.js', {
- ignore : [
- __dirname + '/multi_entry/b.js'
- ]
- });
- t.ok(bundle.ignoring[__dirname + '/multi_entry/b.js']);
-
- bundle.ignore(__dirname + '/multi_entry/c.js');
- t.ok(bundle.ignoring[__dirname + '/multi_entry/b.js']);
- t.ok(bundle.ignoring[__dirname + '/multi_entry/c.js']);
-
- bundle.ignore(__dirname + '/multi_entry/d.js');
- t.ok(bundle.ignoring[__dirname + '/multi_entry/b.js']);
- t.ok(bundle.ignoring[__dirname + '/multi_entry/c.js']);
- t.ok(bundle.ignoring[__dirname + '/multi_entry/d.js']);
-
- t.end();
-});
diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/node_modules/beep/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/node_modules/beep/index.js deleted file mode 100644 index 2d3c19425e2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/node_modules/beep/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'boop' diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/retarget.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/retarget.js deleted file mode 100644 index 6e57bf518b2..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/retarget.js +++ /dev/null @@ -1,27 +0,0 @@ -var test = require('tap').test; -var spawn = require('child_process').spawn; -var path = require('path'); -var vm = require('vm'); - -test('retarget with -r', function (t) { - t.plan(2); - - var cwd = process.cwd(); - process.chdir(__dirname); - - var ps = spawn(process.execPath, [ - path.resolve(__dirname, '../bin/cmd.js'), - '-r', 'beep', - '--exports=require' - ]); - var src = ''; - ps.stdout.on('data', function (buf) { src += buf }); - - ps.on('exit', function (code) { - t.equal(code, 0); - - var c = {}; - vm.runInNewContext(src, c); - t.equal(c.require('beep'), 'boop'); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/seq.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/seq.js deleted file mode 100644 index 523b9dddc9d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/seq.js +++ /dev/null @@ -1,47 +0,0 @@ -var connect = require('connect'); -var http = require('http'); -var vm = require('vm'); -var browserify = require('../'); -var test = require('tap').test; - -test('seq', function (t) { - t.plan(2); - - var port = 10000 + Math.floor(Math.random() * (Math.pow(2,16) - 10000)); - var server = connect.createServer(); - - server.use(browserify({ - mount : '/bundle.js', - require : [ 'seq' ], - })); - - server.listen(port, makeRequest); - - function makeRequest () { - var req = { host : 'localhost', port : port, path : '/bundle.js' }; - http.get(req, function (res) { - t.equal(res.statusCode, 200); - server.close(); - - var context = { setTimeout : setTimeout }; - - var src = ''; - res.on('data', function (buf) { - src += buf.toString(); - }); - - res.on('end', function () { - vm.runInNewContext(src, context); - context.require('seq')([1,2,3]) - .parMap(function (x) { - this(null, x * 100) - }) - .seq(function () { - t.deepEqual(this.stack, [100,200,300]); - t.end(); - }) - ; - }); - }); - } -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep.js deleted file mode 100644 index 8c7470809ab..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep.js +++ /dev/null @@ -1,26 +0,0 @@ -var browserify = require('../'); -var vm = require('vm'); -var test = require('tap').test; - -test('subdep', function (t) { - t.plan(1); - - var src = browserify.bundle({ require : __dirname + '/subdep/index.js' }); - var c = {}; - vm.runInNewContext(src, c); - t.deepEqual( - Object.keys(c.require.modules).sort(), - [ - '/package.json', - '/index.js', - '/node_modules/qq/package.json', - '/node_modules/qq/b.js', - '/node_modules/qq/node_modules/a/package.json', - '/node_modules/qq/node_modules/a/index.js', - '/node_modules/qq/node_modules/z/index.js', - 'path', - '__browserify_process' - ].sort() - ); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/index.js deleted file mode 100644 index f05301b7fc0..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('qq'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/package.json deleted file mode 100644 index 518d22aa96a..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/subdep/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "dependencies" : { - "qq" : "*" - }, - "main" : "index.js" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/util.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/util.js deleted file mode 100644 index 02ce8f4fa03..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/util.js +++ /dev/null @@ -1,48 +0,0 @@ -var browserify = require('../'); -var test = require('tap').test; -var util = require('util'); -var vm = require('vm'); - -test('util.inspect', function (t) { - t.plan(1); - var src = browserify().require('util').bundle(); - var c = {}; - vm.runInNewContext(src, c); - t.equal( - c.require('util').inspect([1,2,3]), - util.inspect([1,2,3]) - ); - t.end(); -}); - -test('util.inherits', function (t) { - t.plan(2); - var src = browserify().require('util').require('events').bundle(); - var c = {}; - vm.runInNewContext(src, c); - var EE = c.require('events').EventEmitter; - - function Beep () {} - c.require('util').inherits(Beep, EE); - var beep = new Beep; - - t.ok(beep instanceof Beep); - t.ok(beep instanceof EE); - t.end(); -}); - -test('util.inherits without Object.create', function (t) { - t.plan(2); - var src = browserify().require('util').require('events').bundle(); - var c = { Object : {} }; - vm.runInNewContext(src, c); - var EE = c.require('events').EventEmitter; - - function Beep () {} - c.require('util').inherits(Beep, EE); - var beep = new Beep; - - t.ok(beep instanceof Beep); - t.ok(beep instanceof EE); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch.js deleted file mode 100644 index d320444965b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch.js +++ /dev/null @@ -1,91 +0,0 @@ -var connect = require('connect'); -var http = require('http'); -var vm = require('vm'); -var fs = require('fs'); -var path = require('path'); -var test = require('tap').test; - -test('watch', function (t) { - t.plan(8); - - var port = 10000 + Math.floor(Math.random() * (Math.pow(2,16) - 10000)); - var server = connect.createServer(); - - var filters = 0; - - var bundle = require('../')({ - require : path.resolve(__dirname, 'watch/a.js'), - mount : '/bundle.js', - filter : function (src) { - filters ++; - if (filters === 2) t.ok(true, 'has 2'); - return src; - }, - watch : { interval : 100 }, - }); - server.use(bundle); - - server.use(connect.static(path.resolve(__dirname, 'watch'))); - - server.listen(port, function () { - setTimeout(compareSources, 1000); - }); - - function getBundle (cb) { - var req = { host : 'localhost', port : port, path : '/bundle.js' }; - setTimeout(function () { - http.get(req, function (res) { - t.equal(res.statusCode, 200); - - var src = ''; - res.on('data', function (buf) { - src += buf.toString(); - }); - - res.on('end', function () { - cb(src) - }); - }); - }, 50); - } - - function compareSources () { - getBundle(function (s1) { - var m0 = bundle.modified; - t.ok(m0); - - var c1 = {}; - vm.runInNewContext(s1, c1); - var a1 = c1.require('./a'); - - var a2 = Math.floor(Math.random() * 10000); - var s2_ = bundle.bundle(); - - getBundle(function (s2) { - t.notEqual(s1, s2, 'sources are equal'); - - var c2 = {}; - vm.runInNewContext(s2, c2); - var a2_ = c2.require('./a'); - - var m1 = bundle.modified; - t.ok(m1); - t.ok(m1 > m0); - - fs.writeFileSync( - path.resolve(__dirname, 'watch/a.js'), - 'module.exports = ' + a1 - ); - - server.close(); - t.deepEqual(a2, a2_); - t.end(); - }); - - fs.writeFileSync( - path.resolve(__dirname, 'watch/a.js'), - 'module.exports = ' + a2 - ); - }); - } -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch/a.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch/a.js deleted file mode 100644 index 767ad3e4d36..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/watch/a.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 1966
\ No newline at end of file diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap.js deleted file mode 100644 index e0e4767efad..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap.js +++ /dev/null @@ -1,43 +0,0 @@ -var path = require('path'); -var browserify = require('../'); -var test = require('tap').test; - -function filter (x) { - var s = path.resolve(__dirname, 'wrap/'); - return x.slice(0, s.length) === s; -} - -test('wrap', function (t) { - t.plan(1); - var files = browserify({ require : __dirname + '/wrap/a.js' }).files; - - t.deepEqual(Object.keys(files).filter(filter).sort(), [ - path.resolve(__dirname, 'wrap/a.js'), - path.resolve(__dirname, 'wrap/node_modules/b/main.js'), - path.resolve(__dirname, 'wrap/node_modules/b/package.json'), - path.resolve(__dirname, 'wrap/c.js'), - path.resolve(__dirname, 'wrap/x.js'), - ].sort()); - t.end(); -}); - -test('wrapArray', function (t) { - t.plan(1); - var files = browserify({ - require : [ - __dirname + '/wrap/a.js', - __dirname + '/wrap/skipme.js', - ] - }).files; - - t.deepEqual(Object.keys(files).filter(filter).sort(), [ - path.resolve(__dirname, 'wrap/a.js'), - path.resolve(__dirname, 'wrap/node_modules/b/main.js'), - path.resolve(__dirname, 'wrap/node_modules/b/package.json'), - path.resolve(__dirname, 'wrap/c.js'), - path.resolve(__dirname, 'wrap/x.js'), - path.resolve(__dirname, 'wrap/skipme.js'), - path.resolve(__dirname, 'wrap/node_modules/skipmetoo/index.js'), - ].sort()); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/a.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/a.js deleted file mode 100644 index ecbc2b418e1..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/a.js +++ /dev/null @@ -1,2 +0,0 @@ -var b = require('b'); -var c = require('./c'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/c.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/c.js deleted file mode 100644 index 4e973e6374b..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/c.js +++ /dev/null @@ -1 +0,0 @@ -require('vm'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/main.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/main.js deleted file mode 100644 index 61cc4899604..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/main.js +++ /dev/null @@ -1 +0,0 @@ -require('../../x.js'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/package.json b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/package.json deleted file mode 100644 index 27307c989bd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/b/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "main" : "main.js" -} diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/skipmetoo/index.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/skipmetoo/index.js deleted file mode 100644 index f7cc7e61766..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/node_modules/skipmetoo/index.js +++ /dev/null @@ -1 +0,0 @@ -require('../../skipme'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/skipme.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/skipme.js deleted file mode 100644 index fef29fa8bcd..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/skipme.js +++ /dev/null @@ -1 +0,0 @@ -require('skipmetoo'); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/x.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/x.js deleted file mode 100644 index e69de29bb2d..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/test/wrap/x.js +++ /dev/null diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/README.markdown b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/README.markdown deleted file mode 100644 index 7f52fd35771..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/README.markdown +++ /dev/null @@ -1,29 +0,0 @@ -browserify testling tests -========================= - -Make a [browserling](http://browserling.com) account to run this test through -[testling](http://testling.com). - -``` -$ ./test.sh -testling user: substack@gmail.com -Enter host password for user 'substack@gmail.com': -Bundling... done - -iexplore/7.0 0/0 0 % ok - Log: 15 -iexplore/8.0 0/0 0 % ok - Log: 16 -iexplore/9.0 0/0 0 % ok - Log: 1 -chrome/15.0 0/0 0 % ok - Log: 0 -firefox/7.0 0/0 0 % ok - Log: 1 -opera/11.5 0/0 0 % ok - Log: 0 -safari/5.1 0/0 0 % ok - Log: 3 - -total 0/0 0 % ok -``` diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/test.sh b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/test.sh deleted file mode 100755 index 9992bfdfff4..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/test.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -echo -n 'testling user: ' -read user - -stty -echo -echo -n 'password: ' -read pass -stty echo - -function tick () { - cat <(echo 'process={};') ../wrappers/process.js tick.js \ - | curl -sSNT- -u "$user:$pass" testling.com -} - -function util () { - tar -cf- util.js ../builtins/util.js | - curl -sSNT- -u "$user:$pass" \ - 'http://testling.com/?main=util.js&noinstrument=builtins/util.js' -} - -if test -z "$1"; then - tick - util -elif test "$1" == 'tick'; then - tick -elif test "$1" == 'util'; then - util -fi diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/tick.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/tick.js deleted file mode 100644 index 30f304d2bd8..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/tick.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('testling'); - -test('nextTick', function (t) { - var t0 = new Date; - process.nextTick(function () { - t.log(new Date - t0); - t.end(); - }); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/util.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/util.js deleted file mode 100644 index 8280cafa1a6..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/testling/util.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('testling'); -var util = require('./builtins/util'); -var EventEmitter = require('events').EventEmitter; - -test('util.inspect', function (t) { - t.plan(1); - t.equal(util.inspect([1,2,3]), '[ 1, 2, 3 ]'); - t.end(); -}); - -test('util.inherits', function (t) { - t.plan(2); - - function Beep () {} - util.inherits(Beep, EventEmitter); - var beep = new Beep; - - t.ok(beep instanceof Beep, 'is a Beep'); - t.ok( - (beep instanceof EventEmitter) || typeof beep.emit === 'function', - 'is an EventEmitter' - ); - t.end(); -}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/alias.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/alias.js deleted file mode 100644 index cb669193170..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/alias.js +++ /dev/null @@ -1 +0,0 @@ -require.alias($from, $to); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body.js deleted file mode 100644 index b1c3cf4a824..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body.js +++ /dev/null @@ -1 +0,0 @@ -require.define($__filename,function(require,module,exports,__dirname,__filename,process){$body}); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body_debug.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body_debug.js deleted file mode 100644 index 8610eb337fc..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/body_debug.js +++ /dev/null @@ -1 +0,0 @@ -require.define($__filename,Function(['require','module','exports','__dirname','__filename','process'],$body)); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry.js deleted file mode 100644 index 66d83b8a212..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry.js +++ /dev/null @@ -1,2 +0,0 @@ -require.define($__filename,function(require,module,exports,__dirname,__filename,process){$body}); -require($__filename); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry_debug.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry_debug.js deleted file mode 100644 index fdab8ff03ed..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/entry_debug.js +++ /dev/null @@ -1,2 +0,0 @@ -require.define($__filename,Function(['require','module','exports','__dirname','__filename','process'],$body)); -require($__filename); diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/package.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/package.js deleted file mode 100644 index 275936c9e74..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/package.js +++ /dev/null @@ -1,3 +0,0 @@ -require.modules[$__filename] = function () { - return $body; -}; diff --git a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/prelude.js b/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/prelude.js deleted file mode 100644 index 7cb6291a422..00000000000 --- a/deps/npm/test/packages/npm-test-platform/node_modules/browserify/wrappers/prelude.js +++ /dev/null @@ -1,176 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = $extensions; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - cwd = path.resolve('/', cwd); - var y = cwd || '/'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - x = path.normalize(x); - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = path.normalize(x + '/package.json'); - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -(function () { - var process = {}; - - require.define = function (filename, fn) { - if (require.modules.__browserify_process) { - process = require.modules.__browserify_process(); - } - - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename, - process - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; - }; -})(); diff --git a/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/index.js b/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/index.js deleted file mode 100644 index 9ef57a59fc2..00000000000 --- a/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/index.js +++ /dev/null @@ -1,10 +0,0 @@ -/**package - * { "name": "npm-test-single-file" - * , "main": "index.js" - * , "version": "1.2.3" - * , "description":"No package.json in sight!" - * , "dependencies": { "minimatch": "*" } - * } - **/ - -module.exports = "I'm just a lonely index, naked as the day I was born." diff --git a/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/package.json b/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/package.json deleted file mode 100644 index e1fd93f9e1f..00000000000 --- a/deps/npm/test/packages/npm-test-shrinkwrap/node_modules/npm-test-single-file/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "npm-test-single-file", - "main": "index.js", - "version": "1.2.3", - "description": "No package.json in sight!", - "dependencies": { - "minimatch": "*" - }, - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "_id": "npm-test-single-file@1.2.3", - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.1.4", - "_nodeVersion": "v0.7.6-pre", - "_defaultsLoaded": true, - "dist": { - "shasum": "5b9c9b369eeedd42c43f057504e54aef1f37948f" - }, - "_from": "npm-test-single-file@https://raw.github.com/gist/1837112/index.js" -} |