naugtur / blocked-at

Detects node eventloop block and reports where it started
MIT License
321 stars 25 forks source link

TypeError: Cannot set property 't0' of undefined #2

Closed amanthegreatone closed 7 years ago

amanthegreatone commented 7 years ago

Hi,

I am trying to implement this but getting an error. Not sure why

index.js in the server app

const blocked = require('blocked-at');

let result = [];
const { stop } = blocked((time, stack) => {
  result = result.concat(stack)
  console.log('blocked', time, stack);
});

getting the following error when i run the server locally

TypeError: Cannot set property 't0' of undefined
    at AsyncHook.before (/Users/developer/Syook/syook-tnt-server/node_modules/blocked-at/index.js:30:27)
    at emitBeforeNative (async_hooks.js:343:40)
    at emitBeforeScript (async_hooks.js:378:5)
    at process._tickDomainCallback (internal/process/next_tick.js:209:9)
    at Function.Module.runMain (module.js:611:11)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:598:3
naugtur commented 7 years ago

Thanks for reporting. Please add node version. And package lock if you can.

naugtur commented 7 years ago

I've created a branch with code that should be immune to this error. Please try:

npm install naugtur/blocked-at#undefined-proofing

and let me know if you can reproduce.

It'd be really helpful if you can share all the details of the case, as it seems like a bug in Async Hooks in Node.js (or at least a property worth documenting)

NeoPhi commented 7 years ago

I was seeing this on v8.2.1 and it was resolved using the branch above.

naugtur commented 7 years ago

good enough for me. I'll publish the fix.

But I'd appreciate details on how to reproduce, so I can dig deeper and maybe report to Node Core.

naugtur commented 7 years ago

fixed in v1.0.2

NeoPhi commented 7 years ago

I've been trying to create a minimal test case but so far am only seeing the issue in a more complex application.

naugtur commented 7 years ago

Quick tip: In case you didn't know, this only works at all if you have something asynchronous going on in the app. It won't be possible to have a synchronous test case reproduce anything.

amanthegreatone commented 7 years ago

i was using node 8.4.0

amanthegreatone commented 7 years ago

