Commit 60d719e58ae6ead09bab7447a880c5e5b85a1f23

Authored by Nur Fajar Wibowo
1 parent aaaa648420
Exists in master

commit pertama [trial send and receive sms OK]

Showing 4 changed files with 1917 additions and 0 deletions Side-by-side Diff

... ... @@ -0,0 +1,9 @@
  1 +{
  2 + "development": {
  3 + "usb_port": "please change me",//tty/USB2
  4 + "node_port": "please change me",//2112
  5 + "url_post": "please change me",//http://ip:port
  6 + "api_key": "746573206D6F64656D2074656C6D6F73656C20666C617368"
  7 + }
  8 +}
  9 +
... ... @@ -0,0 +1,168 @@
  1 +"use strict";
  2 +
  3 +const express = require('express');
  4 +const app = express();
  5 +const SerialPort = require("serialport");
  6 +const config = require('./config.json');
  7 +const request = require('request');
  8 +
  9 +var statusModem = "0K";
  10 +var errorMessageModem= "";
  11 +var node_port = config.development.node_port;
  12 +var usb_port = config.development.usb_port;
  13 +var url_post = config.development.url_post;
  14 +var api_key = config.development.api_key;
  15 +
  16 +//set serialport
  17 +const serialPort = new SerialPort(usb_port, {
  18 + baudRate: 115200, dataBits: 8, autoOpen: true, lock: false,
  19 + //parser: SerialPort.parsers.readline("\n")
  20 + });
  21 +
  22 +serialPort.on("open", function () {
  23 + console.log('Serial communication open');
  24 + //
  25 + serialPort.write("AT+CNMI?");
  26 + serialPort.write("\r");
  27 + serialPort.write("AT+CNMI=1,1,2,1,1");
  28 + serialPort.write("\r");
  29 + console.log('receive sms ON');
  30 +
  31 +});
  32 +
  33 +serialPort.on('error', function(err) {
  34 + statusModem = "NOT OK";
  35 + errorMessageModem = err.message;
  36 + console.log('Error!: ', err.message);
  37 + process.exit(1);
  38 +});
  39 +
  40 +serialPort.on('data', function(data) {
  41 + console.log("incoming data: " + data);
  42 + var lastData = data.toString();
  43 + if (lastData.match(/\+CMTI:/)){
  44 + var numberPattern = /(\d+)/g;
  45 + var slot = lastData.match(numberPattern);
  46 + console.log("slot "+slot);
  47 + console.log("ada message baru");
  48 + readSmsAuto(serialPort, slot);
  49 + } else if (lastData.match(/\+CMGR:/)){
  50 + console.log("read sms!" + data);
  51 + console.log("end read msg!");
  52 + const lines = lastData.split(/\n/);
  53 + console.log("lines1 "+lines[1]);
  54 + console.log("lines2 "+lines[2]);
  55 + const content = lines[1].split(',');
  56 + console.log("content0 "+content[0]);
  57 + console.log("content1 "+content[1]);
  58 + console.log("content2 "+content[2]);
  59 + console.log("content3 "+content[3]);
  60 + console.log("content4 "+content[4]);
  61 + var nomor = content[1].toString();
  62 + nomor = nomor.replace(/"/g,'');
  63 + nomor = nomor.replace(/\+/g,'');
  64 + var pesan = lines[2].toString();
  65 + //console.log("nomor nya "+nomor);
  66 + postIncomingMessage(nomor, pesan);
  67 + }
  68 +});
  69 +
  70 +//------------------function 2 000000000000 -----------------
  71 +//helloWorld
  72 +function helloWorld(req, res, next){
  73 + console.log("hello world call!??");
  74 + res.send('hello world');
  75 +
  76 +}
  77 +//function delete message slot ke?
  78 +function deleteMessage(serialPort, slot){
  79 + serialPort.write("AT+CMGD="+slot);
  80 + serialPort.write("\r");
  81 + console.log("delete pesan slot "+slot+" done!");
  82 +
  83 +}
  84 +//post to end point url
  85 +function postIncomingMessage(nomor, pesan){
  86 + console.log("----------------------------post incoming message-------------------------");
  87 + pesan = pesan.replace(/\s+$/, '');
  88 + //post to URL end Point
  89 + request(url_post+"/gtwjs?msg="+pesan+"&number="+nomor, function (error, response, body) {
  90 + if (error) { console.log("error post! "+nomor+" msg; \""+pesan+"\" errornya; "+error.message); }
  91 + else if (!error && response.statusCode == 200) {console.log("success post "+nomor+" msg; \""+pesan+"\" resp; "+body);}
  92 + });
  93 + //delete incoming message after send to komod
  94 + }
  95 +//sendSms
  96 +function sendSms (req, res, next){
  97 + var msg = req.query.msg;
  98 + var number = req.query.number;
  99 + var reqid = req.query.reqid;
  100 + var apikey = req.query.apikey;
  101 + //api_key="746573206D6F64656D2074656C6D6F73656C20666C617368";
  102 + if(!reqid||!apikey){
  103 + console.log("invalid reqid or apikey;msg "+msg+" number "+number);
  104 + res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
  105 + return;
  106 + } else if (apikey !== api_key){
  107 + console.log("invalid api_key;msg \""+msg+"\" number \""+number+"\" reqid \""+reqid);
  108 + res.json({"status": "invalid parameter", "msg": msg, "number": number, "apikey" : apikey, "reqid": reqid});
  109 + return;
  110 +
  111 + }
  112 + console.log("msg "+ msg + " number " +number);
  113 + //----------------
  114 + serialPort.write("AT+CMGF=1");
  115 + serialPort.write('\r');
  116 +
  117 + sendingSMS(serialPort, msg, "+"+number, reqid);
  118 + console.log('resp; status '+statusModem+" reqid "+reqid);
  119 + //---------------
  120 + res.json({"status": statusModem+" "+errorMessageModem, "msg": msg, "number": number});
  121 +}
  122 +
  123 +function readSmsAuto(serialPort, slot){
  124 +
  125 + serialPort.write("AT+CMGF=1");
  126 + serialPort.write('\r');
  127 + serialPort.write("AT+CMGR="+slot);// read only slot 1
  128 + serialPort.write('\r');
  129 + console.log("pesan slot "+slot+" sudah di baca");
  130 + setTimeout(function(){
  131 + serialPort.write("AT+CMGD="+slot);
  132 + serialPort.write("\r");
  133 + console.log("delete pesan slot "+slot+" done!");
  134 + }, 2000);
  135 +
  136 +}
  137 +
  138 +
  139 +function readSms(req, res, next){
  140 +
  141 + serialPort.write("AT+CMGF=1");
  142 + serialPort.write('\r');
  143 + serialPort.write('AT+CMGR=0');// read only slot 1
  144 + serialPort.write('\r');
  145 + res.send('sms readed');
  146 +
  147 +}
  148 +
  149 +function sendingSMS(serial, message, phone_no) {
  150 + if (statusModem === "NOT OK"){
  151 + console.log('send sms gagal');
  152 + return statusModem;
  153 + }
  154 + console.log('number '+phone_no);
  155 + serial.write("AT+CMGS=\"" + phone_no + "\"");
  156 + serial.write('\r');
  157 + serial.write(message);
  158 + console.log(message);
  159 + serial.write(Buffer([0x1A]));
  160 + serial.write('^z');
  161 + //serial.close();
  162 +}
  163 +
  164 +app.get('/', helloWorld);
  165 +app.get('/sms', sendSms);
  166 +app.get('/read', readSms);
  167 +
  168 +app.listen(node_port, () => console.log(`Example app listening on port ${node_port}!`));
Changes suppressed. Click to show
... ... @@ -0,0 +1,1724 @@
  1 +{
  2 + "name": "modemX",
  3 + "version": "1.0.0",
  4 + "lockfileVersion": 1,
  5 + "requires": true,
  6 + "dependencies": {
  7 + "accepts": {
  8 + "version": "1.3.5",
  9 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
  10 + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
  11 + "requires": {
  12 + "mime-types": "~2.1.18",
  13 + "negotiator": "0.6.1"
  14 + }
  15 + },
  16 + "ajv": {
  17 + "version": "6.10.0",
  18 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
  19 + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
  20 + "requires": {
  21 + "fast-deep-equal": "^2.0.1",
  22 + "fast-json-stable-stringify": "^2.0.0",
  23 + "json-schema-traverse": "^0.4.1",
  24 + "uri-js": "^4.2.2"
  25 + }
  26 + },
  27 + "array-flatten": {
  28 + "version": "1.1.1",
  29 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
  30 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
  31 + },
  32 + "asn1": {
  33 + "version": "0.2.4",
  34 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
  35 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
  36 + "requires": {
  37 + "safer-buffer": "~2.1.0"
  38 + }
  39 + },
  40 + "assert-plus": {
  41 + "version": "1.0.0",
  42 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
  43 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
  44 + },
  45 + "asynckit": {
  46 + "version": "0.4.0",
  47 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
  48 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
  49 + },
  50 + "aws-sign2": {
  51 + "version": "0.7.0",
  52 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
  53 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
  54 + },
  55 + "aws4": {
  56 + "version": "1.8.0",
  57 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
  58 + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
  59 + },
  60 + "bcrypt-pbkdf": {
  61 + "version": "1.0.2",
  62 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
  63 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
  64 + "requires": {
  65 + "tweetnacl": "^0.14.3"
  66 + }
  67 + },
  68 + "bindings": {
  69 + "version": "1.2.1",
  70 + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
  71 + "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
  72 + },
  73 + "body-parser": {
  74 + "version": "1.18.3",
  75 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
  76 + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
  77 + "requires": {
  78 + "bytes": "3.0.0",
  79 + "content-type": "~1.0.4",
  80 + "debug": "2.6.9",
  81 + "depd": "~1.1.2",
  82 + "http-errors": "~1.6.3",
  83 + "iconv-lite": "0.4.23",
  84 + "on-finished": "~2.3.0",
  85 + "qs": "6.5.2",
  86 + "raw-body": "2.3.3",
  87 + "type-is": "~1.6.16"
  88 + },
  89 + "dependencies": {
  90 + "debug": {
  91 + "version": "2.6.9",
  92 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  93 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  94 + "requires": {
  95 + "ms": "2.0.0"
  96 + }
  97 + },
  98 + "ms": {
  99 + "version": "2.0.0",
  100 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  101 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  102 + }
  103 + }
  104 + },
  105 + "bytes": {
  106 + "version": "3.0.0",
  107 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
  108 + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
  109 + },
  110 + "caseless": {
  111 + "version": "0.12.0",
  112 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
  113 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
  114 + },
  115 + "combined-stream": {
  116 + "version": "1.0.7",
  117 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
  118 + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
  119 + "requires": {
  120 + "delayed-stream": "~1.0.0"
  121 + }
  122 + },
  123 + "commander": {
  124 + "version": "2.19.0",
  125 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
  126 + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
  127 + },
  128 + "content-disposition": {
  129 + "version": "0.5.2",
  130 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
  131 + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
  132 + },
  133 + "content-type": {
  134 + "version": "1.0.4",
  135 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
  136 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
  137 + },
  138 + "cookie": {
  139 + "version": "0.3.1",
  140 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
  141 + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
  142 + },
  143 + "cookie-signature": {
  144 + "version": "1.0.6",
  145 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
  146 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
  147 + },
  148 + "core-util-is": {
  149 + "version": "1.0.2",
  150 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
  151 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
  152 + },
  153 + "dashdash": {
  154 + "version": "1.14.1",
  155 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
  156 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
  157 + "requires": {
  158 + "assert-plus": "^1.0.0"
  159 + }
  160 + },
  161 + "debug": {
  162 + "version": "2.6.9",
  163 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  164 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  165 + "requires": {
  166 + "ms": "2.0.0"
  167 + }
  168 + },
  169 + "define-properties": {
  170 + "version": "1.1.3",
  171 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
  172 + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
  173 + "requires": {
  174 + "object-keys": "^1.0.12"
  175 + }
  176 + },
  177 + "delay": {
  178 + "version": "4.1.0",
  179 + "resolved": "https://registry.npmjs.org/delay/-/delay-4.1.0.tgz",
  180 + "integrity": "sha512-8Hea6/aOu3bPdDBQhSRUEUzF0QwuWmSPuIK+sxNdvcJtSfzb6HXrTd9DFJBCJcV9o83fFECqTgllqdnmUfq9+w=="
  181 + },
  182 + "delayed-stream": {
  183 + "version": "1.0.0",
  184 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
  185 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
  186 + },
  187 + "depd": {
  188 + "version": "1.1.2",
  189 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
  190 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
  191 + },
  192 + "destroy": {
  193 + "version": "1.0.4",
  194 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
  195 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
  196 + },
  197 + "ecc-jsbn": {
  198 + "version": "0.1.2",
  199 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
  200 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
  201 + "requires": {
  202 + "jsbn": "~0.1.0",
  203 + "safer-buffer": "^2.1.0"
  204 + }
  205 + },
  206 + "ee-first": {
  207 + "version": "1.1.1",
  208 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
  209 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
  210 + },
  211 + "encodeurl": {
  212 + "version": "1.0.2",
  213 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
  214 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
  215 + },
  216 + "escape-html": {
  217 + "version": "1.0.3",
  218 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
  219 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
  220 + },
  221 + "etag": {
  222 + "version": "1.8.1",
  223 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
  224 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
  225 + },
  226 + "express": {
  227 + "version": "4.16.4",
  228 + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
  229 + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
  230 + "requires": {
  231 + "accepts": "~1.3.5",
  232 + "array-flatten": "1.1.1",
  233 + "body-parser": "1.18.3",
  234 + "content-disposition": "0.5.2",
  235 + "content-type": "~1.0.4",
  236 + "cookie": "0.3.1",
  237 + "cookie-signature": "1.0.6",
  238 + "debug": "2.6.9",
  239 + "depd": "~1.1.2",
  240 + "encodeurl": "~1.0.2",
  241 + "escape-html": "~1.0.3",
  242 + "etag": "~1.8.1",
  243 + "finalhandler": "1.1.1",
  244 + "fresh": "0.5.2",
  245 + "merge-descriptors": "1.0.1",
  246 + "methods": "~1.1.2",
  247 + "on-finished": "~2.3.0",
  248 + "parseurl": "~1.3.2",
  249 + "path-to-regexp": "0.1.7",
  250 + "proxy-addr": "~2.0.4",
  251 + "qs": "6.5.2",
  252 + "range-parser": "~1.2.0",
  253 + "safe-buffer": "5.1.2",
  254 + "send": "0.16.2",
  255 + "serve-static": "1.13.2",
  256 + "setprototypeof": "1.1.0",
  257 + "statuses": "~1.4.0",
  258 + "type-is": "~1.6.16",
  259 + "utils-merge": "1.0.1",
  260 + "vary": "~1.1.2"
  261 + },
  262 + "dependencies": {
  263 + "debug": {
  264 + "version": "2.6.9",
  265 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  266 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  267 + "requires": {
  268 + "ms": "2.0.0"
  269 + }
  270 + },
  271 + "ms": {
  272 + "version": "2.0.0",
  273 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  274 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  275 + }
  276 + }
  277 + },
  278 + "extend": {
  279 + "version": "3.0.2",
  280 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
  281 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
  282 + },
  283 + "extsprintf": {
  284 + "version": "1.3.0",
  285 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
  286 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
  287 + },
  288 + "fast-deep-equal": {
  289 + "version": "2.0.1",
  290 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
  291 + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
  292 + },
  293 + "fast-json-stable-stringify": {
  294 + "version": "2.0.0",
  295 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
  296 + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
  297 + },
  298 + "finalhandler": {
  299 + "version": "1.1.1",
  300 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
  301 + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
  302 + "requires": {
  303 + "debug": "2.6.9",
  304 + "encodeurl": "~1.0.2",
  305 + "escape-html": "~1.0.3",
  306 + "on-finished": "~2.3.0",
  307 + "parseurl": "~1.3.2",
  308 + "statuses": "~1.4.0",
  309 + "unpipe": "~1.0.0"
  310 + },
  311 + "dependencies": {
  312 + "debug": {
  313 + "version": "2.6.9",
  314 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  315 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  316 + "requires": {
  317 + "ms": "2.0.0"
  318 + }
  319 + },
  320 + "ms": {
  321 + "version": "2.0.0",
  322 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  323 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  324 + }
  325 + }
  326 + },
  327 + "forever-agent": {
  328 + "version": "0.6.1",
  329 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
  330 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
  331 + },
  332 + "form-data": {
  333 + "version": "2.3.3",
  334 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
  335 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
  336 + "requires": {
  337 + "asynckit": "^0.4.0",
  338 + "combined-stream": "^1.0.6",
  339 + "mime-types": "^2.1.12"
  340 + }
  341 + },
  342 + "forwarded": {
  343 + "version": "0.1.2",
  344 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
  345 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
  346 + },
  347 + "fresh": {
  348 + "version": "0.5.2",
  349 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
  350 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
  351 + },
  352 + "function-bind": {
  353 + "version": "1.1.1",
  354 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
  355 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
  356 + },
  357 + "getpass": {
  358 + "version": "0.1.7",
  359 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
  360 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
  361 + "requires": {
  362 + "assert-plus": "^1.0.0"
  363 + }
  364 + },
  365 + "har-schema": {
  366 + "version": "2.0.0",
  367 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
  368 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
  369 + },
  370 + "har-validator": {
  371 + "version": "5.1.3",
  372 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
  373 + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
  374 + "requires": {
  375 + "ajv": "^6.5.5",
  376 + "har-schema": "^2.0.0"
  377 + }
  378 + },
  379 + "has-symbols": {
  380 + "version": "1.0.0",
  381 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
  382 + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
  383 + },
  384 + "http-errors": {
  385 + "version": "1.6.3",
  386 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
  387 + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
  388 + "requires": {
  389 + "depd": "~1.1.2",
  390 + "inherits": "2.0.3",
  391 + "setprototypeof": "1.1.0",
  392 + "statuses": ">= 1.4.0 < 2"
  393 + }
  394 + },
  395 + "http-signature": {
  396 + "version": "1.2.0",
  397 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
  398 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
  399 + "requires": {
  400 + "assert-plus": "^1.0.0",
  401 + "jsprim": "^1.2.2",
  402 + "sshpk": "^1.7.0"
  403 + }
  404 + },
  405 + "iconv-lite": {
  406 + "version": "0.4.23",
  407 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
  408 + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
  409 + "requires": {
  410 + "safer-buffer": ">= 2.1.2 < 3"
  411 + }
  412 + },
  413 + "immediate": {
  414 + "version": "3.0.6",
  415 + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
  416 + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
  417 + },
  418 + "inherits": {
  419 + "version": "2.0.3",
  420 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
  421 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
  422 + },
  423 + "ipaddr.js": {
  424 + "version": "1.8.0",
  425 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
  426 + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
  427 + },
  428 + "is-typedarray": {
  429 + "version": "1.0.0",
  430 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
  431 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
  432 + },
  433 + "isstream": {
  434 + "version": "0.1.2",
  435 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
  436 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
  437 + },
  438 + "jsbn": {
  439 + "version": "0.1.1",
  440 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
  441 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
  442 + },
  443 + "json-schema": {
  444 + "version": "0.2.3",
  445 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
  446 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
  447 + },
  448 + "json-schema-traverse": {
  449 + "version": "0.4.1",
  450 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
  451 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
  452 + },
  453 + "json-stringify-safe": {
  454 + "version": "5.0.1",
  455 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
  456 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
  457 + },
  458 + "jsprim": {
  459 + "version": "1.4.1",
  460 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
  461 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
  462 + "requires": {
  463 + "assert-plus": "1.0.0",
  464 + "extsprintf": "1.3.0",
  465 + "json-schema": "0.2.3",
  466 + "verror": "1.10.0"
  467 + }
  468 + },
  469 + "lie": {
  470 + "version": "3.3.0",
  471 + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
  472 + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
  473 + "requires": {
  474 + "immediate": "~3.0.5"
  475 + }
  476 + },
  477 + "media-typer": {
  478 + "version": "0.3.0",
  479 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
  480 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
  481 + },
  482 + "merge-descriptors": {
  483 + "version": "1.0.1",
  484 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
  485 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
  486 + },
  487 + "methods": {
  488 + "version": "1.1.2",
  489 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
  490 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
  491 + },
  492 + "mime": {
  493 + "version": "1.4.1",
  494 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
  495 + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
  496 + },
  497 + "mime-db": {
  498 + "version": "1.38.0",
  499 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
  500 + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
  501 + },
  502 + "mime-types": {
  503 + "version": "2.1.22",
  504 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
  505 + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
  506 + "requires": {
  507 + "mime-db": "~1.38.0"
  508 + }
  509 + },
  510 + "ms": {
  511 + "version": "2.0.0",
  512 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  513 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  514 + },
  515 + "nan": {
  516 + "version": "2.13.0",
  517 + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.0.tgz",
  518 + "integrity": "sha512-5DDQvN0luhXdut8SCwzm/ZuAX2W+fwhqNzfq7CZ+OJzQ6NwpcqmIGyLD1R8MEt7BeErzcsI0JLr4pND2pNp2Cw=="
  519 + },
  520 + "negotiator": {
  521 + "version": "0.6.1",
  522 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
  523 + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
  524 + },
  525 + "oauth-sign": {
  526 + "version": "0.9.0",
  527 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
  528 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
  529 + },
  530 + "object-keys": {
  531 + "version": "1.1.0",
  532 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz",
  533 + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg=="
  534 + },
  535 + "object.assign": {
  536 + "version": "4.1.0",
  537 + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
  538 + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
  539 + "requires": {
  540 + "define-properties": "^1.1.2",
  541 + "function-bind": "^1.1.1",
  542 + "has-symbols": "^1.0.0",
  543 + "object-keys": "^1.0.11"
  544 + }
  545 + },
  546 + "on-finished": {
  547 + "version": "2.3.0",
  548 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
  549 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
  550 + "requires": {
  551 + "ee-first": "1.1.1"
  552 + }
  553 + },
  554 + "parseurl": {
  555 + "version": "1.3.2",
  556 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
  557 + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
  558 + },
  559 + "path-to-regexp": {
  560 + "version": "0.1.7",
  561 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
  562 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
  563 + },
  564 + "performance-now": {
  565 + "version": "2.1.0",
  566 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
  567 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
  568 + },
  569 + "proxy-addr": {
  570 + "version": "2.0.4",
  571 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
  572 + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
  573 + "requires": {
  574 + "forwarded": "~0.1.2",
  575 + "ipaddr.js": "1.8.0"
  576 + }
  577 + },
  578 + "psl": {
  579 + "version": "1.1.31",
  580 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
  581 + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
  582 + },
  583 + "punycode": {
  584 + "version": "2.1.1",
  585 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
  586 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
  587 + },
  588 + "qs": {
  589 + "version": "6.5.2",
  590 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
  591 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
  592 + },
  593 + "range-parser": {
  594 + "version": "1.2.0",
  595 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
  596 + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
  597 + },
  598 + "raw-body": {
  599 + "version": "2.3.3",
  600 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
  601 + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
  602 + "requires": {
  603 + "bytes": "3.0.0",
  604 + "http-errors": "1.6.3",
  605 + "iconv-lite": "0.4.23",
  606 + "unpipe": "1.0.0"
  607 + }
  608 + },
  609 + "request": {
  610 + "version": "2.88.0",
  611 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
  612 + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
  613 + "requires": {
  614 + "aws-sign2": "~0.7.0",
  615 + "aws4": "^1.8.0",
  616 + "caseless": "~0.12.0",
  617 + "combined-stream": "~1.0.6",
  618 + "extend": "~3.0.2",
  619 + "forever-agent": "~0.6.1",
  620 + "form-data": "~2.3.2",
  621 + "har-validator": "~5.1.0",
  622 + "http-signature": "~1.2.0",
  623 + "is-typedarray": "~1.0.0",
  624 + "isstream": "~0.1.2",
  625 + "json-stringify-safe": "~5.0.1",
  626 + "mime-types": "~2.1.19",
  627 + "oauth-sign": "~0.9.0",
  628 + "performance-now": "^2.1.0",
  629 + "qs": "~6.5.2",
  630 + "safe-buffer": "^5.1.2",
  631 + "tough-cookie": "~2.4.3",
  632 + "tunnel-agent": "^0.6.0",
  633 + "uuid": "^3.3.2"
  634 + }
  635 + },
  636 + "safe-buffer": {
  637 + "version": "5.1.2",
  638 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  639 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  640 + },
  641 + "safer-buffer": {
  642 + "version": "2.1.2",
  643 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  644 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
  645 + },
  646 + "send": {
  647 + "version": "0.16.2",
  648 + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
  649 + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
  650 + "requires": {
  651 + "debug": "2.6.9",
  652 + "depd": "~1.1.2",
  653 + "destroy": "~1.0.4",
  654 + "encodeurl": "~1.0.2",
  655 + "escape-html": "~1.0.3",
  656 + "etag": "~1.8.1",
  657 + "fresh": "0.5.2",
  658 + "http-errors": "~1.6.2",
  659 + "mime": "1.4.1",
  660 + "ms": "2.0.0",
  661 + "on-finished": "~2.3.0",
  662 + "range-parser": "~1.2.0",
  663 + "statuses": "~1.4.0"
  664 + },
  665 + "dependencies": {
  666 + "debug": {
  667 + "version": "2.6.9",
  668 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  669 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  670 + "requires": {
  671 + "ms": "2.0.0"
  672 + }
  673 + },
  674 + "ms": {
  675 + "version": "2.0.0",
  676 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  677 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  678 + }
  679 + }
  680 + },
  681 + "serialport": {
  682 + "version": "4.0.7",
  683 + "resolved": "https://registry.npmjs.org/serialport/-/serialport-4.0.7.tgz",
  684 + "integrity": "sha1-QhxhiophK9QM+kYbSkYVTa8iKaU=",
  685 + "requires": {
  686 + "bindings": "1.2.1",
  687 + "commander": "^2.9.0",
  688 + "debug": "^2.3.2",
  689 + "lie": "^3.1.0",
  690 + "nan": "^2.4.0",
  691 + "node-pre-gyp": "^0.6.32",
  692 + "object.assign": "^4.0.3"
  693 + },
  694 + "dependencies": {
  695 + "node-pre-gyp": {
  696 + "version": "0.6.32",
  697 + "bundled": true,
  698 + "requires": {
  699 + "mkdirp": "~0.5.1",
  700 + "nopt": "~3.0.6",
  701 + "npmlog": "^4.0.1",
  702 + "rc": "~1.1.6",
  703 + "request": "^2.79.0",
  704 + "rimraf": "~2.5.4",
  705 + "semver": "~5.3.0",
  706 + "tar": "~2.2.1",
  707 + "tar-pack": "~3.3.0"
  708 + },
  709 + "dependencies": {
  710 + "mkdirp": {
  711 + "version": "0.5.1",
  712 + "bundled": true,
  713 + "requires": {
  714 + "minimist": "0.0.8"
  715 + },
  716 + "dependencies": {
  717 + "minimist": {
  718 + "version": "0.0.8",
  719 + "bundled": true
  720 + }
  721 + }
  722 + },
  723 + "nopt": {
  724 + "version": "3.0.6",
  725 + "bundled": true,
  726 + "requires": {
  727 + "abbrev": "1"
  728 + },
  729 + "dependencies": {
  730 + "abbrev": {
  731 + "version": "1.0.9",
  732 + "bundled": true
  733 + }
  734 + }
  735 + },
  736 + "npmlog": {
  737 + "version": "4.0.1",
  738 + "bundled": true,
  739 + "requires": {
  740 + "are-we-there-yet": "~1.1.2",
  741 + "console-control-strings": "~1.1.0",
  742 + "gauge": "~2.7.1",
  743 + "set-blocking": "~2.0.0"
  744 + },
  745 + "dependencies": {
  746 + "are-we-there-yet": {
  747 + "version": "1.1.2",
  748 + "bundled": true,
  749 + "requires": {
  750 + "delegates": "^1.0.0",
  751 + "readable-stream": "^2.0.0 || ^1.1.13"
  752 + },
  753 + "dependencies": {
  754 + "delegates": {
  755 + "version": "1.0.0",
  756 + "bundled": true
  757 + },
  758 + "readable-stream": {
  759 + "version": "2.2.2",
  760 + "bundled": true,
  761 + "requires": {
  762 + "buffer-shims": "^1.0.0",
  763 + "core-util-is": "~1.0.0",
  764 + "inherits": "~2.0.1",
  765 + "isarray": "~1.0.0",
  766 + "process-nextick-args": "~1.0.6",
  767 + "string_decoder": "~0.10.x",
  768 + "util-deprecate": "~1.0.1"
  769 + },
  770 + "dependencies": {
  771 + "buffer-shims": {
  772 + "version": "1.0.0",
  773 + "bundled": true
  774 + },
  775 + "core-util-is": {
  776 + "version": "1.0.2",
  777 + "bundled": true
  778 + },
  779 + "inherits": {
  780 + "version": "2.0.3",
  781 + "bundled": true
  782 + },
  783 + "isarray": {
  784 + "version": "1.0.0",
  785 + "bundled": true
  786 + },
  787 + "process-nextick-args": {
  788 + "version": "1.0.7",
  789 + "bundled": true
  790 + },
  791 + "string_decoder": {
  792 + "version": "0.10.31",
  793 + "bundled": true
  794 + },
  795 + "util-deprecate": {
  796 + "version": "1.0.2",
  797 + "bundled": true
  798 + }
  799 + }
  800 + }
  801 + }
  802 + },
  803 + "console-control-strings": {
  804 + "version": "1.1.0",
  805 + "bundled": true
  806 + },
  807 + "gauge": {
  808 + "version": "2.7.2",
  809 + "bundled": true,
  810 + "requires": {
  811 + "aproba": "^1.0.3",
  812 + "console-control-strings": "^1.0.0",
  813 + "has-unicode": "^2.0.0",
  814 + "object-assign": "^4.1.0",
  815 + "signal-exit": "^3.0.0",
  816 + "string-width": "^1.0.1",
  817 + "strip-ansi": "^3.0.1",
  818 + "supports-color": "^0.2.0",
  819 + "wide-align": "^1.1.0"
  820 + },
  821 + "dependencies": {
  822 + "aproba": {
  823 + "version": "1.0.4",
  824 + "bundled": true
  825 + },
  826 + "has-unicode": {
  827 + "version": "2.0.1",
  828 + "bundled": true
  829 + },
  830 + "object-assign": {
  831 + "version": "4.1.0",
  832 + "bundled": true
  833 + },
  834 + "signal-exit": {
  835 + "version": "3.0.2",
  836 + "bundled": true
  837 + },
  838 + "string-width": {
  839 + "version": "1.0.2",
  840 + "bundled": true,
  841 + "requires": {
  842 + "code-point-at": "^1.0.0",
  843 + "is-fullwidth-code-point": "^1.0.0",
  844 + "strip-ansi": "^3.0.0"
  845 + },
  846 + "dependencies": {
  847 + "code-point-at": {
  848 + "version": "1.1.0",
  849 + "bundled": true
  850 + },
  851 + "is-fullwidth-code-point": {
  852 + "version": "1.0.0",
  853 + "bundled": true,
  854 + "requires": {
  855 + "number-is-nan": "^1.0.0"
  856 + },
  857 + "dependencies": {
  858 + "number-is-nan": {
  859 + "version": "1.0.1",
  860 + "bundled": true
  861 + }
  862 + }
  863 + }
  864 + }
  865 + },
  866 + "strip-ansi": {
  867 + "version": "3.0.1",
  868 + "bundled": true,
  869 + "requires": {
  870 + "ansi-regex": "^2.0.0"
  871 + },
  872 + "dependencies": {
  873 + "ansi-regex": {
  874 + "version": "2.0.0",
  875 + "bundled": true
  876 + }
  877 + }
  878 + },
  879 + "supports-color": {
  880 + "version": "0.2.0",
  881 + "bundled": true
  882 + },
  883 + "wide-align": {
  884 + "version": "1.1.0",
  885 + "bundled": true,
  886 + "requires": {
  887 + "string-width": "^1.0.1"
  888 + }
  889 + }
  890 + }
  891 + },
  892 + "set-blocking": {
  893 + "version": "2.0.0",
  894 + "bundled": true
  895 + }
  896 + }
  897 + },
  898 + "rc": {
  899 + "version": "1.1.6",
  900 + "bundled": true,
  901 + "requires": {
  902 + "deep-extend": "~0.4.0",
  903 + "ini": "~1.3.0",
  904 + "minimist": "^1.2.0",
  905 + "strip-json-comments": "~1.0.4"
  906 + },
  907 + "dependencies": {
  908 + "deep-extend": {
  909 + "version": "0.4.1",
  910 + "bundled": true
  911 + },
  912 + "ini": {
  913 + "version": "1.3.4",
  914 + "bundled": true
  915 + },
  916 + "minimist": {
  917 + "version": "1.2.0",
  918 + "bundled": true
  919 + },
  920 + "strip-json-comments": {
  921 + "version": "1.0.4",
  922 + "bundled": true
  923 + }
  924 + }
  925 + },
  926 + "request": {
  927 + "version": "2.79.0",
  928 + "bundled": true,
  929 + "requires": {
  930 + "aws-sign2": "~0.6.0",
  931 + "aws4": "^1.2.1",
  932 + "caseless": "~0.11.0",
  933 + "combined-stream": "~1.0.5",
  934 + "extend": "~3.0.0",
  935 + "forever-agent": "~0.6.1",
  936 + "form-data": "~2.1.1",
  937 + "har-validator": "~2.0.6",
  938 + "hawk": "~3.1.3",
  939 + "http-signature": "~1.1.0",
  940 + "is-typedarray": "~1.0.0",
  941 + "isstream": "~0.1.2",
  942 + "json-stringify-safe": "~5.0.1",
  943 + "mime-types": "~2.1.7",
  944 + "oauth-sign": "~0.8.1",
  945 + "qs": "~6.3.0",
  946 + "stringstream": "~0.0.4",
  947 + "tough-cookie": "~2.3.0",
  948 + "tunnel-agent": "~0.4.1",
  949 + "uuid": "^3.0.0"
  950 + },
  951 + "dependencies": {
  952 + "aws-sign2": {
  953 + "version": "0.6.0",
  954 + "bundled": true
  955 + },
  956 + "aws4": {
  957 + "version": "1.5.0",
  958 + "bundled": true
  959 + },
  960 + "caseless": {
  961 + "version": "0.11.0",
  962 + "bundled": true
  963 + },
  964 + "combined-stream": {
  965 + "version": "1.0.5",
  966 + "bundled": true,
  967 + "requires": {
  968 + "delayed-stream": "~1.0.0"
  969 + },
  970 + "dependencies": {
  971 + "delayed-stream": {
  972 + "version": "1.0.0",
  973 + "bundled": true
  974 + }
  975 + }
  976 + },
  977 + "extend": {
  978 + "version": "3.0.0",
  979 + "bundled": true
  980 + },
  981 + "forever-agent": {
  982 + "version": "0.6.1",
  983 + "bundled": true
  984 + },
  985 + "form-data": {
  986 + "version": "2.1.2",
  987 + "bundled": true,
  988 + "requires": {
  989 + "asynckit": "^0.4.0",
  990 + "combined-stream": "^1.0.5",
  991 + "mime-types": "^2.1.12"
  992 + },
  993 + "dependencies": {
  994 + "asynckit": {
  995 + "version": "0.4.0",
  996 + "bundled": true
  997 + }
  998 + }
  999 + },
  1000 + "har-validator": {
  1001 + "version": "2.0.6",
  1002 + "bundled": true,
  1003 + "requires": {
  1004 + "chalk": "^1.1.1",
  1005 + "commander": "^2.9.0",
  1006 + "is-my-json-valid": "^2.12.4",
  1007 + "pinkie-promise": "^2.0.0"
  1008 + },
  1009 + "dependencies": {
  1010 + "chalk": {
  1011 + "version": "1.1.3",
  1012 + "bundled": true,
  1013 + "requires": {
  1014 + "ansi-styles": "^2.2.1",
  1015 + "escape-string-regexp": "^1.0.2",
  1016 + "has-ansi": "^2.0.0",
  1017 + "strip-ansi": "^3.0.0",
  1018 + "supports-color": "^2.0.0"
  1019 + },
  1020 + "dependencies": {
  1021 + "ansi-styles": {
  1022 + "version": "2.2.1",
  1023 + "bundled": true
  1024 + },
  1025 + "escape-string-regexp": {
  1026 + "version": "1.0.5",
  1027 + "bundled": true
  1028 + },
  1029 + "has-ansi": {
  1030 + "version": "2.0.0",
  1031 + "bundled": true,
  1032 + "requires": {
  1033 + "ansi-regex": "^2.0.0"
  1034 + },
  1035 + "dependencies": {
  1036 + "ansi-regex": {
  1037 + "version": "2.0.0",
  1038 + "bundled": true
  1039 + }
  1040 + }
  1041 + },
  1042 + "strip-ansi": {
  1043 + "version": "3.0.1",
  1044 + "bundled": true,
  1045 + "requires": {
  1046 + "ansi-regex": "^2.0.0"
  1047 + },
  1048 + "dependencies": {
  1049 + "ansi-regex": {
  1050 + "version": "2.0.0",
  1051 + "bundled": true
  1052 + }
  1053 + }
  1054 + },
  1055 + "supports-color": {
  1056 + "version": "2.0.0",
  1057 + "bundled": true
  1058 + }
  1059 + }
  1060 + },
  1061 + "is-my-json-valid": {
  1062 + "version": "2.15.0",
  1063 + "bundled": true,
  1064 + "requires": {
  1065 + "generate-function": "^2.0.0",
  1066 + "generate-object-property": "^1.1.0",
  1067 + "jsonpointer": "^4.0.0",
  1068 + "xtend": "^4.0.0"
  1069 + },
  1070 + "dependencies": {
  1071 + "generate-function": {
  1072 + "version": "2.0.0",
  1073 + "bundled": true
  1074 + },
  1075 + "generate-object-property": {
  1076 + "version": "1.2.0",
  1077 + "bundled": true,
  1078 + "requires": {
  1079 + "is-property": "^1.0.0"
  1080 + },
  1081 + "dependencies": {
  1082 + "is-property": {
  1083 + "version": "1.0.2",
  1084 + "bundled": true
  1085 + }
  1086 + }
  1087 + },
  1088 + "jsonpointer": {
  1089 + "version": "4.0.0",
  1090 + "bundled": true
  1091 + },
  1092 + "xtend": {
  1093 + "version": "4.0.1",
  1094 + "bundled": true
  1095 + }
  1096 + }
  1097 + },
  1098 + "pinkie-promise": {
  1099 + "version": "2.0.1",
  1100 + "bundled": true,
  1101 + "requires": {
  1102 + "pinkie": "^2.0.0"
  1103 + },
  1104 + "dependencies": {
  1105 + "pinkie": {
  1106 + "version": "2.0.4",
  1107 + "bundled": true
  1108 + }
  1109 + }
  1110 + }
  1111 + }
  1112 + },
  1113 + "hawk": {
  1114 + "version": "3.1.3",
  1115 + "bundled": true,
  1116 + "requires": {
  1117 + "boom": "2.x.x",
  1118 + "cryptiles": "2.x.x",
  1119 + "hoek": "2.x.x",
  1120 + "sntp": "1.x.x"
  1121 + },
  1122 + "dependencies": {
  1123 + "boom": {
  1124 + "version": "2.10.1",
  1125 + "bundled": true,
  1126 + "requires": {
  1127 + "hoek": "2.x.x"
  1128 + }
  1129 + },
  1130 + "cryptiles": {
  1131 + "version": "2.0.5",
  1132 + "bundled": true,
  1133 + "requires": {
  1134 + "boom": "2.x.x"
  1135 + }
  1136 + },
  1137 + "hoek": {
  1138 + "version": "2.16.3",
  1139 + "bundled": true
  1140 + },
  1141 + "sntp": {
  1142 + "version": "1.0.9",
  1143 + "bundled": true,
  1144 + "requires": {
  1145 + "hoek": "2.x.x"
  1146 + }
  1147 + }
  1148 + }
  1149 + },
  1150 + "http-signature": {
  1151 + "version": "1.1.1",
  1152 + "bundled": true,
  1153 + "requires": {
  1154 + "assert-plus": "^0.2.0",
  1155 + "jsprim": "^1.2.2",
  1156 + "sshpk": "^1.7.0"
  1157 + },
  1158 + "dependencies": {
  1159 + "assert-plus": {
  1160 + "version": "0.2.0",
  1161 + "bundled": true
  1162 + },
  1163 + "jsprim": {
  1164 + "version": "1.3.1",
  1165 + "bundled": true,
  1166 + "requires": {
  1167 + "extsprintf": "1.0.2",
  1168 + "json-schema": "0.2.3",
  1169 + "verror": "1.3.6"
  1170 + },
  1171 + "dependencies": {
  1172 + "extsprintf": {
  1173 + "version": "1.0.2",
  1174 + "bundled": true
  1175 + },
  1176 + "json-schema": {
  1177 + "version": "0.2.3",
  1178 + "bundled": true
  1179 + },
  1180 + "verror": {
  1181 + "version": "1.3.6",
  1182 + "bundled": true,
  1183 + "requires": {
  1184 + "extsprintf": "1.0.2"
  1185 + }
  1186 + }
  1187 + }
  1188 + },
  1189 + "sshpk": {
  1190 + "version": "1.10.1",
  1191 + "bundled": true,
  1192 + "requires": {
  1193 + "asn1": "~0.2.3",
  1194 + "assert-plus": "^1.0.0",
  1195 + "bcrypt-pbkdf": "^1.0.0",
  1196 + "dashdash": "^1.12.0",
  1197 + "ecc-jsbn": "~0.1.1",
  1198 + "getpass": "^0.1.1",
  1199 + "jodid25519": "^1.0.0",
  1200 + "jsbn": "~0.1.0",
  1201 + "tweetnacl": "~0.14.0"
  1202 + },
  1203 + "dependencies": {
  1204 + "asn1": {
  1205 + "version": "0.2.3",
  1206 + "bundled": true
  1207 + },
  1208 + "assert-plus": {
  1209 + "version": "1.0.0",
  1210 + "bundled": true
  1211 + },
  1212 + "bcrypt-pbkdf": {
  1213 + "version": "1.0.0",
  1214 + "bundled": true,
  1215 + "optional": true,
  1216 + "requires": {
  1217 + "tweetnacl": "^0.14.3"
  1218 + }
  1219 + },
  1220 + "dashdash": {
  1221 + "version": "1.14.1",
  1222 + "bundled": true,
  1223 + "requires": {
  1224 + "assert-plus": "^1.0.0"
  1225 + }
  1226 + },
  1227 + "ecc-jsbn": {
  1228 + "version": "0.1.1",
  1229 + "bundled": true,
  1230 + "optional": true,
  1231 + "requires": {
  1232 + "jsbn": "~0.1.0"
  1233 + }
  1234 + },
  1235 + "getpass": {
  1236 + "version": "0.1.6",
  1237 + "bundled": true,
  1238 + "requires": {
  1239 + "assert-plus": "^1.0.0"
  1240 + }
  1241 + },
  1242 + "jodid25519": {
  1243 + "version": "1.0.2",
  1244 + "bundled": true,
  1245 + "optional": true,
  1246 + "requires": {
  1247 + "jsbn": "~0.1.0"
  1248 + }
  1249 + },
  1250 + "jsbn": {
  1251 + "version": "0.1.0",
  1252 + "bundled": true,
  1253 + "optional": true
  1254 + },
  1255 + "tweetnacl": {
  1256 + "version": "0.14.4",
  1257 + "bundled": true,
  1258 + "optional": true
  1259 + }
  1260 + }
  1261 + }
  1262 + }
  1263 + },
  1264 + "is-typedarray": {
  1265 + "version": "1.0.0",
  1266 + "bundled": true
  1267 + },
  1268 + "isstream": {
  1269 + "version": "0.1.2",
  1270 + "bundled": true
  1271 + },
  1272 + "json-stringify-safe": {
  1273 + "version": "5.0.1",
  1274 + "bundled": true
  1275 + },
  1276 + "mime-types": {
  1277 + "version": "2.1.13",
  1278 + "bundled": true,
  1279 + "requires": {
  1280 + "mime-db": "~1.25.0"
  1281 + },
  1282 + "dependencies": {
  1283 + "mime-db": {
  1284 + "version": "1.25.0",
  1285 + "bundled": true
  1286 + }
  1287 + }
  1288 + },
  1289 + "oauth-sign": {
  1290 + "version": "0.8.2",
  1291 + "bundled": true
  1292 + },
  1293 + "qs": {
  1294 + "version": "6.3.0",
  1295 + "bundled": true
  1296 + },
  1297 + "stringstream": {
  1298 + "version": "0.0.5",
  1299 + "bundled": true
  1300 + },
  1301 + "tough-cookie": {
  1302 + "version": "2.3.2",
  1303 + "bundled": true,
  1304 + "requires": {
  1305 + "punycode": "^1.4.1"
  1306 + },
  1307 + "dependencies": {
  1308 + "punycode": {
  1309 + "version": "1.4.1",
  1310 + "bundled": true
  1311 + }
  1312 + }
  1313 + },
  1314 + "tunnel-agent": {
  1315 + "version": "0.4.3",
  1316 + "bundled": true
  1317 + },
  1318 + "uuid": {
  1319 + "version": "3.0.1",
  1320 + "bundled": true
  1321 + }
  1322 + }
  1323 + },
  1324 + "rimraf": {
  1325 + "version": "2.5.4",
  1326 + "bundled": true,
  1327 + "requires": {
  1328 + "glob": "^7.0.5"
  1329 + },
  1330 + "dependencies": {
  1331 + "glob": {
  1332 + "version": "7.1.1",
  1333 + "bundled": true,
  1334 + "requires": {
  1335 + "fs.realpath": "^1.0.0",
  1336 + "inflight": "^1.0.4",
  1337 + "inherits": "2",
  1338 + "minimatch": "^3.0.2",
  1339 + "once": "^1.3.0",
  1340 + "path-is-absolute": "^1.0.0"
  1341 + },
  1342 + "dependencies": {
  1343 + "fs.realpath": {
  1344 + "version": "1.0.0",
  1345 + "bundled": true
  1346 + },
  1347 + "inflight": {
  1348 + "version": "1.0.6",
  1349 + "bundled": true,
  1350 + "requires": {
  1351 + "once": "^1.3.0",
  1352 + "wrappy": "1"
  1353 + },
  1354 + "dependencies": {
  1355 + "wrappy": {
  1356 + "version": "1.0.2",
  1357 + "bundled": true
  1358 + }
  1359 + }
  1360 + },
  1361 + "inherits": {
  1362 + "version": "2.0.3",
  1363 + "bundled": true
  1364 + },
  1365 + "minimatch": {
  1366 + "version": "3.0.3",
  1367 + "bundled": true,
  1368 + "requires": {
  1369 + "brace-expansion": "^1.0.0"
  1370 + },
  1371 + "dependencies": {
  1372 + "brace-expansion": {
  1373 + "version": "1.1.6",
  1374 + "bundled": true,
  1375 + "requires": {
  1376 + "balanced-match": "^0.4.1",
  1377 + "concat-map": "0.0.1"
  1378 + },
  1379 + "dependencies": {
  1380 + "balanced-match": {
  1381 + "version": "0.4.2",
  1382 + "bundled": true
  1383 + },
  1384 + "concat-map": {
  1385 + "version": "0.0.1",
  1386 + "bundled": true
  1387 + }
  1388 + }
  1389 + }
  1390 + }
  1391 + },
  1392 + "once": {
  1393 + "version": "1.4.0",
  1394 + "bundled": true,
  1395 + "requires": {
  1396 + "wrappy": "1"
  1397 + },
  1398 + "dependencies": {
  1399 + "wrappy": {
  1400 + "version": "1.0.2",
  1401 + "bundled": true
  1402 + }
  1403 + }
  1404 + },
  1405 + "path-is-absolute": {
  1406 + "version": "1.0.1",
  1407 + "bundled": true
  1408 + }
  1409 + }
  1410 + }
  1411 + }
  1412 + },
  1413 + "semver": {
  1414 + "version": "5.3.0",
  1415 + "bundled": true
  1416 + },
  1417 + "tar": {
  1418 + "version": "2.2.1",
  1419 + "bundled": true,
  1420 + "requires": {
  1421 + "block-stream": "*",
  1422 + "fstream": "^1.0.2",
  1423 + "inherits": "2"
  1424 + },
  1425 + "dependencies": {
  1426 + "block-stream": {
  1427 + "version": "0.0.9",
  1428 + "bundled": true,
  1429 + "requires": {
  1430 + "inherits": "~2.0.0"
  1431 + }
  1432 + },
  1433 + "fstream": {
  1434 + "version": "1.0.10",
  1435 + "bundled": true,
  1436 + "requires": {
  1437 + "graceful-fs": "^4.1.2",
  1438 + "inherits": "~2.0.0",
  1439 + "mkdirp": ">=0.5 0",
  1440 + "rimraf": "2"
  1441 + },
  1442 + "dependencies": {
  1443 + "graceful-fs": {
  1444 + "version": "4.1.11",
  1445 + "bundled": true
  1446 + }
  1447 + }
  1448 + },
  1449 + "inherits": {
  1450 + "version": "2.0.3",
  1451 + "bundled": true
  1452 + }
  1453 + }
  1454 + },
  1455 + "tar-pack": {
  1456 + "version": "3.3.0",
  1457 + "bundled": true,
  1458 + "requires": {
  1459 + "debug": "~2.2.0",
  1460 + "fstream": "~1.0.10",
  1461 + "fstream-ignore": "~1.0.5",
  1462 + "once": "~1.3.3",
  1463 + "readable-stream": "~2.1.4",
  1464 + "rimraf": "~2.5.1",
  1465 + "tar": "~2.2.1",
  1466 + "uid-number": "~0.0.6"
  1467 + },
  1468 + "dependencies": {
  1469 + "debug": {
  1470 + "version": "2.2.0",
  1471 + "bundled": true,
  1472 + "requires": {
  1473 + "ms": "0.7.1"
  1474 + },
  1475 + "dependencies": {
  1476 + "ms": {
  1477 + "version": "0.7.1",
  1478 + "bundled": true
  1479 + }
  1480 + }
  1481 + },
  1482 + "fstream": {
  1483 + "version": "1.0.10",
  1484 + "bundled": true,
  1485 + "requires": {
  1486 + "graceful-fs": "^4.1.2",
  1487 + "inherits": "~2.0.0",
  1488 + "mkdirp": ">=0.5 0",
  1489 + "rimraf": "2"
  1490 + },
  1491 + "dependencies": {
  1492 + "graceful-fs": {
  1493 + "version": "4.1.11",
  1494 + "bundled": true
  1495 + },
  1496 + "inherits": {
  1497 + "version": "2.0.3",
  1498 + "bundled": true
  1499 + }
  1500 + }
  1501 + },
  1502 + "fstream-ignore": {
  1503 + "version": "1.0.5",
  1504 + "bundled": true,
  1505 + "requires": {
  1506 + "fstream": "^1.0.0",
  1507 + "inherits": "2",
  1508 + "minimatch": "^3.0.0"
  1509 + },
  1510 + "dependencies": {
  1511 + "inherits": {
  1512 + "version": "2.0.3",
  1513 + "bundled": true
  1514 + },
  1515 + "minimatch": {
  1516 + "version": "3.0.3",
  1517 + "bundled": true,
  1518 + "requires": {
  1519 + "brace-expansion": "^1.0.0"
  1520 + },
  1521 + "dependencies": {
  1522 + "brace-expansion": {
  1523 + "version": "1.1.6",
  1524 + "bundled": true,
  1525 + "requires": {
  1526 + "balanced-match": "^0.4.1",
  1527 + "concat-map": "0.0.1"
  1528 + },
  1529 + "dependencies": {
  1530 + "balanced-match": {
  1531 + "version": "0.4.2",
  1532 + "bundled": true
  1533 + },
  1534 + "concat-map": {
  1535 + "version": "0.0.1",
  1536 + "bundled": true
  1537 + }
  1538 + }
  1539 + }
  1540 + }
  1541 + }
  1542 + }
  1543 + },
  1544 + "once": {
  1545 + "version": "1.3.3",
  1546 + "bundled": true,
  1547 + "requires": {
  1548 + "wrappy": "1"
  1549 + },
  1550 + "dependencies": {
  1551 + "wrappy": {
  1552 + "version": "1.0.2",
  1553 + "bundled": true
  1554 + }
  1555 + }
  1556 + },
  1557 + "readable-stream": {
  1558 + "version": "2.1.5",
  1559 + "bundled": true,
  1560 + "requires": {
  1561 + "buffer-shims": "^1.0.0",
  1562 + "core-util-is": "~1.0.0",
  1563 + "inherits": "~2.0.1",
  1564 + "isarray": "~1.0.0",
  1565 + "process-nextick-args": "~1.0.6",
  1566 + "string_decoder": "~0.10.x",
  1567 + "util-deprecate": "~1.0.1"
  1568 + },
  1569 + "dependencies": {
  1570 + "buffer-shims": {
  1571 + "version": "1.0.0",
  1572 + "bundled": true
  1573 + },
  1574 + "core-util-is": {
  1575 + "version": "1.0.2",
  1576 + "bundled": true
  1577 + },
  1578 + "inherits": {
  1579 + "version": "2.0.3",
  1580 + "bundled": true
  1581 + },
  1582 + "isarray": {
  1583 + "version": "1.0.0",
  1584 + "bundled": true
  1585 + },
  1586 + "process-nextick-args": {
  1587 + "version": "1.0.7",
  1588 + "bundled": true
  1589 + },
  1590 + "string_decoder": {
  1591 + "version": "0.10.31",
  1592 + "bundled": true
  1593 + },
  1594 + "util-deprecate": {
  1595 + "version": "1.0.2",
  1596 + "bundled": true
  1597 + }
  1598 + }
  1599 + },
  1600 + "uid-number": {
  1601 + "version": "0.0.6",
  1602 + "bundled": true
  1603 + }
  1604 + }
  1605 + }
  1606 + }
  1607 + }
  1608 + }
  1609 + },
  1610 + "serve-static": {
  1611 + "version": "1.13.2",
  1612 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
  1613 + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
  1614 + "requires": {
  1615 + "encodeurl": "~1.0.2",
  1616 + "escape-html": "~1.0.3",
  1617 + "parseurl": "~1.3.2",
  1618 + "send": "0.16.2"
  1619 + }
  1620 + },
  1621 + "setprototypeof": {
  1622 + "version": "1.1.0",
  1623 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
  1624 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
  1625 + },
  1626 + "sshpk": {
  1627 + "version": "1.16.1",
  1628 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
  1629 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
  1630 + "requires": {
  1631 + "asn1": "~0.2.3",
  1632 + "assert-plus": "^1.0.0",
  1633 + "bcrypt-pbkdf": "^1.0.0",
  1634 + "dashdash": "^1.12.0",
  1635 + "ecc-jsbn": "~0.1.1",
  1636 + "getpass": "^0.1.1",
  1637 + "jsbn": "~0.1.0",
  1638 + "safer-buffer": "^2.0.2",
  1639 + "tweetnacl": "~0.14.0"
  1640 + }
  1641 + },
  1642 + "statuses": {
  1643 + "version": "1.4.0",
  1644 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
  1645 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
  1646 + },
  1647 + "tough-cookie": {
  1648 + "version": "2.4.3",
  1649 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
  1650 + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
  1651 + "requires": {
  1652 + "psl": "^1.1.24",
  1653 + "punycode": "^1.4.1"
  1654 + },
  1655 + "dependencies": {
  1656 + "punycode": {
  1657 + "version": "1.4.1",
  1658 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
  1659 + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
  1660 + }
  1661 + }
  1662 + },
  1663 + "tunnel-agent": {
  1664 + "version": "0.6.0",
  1665 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
  1666 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
  1667 + "requires": {
  1668 + "safe-buffer": "^5.0.1"
  1669 + }
  1670 + },
  1671 + "tweetnacl": {
  1672 + "version": "0.14.5",
  1673 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
  1674 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
  1675 + },
  1676 + "type-is": {
  1677 + "version": "1.6.16",
  1678 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
  1679 + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
  1680 + "requires": {
  1681 + "media-typer": "0.3.0",
  1682 + "mime-types": "~2.1.18"
  1683 + }
  1684 + },
  1685 + "unpipe": {
  1686 + "version": "1.0.0",
  1687 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
  1688 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
  1689 + },
  1690 + "uri-js": {
  1691 + "version": "4.2.2",
  1692 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
  1693 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
  1694 + "requires": {
  1695 + "punycode": "^2.1.0"
  1696 + }
  1697 + },
  1698 + "utils-merge": {
  1699 + "version": "1.0.1",
  1700 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
  1701 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
  1702 + },
  1703 + "uuid": {
  1704 + "version": "3.3.2",
  1705 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
  1706 + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
  1707 + },
  1708 + "vary": {
  1709 + "version": "1.1.2",
  1710 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
  1711 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
  1712 + },
  1713 + "verror": {
  1714 + "version": "1.10.0",
  1715 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
  1716 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
  1717 + "requires": {
  1718 + "assert-plus": "^1.0.0",
  1719 + "core-util-is": "1.0.2",
  1720 + "extsprintf": "^1.2.0"
  1721 + }
  1722 + }
  1723 + }
  1724 +}
... ... @@ -0,0 +1,16 @@
  1 +{
  2 + "name": "modemX",
  3 + "version": "1.0.0",
  4 + "description": "",
  5 + "main": "index.js",
  6 + "scripts": {
  7 + "test": "echo \"Error: no test specified\" && exit 1"
  8 + },
  9 + "author": "",
  10 + "license": "ISC",
  11 + "dependencies": {
  12 + "express": "^4.16.4",
  13 + "request": "^2.88.0",
  14 + "serialport": "^4.0.7"
  15 + }
  16 +}