aboutsummaryrefslogtreecommitdiffstats
path: root/dgbuilder/dgeflows/node_modules/serve-favicon
diff options
context:
space:
mode:
authorTimoney, Daniel (dt5972) <dtimoney@att.com>2017-02-15 10:37:53 -0500
committerTimoney, Daniel (dt5972) <dtimoney@att.com>2017-02-15 10:40:37 -0500
commit324ee36fe31763e507b422ab0a88e4230045e205 (patch)
treed0b04520f6657601c918ce63fd27575977624187 /dgbuilder/dgeflows/node_modules/serve-favicon
parentf0c97e8db427481e28c0a16b789bc73801b35e47 (diff)
Initial commit for OpenECOMP SDN-C OA&M
Change-Id: I7ab579fd0d206bf356f36d52dcdf4f71f1fa2680 Signed-off-by: Timoney, Daniel (dt5972) <dtimoney@att.com> Former-commit-id: 2a9f0edd09581f907e62ec4689b5ac94dd5382ba
Diffstat (limited to 'dgbuilder/dgeflows/node_modules/serve-favicon')
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/HISTORY.md89
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/LICENSE25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/README.md120
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/index.js167
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/HISTORY.md55
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/LICENSE22
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/README.md141
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/index.js171
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/.npmignore5
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/LICENSE22
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/README.md98
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc.js71
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc1.js21
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_modbus.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc24.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc32.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8_1wire.js25
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/create.js11
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/hex.js9
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/index.js11
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/package.json56
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/package.json75
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/HISTORY.md24
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/LICENSE22
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/README.md58
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/index.js53
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/package.json76
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/.npmignore5
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/LICENSE20
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/README.md35
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/index.js123
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/package.json47
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/.npmignore4
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/HISTORY.md42
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/LICENSE24
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/README.md107
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/index.js136
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/package.json80
-rw-r--r--dgbuilder/dgeflows/node_modules/serve-favicon/package.json70
42 files changed, 2270 insertions, 0 deletions
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/HISTORY.md b/dgbuilder/dgeflows/node_modules/serve-favicon/HISTORY.md
new file mode 100644
index 00000000..a96a3445
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/HISTORY.md
@@ -0,0 +1,89 @@
+2.2.0 / 2014-12-18
+==================
+
+ * Support query string in the URL
+ * deps: etag@~1.5.1
+ - deps: crc@3.2.1
+ * deps: ms@0.7.0
+ - Add `milliseconds`
+ - Add `msecs`
+ - Add `secs`
+ - Add `mins`
+ - Add `hrs`
+ - Add `yrs`
+
+2.1.7 / 2014-11-19
+==================
+
+ * Avoid errors from enumerables on `Object.prototype`
+
+2.1.6 / 2014-10-16
+==================
+
+ * deps: etag@~1.5.0
+
+2.1.5 / 2014-09-24
+==================
+
+ * deps: etag@~1.4.0
+
+2.1.4 / 2014-09-15
+==================
+
+ * Fix content headers being sent in 304 response
+ * deps: etag@~1.3.1
+ - Improve ETag generation speed
+
+2.1.3 / 2014-09-07
+==================
+
+ * deps: fresh@0.2.4
+
+2.1.2 / 2014-09-05
+==================
+
+ * deps: etag@~1.3.0
+ - Improve ETag generation speed
+
+2.1.1 / 2014-08-25
+==================
+
+ * Fix `ms` to be listed as a dependency
+
+2.1.0 / 2014-08-24
+==================
+
+ * Accept string for `maxAge` (converted by `ms`)
+ * Use `etag` to generate `ETag` header
+
+2.0.1 / 2014-06-05
+==================
+
+ * Reduce byte size of `ETag` header
+
+2.0.0 / 2014-05-02
+==================
+
+ * `path` argument is required; there is no default icon.
+ * Accept `Buffer` of icon as first argument.
+ * Non-GET and HEAD requests are denied.
+ * Send valid max-age value
+ * Support conditional requests
+ * Support max-age=0
+ * Support OPTIONS method
+ * Throw if `path` argument is directory.
+
+1.0.2 / 2014-03-16
+==================
+
+ * Fixed content of default icon.
+
+1.0.1 / 2014-03-11
+==================
+
+ * Fixed path to default icon.
+
+1.0.0 / 2014-02-15
+==================
+
+ * Initial release
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/LICENSE
new file mode 100644
index 00000000..813ed6c1
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/LICENSE
@@ -0,0 +1,25 @@
+(The MIT License)
+
+Copyright (c) 2010 Sencha Inc.
+Copyright (c) 2011 LearnBoost
+Copyright (c) 2011 TJ Holowaychuk
+Copyright (c) 2014 Douglas Christopher Wilson
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/README.md
new file mode 100644
index 00000000..cb70b027
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/README.md
@@ -0,0 +1,120 @@
+# serve-favicon
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+[![Gittip][gittip-image]][gittip-url]
+
+Node.js middleware for serving a favicon.
+
+Why use this module?
+
+ - User agents request `favicon.ico` frequently and indiscriminately, so you
+ may wish to exclude these requests from your logs by using this middleware
+ before your logger middleware.
+ - This module caches the icon in memory to improve performance by skipping
+ disk access.
+ - This module provides an `ETag` based on the contents of the icon, rather
+ than file system properties.
+ - This module will serve with the most compatible `Content-Type`.
+
+## Install
+
+```bash
+npm install serve-favicon
+```
+
+## API
+
+### favicon(path, options)
+
+Create new middleware to serve a favicon from the given `path` to a favicon file.
+`path` may also be a `Buffer` of the icon to serve.
+
+#### Options
+
+Serve favicon accepts these properties in the options object.
+
+##### maxAge
+
+The `cache-control` `max-age` directive in `ms`, defaulting to 1 day. This can
+also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme)
+module.
+
+## Examples
+
+Typically this middleware will come very early in your stack (maybe even first)
+to avoid processing any other middleware if we already know the request is for
+`/favicon.ico`.
+
+### express
+
+```javascript
+var express = require('express');
+var favicon = require('serve-favicon');
+
+var app = express();
+app.use(favicon(__dirname + '/public/favicon.ico'));
+
+// Add your routes here, etc.
+
+app.listen(3000);
+```
+
+### connect
+
+```javascript
+var connect = require('connect');
+var favicon = require('serve-favicon');
+
+var app = connect();
+app.use(favicon(__dirname + '/public/favicon.ico'));
+
+// Add your middleware here, etc.
+
+app.listen(3000);
+```
+
+### vanilla http server
+
+This middleware can be used anywhere, even outside express/connect. It takes
+`req`, `res`, and `callback`.
+
+```javascript
+var http = require('http');
+var favicon = require('serve-favicon');
+var finalhandler = require('finalhandler');
+
+var _favicon = favicon(__dirname + '/public/favicon.ico');
+
+var server = http.createServer(function onRequest(req, res) {
+ var done = finalhandler(req, res);
+
+ _favicon(req, res, function onNext(err) {
+ if (err) return done(err);
+
+ // continue to process the request here, etc.
+
+ res.statusCode = 404;
+ res.end('oops');
+ });
+});
+
+server.listen(3000);
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/serve-favicon.svg?style=flat
+[npm-url]: https://npmjs.org/package/serve-favicon
+[travis-image]: https://img.shields.io/travis/expressjs/serve-favicon.svg?style=flat
+[travis-url]: https://travis-ci.org/expressjs/serve-favicon
+[coveralls-image]: https://img.shields.io/coveralls/expressjs/serve-favicon.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/expressjs/serve-favicon?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/serve-favicon.svg?style=flat
+[downloads-url]: https://npmjs.org/package/serve-favicon
+[gittip-image]: https://img.shields.io/gittip/dougwilson.svg?style=flat
+[gittip-url]: https://www.gittip.com/dougwilson/
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/index.js
new file mode 100644
index 00000000..b83e85f4
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/index.js
@@ -0,0 +1,167 @@
+/*!
+ * serve-favicon
+ * Copyright(c) 2010 Sencha Inc.
+ * Copyright(c) 2011 TJ Holowaychuk
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies.
+ * @private
+ */
+
+var etag = require('etag');
+var fresh = require('fresh');
+var fs = require('fs');
+var ms = require('ms');
+var parseUrl = require('parseurl');
+var path = require('path');
+var resolve = path.resolve;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var maxMaxAge = 60 * 60 * 24 * 365 * 1000; // 1 year
+
+/**
+ * Serves the favicon located by the given `path`.
+ *
+ * @public
+ * @param {String|Buffer} path
+ * @param {Object} options
+ * @return {Function} middleware
+ */
+
+module.exports = function favicon(path, options){
+ options = options || {};
+
+ var buf;
+ var icon; // favicon cache
+ var maxAge = calcMaxAge(options.maxAge);
+ var stat;
+
+ if (!path) throw new TypeError('path to favicon.ico is required');
+
+ if (Buffer.isBuffer(path)) {
+ buf = new Buffer(path.length);
+ path.copy(buf);
+
+ icon = createIcon(buf, maxAge);
+ } else if (typeof path === 'string') {
+ path = resolve(path);
+ stat = fs.statSync(path);
+ if (stat.isDirectory()) throw createIsDirError(path);
+ } else {
+ throw new TypeError('path to favicon.ico must be string or buffer');
+ }
+
+ return function favicon(req, res, next){
+ if (parseUrl(req).pathname !== '/favicon.ico') {
+ next();
+ return;
+ }
+
+ if ('GET' !== req.method && 'HEAD' !== req.method) {
+ var status = 'OPTIONS' === req.method ? 200 : 405;
+ res.writeHead(status, {'Allow': 'GET, HEAD, OPTIONS'});
+ res.end();
+ return;
+ }
+
+ if (icon) return send(req, res, icon);
+
+ fs.readFile(path, function(err, buf){
+ if (err) return next(err);
+ icon = createIcon(buf, maxAge);
+ send(req, res, icon);
+ });
+ };
+};
+
+/**
+ * Calculate the max-age from a configured value.
+ *
+ * @private
+ * @param {string|number} val
+ * @return {number}
+ */
+
+function calcMaxAge(val) {
+ var num = typeof val === 'string'
+ ? ms(val)
+ : val;
+
+ return num != null
+ ? Math.min(Math.max(0, num), maxMaxAge)
+ : maxMaxAge
+}
+
+/**
+ * Create icon data from Buffer and max-age.
+ *
+ * @private
+ * @param {Buffer} buf
+ * @param {number} maxAge
+ * @return {object}
+ */
+
+function createIcon(buf, maxAge) {
+ return {
+ body: buf,
+ headers: {
+ 'Cache-Control': 'public, max-age=' + ~~(maxAge / 1000),
+ 'ETag': etag(buf)
+ }
+ };
+}
+
+/**
+ * Create EISDIR error.
+ *
+ * @private
+ * @param {string} path
+ * @return {Error}
+ */
+
+function createIsDirError(path) {
+ var error = new Error('EISDIR, illegal operation on directory \'' + path + '\'');
+ error.code = 'EISDIR';
+ error.errno = 28;
+ error.path = path;
+ error.syscall = 'open';
+ return error;
+}
+
+/**
+ * Send icon data in response to a request.
+ *
+ * @private
+ * @param {IncomingMessage} req
+ * @param {OutgoingMessage} res
+ * @param {object} icon
+ */
+
+function send(req, res, icon) {
+ var headers = icon.headers;
+
+ // Set headers
+ var keys = Object.keys(headers);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ res.setHeader(key, headers[key]);
+ }
+
+ if (fresh(req.headers, res._headers)) {
+ res.statusCode = 304;
+ res.end();
+ return;
+ }
+
+ res.statusCode = 200;
+ res.setHeader('Content-Length', icon.body.length);
+ res.setHeader('Content-Type', 'image/x-icon');
+ res.end(icon.body);
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/HISTORY.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/HISTORY.md
new file mode 100644
index 00000000..10cf5040
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/HISTORY.md
@@ -0,0 +1,55 @@
+1.5.1 / 2014-11-19
+==================
+
+ * deps: crc@3.2.1
+ - Minor fixes
+
+1.5.0 / 2014-10-14
+==================
+
+ * Improve string performance
+ * Slightly improve speed for weak ETags over 1KB
+
+1.4.0 / 2014-09-21
+==================
+
+ * Support "fake" stats objects
+ * Support Node.js 0.6
+
+1.3.1 / 2014-09-14
+==================
+
+ * Use the (new and improved) `crc` for crc32
+
+1.3.0 / 2014-08-29
+==================
+
+ * Default strings to strong ETags
+ * Improve speed for weak ETags over 1KB
+
+1.2.1 / 2014-08-29
+==================
+
+ * Use the (much faster) `buffer-crc32` for crc32
+
+1.2.0 / 2014-08-24
+==================
+
+ * Add support for file stat objects
+
+1.1.0 / 2014-08-24
+==================
+
+ * Add fast-path for empty entity
+ * Add weak ETag generation
+ * Shrink size of generated ETags
+
+1.0.1 / 2014-08-24
+==================
+
+ * Fix behavior of string containing Unicode
+
+1.0.0 / 2014-05-18
+==================
+
+ * Initial release
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/LICENSE
new file mode 100644
index 00000000..b7dce6cf
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2014 Douglas Christopher Wilson
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/README.md
new file mode 100644
index 00000000..68c16d5c
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/README.md
@@ -0,0 +1,141 @@
+# etag
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+Create simple ETags
+
+## Installation
+
+```sh
+$ npm install etag
+```
+
+## API
+
+```js
+var etag = require('etag')
+```
+
+### etag(entity, [options])
+
+Generate a strong ETag for the given entity. This should be the complete
+body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By
+default, a strong ETag is generated except for `fs.Stats`, which will
+generate a weak ETag (this can be overwritten by `options.weak`).
+
+```js
+res.setHeader('ETag', etag(body))
+```
+
+#### Options
+
+`etag` accepts these properties in the options object.
+
+##### weak
+
+Specifies if a "strong" or a "weak" ETag will be generated. The ETag can only
+really be a strong as the given input.
+
+## Testing
+
+```sh
+$ npm test
+```
+
+## Benchmark
+
+```bash
+$ npm run-script bench
+
+> etag@1.5.1 bench nodejs-etag
+> node benchmark/index.js
+
+> node benchmark/body0-100b.js
+
+ 100B body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+ buffer - strong x 425,007 ops/sec ±1.47% (184 runs sampled)
+* buffer - weak x 1,009,859 ops/sec ±0.18% (197 runs sampled)
+ string - strong x 442,096 ops/sec ±1.20% (181 runs sampled)
+ string - weak x 325,063 ops/sec ±0.31% (192 runs sampled)
+
+> node benchmark/body1-1kb.js
+
+ 1KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+ buffer - strong x 263,069 ops/sec ±1.60% (190 runs sampled)
+* buffer - weak x 295,732 ops/sec ±0.43% (199 runs sampled)
+ string - strong x 274,822 ops/sec ±1.15% (191 runs sampled)
+ string - weak x 169,473 ops/sec ±1.59% (194 runs sampled)
+
+> node benchmark/body2-5kb.js
+
+ 5KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+ buffer - strong x 104,299 ops/sec ±0.60% (193 runs sampled)
+* buffer - weak x 108,126 ops/sec ±0.65% (196 runs sampled)
+ string - strong x 101,736 ops/sec ±0.78% (194 runs sampled)
+ string - weak x 101,266 ops/sec ±0.85% (192 runs sampled)
+
+> node benchmark/body3-10kb.js
+
+ 10KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+ buffer - strong x 59,007 ops/sec ±0.29% (198 runs sampled)
+* buffer - weak x 60,968 ops/sec ±0.48% (197 runs sampled)
+ string - strong x 51,873 ops/sec ±1.78% (178 runs sampled)
+ string - weak x 52,307 ops/sec ±2.63% (193 runs sampled)
+
+> node benchmark/body4-100kb.js
+
+ 100KB body
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+ 4 tests completed.
+
+ buffer - strong x 6,712 ops/sec ±0.11% (198 runs sampled)
+* buffer - weak x 6,716 ops/sec ±0.50% (196 runs sampled)
+ string - strong x 6,397 ops/sec ±0.36% (196 runs sampled)
+ string - weak x 6,635 ops/sec ±0.15% (198 runs sampled)
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/etag.svg?style=flat
+[npm-url]: https://npmjs.org/package/etag
+[node-version-image]: https://img.shields.io/node/v/etag.svg?style=flat
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/etag.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/etag
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/etag.svg?style=flat
+[downloads-url]: https://npmjs.org/package/etag
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/index.js
new file mode 100644
index 00000000..bb05eb7e
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/index.js
@@ -0,0 +1,171 @@
+/*!
+ * etag
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module exports.
+ */
+
+module.exports = etag
+
+/**
+ * Module dependencies.
+ */
+
+var crc = require('crc').crc32
+var crypto = require('crypto')
+var Stats = require('fs').Stats
+
+/**
+ * Module variables.
+ */
+
+var crc32threshold = 1000 // 1KB
+var NULL = new Buffer([0])
+var toString = Object.prototype.toString
+
+/**
+ * Create a simple ETag.
+ *
+ * @param {string|Buffer|Stats} entity
+ * @param {object} [options]
+ * @param {boolean} [options.weak]
+ * @return {String}
+ * @api public
+ */
+
+function etag(entity, options) {
+ if (entity == null) {
+ throw new TypeError('argument entity is required')
+ }
+
+ var isStats = isstats(entity)
+ var weak = options && typeof options.weak === 'boolean'
+ ? options.weak
+ : isStats
+
+ // support fs.Stats object
+ if (isStats) {
+ return stattag(entity, weak)
+ }
+
+ if (typeof entity !== 'string' && !Buffer.isBuffer(entity)) {
+ throw new TypeError('argument entity must be string, Buffer, or fs.Stats')
+ }
+
+ var hash = weak
+ ? weakhash(entity)
+ : stronghash(entity)
+
+ return weak
+ ? 'W/"' + hash + '"'
+ : '"' + hash + '"'
+}
+
+/**
+ * Determine if object is a Stats object.
+ *
+ * @param {object} obj
+ * @return {boolean}
+ * @api private
+ */
+
+function isstats(obj) {
+ // not even an object
+ if (obj === null || typeof obj !== 'object') {
+ return false
+ }
+
+ // genuine fs.Stats
+ if (obj instanceof Stats) {
+ return true
+ }
+
+ // quack quack
+ return 'atime' in obj && toString.call(obj.atime) === '[object Date]'
+ && 'ctime' in obj && toString.call(obj.ctime) === '[object Date]'
+ && 'mtime' in obj && toString.call(obj.mtime) === '[object Date]'
+ && 'ino' in obj && typeof obj.ino === 'number'
+ && 'size' in obj && typeof obj.size === 'number'
+}
+
+/**
+ * Generate a tag for a stat.
+ *
+ * @param {Buffer} entity
+ * @return {String}
+ * @api private
+ */
+
+function stattag(stat, weak) {
+ var mtime = stat.mtime.toISOString()
+ var size = stat.size.toString(16)
+
+ if (weak) {
+ return 'W/"' + size + '-' + crc(mtime) + '"'
+ }
+
+ var hash = crypto
+ .createHash('md5')
+ .update('file', 'utf8')
+ .update(NULL)
+ .update(size, 'utf8')
+ .update(NULL)
+ .update(mtime, 'utf8')
+ .digest('base64')
+
+ return '"' + hash + '"'
+}
+
+/**
+ * Generate a strong hash.
+ *
+ * @param {Buffer} entity
+ * @return {String}
+ * @api private
+ */
+
+function stronghash(entity) {
+ if (entity.length === 0) {
+ // fast-path empty
+ return '1B2M2Y8AsgTpgAmY7PhCfg=='
+ }
+
+ return crypto
+ .createHash('md5')
+ .update(entity, 'utf8')
+ .digest('base64')
+}
+
+/**
+ * Generate a weak hash.
+ *
+ * @param {Buffer} entity
+ * @return {String}
+ * @api private
+ */
+
+function weakhash(entity) {
+ if (entity.length === 0) {
+ // fast-path empty
+ return '0-0'
+ }
+
+ var len = typeof entity === 'string'
+ ? Buffer.byteLength(entity, 'utf8')
+ : entity.length
+
+ if (len <= crc32threshold) {
+ // crc32 plus length when it's fast
+ // crc(str) only accepts utf-8 encoding
+ return len.toString(16) + '-' + crc(entity).toString(16)
+ }
+
+ // use md4 for long strings
+ return crypto
+ .createHash('md4')
+ .update(entity, 'utf8')
+ .digest('base64')
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/.npmignore b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/.npmignore
new file mode 100644
index 00000000..57d4cb8a
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/.npmignore
@@ -0,0 +1,5 @@
+benchmark
+src
+test
+.travis.yml
+bitcoin.png
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/LICENSE
new file mode 100644
index 00000000..c49097c5
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright 2014 Alex Gorbatchev
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/README.md
new file mode 100644
index 00000000..6473cbd0
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/README.md
@@ -0,0 +1,98 @@
+# crc
+
+[![GitTip](http://img.shields.io/gittip/alexgorbatchev.svg?style=flat)](https://www.gittip.com/alexgorbatchev/)
+[![Dependency status](http://img.shields.io/david/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc)
+[![devDependency Status](http://img.shields.io/david/dev/alexgorbatchev/node-crc.svg?style=flat)](https://david-dm.org/alexgorbatchev/node-crc#info=devDependencies)
+[![Build Status](http://img.shields.io/travis/alexgorbatchev/node-crc.svg?style=flat&branch=master)](https://travis-ci.org/alexgorbatchev/node-crc)
+
+[![NPM](https://nodei.co/npm/crc.svg?style=flat)](https://npmjs.org/package/node-crc)
+
+Module for calculating Cyclic Redundancy Check (CRC).
+
+## Features
+
+* Full test suite comparing values against reference `pycrc` implementation.
+* Version 3.x is 3x to 4x faster than version 2.x.
+* Pure JavaScript implementation, no dependencies.
+* Provides CRC Tables for optimized calculations.
+* Provides support for the following CRC algorithms:
+ * CRC1 `crc.crc1(…)`
+ * CRC8 `crc.crc8(…)`
+ * CRC8 1-Wire `crc.crc81wire(…)`
+ * CRC16 `crc.crc16(…)`
+ * CRC16 CCITT `crc.crc16ccitt(…)`
+ * CRC16 Modbus `crc.crc16modbus(…)`
+ * CRC24 `crc.crc24(…)`
+ * CRC32 `crc.crc32(…)`
+
+## IMPORTANT
+
+If you've used `crc` module prior to version 2.x, you might have some inconsistentcies with the current implementation because it relied on very old code and wasn't checked against reference implementation. If you upgrading from 1.x, please take special care.
+
+## Support
+
+<a href="https://blockchain.info/address/1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ"><img src="bitcoin.png" width="150" align="right"/></a> Please support me on [GitTip](https://www.gittip.com/alexgorbatchev/). I've spend days developing and grooming this module and hope to spend more time. If you have bitcoin, please use the QR code or this wallet address [`1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ`](https://blockchain.info/address/1CZyBREeHTmy8C5zVGHZHPwqBuWFmEuUCQ):
+
+## Installation
+
+ npm install crc
+
+## Running tests
+
+ $ npm install
+ $ npm test
+
+## Usage Example
+
+Calculate a CRC32:
+
+ var crc = require('crc');
+
+ crc.crc32('hello').toString(16);
+ # => "3610a686"
+
+Calculate a CRC32 of a file:
+
+ crc.crc32(fs.readFileSync('README.md', 'utf8')).toString(16);
+ # => "127ad531"
+
+Or using a `Buffer`:
+
+ crc.crc32(fs.readFileSync('README.md')).toString(16);
+ # => "127ad531"
+
+Incrementally calculate a CRC32:
+
+ value = crc32('one');
+ value = crc32('two', value);
+ value = crc32('three', value);
+ value.toString(16);
+ # => "09e1c092"
+
+## Thanks!
+
+[pycrc](http://www.tty1.net/pycrc/) library is which the source of all of the CRC tables.
+
+# License
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Alex Gorbatchev
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc.js
new file mode 100644
index 00000000..1c342b7e
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc.js
@@ -0,0 +1,71 @@
+// Generated by CoffeeScript 1.7.1
+var CRC, hex;
+
+hex = require('./hex');
+
+module.exports = CRC = (function() {
+ CRC.prototype.INIT_CRC = 0x00;
+
+ CRC.prototype.XOR_MASK = 0x00;
+
+ CRC.prototype.WIDTH = 0;
+
+ CRC.prototype.pack = function(crc) {
+ return '';
+ };
+
+ CRC.prototype.each_byte = function(buf, cb) {
+ var i, _i, _ref, _results;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ _results = [];
+ for (i = _i = 0, _ref = buf.length - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
+ _results.push(cb(buf[i]));
+ }
+ return _results;
+ };
+
+ function CRC() {
+ this.crc = this.INIT_CRC;
+ }
+
+ CRC.prototype.digest_length = function() {
+ return Math.ceil(this.WIDTH / 8.0);
+ };
+
+ CRC.prototype.update = function(data) {};
+
+ CRC.prototype.reset = function() {
+ return this.crc = this.INIT_CRC;
+ };
+
+ CRC.prototype.checksum = function(signed) {
+ var sum;
+ if (signed == null) {
+ signed = true;
+ }
+ sum = this.crc ^ this.XOR_MASK;
+ if (signed) {
+ sum = sum >>> 0;
+ }
+ return sum;
+ };
+
+ CRC.prototype.finish = function() {
+ return this.pack(this.checksum());
+ };
+
+ CRC.prototype.hexdigest = function(value) {
+ var result;
+ if (value != null) {
+ this.update(value);
+ }
+ result = this.finish();
+ this.reset();
+ return result;
+ };
+
+ return CRC;
+
+})();
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc1.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc1.js
new file mode 100644
index 00000000..f0945678
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc1.js
@@ -0,0 +1,21 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+module.exports = create('crc1', function(buf, previous) {
+ var accum, byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = ~~previous;
+ accum = 0;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ accum += byte;
+ }
+ crc += accum % 256;
+ return crc % 256;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16.js
new file mode 100644
index 00000000..a09cd1ef
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('crc-16', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = ~~previous;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = (TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)) & 0xffff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js
new file mode 100644
index 00000000..0bdb0bf6
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_ccitt.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('ccitt', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = previous != null ? ~~previous : 0xffff;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = (TABLE[((crc >> 8) ^ byte) & 0xff] ^ (crc << 8)) & 0xffff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_modbus.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_modbus.js
new file mode 100644
index 00000000..52a536a0
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc16_modbus.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('crc-16-modbus', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = previous != null ? ~~previous : 0xffff;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = (TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)) & 0xffff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc24.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc24.js
new file mode 100644
index 00000000..ff67bc1e
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc24.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x000000, 0x864cfb, 0x8ad50d, 0x0c99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, 0xa18139, 0x27cdc2, 0x2b5434, 0xad18cf, 0x3267d8, 0xb42b23, 0xb8b2d5, 0x3efe2e, 0xc54e89, 0x430272, 0x4f9b84, 0xc9d77f, 0x56a868, 0xd0e493, 0xdc7d65, 0x5a319e, 0x64cfb0, 0xe2834b, 0xee1abd, 0x685646, 0xf72951, 0x7165aa, 0x7dfc5c, 0xfbb0a7, 0x0cd1e9, 0x8a9d12, 0x8604e4, 0x00481f, 0x9f3708, 0x197bf3, 0x15e205, 0x93aefe, 0xad50d0, 0x2b1c2b, 0x2785dd, 0xa1c926, 0x3eb631, 0xb8faca, 0xb4633c, 0x322fc7, 0xc99f60, 0x4fd39b, 0x434a6d, 0xc50696, 0x5a7981, 0xdc357a, 0xd0ac8c, 0x56e077, 0x681e59, 0xee52a2, 0xe2cb54, 0x6487af, 0xfbf8b8, 0x7db443, 0x712db5, 0xf7614e, 0x19a3d2, 0x9fef29, 0x9376df, 0x153a24, 0x8a4533, 0x0c09c8, 0x00903e, 0x86dcc5, 0xb822eb, 0x3e6e10, 0x32f7e6, 0xb4bb1d, 0x2bc40a, 0xad88f1, 0xa11107, 0x275dfc, 0xdced5b, 0x5aa1a0, 0x563856, 0xd074ad, 0x4f0bba, 0xc94741, 0xc5deb7, 0x43924c, 0x7d6c62, 0xfb2099, 0xf7b96f, 0x71f594, 0xee8a83, 0x68c678, 0x645f8e, 0xe21375, 0x15723b, 0x933ec0, 0x9fa736, 0x19ebcd, 0x8694da, 0x00d821, 0x0c41d7, 0x8a0d2c, 0xb4f302, 0x32bff9, 0x3e260f, 0xb86af4, 0x2715e3, 0xa15918, 0xadc0ee, 0x2b8c15, 0xd03cb2, 0x567049, 0x5ae9bf, 0xdca544, 0x43da53, 0xc596a8, 0xc90f5e, 0x4f43a5, 0x71bd8b, 0xf7f170, 0xfb6886, 0x7d247d, 0xe25b6a, 0x641791, 0x688e67, 0xeec29c, 0x3347a4, 0xb50b5f, 0xb992a9, 0x3fde52, 0xa0a145, 0x26edbe, 0x2a7448, 0xac38b3, 0x92c69d, 0x148a66, 0x181390, 0x9e5f6b, 0x01207c, 0x876c87, 0x8bf571, 0x0db98a, 0xf6092d, 0x7045d6, 0x7cdc20, 0xfa90db, 0x65efcc, 0xe3a337, 0xef3ac1, 0x69763a, 0x578814, 0xd1c4ef, 0xdd5d19, 0x5b11e2, 0xc46ef5, 0x42220e, 0x4ebbf8, 0xc8f703, 0x3f964d, 0xb9dab6, 0xb54340, 0x330fbb, 0xac70ac, 0x2a3c57, 0x26a5a1, 0xa0e95a, 0x9e1774, 0x185b8f, 0x14c279, 0x928e82, 0x0df195, 0x8bbd6e, 0x872498, 0x016863, 0xfad8c4, 0x7c943f, 0x700dc9, 0xf64132, 0x693e25, 0xef72de, 0xe3eb28, 0x65a7d3, 0x5b59fd, 0xdd1506, 0xd18cf0, 0x57c00b, 0xc8bf1c, 0x4ef3e7, 0x426a11, 0xc426ea, 0x2ae476, 0xaca88d, 0xa0317b, 0x267d80, 0xb90297, 0x3f4e6c, 0x33d79a, 0xb59b61, 0x8b654f, 0x0d29b4, 0x01b042, 0x87fcb9, 0x1883ae, 0x9ecf55, 0x9256a3, 0x141a58, 0xefaaff, 0x69e604, 0x657ff2, 0xe33309, 0x7c4c1e, 0xfa00e5, 0xf69913, 0x70d5e8, 0x4e2bc6, 0xc8673d, 0xc4fecb, 0x42b230, 0xddcd27, 0x5b81dc, 0x57182a, 0xd154d1, 0x26359f, 0xa07964, 0xace092, 0x2aac69, 0xb5d37e, 0x339f85, 0x3f0673, 0xb94a88, 0x87b4a6, 0x01f85d, 0x0d61ab, 0x8b2d50, 0x145247, 0x921ebc, 0x9e874a, 0x18cbb1, 0xe37b16, 0x6537ed, 0x69ae1b, 0xefe2e0, 0x709df7, 0xf6d10c, 0xfa48fa, 0x7c0401, 0x42fa2f, 0xc4b6d4, 0xc82f22, 0x4e63d9, 0xd11cce, 0x575035, 0x5bc9c3, 0xdd8538];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('crc-24', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = previous != null ? ~~previous : 0xb704ce;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = (TABLE[((crc >> 16) ^ byte) & 0xff] ^ (crc << 8)) & 0xffffff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc32.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc32.js
new file mode 100644
index 00000000..20bc0247
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc32.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('crc-32', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = previous === 0 ? 0 : ~~previous ^ -1;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
+ }
+ return crc ^ -1;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8.js
new file mode 100644
index 00000000..6ebe77c2
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2, 0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea, 0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2, 0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a, 0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32, 0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a, 0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42, 0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a, 0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c, 0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4, 0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec, 0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4, 0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c, 0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44, 0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c, 0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34, 0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b, 0x76, 0x71, 0x78, 0x7f, 0x6a, 0x6d, 0x64, 0x63, 0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b, 0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13, 0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb, 0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8d, 0x84, 0x83, 0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb, 0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('crc-8', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = ~~previous;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = TABLE[(crc ^ byte) & 0xff] & 0xff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8_1wire.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8_1wire.js
new file mode 100644
index 00000000..b5612463
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/crc8_1wire.js
@@ -0,0 +1,25 @@
+// Generated by CoffeeScript 1.7.1
+var Buffer, TABLE, create;
+
+Buffer = require('buffer').Buffer;
+
+create = require('./create');
+
+TABLE = [0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6, 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b, 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35];
+
+if (typeof Int32Array !== 'undefined') {
+ TABLE = new Int32Array(TABLE);
+}
+
+module.exports = create('dallas-1-wire', function(buf, previous) {
+ var byte, crc, _i, _len;
+ if (!Buffer.isBuffer(buf)) {
+ buf = Buffer(buf);
+ }
+ crc = ~~previous;
+ for (_i = 0, _len = buf.length; _i < _len; _i++) {
+ byte = buf[_i];
+ crc = TABLE[(crc ^ byte) & 0xff] & 0xff;
+ }
+ return crc;
+});
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/create.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/create.js
new file mode 100644
index 00000000..2d856bd2
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/create.js
@@ -0,0 +1,11 @@
+// Generated by CoffeeScript 1.7.1
+module.exports = function(model, calc) {
+ var fn;
+ fn = function(buf, previous) {
+ return calc(buf, previous) >>> 0;
+ };
+ fn.signed = calc;
+ fn.unsigned = fn;
+ fn.model = model;
+ return fn;
+};
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/hex.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/hex.js
new file mode 100644
index 00000000..0a6aa4c5
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/hex.js
@@ -0,0 +1,9 @@
+// Generated by CoffeeScript 1.7.1
+module.exports = function(number) {
+ var result;
+ result = number.toString(16);
+ while (result.length % 2) {
+ result = "0" + result;
+ }
+ return result;
+};
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/index.js
new file mode 100644
index 00000000..15ac34cd
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/lib/index.js
@@ -0,0 +1,11 @@
+// Generated by CoffeeScript 1.7.1
+module.exports = {
+ crc1: require('./crc1'),
+ crc8: require('./crc8'),
+ crc81wire: require('./crc8_1wire'),
+ crc16: require('./crc16'),
+ crc16ccitt: require('./crc16_ccitt'),
+ crc16modbus: require('./crc16_modbus'),
+ crc24: require('./crc24'),
+ crc32: require('./crc32')
+};
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/package.json
new file mode 100644
index 00000000..7b2853d8
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/node_modules/crc/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "crc",
+ "version": "3.2.1",
+ "description": "Various CRC JavaScript implementations",
+ "keywords": [
+ "crc"
+ ],
+ "main": "./lib/index.js",
+ "scripts": {
+ "test": "mocha test/*.spec.coffee",
+ "pretest": "coffee --bare --output ./lib --compile ./src/*.coffee"
+ },
+ "author": {
+ "name": "Alex Gorbatchev",
+ "url": "https://github.com/alexgorbatchev"
+ },
+ "devDependencies": {
+ "beautify-benchmark": "^0.2.4",
+ "benchmark": "^1.0.0",
+ "buffer-crc32": "^0.2.3",
+ "chai": "~1.9.1",
+ "coffee-errors": "~0.8.6",
+ "coffee-script": "~1.7.1",
+ "mocha": "*",
+ "seedrandom": "^2.3.6"
+ },
+ "homepage": "https://github.com/alexgorbatchev/node-crc",
+ "bugs": {
+ "url": "https://github.com/alexgorbatchev/node-crc/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/alexgorbatchev/node-crc.git"
+ },
+ "license": "MIT",
+ "gitHead": "71caf362b061992bfe4ca8706ee264e764d2e88e",
+ "_id": "crc@3.2.1",
+ "_shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082",
+ "_from": "crc@3.2.1",
+ "_npmVersion": "1.4.13",
+ "_npmUser": {
+ "name": "alexgorbatchev",
+ "email": "alex.gorbatchev@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "alexgorbatchev",
+ "email": "alex.gorbatchev@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "5d9c8fb77a245cd5eca291e5d2d005334bab0082",
+ "tarball": "http://registry.npmjs.org/crc/-/crc-3.2.1.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz"
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/package.json
new file mode 100644
index 00000000..57e6f579
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/etag/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "etag",
+ "description": "Create simple ETags",
+ "version": "1.5.1",
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "David Björklund",
+ "email": "david.bjorklund@gmail.com"
+ }
+ ],
+ "license": "MIT",
+ "keywords": [
+ "etag",
+ "http",
+ "res"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/etag"
+ },
+ "dependencies": {
+ "crc": "3.2.1"
+ },
+ "devDependencies": {
+ "benchmark": "1.0.0",
+ "beautify-benchmark": "0.2.4",
+ "istanbul": "0.3.2",
+ "mocha": "~1.21.4",
+ "seedrandom": "~2.3.6"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "27335e2265388109e50a9f037452081dc8a8260f",
+ "bugs": {
+ "url": "https://github.com/jshttp/etag/issues"
+ },
+ "homepage": "https://github.com/jshttp/etag",
+ "_id": "etag@1.5.1",
+ "_shasum": "54c50de04ee42695562925ac566588291be7e9ea",
+ "_from": "etag@~1.5.1",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "54c50de04ee42695562925ac566588291be7e9ea",
+ "tarball": "http://registry.npmjs.org/etag/-/etag-1.5.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/etag/-/etag-1.5.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/HISTORY.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/HISTORY.md
new file mode 100644
index 00000000..56361df8
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/HISTORY.md
@@ -0,0 +1,24 @@
+0.2.4 / 2014-09-07
+==================
+
+ * Support Node.js 0.6
+
+0.2.3 / 2014-09-07
+==================
+
+ * Move repository to jshttp
+
+0.2.2 / 2014-02-19
+==================
+
+ * Revert "Fix for blank page on Safari reload"
+
+0.2.1 / 2014-01-29
+==================
+
+ * fix: support max-age=0 for end-to-end revalidation
+
+0.2.0 / 2013-08-11
+==================
+
+ * fix: return false for no-cache
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/LICENSE
new file mode 100644
index 00000000..f5273943
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/README.md
new file mode 100644
index 00000000..54a885fb
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/README.md
@@ -0,0 +1,58 @@
+# fresh
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Node.js Version][node-version-image]][node-version-url]
+[![Build Status][travis-image]][travis-url]
+[![Test Coverage][coveralls-image]][coveralls-url]
+
+HTTP response freshness testing
+
+## Installation
+
+```
+$ npm install fresh
+```
+
+## API
+
+```js
+var fresh = require('fresh')
+```
+
+### fresh(req, res)
+
+ Check freshness of `req` and `res` headers.
+
+ When the cache is "fresh" __true__ is returned,
+ otherwise __false__ is returned to indicate that
+ the cache is now stale.
+
+## Example
+
+```js
+var req = { 'if-none-match': 'tobi' };
+var res = { 'etag': 'luna' };
+fresh(req, res);
+// => false
+
+var req = { 'if-none-match': 'tobi' };
+var res = { 'etag': 'tobi' };
+fresh(req, res);
+// => true
+```
+
+## License
+
+[MIT](LICENSE)
+
+[npm-image]: https://img.shields.io/npm/v/fresh.svg?style=flat
+[npm-url]: https://npmjs.org/package/fresh
+[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat
+[node-version-url]: http://nodejs.org/download/
+[travis-image]: https://img.shields.io/travis/jshttp/fresh.svg?style=flat
+[travis-url]: https://travis-ci.org/jshttp/fresh
+[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh.svg?style=flat
+[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master
+[downloads-image]: https://img.shields.io/npm/dm/fresh.svg?style=flat
+[downloads-url]: https://npmjs.org/package/fresh
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/index.js
new file mode 100644
index 00000000..9c3f47d1
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/index.js
@@ -0,0 +1,53 @@
+
+/**
+ * Expose `fresh()`.
+ */
+
+module.exports = fresh;
+
+/**
+ * Check freshness of `req` and `res` headers.
+ *
+ * When the cache is "fresh" __true__ is returned,
+ * otherwise __false__ is returned to indicate that
+ * the cache is now stale.
+ *
+ * @param {Object} req
+ * @param {Object} res
+ * @return {Boolean}
+ * @api public
+ */
+
+function fresh(req, res) {
+ // defaults
+ var etagMatches = true;
+ var notModified = true;
+
+ // fields
+ var modifiedSince = req['if-modified-since'];
+ var noneMatch = req['if-none-match'];
+ var lastModified = res['last-modified'];
+ var etag = res['etag'];
+ var cc = req['cache-control'];
+
+ // unconditional request
+ if (!modifiedSince && !noneMatch) return false;
+
+ // check for no-cache cache request directive
+ if (cc && cc.indexOf('no-cache') !== -1) return false;
+
+ // parse if-none-match
+ if (noneMatch) noneMatch = noneMatch.split(/ *, */);
+
+ // if-none-match
+ if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0];
+
+ // if-modified-since
+ if (modifiedSince) {
+ modifiedSince = new Date(modifiedSince);
+ lastModified = new Date(lastModified);
+ notModified = lastModified <= modifiedSince;
+ }
+
+ return !! (etagMatches && notModified);
+} \ No newline at end of file
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/package.json
new file mode 100644
index 00000000..e25b3a7e
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/fresh/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "fresh",
+ "description": "HTTP response freshness testing",
+ "version": "0.2.4",
+ "author": {
+ "name": "TJ Holowaychuk",
+ "email": "tj@vision-media.ca",
+ "url": "http://tjholowaychuk.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "fresh",
+ "http",
+ "conditional",
+ "cache"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jshttp/fresh"
+ },
+ "devDependencies": {
+ "istanbul": "0",
+ "mocha": "1",
+ "should": "3"
+ },
+ "files": [
+ "HISTORY.md",
+ "LICENSE",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.6"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --require should",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --require should",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot --require should"
+ },
+ "gitHead": "8440a4ca75fb091dec06e88654b3b1c31d7e7164",
+ "bugs": {
+ "url": "https://github.com/jshttp/fresh/issues"
+ },
+ "homepage": "https://github.com/jshttp/fresh",
+ "_id": "fresh@0.2.4",
+ "_shasum": "3582499206c9723714190edd74b4604feb4a614c",
+ "_from": "fresh@0.2.4",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "jonathanong",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "3582499206c9723714190edd74b4604feb4a614c",
+ "tarball": "http://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz"
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/.npmignore b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/.npmignore
new file mode 100644
index 00000000..d1aa0ce4
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/.npmignore
@@ -0,0 +1,5 @@
+node_modules
+test
+History.md
+Makefile
+component.json
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/LICENSE
new file mode 100644
index 00000000..6c07561b
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/LICENSE
@@ -0,0 +1,20 @@
+(The MIT License)
+
+Copyright (c) 2014 Guillermo Rauch <rauchg@gmail.com>
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/README.md
new file mode 100644
index 00000000..0fd54fdc
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/README.md
@@ -0,0 +1,35 @@
+# ms.js: miliseconds conversion utility
+
+```js
+ms('2 days') // 172800000
+ms('1d') // 86400000
+ms('10h') // 36000000
+ms('2.5 hrs') // 9000000
+ms('2h') // 7200000
+ms('1m') // 60000
+ms('5s') // 5000
+ms('100') // 100
+```
+
+```js
+ms(60000) // "1m"
+ms(2 * 60000) // "2m"
+ms(ms('10 hours')) // "10h"
+```
+
+```js
+ms(60000, { long: true }) // "1 minute"
+ms(2 * 60000, { long: true }) // "2 minutes"
+ms(ms('10 hours'), { long: true }) // "10 hours"
+```
+
+- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](nodejs.org/download).
+- If a number is supplied to `ms`, a string with a unit is returned.
+- If a string that contains the number is supplied, it returns it as
+a number (e.g: it returns `100` for `'100'`).
+- If you pass a string with a number and a valid unit, the number of
+equivalent ms is returned.
+
+## License
+
+MIT
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/index.js
new file mode 100644
index 00000000..e79bfa18
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/index.js
@@ -0,0 +1,123 @@
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @param {String|Number} val
+ * @param {Object} options
+ * @return {String|Number}
+ * @api public
+ */
+
+module.exports = function(val, options){
+ options = options || {};
+ if ('string' == typeof val) return parse(val);
+ return options.long
+ ? long(val)
+ : short(val);
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @param {String} str
+ * @return {Number}
+ * @api private
+ */
+
+function parse(str) {
+ var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
+ if (!match) return;
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'yrs':
+ case 'yr':
+ case 'y':
+ return n * y;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'hrs':
+ case 'hr':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'mins':
+ case 'min':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 'secs':
+ case 'sec':
+ case 's':
+ return n * s;
+ case 'milliseconds':
+ case 'millisecond':
+ case 'msecs':
+ case 'msec':
+ case 'ms':
+ return n;
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function short(ms) {
+ if (ms >= d) return Math.round(ms / d) + 'd';
+ if (ms >= h) return Math.round(ms / h) + 'h';
+ if (ms >= m) return Math.round(ms / m) + 'm';
+ if (ms >= s) return Math.round(ms / s) + 's';
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @param {Number} ms
+ * @return {String}
+ * @api private
+ */
+
+function long(ms) {
+ return plural(ms, d, 'day')
+ || plural(ms, h, 'hour')
+ || plural(ms, m, 'minute')
+ || plural(ms, s, 'second')
+ || ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ */
+
+function plural(ms, n, name) {
+ if (ms < n) return;
+ if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
+ return Math.ceil(ms / n) + ' ' + name + 's';
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/package.json
new file mode 100644
index 00000000..ec3ea9b0
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/ms/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "ms",
+ "version": "0.7.0",
+ "description": "Tiny ms conversion utility",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/guille/ms.js.git"
+ },
+ "main": "./index",
+ "devDependencies": {
+ "mocha": "*",
+ "expect.js": "*",
+ "serve": "*"
+ },
+ "component": {
+ "scripts": {
+ "ms/index.js": "index.js"
+ }
+ },
+ "gitHead": "1e9cd9b05ef0dc26f765434d2bfee42394376e52",
+ "bugs": {
+ "url": "https://github.com/guille/ms.js/issues"
+ },
+ "homepage": "https://github.com/guille/ms.js",
+ "_id": "ms@0.7.0",
+ "scripts": {},
+ "_shasum": "865be94c2e7397ad8a57da6a633a6e2f30798b83",
+ "_from": "ms@0.7.0",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "rauchg",
+ "email": "rauchg@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "865be94c2e7397ad8a57da6a633a6e2f30798b83",
+ "tarball": "http://registry.npmjs.org/ms/-/ms-0.7.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/.npmignore b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/.npmignore
new file mode 100644
index 00000000..85c82a56
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/.npmignore
@@ -0,0 +1,4 @@
+benchmark/
+coverage/
+test/
+.travis.yml
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/HISTORY.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/HISTORY.md
new file mode 100644
index 00000000..65a08606
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/HISTORY.md
@@ -0,0 +1,42 @@
+1.3.0 / 2014-08-09
+==================
+
+ * Add `parseurl.original` for parsing `req.originalUrl` with fallback
+ * Return `undefined` if `req.url` is `undefined`
+
+1.2.0 / 2014-07-21
+==================
+
+ * Cache URLs based on original value
+ * Remove no-longer-needed URL mis-parse work-around
+ * Simplify the "fast-path" `RegExp`
+
+1.1.3 / 2014-07-08
+==================
+
+ * Fix typo
+
+1.1.2 / 2014-07-08
+==================
+
+ * Seriously fix Node.js 0.8 compatibility
+
+1.1.1 / 2014-07-08
+==================
+
+ * Fix Node.js 0.8 compatibility
+
+1.1.0 / 2014-07-08
+==================
+
+ * Incorporate URL href-only parse fast-path
+
+1.0.1 / 2014-03-08
+==================
+
+ * Add missing `require`
+
+1.0.0 / 2014-03-08
+==================
+
+ * Genesis from `connect`
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/LICENSE b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/LICENSE
new file mode 100644
index 00000000..ec7dfe7b
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/LICENSE
@@ -0,0 +1,24 @@
+
+(The MIT License)
+
+Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
+Copyright (c) 2014 Douglas Christopher Wilson <doug@somethingdoug.com>
+
+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/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/README.md b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/README.md
new file mode 100644
index 00000000..0db1d029
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/README.md
@@ -0,0 +1,107 @@
+# parseurl
+
+[![NPM version](https://badge.fury.io/js/parseurl.svg)](http://badge.fury.io/js/parseurl)
+[![Build Status](https://travis-ci.org/expressjs/parseurl.svg?branch=master)](https://travis-ci.org/expressjs/parseurl)
+[![Coverage Status](https://img.shields.io/coveralls/expressjs/parseurl.svg?branch=master)](https://coveralls.io/r/expressjs/parseurl)
+
+Parse a URL with memoization.
+
+## Install
+
+```bash
+$ npm install parseurl
+```
+
+## API
+
+```js
+var parseurl = require('parseurl')
+```
+
+### parseurl(req)
+
+Parse the URL of the given request object (looks at the `req.url` property)
+and return the result. The result is the same as `url.parse` in Node.js core.
+Calling this function multiple times on the same `req` where `req.url` does
+not change will return a cached parsed object, rather than parsing again.
+
+### parseurl.original(req)
+
+Parse the original URL of the given request object and return the result.
+This works by trying to parse `req.originalUrl` if it is a string, otherwise
+parses `req.url`. The result is the same as `url.parse` in Node.js core.
+Calling this function multiple times on the same `req` where `req.originalUrl`
+does not change will return a cached parsed object, rather than parsing again.
+
+## Benchmark
+
+```bash
+$ npm run-script bench
+
+> parseurl@1.3.0 bench nodejs-parseurl
+> node benchmark/index.js
+
+> node benchmark/fullurl.js
+
+ Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 1,290,780 ops/sec ±0.46% (195 runs sampled)
+ nativeurl x 56,401 ops/sec ±0.22% (196 runs sampled)
+ parseurl x 55,231 ops/sec ±0.22% (194 runs sampled)
+
+> node benchmark/pathquery.js
+
+ Parsing URL "/foo/bar?user=tj&pet=fluffy"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 1,986,668 ops/sec ±0.27% (190 runs sampled)
+ nativeurl x 98,740 ops/sec ±0.21% (195 runs sampled)
+ parseurl x 2,628,171 ops/sec ±0.36% (195 runs sampled)
+
+> node benchmark/samerequest.js
+
+ Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 2,184,468 ops/sec ±0.40% (194 runs sampled)
+ nativeurl x 99,437 ops/sec ±0.71% (194 runs sampled)
+ parseurl x 10,498,005 ops/sec ±0.61% (186 runs sampled)
+
+> node benchmark/simplepath.js
+
+ Parsing URL "/foo/bar"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 4,535,825 ops/sec ±0.27% (191 runs sampled)
+ nativeurl x 98,769 ops/sec ±0.54% (191 runs sampled)
+ parseurl x 4,164,865 ops/sec ±0.34% (192 runs sampled)
+
+> node benchmark/slash.js
+
+ Parsing URL "/"
+
+ 1 test completed.
+ 2 tests completed.
+ 3 tests completed.
+
+ fasturl x 4,908,405 ops/sec ±0.42% (191 runs sampled)
+ nativeurl x 100,945 ops/sec ±0.59% (188 runs sampled)
+ parseurl x 4,333,208 ops/sec ±0.27% (194 runs sampled)
+```
+
+## License
+
+ [MIT](LICENSE)
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/index.js b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/index.js
new file mode 100644
index 00000000..86323472
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/index.js
@@ -0,0 +1,136 @@
+/*!
+ * parseurl
+ * Copyright(c) 2014 Jonathan Ong
+ * Copyright(c) 2014 Douglas Christopher Wilson
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies.
+ */
+
+var url = require('url')
+var parse = url.parse
+var Url = url.Url
+
+/**
+ * Pattern for a simple path case.
+ * See: https://github.com/joyent/node/pull/7878
+ */
+
+var simplePathRegExp = /^(\/\/?(?!\/)[^\?#\s]*)(\?[^#\s]*)?$/
+
+/**
+ * Exports.
+ */
+
+module.exports = parseurl
+module.exports.original = originalurl
+
+/**
+ * Parse the `req` url with memoization.
+ *
+ * @param {ServerRequest} req
+ * @return {Object}
+ * @api public
+ */
+
+function parseurl(req) {
+ var url = req.url
+
+ if (url === undefined) {
+ // URL is undefined
+ return undefined
+ }
+
+ var parsed = req._parsedUrl
+
+ if (fresh(url, parsed)) {
+ // Return cached URL parse
+ return parsed
+ }
+
+ // Parse the URL
+ parsed = fastparse(url)
+ parsed._raw = url
+
+ return req._parsedUrl = parsed
+};
+
+/**
+ * Parse the `req` original url with fallback and memoization.
+ *
+ * @param {ServerRequest} req
+ * @return {Object}
+ * @api public
+ */
+
+function originalurl(req) {
+ var url = req.originalUrl
+
+ if (typeof url !== 'string') {
+ // Fallback
+ return parseurl(req)
+ }
+
+ var parsed = req._parsedOriginalUrl
+
+ if (fresh(url, parsed)) {
+ // Return cached URL parse
+ return parsed
+ }
+
+ // Parse the URL
+ parsed = fastparse(url)
+ parsed._raw = url
+
+ return req._parsedOriginalUrl = parsed
+};
+
+/**
+ * Parse the `str` url with fast-path short-cut.
+ *
+ * @param {string} str
+ * @return {Object}
+ * @api private
+ */
+
+function fastparse(str) {
+ // Try fast path regexp
+ // See: https://github.com/joyent/node/pull/7878
+ var simplePath = typeof str === 'string' && simplePathRegExp.exec(str)
+
+ // Construct simple URL
+ if (simplePath) {
+ var pathname = simplePath[1]
+ var search = simplePath[2] || null
+ var url = Url !== undefined
+ ? new Url()
+ : {}
+ url.path = str
+ url.href = str
+ url.pathname = pathname
+ url.search = search
+ url.query = search && search.substr(1)
+
+ return url
+ }
+
+ return parse(str)
+}
+
+/**
+ * Determine if parsed is still fresh for url.
+ *
+ * @param {string} url
+ * @param {object} parsedUrl
+ * @return {boolean}
+ * @api private
+ */
+
+function fresh(url, parsedUrl) {
+ return typeof parsedUrl === 'object'
+ && parsedUrl !== null
+ && (Url === undefined || parsedUrl instanceof Url)
+ && parsedUrl._raw === url
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/package.json
new file mode 100644
index 00000000..6fbd23e9
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/node_modules/parseurl/package.json
@@ -0,0 +1,80 @@
+{
+ "name": "parseurl",
+ "description": "parse a url with memoization",
+ "version": "1.3.0",
+ "author": {
+ "name": "Jonathan Ong",
+ "email": "me@jongleberry.com",
+ "url": "http://jongleberry.com"
+ },
+ "contributors": [
+ {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/expressjs/parseurl"
+ },
+ "license": "MIT",
+ "devDependencies": {
+ "benchmark": "1.0.0",
+ "beautify-benchmark": "0.2.4",
+ "fast-url-parser": "~1.0.0",
+ "istanbul": "0.3.0",
+ "mocha": "~1.21.4"
+ },
+ "scripts": {
+ "bench": "node benchmark/index.js",
+ "test": "mocha --check-leaks --bail --reporter spec test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"
+ },
+ "gitHead": "03b7ccca240e2bef5df6c25797e99175d28fb2cb",
+ "bugs": {
+ "url": "https://github.com/expressjs/parseurl/issues"
+ },
+ "homepage": "https://github.com/expressjs/parseurl",
+ "_id": "parseurl@1.3.0",
+ "_shasum": "b58046db4223e145afa76009e61bac87cc2281b3",
+ "_from": "parseurl@~1.3.0",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "jongleberry",
+ "email": "jonathanrichardong@gmail.com"
+ },
+ {
+ "name": "shtylman",
+ "email": "shtylman@gmail.com"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "mscdex",
+ "email": "mscdex@mscdex.net"
+ },
+ {
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "b58046db4223e145afa76009e61bac87cc2281b3",
+ "tarball": "http://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/dgbuilder/dgeflows/node_modules/serve-favicon/package.json b/dgbuilder/dgeflows/node_modules/serve-favicon/package.json
new file mode 100644
index 00000000..32a01cdd
--- /dev/null
+++ b/dgbuilder/dgeflows/node_modules/serve-favicon/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "serve-favicon",
+ "description": "favicon serving middleware with caching",
+ "version": "2.2.0",
+ "author": {
+ "name": "Douglas Christopher Wilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "license": "MIT",
+ "keywords": [
+ "express",
+ "favicon",
+ "middleware"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/expressjs/serve-favicon"
+ },
+ "dependencies": {
+ "etag": "~1.5.1",
+ "fresh": "0.2.4",
+ "ms": "0.7.0",
+ "parseurl": "~1.3.0"
+ },
+ "devDependencies": {
+ "istanbul": "0.3.5",
+ "mocha": "~2.0.1",
+ "proxyquire": "~1.2.0",
+ "supertest": "~0.15.0"
+ },
+ "files": [
+ "LICENSE",
+ "HISTORY.md",
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.8.0"
+ },
+ "scripts": {
+ "test": "mocha --reporter spec --bail --check-leaks test/",
+ "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/",
+ "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/"
+ },
+ "gitHead": "f34bf3992fb999894ce0c16353250e9eaafa7b56",
+ "bugs": {
+ "url": "https://github.com/expressjs/serve-favicon/issues"
+ },
+ "homepage": "https://github.com/expressjs/serve-favicon",
+ "_id": "serve-favicon@2.2.0",
+ "_shasum": "a0c25ee8a652e1a638a67db46269cd52a8705858",
+ "_from": "serve-favicon@~2.2.0",
+ "_npmVersion": "1.4.28",
+ "_npmUser": {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ },
+ "maintainers": [
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "dist": {
+ "shasum": "a0c25ee8a652e1a638a67db46269cd52a8705858",
+ "tarball": "http://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.2.0.tgz",
+ "readme": "ERROR: No README data found!"
+}