here is the package-lock.json

  "name": "node-server",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": {
    "accepts": {
      "version": "1.3.3",
      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
      "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
      "requires": {
        "mime-types": "2.1.15",
        "negotiator": "0.6.1"
      }
    },
    "addressparser": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
      "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y="
    },
    "ajv": {
      "version": "4.11.8",
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
      "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
      "requires": {
        "co": "4.6.0",
        "json-stable-stringify": "1.0.1"
      }
    },
    "ansi-regex": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
      "dev": true
    },
    "ansicolors": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz",
      "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=",
      "dev": true
    },
    "array-flatten": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
    },
    "array-uniq": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz",
      "integrity": "sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0="
    },
    "asap": {
      "version": "2.0.6",
      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
    },
    "asn1": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
    },
    "assert-plus": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
    },
    "async": {
      "version": "2.1.4",
      "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz",
      "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=",
      "requires": {
        "lodash": "4.17.4"
      }
    },
    "async-listener": {
      "version": "0.6.7",
      "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.7.tgz",
      "integrity": "sha512-6Bmzy9dHE1WWZdru7teS6kecmOy42cCzumQOn57vHa/49kjPMExdPLozDvr25J0hbQf5wMwFitJKnO7O3eqh2A==",
      "requires": {
        "semver": "5.4.1",
        "shimmer": "1.1.0"
      }
    },
    "async.ensureasync": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.ensureasync/-/async.ensureasync-0.5.2.tgz",
      "integrity": "sha1-w8fkpOmzHZaHXVa4UEWYRG4eMF0=",
      "requires": {
        "async.util.ensureasync": "0.5.2"
      }
    },
    "async.queue": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.queue/-/async.queue-0.5.2.tgz",
      "integrity": "sha1-jV2QgS4UgQZrwJBOjMFxKxfDvXw=",
      "requires": {
        "async.util.queue": "0.5.2"
      }
    },
    "async.util.arrayeach": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.arrayeach/-/async.util.arrayeach-0.5.2.tgz",
      "integrity": "sha1-WMTpgCjVXWm/sFrrOvROClVagpw="
    },
    "async.util.ensureasync": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.ensureasync/-/async.util.ensureasync-0.5.2.tgz",
      "integrity": "sha1-EJB/LL0GegYfma5tIuCM7TDbDWg=",
      "requires": {
        "async.util.restparam": "0.5.2",
        "async.util.setimmediate": "0.5.2"
      }
    },
    "async.util.isarray": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.isarray/-/async.util.isarray-0.5.2.tgz",
      "integrity": "sha1-5i2sjyY29lh13PdSHC0k0N+yu98="
    },
    "async.util.map": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.map/-/async.util.map-0.5.2.tgz",
      "integrity": "sha1-5YjvhuCzq18CfZevTWg10FXKadY="
    },
    "async.util.noop": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.noop/-/async.util.noop-0.5.2.tgz",
      "integrity": "sha1-vdYrl8sKo/YLWGrRSEaGmJdeWLk="
    },
    "async.util.onlyonce": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.onlyonce/-/async.util.onlyonce-0.5.2.tgz",
      "integrity": "sha1-uOb8AErckjFk154y8oE+5GXCT/I="
    },
    "async.util.queue": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.queue/-/async.util.queue-0.5.2.tgz",
      "integrity": "sha1-V/Zavho83yc9MavSirlUJfgiLuU=",
      "requires": {
        "async.util.arrayeach": "0.5.2",
        "async.util.isarray": "0.5.2",
        "async.util.map": "0.5.2",
        "async.util.noop": "0.5.2",
        "async.util.onlyonce": "0.5.2",
        "async.util.setimmediate": "0.5.2"
      }
    },
    "async.util.restparam": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.restparam/-/async.util.restparam-0.5.2.tgz",
      "integrity": "sha1-A+/r88Ane5ciDlJaunUPXgT8gM0="
    },
    "async.util.setimmediate": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/async.util.setimmediate/-/async.util.setimmediate-0.5.2.tgz",
      "integrity": "sha1-KBLrq/KlgCd1jUvHeT0cz68QJV8="
    },
    "asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
    },
    "aws-sdk": {
      "version": "2.115.0",
      "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.115.0.tgz",
      "integrity": "sha1-g3PXY2zEEqBMMzsnsdIR9Hjydvo=",
      "requires": {
        "buffer": "4.9.1",
        "crypto-browserify": "1.0.9",
        "events": "1.1.1",
        "jmespath": "0.15.0",
        "querystring": "0.2.0",
        "sax": "1.2.1",
        "url": "0.10.3",
        "uuid": "3.0.1",
        "xml2js": "0.4.17",
        "xmlbuilder": "4.2.1"
      },
      "dependencies": {
        "uuid": {
          "version": "3.0.1",
          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz",
          "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE="
        }
      }
    },
    "aws-sign2": {
      "version": "0.6.0",
      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
    },
    "aws4": {
      "version": "1.6.0",
      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
      "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
    },
    "balanced-match": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
      "dev": true
    },
    "base64-js": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz",
      "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw=="
    },
    "base64url": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz",
      "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs="
    },
    "basic-auth": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
      "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ="
    },
    "bcrypt-nodejs": {
      "version": "0.0.3",
      "resolved": "https://registry.npmjs.org/bcrypt-nodejs/-/bcrypt-nodejs-0.0.3.tgz",
      "integrity": "sha1-xgkX8m3CNWYVZsaBBhwwPCsohCs="
    },
    "bcrypt-pbkdf": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
      "optional": true,
      "requires": {
        "tweetnacl": "0.14.5"
      }
    },
    "bindings": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
      "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==",
      "dev": true
    },
    "blocked": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/blocked/-/blocked-1.2.1.tgz",
      "integrity": "sha1-4i7+dnhjxlq4GX9iUpKRBOHsnOI="
    },
    "blocked-at": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/blocked-at/-/blocked-at-1.0.1.tgz",
      "integrity": "sha512-zWWUESoLTzf1XhWXyalIHYnxGp/+AheQ6VrSmAkPV+zT4OpnCWc4KTWcwMxSDyR5CPjX6Sj9rgLFUeChf/l/fw=="
    },
    "bluebird": {
      "version": "2.10.2",
      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz",
      "integrity": "sha1-AkpVFylTCIV/FPkfEQb8O1VfRGs="
    },
    "body-parser": {
      "version": "1.17.2",
      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz",
      "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=",
      "requires": {
        "bytes": "2.4.0",
        "content-type": "1.0.2",
        "debug": "2.6.7",
        "depd": "1.1.0",
        "http-errors": "1.6.1",
        "iconv-lite": "0.4.15",
        "on-finished": "2.3.0",
        "qs": "6.4.0",
        "raw-body": "2.2.0",
        "type-is": "1.6.15"
      }
    },
    "boom": {
      "version": "2.10.1",
      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
      "requires": {
        "hoek": "2.16.3"
      }
    },
    "bottleneck": {
      "version": "1.16.0",
      "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-1.16.0.tgz",
      "integrity": "sha1-1s4TgIUnr8gLaQkvFWBmVeWyHxo="
    },
    "brace-expansion": {
      "version": "1.1.8",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
      "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
      "dev": true,
      "requires": {
        "balanced-match": "1.0.0",
        "concat-map": "0.0.1"
      }
    },
    "bson": {
      "version": "1.0.4",
      "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz",
      "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw="
    },
    "buffer": {
      "version": "4.9.1",
      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
      "requires": {
        "base64-js": "1.2.1",
        "ieee754": "1.1.8",
        "isarray": "1.0.0"
      }
    },
    "buffer-equal-constant-time": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
      "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
    },
    "buffer-shims": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
      "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
    },
    "bytes": {
      "version": "2.4.0",
      "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
      "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk="
    },
    "cardinal": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz",
      "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=",
      "dev": true,
      "requires": {
        "ansicolors": "0.2.1",
        "redeyed": "1.0.1"
      }
    },
    "caseless": {
      "version": "0.12.0",
      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
    },
    "charenc": {
      "version": "0.0.2",
      "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=",
      "dev": true
    },
    "cli-color": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.2.0.tgz",
      "integrity": "sha1-OlrnT9drYmevZm5p4q+70B3vNNE=",
      "dev": true,
      "requires": {
        "ansi-regex": "2.1.1",
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-iterator": "2.0.1",
        "memoizee": "0.4.9",
        "timers-ext": "0.1.2"
      }
    },
    "co": {
      "version": "4.6.0",
      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
    },
    "colors": {
      "version": "0.6.2",
      "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
      "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
      "dev": true
    },
    "combined-stream": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
      "requires": {
        "delayed-stream": "1.0.0"
      }
    },
    "concat-map": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
      "dev": true
    },
    "content-disposition": {
      "version": "0.5.2",
      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
    },
    "content-type": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz",
      "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0="
    },
    "continuation-local-storage": {
      "version": "3.2.0",
      "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.0.tgz",
      "integrity": "sha1-4Z/Da1lwkKXU5KOy6j68XilpSiQ=",
      "requires": {
        "async-listener": "0.6.7",
        "emitter-listener": "1.0.1"
      }
    },
    "cookie": {
      "version": "0.3.1",
      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
    },
    "cookie-signature": {
      "version": "1.0.6",
      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
    },
    "core-util-is": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
    },
    "cors": {
      "version": "2.8.4",
      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
      "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=",
      "requires": {
        "object-assign": "4.1.1",
        "vary": "1.1.1"
      }
    },
    "cron": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/cron/-/cron-1.2.1.tgz",
      "integrity": "sha1-OobAm0G48mGshjp8yF6kc1hX6rI=",
      "requires": {
        "moment-timezone": "0.5.13"
      }
    },
    "crypt": {
      "version": "0.0.2",
      "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=",
      "dev": true
    },
    "cryptiles": {
      "version": "2.0.5",
      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
      "requires": {
        "boom": "2.10.1"
      }
    },
    "crypto": {
      "version": "0.0.3",
      "resolved": "https://registry.npmjs.org/crypto/-/crypto-0.0.3.tgz",
      "integrity": "sha1-RwqBuGvkxe4XrMggeh9TFa4g27A="
    },
    "crypto-browserify": {
      "version": "1.0.9",
      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz",
      "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA="
    },
    "cycle": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
      "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
      "dev": true
    },
    "d": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
      "dev": true,
      "requires": {
        "es5-ext": "0.10.30"
      }
    },
    "dashdash": {
      "version": "1.14.1",
      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
      "requires": {
        "assert-plus": "1.0.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "deasync": {
      "version": "0.1.10",
      "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.10.tgz",
      "integrity": "sha1-TkpoNvvgR3vV+Qgwi9KpZVfV1/4=",
      "dev": true,
      "requires": {
        "bindings": "1.2.1",
        "nan": "2.6.2"
      },
      "dependencies": {
        "bindings": {
          "version": "1.2.1",
          "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
          "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=",
          "dev": true
        }
      }
    },
    "debug": {
      "version": "2.6.7",
      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
      "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=",
      "requires": {
        "ms": "2.0.0"
      }
    },
    "deep-equal": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
      "dev": true
    },
    "delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
    },
    "depd": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
      "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
    },
    "destroy": {
      "version": "1.0.4",
      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
    },
    "ecc-jsbn": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
      "optional": true,
      "requires": {
        "jsbn": "0.1.1"
      }
    },
    "ecdsa-sig-formatter": {
      "version": "1.0.9",
      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz",
      "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=",
      "requires": {
        "base64url": "2.0.0",
        "safe-buffer": "5.1.1"
      }
    },
    "ee-first": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
    },
    "emitter-listener": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.0.1.tgz",
      "integrity": "sha1-skmepuWCMKUsJo1d8mHuzZ8Q/pc=",
      "requires": {
        "shimmer": "1.0.0"
      },
      "dependencies": {
        "shimmer": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.0.0.tgz",
          "integrity": "sha1-ScLXHGeDYLgCvhiyeDgtHLuAXDk="
        }
      }
    },
    "encodeurl": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
      "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
    },
    "encoding": {
      "version": "0.1.12",
      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
      "requires": {
        "iconv-lite": "0.4.15"
      }
    },
    "es5-ext": {
      "version": "0.10.30",
      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz",
      "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=",
      "dev": true,
      "requires": {
        "es6-iterator": "2.0.1",
        "es6-symbol": "3.1.1"
      }
    },
    "es6-iterator": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz",
      "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-symbol": "3.1.1"
      }
    },
    "es6-map": {
      "version": "0.1.5",
      "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-iterator": "2.0.1",
        "es6-set": "0.1.5",
        "es6-symbol": "3.1.1",
        "event-emitter": "0.3.5"
      }
    },
    "es6-promise": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
      "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
    },
    "es6-set": {
      "version": "0.1.5",
      "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-iterator": "2.0.1",
        "es6-symbol": "3.1.1",
        "event-emitter": "0.3.5"
      }
    },
    "es6-symbol": {
      "version": "3.1.1",
      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30"
      }
    },
    "es6-weak-map": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
      "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-iterator": "2.0.1",
        "es6-symbol": "3.1.1"
      }
    },
    "escape-html": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
    },
    "escope": {
      "version": "3.6.0",
      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
      "dev": true,
      "requires": {
        "es6-map": "0.1.5",
        "es6-weak-map": "2.0.2",
        "esrecurse": "4.2.0",
        "estraverse": "4.2.0"
      }
    },
    "esprima": {
      "version": "3.1.3",
      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
      "dev": true
    },
    "esrecurse": {
      "version": "4.2.0",
      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
      "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
      "dev": true,
      "requires": {
        "estraverse": "4.2.0",
        "object-assign": "4.1.1"
      }
    },
    "estraverse": {
      "version": "4.2.0",
      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
      "dev": true
    },
    "etag": {
      "version": "1.8.0",
      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
      "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE="
    },
    "event-emitter": {
      "version": "0.3.5",
      "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30"
      }
    },
    "events": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
    },
    "express": {
      "version": "4.15.3",
      "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
      "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=",
      "requires": {
        "accepts": "1.3.3",
        "array-flatten": "1.1.1",
        "content-disposition": "0.5.2",
        "content-type": "1.0.2",
        "cookie": "0.3.1",
        "cookie-signature": "1.0.6",
        "debug": "2.6.7",
        "depd": "1.1.0",
        "encodeurl": "1.0.1",
        "escape-html": "1.0.3",
        "etag": "1.8.0",
        "finalhandler": "1.0.3",
        "fresh": "0.5.0",
        "merge-descriptors": "1.0.1",
        "methods": "1.1.2",
        "on-finished": "2.3.0",
        "parseurl": "1.3.1",
        "path-to-regexp": "0.1.7",
        "proxy-addr": "1.1.4",
        "qs": "6.4.0",
        "range-parser": "1.2.0",
        "send": "0.15.3",
        "serve-static": "1.12.3",
        "setprototypeof": "1.0.3",
        "statuses": "1.3.1",
        "type-is": "1.6.15",
        "utils-merge": "1.0.0",
        "vary": "1.1.1"
      }
    },
    "extend": {
      "version": "3.0.1",
      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
    },
    "extsprintf": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
    },
    "eyes": {
      "version": "0.1.8",
      "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
      "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
      "dev": true
    },
    "finalhandler": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
      "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=",
      "requires": {
        "debug": "2.6.7",
        "encodeurl": "1.0.1",
        "escape-html": "1.0.3",
        "on-finished": "2.3.0",
        "parseurl": "1.3.1",
        "statuses": "1.3.1",
        "unpipe": "1.0.0"
      }
    },
    "forever-agent": {
      "version": "0.6.1",
      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
    },
    "form-data": {
      "version": "2.1.4",
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
      "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
      "requires": {
        "asynckit": "0.4.0",
        "combined-stream": "1.0.5",
        "mime-types": "2.1.15"
      }
    },
    "forwarded": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz",
      "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M="
    },
    "fresh": {
      "version": "0.5.0",
      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz",
      "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44="
    },
    "fs.realpath": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
      "dev": true
    },
    "getpass": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
      "requires": {
        "assert-plus": "1.0.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "glob": {
      "version": "7.1.2",
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
      "dev": true,
      "requires": {
        "fs.realpath": "1.0.0",
        "inflight": "1.0.6",
        "inherits": "2.0.3",
        "minimatch": "3.0.4",
        "once": "1.4.0",
        "path-is-absolute": "1.0.1"
      }
    },
    "har-schema": {
      "version": "1.0.5",
      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
      "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4="
    },
    "har-validator": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
      "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
      "requires": {
        "ajv": "4.11.8",
        "har-schema": "1.0.5"
      }
    },
    "hawk": {
      "version": "3.1.3",
      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
      "requires": {
        "boom": "2.10.1",
        "cryptiles": "2.0.5",
        "hoek": "2.16.3",
        "sntp": "1.0.9"
      }
    },
    "hoek": {
      "version": "2.16.3",
      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
    },
    "hooks-fixed": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-2.0.0.tgz",
      "integrity": "sha1-oB2JTVKsf2WZu7H2PfycQR33DLo="
    },
    "http-errors": {
      "version": "1.6.1",
      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
      "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
      "requires": {
        "depd": "1.1.0",
        "inherits": "2.0.3",
        "setprototypeof": "1.0.3",
        "statuses": "1.3.1"
      }
    },
    "http-signature": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
      "requires": {
        "assert-plus": "0.2.0",
        "jsprim": "1.4.1",
        "sshpk": "1.13.1"
      }
    },
    "i": {
      "version": "0.3.5",
      "resolved": "https://registry.npmjs.org/i/-/i-0.3.5.tgz",
      "integrity": "sha1-HSuFQVjsgWkRPGy39raAHpniEdU=",
      "dev": true
    },
    "iconv-lite": {
      "version": "0.4.15",
      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
      "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
    },
    "ieee754": {
      "version": "1.1.8",
      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
      "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q="
    },
    "inflight": {
      "version": "1.0.6",
      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
      "dev": true,
      "requires": {
        "once": "1.4.0",
        "wrappy": "1.0.2"
      }
    },
    "inherits": {
      "version": "2.0.3",
      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
    },
    "ipaddr.js": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz",
      "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew="
    },
    "is": {
      "version": "3.2.1",
      "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz",
      "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU="
    },
    "is-buffer": {
      "version": "1.1.5",
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz",
      "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=",
      "dev": true
    },
    "is-promise": {
      "version": "2.1.0",
      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
      "dev": true
    },
    "is-typedarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
    },
    "isarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
    },
    "isemail": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
      "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
    },
    "isstream": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
    },
    "jmespath": {
      "version": "0.15.0",
      "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
      "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
    },
    "joi": {
      "version": "6.10.1",
      "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
      "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=",
      "requires": {
        "hoek": "2.16.3",
        "isemail": "1.2.0",
        "moment": "2.18.1",
        "topo": "1.1.0"
      }
    },
    "jsbn": {
      "version": "0.1.1",
      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
      "optional": true
    },
    "json-schema": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
    },
    "json-stable-stringify": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
      "requires": {
        "jsonify": "0.0.0"
      }
    },
    "json-stringify-safe": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
    },
    "jsonify": {
      "version": "0.0.0",
      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
    },
    "jsonwebtoken": {
      "version": "7.4.1",
      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.1.tgz",
      "integrity": "sha1-fKMk9SFfi+A5zTWmxFu4y3SkSPs=",
      "requires": {
        "joi": "6.10.1",
        "jws": "3.1.4",
        "lodash.once": "4.1.1",
        "ms": "2.0.0",
        "xtend": "4.0.1"
      }
    },
    "jsprim": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
      "requires": {
        "assert-plus": "1.0.0",
        "extsprintf": "1.3.0",
        "json-schema": "0.2.3",
        "verror": "1.10.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "jwa": {
      "version": "1.1.5",
      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz",
      "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=",
      "requires": {
        "base64url": "2.0.0",
        "buffer-equal-constant-time": "1.0.1",
        "ecdsa-sig-formatter": "1.0.9",
        "safe-buffer": "5.1.1"
      }
    },
    "jws": {
      "version": "3.1.4",
      "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
      "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=",
      "requires": {
        "base64url": "2.0.0",
        "jwa": "1.1.5",
        "safe-buffer": "5.1.1"
      }
    },
    "kalmanjs": {
      "version": "1.0.0-beta",
      "resolved": "https://registry.npmjs.org/kalmanjs/-/kalmanjs-1.0.0-beta.tgz",
      "integrity": "sha1-7j3lUat+9jlhWQSqwvURh2T/uII="
    },
    "kareem": {
      "version": "1.5.0",
      "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.5.0.tgz",
      "integrity": "sha1-4+QQHZ3P3imXadr0tNtk2JXRdEg="
    },
    "locus": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/locus/-/locus-2.0.1.tgz",
      "integrity": "sha1-V4WjrAEXoJYWY/ZaljVu3GkAC1A=",
      "dev": true,
      "requires": {
        "bindings": "1.3.0",
        "cardinal": "1.0.0",
        "cli-color": "1.2.0",
        "deasync": "0.1.10",
        "escope": "3.6.0",
        "esprima": "3.1.3",
        "estraverse": "4.2.0",
        "lodash": "4.17.4",
        "md5": "2.2.1",
        "parse-stack": "0.1.4",
        "prompt": "0.2.14",
        "readline-history": "1.2.0"
      }
    },
    "lodash": {
      "version": "4.17.4",
      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
    },
    "lodash.chunk": {
      "version": "4.2.0",
      "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
      "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw="
    },
    "lodash.findindex": {
      "version": "4.6.0",
      "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz",
      "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY="
    },
    "lodash.isequal": {
      "version": "4.5.0",
      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
    },
    "lodash.merge": {
      "version": "4.6.0",
      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
      "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU="
    },
    "lodash.once": {
      "version": "4.1.1",
      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
    },
    "lru-queue": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
      "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
      "dev": true,
      "requires": {
        "es5-ext": "0.10.30"
      }
    },
    "mailparser": {
      "version": "0.6.2",
      "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-0.6.2.tgz",
      "integrity": "sha1-A8SGA5vfTfbNO2rcqqxBB9/bwGg=",
      "requires": {
        "encoding": "0.1.12",
        "mime": "1.3.4",
        "mimelib": "0.3.1",
        "uue": "3.1.0"
      }
    },
    "md5": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
      "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
      "dev": true,
      "requires": {
        "charenc": "0.0.2",
        "crypt": "0.0.2",
        "is-buffer": "1.1.5"
      }
    },
    "media-typer": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
    },
    "memoizee": {
      "version": "0.4.9",
      "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.9.tgz",
      "integrity": "sha1-6hwAX1xMMdiaShDiTbg/v2HN1PM=",
      "dev": true,
      "requires": {
        "d": "1.0.0",
        "es5-ext": "0.10.30",
        "es6-weak-map": "2.0.2",
        "event-emitter": "0.3.5",
        "is-promise": "2.1.0",
        "lru-queue": "0.1.0",
        "next-tick": "1.0.0",
        "timers-ext": "0.1.2"
      }
    },
    "merge-descriptors": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
    },
    "methods": {
      "version": "1.1.2",
      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
    },
    "mime": {
      "version": "1.3.4",
      "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz",
      "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM="
    },
    "mime-db": {
      "version": "1.27.0",
      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz",
      "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE="
    },
    "mime-types": {
      "version": "2.1.15",
      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz",
      "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=",
      "requires": {
        "mime-db": "1.27.0"
      }
    },
    "mimelib": {
      "version": "0.3.1",
      "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.3.1.tgz",
      "integrity": "sha1-eHrdJBXYJ6yzr27EvKHqlZZBiFM=",
      "requires": {
        "addressparser": "1.0.1",
        "encoding": "0.1.12"
      }
    },
    "minimatch": {
      "version": "3.0.4",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
      "dev": true,
      "requires": {
        "brace-expansion": "1.1.8"
      }
    },
    "minimist": {
      "version": "0.0.8",
      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
      "dev": true
    },
    "mkdirp": {
      "version": "0.5.1",
      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
      "dev": true,
      "requires": {
        "minimist": "0.0.8"
      }
    },
    "ml-array-utils": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/ml-array-utils/-/ml-array-utils-0.3.0.tgz",
      "integrity": "sha1-wMxa/cHLBR9ag7HOcWQcJDZy9kk=",
      "requires": {
        "ml-stat": "1.3.3"
      }
    },
    "ml-curve-fitting": {
      "version": "0.0.7",
      "resolved": "https://registry.npmjs.org/ml-curve-fitting/-/ml-curve-fitting-0.0.7.tgz",
      "integrity": "sha1-FyKwP4wUwD9RyT0kijQM/y33Oys=",
      "requires": {
        "ml-matrix": "2.3.0"
      }
    },
    "ml-matrix": {
      "version": "2.3.0",
      "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-2.3.0.tgz",
      "integrity": "sha1-30YBZwpnNQaO6abb8jwJTB0+zik=",
      "requires": {
        "ml-array-utils": "0.3.0"
      }
    },
    "ml-stat": {
      "version": "1.3.3",
      "resolved": "https://registry.npmjs.org/ml-stat/-/ml-stat-1.3.3.tgz",
      "integrity": "sha1-ilSTsPZzgvv3BcJg4HBDZlWn3Po="
    },
    "moment": {
      "version": "2.18.1",
      "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz",
      "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8="
    },
    "moment-timezone": {
      "version": "0.5.13",
      "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz",
      "integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=",
      "requires": {
        "moment": "2.18.1"
      }
    },
    "mongodb": {
      "version": "2.2.31",
      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.31.tgz",
      "integrity": "sha1-GUBEXGYeGSF7s7+CRdmFSq71SNs=",
      "requires": {
        "es6-promise": "3.2.1",
        "mongodb-core": "2.1.15",
        "readable-stream": "2.2.7"
      }
    },
    "mongodb-core": {
      "version": "2.1.15",
      "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.15.tgz",
      "integrity": "sha1-hB9TuH//9MdFgYnDXIroJ+EWl2Q=",
      "requires": {
        "bson": "1.0.4",
        "require_optional": "1.0.1"
      }
    },
    "mongoose": {
      "version": "4.11.10",
      "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.11.10.tgz",
      "integrity": "sha512-+D+sS0aU1asnVhHCZnR9PHnaeJqcN+E9v3vMApbru8KRMbHek06njMnZ7EPLjQffwwXm/wnFVQ8OeF9EfOp9pA==",
      "requires": {
        "async": "2.1.4",
        "bson": "1.0.4",
        "hooks-fixed": "2.0.0",
        "kareem": "1.5.0",
        "mongodb": "2.2.31",
        "mpath": "0.3.0",
        "mpromise": "0.5.5",
        "mquery": "2.3.1",
        "ms": "2.0.0",
        "muri": "1.2.2",
        "regexp-clone": "0.0.1",
        "sliced": "1.0.1"
      }
    },
    "morgan": {
      "version": "1.8.2",
      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.2.tgz",
      "integrity": "sha1-eErHc05KRTqcbm6GgKkyknXItoc=",
      "requires": {
        "basic-auth": "1.1.0",
        "debug": "2.6.8",
        "depd": "1.1.0",
        "on-finished": "2.3.0",
        "on-headers": "1.0.1"
      },
      "dependencies": {
        "debug": {
          "version": "2.6.8",
          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
          "requires": {
            "ms": "2.0.0"
          }
        }
      }
    },
    "mpath": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.3.0.tgz",
      "integrity": "sha1-elj3iem1/TyUUgY0FXlg8mvV70Q="
    },
    "mpromise": {
      "version": "0.5.5",
      "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.5.tgz",
      "integrity": "sha1-9bJCWddjrMIlewoMjG2Gb9UXMuY="
    },
    "mquery": {
      "version": "2.3.1",
      "resolved": "https://registry.npmjs.org/mquery/-/mquery-2.3.1.tgz",
      "integrity": "sha1-mrNnSXFIAP8LtTpoHOS8TV8HyHs=",
      "requires": {
        "bluebird": "2.10.2",
        "debug": "2.6.8",
        "regexp-clone": "0.0.1",
        "sliced": "0.0.5"
      },
      "dependencies": {
        "debug": {
          "version": "2.6.8",
          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
          "requires": {
            "ms": "2.0.0"
          }
        },
        "sliced": {
          "version": "0.0.5",
          "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz",
          "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8="
        }
      }
    },
    "ms": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
    },
    "muri": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/muri/-/muri-1.2.2.tgz",
      "integrity": "sha1-YxmBMmUNsIoEzHnM0A3Tia/SYxw="
    },
    "mute-stream": {
      "version": "0.0.7",
      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
      "dev": true
    },
    "nan": {
      "version": "2.6.2",
      "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz",
      "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U="
    },
    "ncp": {
      "version": "0.4.2",
      "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
      "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=",
      "dev": true
    },
    "negotiator": {
      "version": "0.6.1",
      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
    },
    "next-tick": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
      "dev": true
    },
    "node-cron": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-1.2.1.tgz",
      "integrity": "sha1-jJC8XccjpWKJsHhmVatKHEy2A2g="
    },
    "node-os-utils": {
      "version": "1.0.7",
      "resolved": "https://registry.npmjs.org/node-os-utils/-/node-os-utils-1.0.7.tgz",
      "integrity": "sha1-Q6+sBpSwTRRoIN8EkEWPzdBxBAM="
    },
    "oauth-sign": {
      "version": "0.8.2",
      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
    },
    "object-assign": {
      "version": "4.1.1",
      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
    },
    "on-finished": {
      "version": "2.3.0",
      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
      "requires": {
        "ee-first": "1.1.1"
      }
    },
    "on-headers": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
    },
    "once": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
      "dev": true,
      "requires": {
        "wrappy": "1.0.2"
      }
    },
    "parse-stack": {
      "version": "0.1.4",
      "resolved": "https://registry.npmjs.org/parse-stack/-/parse-stack-0.1.4.tgz",
      "integrity": "sha1-UpXe24Mg0NnEoEtG1bjQ+X1Knj4=",
      "dev": true
    },
    "parseurl": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
      "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
    },
    "passport": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz",
      "integrity": "sha1-ndAJ+RXo/glbASSgG4+C2gdRAQI=",
      "requires": {
        "passport-strategy": "1.0.0",
        "pause": "0.0.1"
      }
    },
    "passport-jwt": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/passport-jwt/-/passport-jwt-2.2.1.tgz",
      "integrity": "sha1-DgBMlAcTGdZz2dm8/RV0qGgBFSc=",
      "requires": {
        "jsonwebtoken": "7.4.1",
        "passport-strategy": "1.0.0"
      }
    },
    "passport-local": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
      "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=",
      "requires": {
        "passport-strategy": "1.0.0"
      }
    },
    "passport-strategy": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
      "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ="
    },
    "path-is-absolute": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
      "dev": true
    },
    "path-to-regexp": {
      "version": "0.1.7",
      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
    },
    "pause": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
      "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
    },
    "performance-now": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
    },
    "pkginfo": {
      "version": "0.4.1",
      "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
      "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=",
      "dev": true
    },
    "pmx": {
      "version": "1.5.2",
      "resolved": "https://registry.npmjs.org/pmx/-/pmx-1.5.2.tgz",
      "integrity": "sha512-XTMK8P+i1WUzx4R8Gt8p7thSPW2i+MXG2ojtOJuB8ERM3dkIdW2sRbjMZ0rAvizJebZrEc8trNHkqc046J0lzA==",
      "requires": {
        "debug": "3.0.1",
        "json-stringify-safe": "5.0.1",
        "vxx": "1.2.2"
      },
      "dependencies": {
        "debug": {
          "version": "3.0.1",
          "resolved": "https://registry.npmjs.org/debug/-/debug-3.0.1.tgz",
          "integrity": "sha512-6nVc6S36qbt/mutyt+UGMnawAMrPDZUPQjRZI3FS9tCtDRhvxJbK79unYBLPi+z5SLXQ3ftoVBFCblQtNSls8w==",
          "requires": {
            "ms": "2.0.0"
          }
        }
      }
    },
    "prettysize": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/prettysize/-/prettysize-1.1.0.tgz",
      "integrity": "sha512-U5Noa+FYV1dGkICyLJz8IWlDUehPF4Bk9tZRO8YqPhLA9EoiHuFqtnpWY2mvMjHh5eOLo82HipeLn4RIiSsGqQ=="
    },
    "process-nextick-args": {
      "version": "1.0.7",
      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
    },
    "promise": {
      "version": "8.0.1",
      "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz",
      "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=",
      "requires": {
        "asap": "2.0.6"
      }
    },
    "prompt": {
      "version": "0.2.14",
      "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
      "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=",
      "dev": true,
      "requires": {
        "pkginfo": "0.4.1",
        "read": "1.0.7",
        "revalidator": "0.1.8",
        "utile": "0.2.1",
        "winston": "0.8.3"
      },
      "dependencies": {
        "async": {
          "version": "0.2.10",
          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
          "dev": true
        },
        "winston": {
          "version": "0.8.3",
          "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
          "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=",
          "dev": true,
          "requires": {
            "async": "0.2.10",
            "colors": "0.6.2",
            "cycle": "1.0.3",
            "eyes": "0.1.8",
            "isstream": "0.1.2",
            "pkginfo": "0.3.1",
            "stack-trace": "0.0.10"
          },
          "dependencies": {
            "pkginfo": {
              "version": "0.3.1",
              "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
              "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=",
              "dev": true
            }
          }
        }
      }
    },
    "proxy-addr": {
      "version": "1.1.4",
      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz",
      "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=",
      "requires": {
        "forwarded": "0.1.0",
        "ipaddr.js": "1.3.0"
      }
    },
    "punycode": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
    },
    "qs": {
      "version": "6.4.0",
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
      "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM="
    },
    "querystring": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
    },
    "randomstring": {
      "version": "1.1.5",
      "resolved": "https://registry.npmjs.org/randomstring/-/randomstring-1.1.5.tgz",
      "integrity": "sha1-bfBij3XL1ZMpMNn+OrTpVqGFGMM=",
      "requires": {
        "array-uniq": "1.0.2"
      }
    },
    "range-parser": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
    },
    "raw-body": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz",
      "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=",
      "requires": {
        "bytes": "2.4.0",
        "iconv-lite": "0.4.15",
        "unpipe": "1.0.0"
      }
    },
    "read": {
      "version": "1.0.7",
      "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
      "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
      "dev": true,
      "requires": {
        "mute-stream": "0.0.7"
      }
    },
    "readable-stream": {
      "version": "2.2.7",
      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
      "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=",
      "requires": {
        "buffer-shims": "1.0.0",
        "core-util-is": "1.0.2",
        "inherits": "2.0.3",
        "isarray": "1.0.0",
        "process-nextick-args": "1.0.7",
        "string_decoder": "1.0.3",
        "util-deprecate": "1.0.2"
      }
    },
    "readline-history": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/readline-history/-/readline-history-1.2.0.tgz",
      "integrity": "sha1-9nBUOyzpASFH/pkD+D0cGJwX0zM=",
      "dev": true
    },
    "redeyed": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz",
      "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=",
      "dev": true,
      "requires": {
        "esprima": "3.0.0"
      },
      "dependencies": {
        "esprima": {
          "version": "3.0.0",
          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz",
          "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=",
          "dev": true
        }
      }
    },
    "regexp-clone": {
      "version": "0.0.1",
      "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz",
      "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk="
    },
    "regression": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/regression/-/regression-2.0.0.tgz",
      "integrity": "sha1-DyPkAS8KTCte+Ci09LTjn3LfuWo="
    },
    "request": {
      "version": "2.81.0",
      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
      "requires": {
        "aws-sign2": "0.6.0",
        "aws4": "1.6.0",
        "caseless": "0.12.0",
        "combined-stream": "1.0.5",
        "extend": "3.0.1",
        "forever-agent": "0.6.1",
        "form-data": "2.1.4",
        "har-validator": "4.2.1",
        "hawk": "3.1.3",
        "http-signature": "1.1.1",
        "is-typedarray": "1.0.0",
        "isstream": "0.1.2",
        "json-stringify-safe": "5.0.1",
        "mime-types": "2.1.15",
        "oauth-sign": "0.8.2",
        "performance-now": "0.2.0",
        "qs": "6.4.0",
        "safe-buffer": "5.1.1",
        "stringstream": "0.0.5",
        "tough-cookie": "2.3.2",
        "tunnel-agent": "0.6.0",
        "uuid": "3.1.0"
      }
    },
    "require_optional": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
      "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
      "requires": {
        "resolve-from": "2.0.0",
        "semver": "5.4.1"
      }
    },
    "resolve-from": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
      "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
    },
    "revalidator": {
      "version": "0.1.8",
      "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
      "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=",
      "dev": true
    },
    "rimraf": {
      "version": "2.6.1",
      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
      "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
      "dev": true,
      "requires": {
        "glob": "7.1.2"
      }
    },
    "safe-buffer": {
      "version": "5.1.1",
      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
    },
    "sax": {
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
      "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
    },
    "semver": {
      "version": "5.4.1",
      "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
      "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
    },
    "send": {
      "version": "0.15.3",
      "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
      "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=",
      "requires": {
        "debug": "2.6.7",
        "depd": "1.1.0",
        "destroy": "1.0.4",
        "encodeurl": "1.0.1",
        "escape-html": "1.0.3",
        "etag": "1.8.0",
        "fresh": "0.5.0",
        "http-errors": "1.6.1",
        "mime": "1.3.4",
        "ms": "2.0.0",
        "on-finished": "2.3.0",
        "range-parser": "1.2.0",
        "statuses": "1.3.1"
      }
    },
    "sendgrid": {
      "version": "5.2.3",
      "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-5.2.3.tgz",
      "integrity": "sha512-FD7oR9TbJFUew1p0Vw9JX0wBetDyq634LzylSXz4n9+hwaf+6a9dNloZl8CcjpsX4NuEc3HJanTN4GjDwNyi4A==",
      "requires": {
        "async.ensureasync": "0.5.2",
        "async.queue": "0.5.2",
        "bottleneck": "1.16.0",
        "debug": "2.6.7",
        "lodash.chunk": "4.2.0",
        "mailparser": "0.6.2",
        "sendgrid-rest": "2.4.0"
      }
    },
    "sendgrid-rest": {
      "version": "2.4.0",
      "resolved": "https://registry.npmjs.org/sendgrid-rest/-/sendgrid-rest-2.4.0.tgz",
      "integrity": "sha512-3VRHhTnln17jPQNzBjEHO6u2Y7kLlhVnOvX0aGjr7yRVZpq5LXo0ilAFMsaHUfKVH+jFdCrHMAVLOAdtu6wLJA=="
    },
    "serve-static": {
      "version": "1.12.3",
      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
      "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=",
      "requires": {
        "encodeurl": "1.0.1",
        "escape-html": "1.0.3",
        "parseurl": "1.3.1",
        "send": "0.15.3"
      }
    },
    "setprototypeof": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
      "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
    },
    "shimmer": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz",
      "integrity": "sha1-l9c3cTf/u6tCVSLkKf4KqJpIizU="
    },
    "slack-notify": {
      "version": "0.1.6",
      "resolved": "https://registry.npmjs.org/slack-notify/-/slack-notify-0.1.6.tgz",
      "integrity": "sha1-rA0WZC5nldfuiEeU3ZfTChneQS8=",
      "requires": {
        "lodash": "3.10.1",
        "request": "2.81.0"
      },
      "dependencies": {
        "lodash": {
          "version": "3.10.1",
          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
        }
      }
    },
    "sliced": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
      "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
    },
    "sntp": {
      "version": "1.0.9",
      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
      "requires": {
        "hoek": "2.16.3"
      }
    },
    "sshpk": {
      "version": "1.13.1",
      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
      "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
      "requires": {
        "asn1": "0.2.3",
        "assert-plus": "1.0.0",
        "bcrypt-pbkdf": "1.0.1",
        "dashdash": "1.14.1",
        "ecc-jsbn": "0.1.1",
        "getpass": "0.1.7",
        "jsbn": "0.1.1",
        "tweetnacl": "0.14.5"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "stack-trace": {
      "version": "0.0.10",
      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
      "dev": true
    },
    "statuses": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
    },
    "string_decoder": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
      "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
      "requires": {
        "safe-buffer": "5.1.1"
      }
    },
    "stringstream": {
      "version": "0.0.5",
      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
    },
    "timers-ext": {
      "version": "0.1.2",
      "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.2.tgz",
      "integrity": "sha1-YcxHp2wavTGV8UUn+XjViulMUgQ=",
      "dev": true,
      "requires": {
        "es5-ext": "0.10.30",
        "next-tick": "1.0.0"
      }
    },
    "topo": {
      "version": "1.1.0",
      "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
      "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
      "requires": {
        "hoek": "2.16.3"
      }
    },
    "tough-cookie": {
      "version": "2.3.2",
      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
      "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=",
      "requires": {
        "punycode": "1.4.1"
      }
    },
    "trilat": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/trilat/-/trilat-1.0.0.tgz",
      "integrity": "sha1-d5NEWeFgTFvMvdscGIBCLuuCfJU=",
      "requires": {
        "ml-curve-fitting": "0.0.7"
      }
    },
    "trilateration": {
      "version": "git://github.com/gheja/trilateration.js.git#6358f9733425b5c68a646d1053872c90f3e1e985"
    },
    "tunnel-agent": {
      "version": "0.6.0",
      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
      "requires": {
        "safe-buffer": "5.1.1"
      }
    },
    "tweetnacl": {
      "version": "0.14.5",
      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
      "optional": true
    },
    "type-is": {
      "version": "1.6.15",
      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
      "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
      "requires": {
        "media-typer": "0.3.0",
        "mime-types": "2.1.15"
      }
    },
    "typedarray-to-buffer": {
      "version": "3.1.2",
      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz",
      "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=",
      "requires": {
        "is-typedarray": "1.0.0"
      }
    },
    "unpipe": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
    },
    "url": {
      "version": "0.10.3",
      "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
      "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
      "requires": {
        "punycode": "1.3.2",
        "querystring": "0.2.0"
      },
      "dependencies": {
        "punycode": {
          "version": "1.3.2",
          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
        }
      }
    },
    "utf8": {
      "version": "2.1.2",
      "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz",
      "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY="
    },
    "util-deprecate": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
    },
    "utile": {
      "version": "0.2.1",
      "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
      "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=",
      "dev": true,
      "requires": {
        "async": "0.2.10",
        "deep-equal": "1.0.1",
        "i": "0.3.5",
        "mkdirp": "0.5.1",
        "ncp": "0.4.2",
        "rimraf": "2.6.1"
      },
      "dependencies": {
        "async": {
          "version": "0.2.10",
          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
          "dev": true
        }
      }
    },
    "utils-merge": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
      "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
    },
    "uue": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/uue/-/uue-3.1.0.tgz",
      "integrity": "sha1-XWfTcDDmbv67tLiqxG2vm1W++/Y=",
      "requires": {
        "extend": "3.0.1"
      }
    },
    "uuid": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
      "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
    },
    "vary": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz",
      "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc="
    },
    "verror": {
      "version": "1.10.0",
      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
      "requires": {
        "assert-plus": "1.0.0",
        "core-util-is": "1.0.2",
        "extsprintf": "1.3.0"
      },
      "dependencies": {
        "assert-plus": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
        }
      }
    },
    "vxx": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/vxx/-/vxx-1.2.2.tgz",
      "integrity": "sha1-dB+1HG8R0zg9pvm5IBil17qAdhE=",
      "requires": {
        "continuation-local-storage": "3.2.0",
        "debug": "2.6.7",
        "extend": "3.0.1",
        "is": "3.2.1",
        "lodash.findindex": "4.6.0",
        "lodash.isequal": "4.5.0",
        "lodash.merge": "4.6.0",
        "methods": "1.1.2",
        "semver": "5.4.1",
        "shimmer": "1.1.0",
        "uuid": "3.1.0"
      }
    },
    "websocket": {
      "version": "1.0.24",
      "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.24.tgz",
      "integrity": "sha1-dJA+dfJUW2suHeFCW8HJBZF6GJA=",
      "requires": {
        "debug": "2.6.7",
        "nan": "2.6.2",
        "typedarray-to-buffer": "3.1.2",
        "yaeti": "0.0.6"
      }
    },
    "winston": {
      "version": "2.3.1",
      "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.1.tgz",
      "integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=",
      "dev": true,
      "requires": {
        "async": "1.0.0",
        "colors": "1.0.3",
        "cycle": "1.0.3",
        "eyes": "0.1.8",
        "isstream": "0.1.2",
        "stack-trace": "0.0.10"
      },
      "dependencies": {
        "async": {
          "version": "1.0.0",
          "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
          "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
          "dev": true
        },
        "colors": {
          "version": "1.0.3",
          "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
          "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
          "dev": true
        }
      }
    },
    "wrappy": {
      "version": "1.0.2",
      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
      "dev": true
    },
    "xml2js": {
      "version": "0.4.17",
      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz",
      "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=",
      "requires": {
        "sax": "1.2.1",
        "xmlbuilder": "4.2.1"
      }
    },
    "xmlbuilder": {
      "version": "4.2.1",
      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz",
      "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=",
      "requires": {
        "lodash": "4.17.4"
      }
    },
    "xtend": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
    },
    "yaeti": {
      "version": "0.0.6",
      "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
      "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc="
    }
  }
}