From 50878fb42319eed67206da49d442d40dbb53569f Mon Sep 17 00:00:00 2001
From: Laurent Montel <montel@kde.org>
Date: Thu, 31 Jan 2019 15:19:30 +0100
Subject: [PATCH 01/16] Add missing channel RESTAPI

Add removeLeader/addLeader
---
 packages/rocketchat-api/server/v1/channels.js | 29 +++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js
index 6332e0ef840ef..29d208d57f19d 100644
--- a/packages/rocketchat-api/server/v1/channels.js
+++ b/packages/rocketchat-api/server/v1/channels.js
@@ -967,3 +967,32 @@ RocketChat.API.v1.addRoute('channels.moderators', { authRequired: true }, {
 		});
 	},
 });
+
+RocketChat.API.v1.addRoute('channels.addLeader', { authRequired: true }, {
+        post() {
+                const findResult = findChannelByIdOrName({ params: this.requestParams() });
+
+                const user = this.getUserFromParams();
+
+                Meteor.runAsUser(this.userId, () => {
+                        Meteor.call('addRoomLeader', findResult._id, user._id);
+                });
+
+                return RocketChat.API.v1.success();
+        },
+});
+
+RocketChat.API.v1.addRoute('channels.removeLeader', { authRequired: true }, {
+        post() {
+                const findResult = findChannelByIdOrName({ params: this.requestParams() });
+
+                const user = this.getUserFromParams();
+
+                Meteor.runAsUser(this.userId, () => {
+                        Meteor.call('removeRoomLeader', findResult._id, user._id);
+                });
+
+                return RocketChat.API.v1.success();
+        },
+});
+

From fce665feb707beee3168e02af15f3148f4d99239 Mon Sep 17 00:00:00 2001
From: Laurent Montel <montel@kde.org>
Date: Fri, 1 Feb 2019 15:35:39 +0100
Subject: [PATCH 02/16] Add missing RESTAPI add/remove leader role

---
 packages/rocketchat-api/server/v1/channels.js | 32 +++++++++----------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js
index 29d208d57f19d..875fd434ef357 100644
--- a/packages/rocketchat-api/server/v1/channels.js
+++ b/packages/rocketchat-api/server/v1/channels.js
@@ -969,30 +969,30 @@ RocketChat.API.v1.addRoute('channels.moderators', { authRequired: true }, {
 });
 
 RocketChat.API.v1.addRoute('channels.addLeader', { authRequired: true }, {
-        post() {
-                const findResult = findChannelByIdOrName({ params: this.requestParams() });
+	post() {
+		const findResult = findChannelByIdOrName({ params: this.requestParams() });
 
-                const user = this.getUserFromParams();
+		const user = this.getUserFromParams();
 
-                Meteor.runAsUser(this.userId, () => {
-                        Meteor.call('addRoomLeader', findResult._id, user._id);
-                });
+		Meteor.runAsUser(this.userId, () => {
+			Meteor.call('addRoomLeader', findResult._id, user._id);
+		});
 
-                return RocketChat.API.v1.success();
-        },
+		return RocketChat.API.v1.success();
+	},
 });
 
 RocketChat.API.v1.addRoute('channels.removeLeader', { authRequired: true }, {
-        post() {
-                const findResult = findChannelByIdOrName({ params: this.requestParams() });
+	post() {
+		const findResult = findChannelByIdOrName({ params: this.requestParams() });
 
-                const user = this.getUserFromParams();
+		const user = this.getUserFromParams();
 
-                Meteor.runAsUser(this.userId, () => {
-                        Meteor.call('removeRoomLeader', findResult._id, user._id);
-                });
+		Meteor.runAsUser(this.userId, () => {
+			Meteor.call('removeRoomLeader', findResult._id, user._id);
+		});
 
-                return RocketChat.API.v1.success();
-        },
+		return RocketChat.API.v1.success();
+	},
 });
 

From 7b69bab1279c508aa7b8c8b7ee67bd8f5b78c100 Mon Sep 17 00:00:00 2001
From: Marcos Defendi <marcos.defendi@ulbra.inf.br>
Date: Mon, 11 Feb 2019 11:40:21 -0200
Subject: [PATCH 03/16] Add tests cases for new endpoints

---
 tests/end-to-end/api/02-channels.js | 29 ++++++++++++++++++++++++++++
 tests/end-to-end/api/03-groups.js   | 30 +++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/tests/end-to-end/api/02-channels.js b/tests/end-to-end/api/02-channels.js
index a2935cf6a5ba1..6f1548a48ed94 100644
--- a/tests/end-to-end/api/02-channels.js
+++ b/tests/end-to-end/api/02-channels.js
@@ -587,6 +587,35 @@ describe('[Channels]', function() {
 			.end(done);
 	});
 
+	it('/channels.addLeader', (done) => {
+		request.post(api('channels.addLeader'))
+			.set(credentials)
+			.send({
+				roomId: channel._id,
+				userId: 'rocket.cat',
+			})
+			.expect('Content-Type', 'application/json')
+			.expect(200)
+			.expect((res) => {
+				expect(res.body).to.have.a.property('success', true);
+			})
+			.end(done);
+	});
+	it('/channels.removeLeader', (done) => {
+		request.post(api('channels.removeLeader'))
+			.set(credentials)
+			.send({
+				roomId: channel._id,
+				userId: 'rocket.cat',
+			})
+			.expect('Content-Type', 'application/json')
+			.expect(200)
+			.expect((res) => {
+				expect(res.body).to.have.property('success', true);
+			})
+			.end(done);
+	});
+
 
 	describe('/channels.setCustomFields:', () => {
 		let cfchannel;
diff --git a/tests/end-to-end/api/03-groups.js b/tests/end-to-end/api/03-groups.js
index 182d9a0ccfd00..3fa5094f97269 100644
--- a/tests/end-to-end/api/03-groups.js
+++ b/tests/end-to-end/api/03-groups.js
@@ -250,6 +250,36 @@ describe('[Groups]', function() {
 			.end(done);
 	});
 
+	it('/groups.addLeader', (done) => {
+		request.post(api('groups.addLeader'))
+			.set(credentials)
+			.send({
+				roomId: group._id,
+				userId: 'rocket.cat',
+			})
+			.expect('Content-Type', 'application/json')
+			.expect(200)
+			.expect((res) => {
+				expect(res.body).to.have.a.property('success', true);
+			})
+			.end(done);
+	});
+
+	it('/groups.removeLeader', (done) => {
+		request.post(api('groups.removeLeader'))
+			.set(credentials)
+			.send({
+				roomId: group._id,
+				userId: 'rocket.cat',
+			})
+			.expect('Content-Type', 'application/json')
+			.expect(200)
+			.expect((res) => {
+				expect(res.body).to.have.property('success', true);
+			})
+			.end(done);
+	});
+
 	it('/groups.kick', (done) => {
 		request.post(api('groups.kick'))
 			.set(credentials)

From 1353f6eac33ca7249f53a1ffe48b4472fb53abd2 Mon Sep 17 00:00:00 2001
From: Renato Becker <renato.augusto.becker@gmail.com>
Date: Thu, 14 Feb 2019 16:32:06 -0200
Subject: [PATCH 04/16] When a Livechat visitor has an open livechat room, the
 method needs to return nothing.

---
 packages/rocketchat-livechat/server/api/v1/agent.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/packages/rocketchat-livechat/server/api/v1/agent.js b/packages/rocketchat-livechat/server/api/v1/agent.js
index de1aec068d967..ed58c7abeeba1 100644
--- a/packages/rocketchat-livechat/server/api/v1/agent.js
+++ b/packages/rocketchat-livechat/server/api/v1/agent.js
@@ -46,8 +46,8 @@ RocketChat.API.v1.addRoute('livechat/agent.next/:token', {
 
 			const { token } = this.urlParams;
 			const room = findOpenRoom(token);
-			if (!room) {
-				throw new Meteor.Error('invalid-token');
+			if (room) {
+				return RocketChat.API.v1.success();
 			}
 
 			let { department } = this.queryParams;

From d94ec51e7f447a8c1c56c1e85f56a3daf03905f5 Mon Sep 17 00:00:00 2001
From: Marcos Defendi <marcos.defendi@ulbra.inf.br>
Date: Mon, 18 Feb 2019 10:18:46 -0300
Subject: [PATCH 05/16] Fix global variable

---
 packages/rocketchat-api/server/v1/channels.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js
index f40cb991cd1e6..9d5ef981912da 100644
--- a/packages/rocketchat-api/server/v1/channels.js
+++ b/packages/rocketchat-api/server/v1/channels.js
@@ -971,7 +971,7 @@ API.v1.addRoute('channels.moderators', { authRequired: true }, {
 	},
 });
 
-RocketChat.API.v1.addRoute('channels.addLeader', { authRequired: true }, {
+API.v1.addRoute('channels.addLeader', { authRequired: true }, {
 	post() {
 		const findResult = findChannelByIdOrName({ params: this.requestParams() });
 
@@ -981,11 +981,11 @@ RocketChat.API.v1.addRoute('channels.addLeader', { authRequired: true }, {
 			Meteor.call('addRoomLeader', findResult._id, user._id);
 		});
 
-		return RocketChat.API.v1.success();
+		return API.v1.success();
 	},
 });
 
-RocketChat.API.v1.addRoute('channels.removeLeader', { authRequired: true }, {
+API.v1.addRoute('channels.removeLeader', { authRequired: true }, {
 	post() {
 		const findResult = findChannelByIdOrName({ params: this.requestParams() });
 
@@ -995,7 +995,7 @@ RocketChat.API.v1.addRoute('channels.removeLeader', { authRequired: true }, {
 			Meteor.call('removeRoomLeader', findResult._id, user._id);
 		});
 
-		return RocketChat.API.v1.success();
+		return API.v1.success();
 	},
 });
 

From c0fa1e7e2843fd22385e3862b88790a1bdd6adfa Mon Sep 17 00:00:00 2001
From: Diego Sampaio <chinello@gmail.com>
Date: Mon, 18 Feb 2019 15:23:52 -0300
Subject: [PATCH 06/16] Regression: Not updating subscriptions and not showing
 desktop notifcations (#13509)

* Fix not updating subscriptions on message

* Fix not displaying desktop notifications
---
 packages/rocketchat-lib/server/lib/index.js       | 4 +++-
 packages/rocketchat-ui/client/lib/notification.js | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/packages/rocketchat-lib/server/lib/index.js b/packages/rocketchat-lib/server/lib/index.js
index fd771291f723e..28e714afa6c22 100644
--- a/packages/rocketchat-lib/server/lib/index.js
+++ b/packages/rocketchat-lib/server/lib/index.js
@@ -5,10 +5,12 @@
 	for the *server* pieces of code which does include the shared
 	library files.
 */
-export { sendNotification } from './sendNotificationsOnMessage.js';
+export { sendNotification } from './sendNotificationsOnMessage';
 export { hostname } from '../../lib/startup/settingsOnLoadSiteUrl';
 export { passwordPolicy } from './passwordPolicy';
 export { validateEmailDomain } from './validateEmailDomain';
 export { RateLimiterClass as RateLimiter } from './RateLimiter';
 export { processDirectEmail } from './processDirectEmail';
 export { msgStream } from './msgStream';
+
+import './notifyUsersOnMessage';
diff --git a/packages/rocketchat-ui/client/lib/notification.js b/packages/rocketchat-ui/client/lib/notification.js
index c13a0f2c9d932..071cb540bbea5 100644
--- a/packages/rocketchat-ui/client/lib/notification.js
+++ b/packages/rocketchat-ui/client/lib/notification.js
@@ -10,7 +10,8 @@ import s from 'underscore.string';
 import { e2e } from 'meteor/rocketchat:e2e';
 import { Users, ChatSubscription } from 'meteor/rocketchat:models';
 import { getUserPreference } from 'meteor/rocketchat:utils';
-import { getAvatarUrlFromUsername, getAvatarAsPng } from 'meteor/rocketchat:ui-utils';
+import { getAvatarUrlFromUsername } from 'meteor/rocketchat:utils';
+import { getAvatarAsPng } from 'meteor/rocketchat:ui-utils';
 import { promises } from 'meteor/rocketchat:promises';
 
 export const KonchatNotification = {

From bc9d4d9427df5b871b536e2ae6ea869dc884daca Mon Sep 17 00:00:00 2001
From: Marcos Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 13:57:56 -0300
Subject: [PATCH 07/16] Fix wrong imports in rc-models

---
 packages/rocketchat-models/server/models/LivechatDepartment.js | 3 +--
 .../server/models/LivechatDepartmentAgents.js                  | 2 +-
 packages/rocketchat-models/server/models/LivechatVisitors.js   | 2 +-
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/packages/rocketchat-models/server/models/LivechatDepartment.js b/packages/rocketchat-models/server/models/LivechatDepartment.js
index 927d28596fee7..9d264e85840b6 100644
--- a/packages/rocketchat-models/server/models/LivechatDepartment.js
+++ b/packages/rocketchat-models/server/models/LivechatDepartment.js
@@ -1,7 +1,6 @@
 import { Base } from './_Base';
-import { LivechatDepartmentAgents } from './LivechatDepartmentAgents';
+import LivechatDepartmentAgents from './LivechatDepartmentAgents';
 import _ from 'underscore';
-
 /**
  * Livechat Department model
  */
diff --git a/packages/rocketchat-models/server/models/LivechatDepartmentAgents.js b/packages/rocketchat-models/server/models/LivechatDepartmentAgents.js
index b853174a2e691..b23d9ee9e8cf5 100644
--- a/packages/rocketchat-models/server/models/LivechatDepartmentAgents.js
+++ b/packages/rocketchat-models/server/models/LivechatDepartmentAgents.js
@@ -1,6 +1,6 @@
 import { Meteor } from 'meteor/meteor';
 import { Base } from './_Base';
-import { Users } from './Users';
+import Users from './Users';
 import _ from 'underscore';
 /**
  * Livechat Department model
diff --git a/packages/rocketchat-models/server/models/LivechatVisitors.js b/packages/rocketchat-models/server/models/LivechatVisitors.js
index 665b427b0ffac..c34f73c7b4ddb 100644
--- a/packages/rocketchat-models/server/models/LivechatVisitors.js
+++ b/packages/rocketchat-models/server/models/LivechatVisitors.js
@@ -1,6 +1,6 @@
 import { Meteor } from 'meteor/meteor';
 import { Base } from './_Base';
-import { Settings } from './Settings';
+import Settings from './Settings';
 import _ from 'underscore';
 import s from 'underscore.string';
 

From e81092ecc2d77e4f1924579aff966c14823bf65e Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 14:21:57 -0300
Subject: [PATCH 08/16] Fix autolinker that was not parsing urls correctly
 (#13497)

---
 packages/rocketchat-autolinker/client/client.js | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/packages/rocketchat-autolinker/client/client.js b/packages/rocketchat-autolinker/client/client.js
index b03848d44973d..2d5de1b3e7019 100644
--- a/packages/rocketchat-autolinker/client/client.js
+++ b/packages/rocketchat-autolinker/client/client.js
@@ -49,12 +49,18 @@ const renderMessage = (message) => {
 		return message;
 	}
 
-	const regexTokens = new RegExp(`(${ (message.tokens || []).map(({ token }) => RegExp.escape(token)) })`, 'g');
-
+	let msgParts;
+	let regexTokens;
+	if (message.tokens && message.tokens.length) {
+		regexTokens = new RegExp(`(${ (message.tokens || []).map(({ token }) => RegExp.escape(token)) })`, 'g');
+		msgParts = message.html.split(regexTokens);
+	} else {
+		msgParts = [message.html];
+	}
 	const autolinker = createAutolinker();
-	message.html = message.html.split(regexTokens)
+	message.html = msgParts
 		.map((msgPart) => {
-			if (regexTokens.test(msgPart)) {
+			if (regexTokens && regexTokens.test(msgPart)) {
 				return msgPart;
 			}
 

From 92eeab8b11b572d44d57ba69607d335fe3725185 Mon Sep 17 00:00:00 2001
From: Renato Becker <renato.augusto.becker@gmail.com>
Date: Tue, 19 Feb 2019 14:57:17 -0300
Subject: [PATCH 09/16] Fix API importer.

---
 packages/rocketchat-livechat/server/api/v1/agent.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/packages/rocketchat-livechat/server/api/v1/agent.js b/packages/rocketchat-livechat/server/api/v1/agent.js
index 3fe3a2a3a26dc..b2a5eead3ed2b 100644
--- a/packages/rocketchat-livechat/server/api/v1/agent.js
+++ b/packages/rocketchat-livechat/server/api/v1/agent.js
@@ -48,7 +48,7 @@ API.v1.addRoute('livechat/agent.next/:token', {
 			const { token } = this.urlParams;
 			const room = findOpenRoom(token);
 			if (room) {
-				return RocketChat.API.v1.success();
+				return API.v1.success();
 			}
 
 			let { department } = this.queryParams;

From 3bd2aab1f9d74c9f01220dd8e69e8733752b1e07 Mon Sep 17 00:00:00 2001
From: Renato Becker <renato.augusto.becker@gmail.com>
Date: Tue, 19 Feb 2019 15:28:05 -0300
Subject: [PATCH 10/16] Add department field on find guest method. (#13491)

---
 packages/rocketchat-livechat/server/api/lib/livechat.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/packages/rocketchat-livechat/server/api/lib/livechat.js b/packages/rocketchat-livechat/server/api/lib/livechat.js
index bd01ed1c76a7d..386f072125a82 100644
--- a/packages/rocketchat-livechat/server/api/lib/livechat.js
+++ b/packages/rocketchat-livechat/server/api/lib/livechat.js
@@ -23,6 +23,7 @@ export function findGuest(token) {
 			username: 1,
 			token: 1,
 			visitorEmails: 1,
+			department: 1,
 		},
 	});
 }

From 5adc11fe427104710c224564946e0df83401bcb9 Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 16:56:24 -0300
Subject: [PATCH 11/16] Remove internal hubot package (#13522)

---
 .../.npm/package/.gitignore                   |   1 -
 .../.npm/package/README                       |   7 -
 .../.npm/package/npm-shrinkwrap.json          | 715 ------------------
 packages/rocketchat-internal-hubot/README.md  |  21 -
 packages/rocketchat-internal-hubot/package.js |  22 -
 .../rocketchat-internal-hubot/server/hubot.js | 264 -------
 .../rocketchat-internal-hubot/server/index.js |  10 -
 .../server/settings.js                        |  15 -
 server/startup/migrations/v138.js             |  15 +
 9 files changed, 15 insertions(+), 1055 deletions(-)
 delete mode 100644 packages/rocketchat-internal-hubot/.npm/package/.gitignore
 delete mode 100644 packages/rocketchat-internal-hubot/.npm/package/README
 delete mode 100644 packages/rocketchat-internal-hubot/.npm/package/npm-shrinkwrap.json
 delete mode 100644 packages/rocketchat-internal-hubot/README.md
 delete mode 100644 packages/rocketchat-internal-hubot/package.js
 delete mode 100644 packages/rocketchat-internal-hubot/server/hubot.js
 delete mode 100644 packages/rocketchat-internal-hubot/server/index.js
 delete mode 100644 packages/rocketchat-internal-hubot/server/settings.js
 create mode 100644 server/startup/migrations/v138.js

diff --git a/packages/rocketchat-internal-hubot/.npm/package/.gitignore b/packages/rocketchat-internal-hubot/.npm/package/.gitignore
deleted file mode 100644
index 3c3629e647f5d..0000000000000
--- a/packages/rocketchat-internal-hubot/.npm/package/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/packages/rocketchat-internal-hubot/.npm/package/README b/packages/rocketchat-internal-hubot/.npm/package/README
deleted file mode 100644
index 3d492553a438e..0000000000000
--- a/packages/rocketchat-internal-hubot/.npm/package/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory and the files immediately inside it are automatically generated
-when you change this package's NPM dependencies. Commit the files in this
-directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
-so that others run the same versions of sub-dependencies.
-
-You should NOT check in the node_modules directory that Meteor automatically
-creates; if you are using git, the .gitignore file tells git to ignore it.
diff --git a/packages/rocketchat-internal-hubot/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-internal-hubot/.npm/package/npm-shrinkwrap.json
deleted file mode 100644
index efd36a374ded7..0000000000000
--- a/packages/rocketchat-internal-hubot/.npm/package/npm-shrinkwrap.json
+++ /dev/null
@@ -1,715 +0,0 @@
-{
-  "lockfileVersion": 1,
-  "dependencies": {
-    "accepts": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz",
-      "integrity": "sha1-5fHzkoxtlf2WVYw27D2dDeSm7Oo=",
-      "dependencies": {
-        "mime-db": {
-          "version": "1.30.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-          "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
-        },
-        "mime-types": {
-          "version": "2.1.17",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-          "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo="
-        }
-      }
-    },
-    "ansi-regex": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
-    },
-    "ansi-styles": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
-      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
-    },
-    "async": {
-      "version": "0.9.2",
-      "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
-      "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
-    },
-    "base64-url": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz",
-      "integrity": "sha1-GZ/WYXAqDnt9yubgaYuwicUvbXg="
-    },
-    "basic-auth": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz",
-      "integrity": "sha1-Awk1sB3nyblKgksp8/zLdQ06UpA="
-    },
-    "basic-auth-connect": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz",
-      "integrity": "sha1-/bC0OWLKe0BFanwrtI/hc9otISI="
-    },
-    "batch": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz",
-      "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ="
-    },
-    "body-parser": {
-      "version": "1.13.3",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz",
-      "integrity": "sha1-wIzzMMM1jhUQFqBXRvE/ApyX+pc=",
-      "dependencies": {
-        "ee-first": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-          "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "mime-db": {
-          "version": "1.30.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-          "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
-        },
-        "mime-types": {
-          "version": "2.1.17",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-          "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo="
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-          "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-        },
-        "qs": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz",
-          "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc="
-        },
-        "type-is": {
-          "version": "1.6.15",
-          "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
-          "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA="
-        }
-      }
-    },
-    "bytes": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz",
-      "integrity": "sha1-rJPEEOL/ycx89LRks4KJBn9eR7Q="
-    },
-    "chalk": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
-      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg="
-    },
-    "cline": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/cline/-/cline-0.8.2.tgz",
-      "integrity": "sha1-6RHnQaCtLiTSnm+rLPifoyLVnHY="
-    },
-    "coffee-script": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.3.tgz",
-      "integrity": "sha1-Y1XTLPGwTN/2tITl5xF4Ky8MOb4="
-    },
-    "commander": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
-      "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0="
-    },
-    "compressible": {
-      "version": "2.0.12",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.12.tgz",
-      "integrity": "sha1-xZpcmdt2dn6YdlAOJx72OzSTvWY=",
-      "dependencies": {
-        "mime-db": {
-          "version": "1.32.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.32.0.tgz",
-          "integrity": "sha512-+ZWo/xZN40Tt6S+HyakUxnSOgff+JEdaneLWIm0Z6LmpCn5DMcZntLyUY5c/rTDog28LhXLKOUZKoTxTCAdBVw=="
-        }
-      }
-    },
-    "compression": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz",
-      "integrity": "sha1-sDuNhub4rSloPLqN+R3cb/x3s5U="
-    },
-    "connect": {
-      "version": "2.30.2",
-      "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz",
-      "integrity": "sha1-jam8vooFTT0xjXTf7JA7XDmhtgk=",
-      "dependencies": {
-        "mime-db": {
-          "version": "1.30.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-          "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
-        },
-        "mime-types": {
-          "version": "2.1.17",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-          "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo="
-        },
-        "qs": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz",
-          "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc="
-        },
-        "type-is": {
-          "version": "1.6.15",
-          "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
-          "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA="
-        }
-      }
-    },
-    "connect-multiparty": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/connect-multiparty/-/connect-multiparty-1.2.5.tgz",
-      "integrity": "sha1-L6vs/cGop3S6GUhNzmYMgYqFVec="
-    },
-    "connect-timeout": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz",
-      "integrity": "sha1-3ppexh4zoStu2qt7XwYumMWZuI4="
-    },
-    "content-disposition": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz",
-      "integrity": "sha1-QoT+auBjCHRjnkToCkGMKTQTXp4="
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "cookie": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz",
-      "integrity": "sha1-5zSlwUF/zkctWu+Cw4HKu2TRpDU="
-    },
-    "cookie-parser": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz",
-      "integrity": "sha1-nXVVcPtdF4kHcSJ6AjFNm+fPg1Y="
-    },
-    "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="
-    },
-    "crc": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz",
-      "integrity": "sha1-+mIuG8OIvyVzCQgta2UgDOZwkLo="
-    },
-    "csrf": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz",
-      "integrity": "sha1-thEg3c7q/JHnbtUxO7XAsmZ7cQo="
-    },
-    "csurf": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz",
-      "integrity": "sha1-I/KhO/HY/OHQyZZYg5RELLqGpWo="
-    },
-    "debug": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
-      "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo="
-    },
-    "depd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz",
-      "integrity": "sha1-gK7GTJ1tl+ZcwqnKqTwKpqv3Oqo="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "ee-first": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz",
-      "integrity": "sha1-ag18YiHkkP7v2S7D9EHJzozQl/Q="
-    },
-    "errorhandler": {
-      "version": "1.4.3",
-      "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz",
-      "integrity": "sha1-t7cO2PNZ6duICS8tIMD4MUIK2D8=",
-      "dependencies": {
-        "accepts": {
-          "version": "1.3.4",
-          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
-          "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8="
-        },
-        "escape-html": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-          "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-        },
-        "mime-db": {
-          "version": "1.30.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-          "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
-        },
-        "mime-types": {
-          "version": "2.1.17",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-          "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo="
-        },
-        "negotiator": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-          "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
-        }
-      }
-    },
-    "escape-html": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz",
-      "integrity": "sha1-130y+pjjjC9BroXpJ44ODmuhAiw="
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
-    },
-    "etag": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz",
-      "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg="
-    },
-    "express": {
-      "version": "3.21.2",
-      "resolved": "https://registry.npmjs.org/express/-/express-3.21.2.tgz",
-      "integrity": "sha1-DCkD7lxU5j1lqWFwdkcDVQZlo94="
-    },
-    "express-session": {
-      "version": "1.11.3",
-      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz",
-      "integrity": "sha1-XMmPP1/4Ttg1+Ry/CqvQxxB0AK8=",
-      "dependencies": {
-        "uid-safe": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz",
-          "integrity": "sha1-p/PGymSh9qXQTsDvPkw9U2cxcTc="
-        }
-      }
-    },
-    "finalhandler": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz",
-      "integrity": "sha1-llpS2ejQXSuFdUhUH7ibU6JJfZs=",
-      "dependencies": {
-        "ee-first": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-          "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-          "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-        }
-      }
-    },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
-    },
-    "fresh": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz",
-      "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8="
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
-      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE="
-    },
-    "http-errors": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
-      "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI="
-    },
-    "hubot": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/hubot/-/hubot-2.19.0.tgz",
-      "integrity": "sha1-h8Vy0hD7DV+J91YXeuACDUn/ujY="
-    },
-    "hubot-help": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/hubot-help/-/hubot-help-0.2.2.tgz",
-      "integrity": "sha1-zqF+eCzndrdD9lOTk1s0MMLoGXw="
-    },
-    "iconv-lite": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz",
-      "integrity": "sha1-LstC/SlHRJIiCaLnxATayHk9it4="
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "ipaddr.js": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz",
-      "integrity": "sha1-X6eM8wG4JceKvDBC2BJyMEnqI8c="
-    },
-    "isarray": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
-      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
-    },
-    "log": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/log/-/log-1.4.0.tgz",
-      "integrity": "sha1-S6HYkP3iSbAx3KA7w36q8yVlbxw="
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-    },
-    "merge-descriptors": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz",
-      "integrity": "sha1-IWnPdTjhsMyH+4jhUC2EdLv3mGQ="
-    },
-    "method-override": {
-      "version": "2.3.10",
-      "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz",
-      "integrity": "sha1-49r41d7hDdLc59SuiNYrvud0drQ=",
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-        },
-        "vary": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-          "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-        }
-      }
-    },
-    "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.12.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz",
-      "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc="
-    },
-    "mime-types": {
-      "version": "2.0.14",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz",
-      "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY="
-    },
-    "minimist": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
-    },
-    "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM="
-    },
-    "morgan": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz",
-      "integrity": "sha1-X9gYOYxoGcuiinzWZk8pL+HAu/I=",
-      "dependencies": {
-        "ee-first": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-          "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-          "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-        }
-      }
-    },
-    "ms": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
-      "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg="
-    },
-    "multiparty": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz",
-      "integrity": "sha1-Nd5oBNwZZD5SSfPT473GyM4wHT8="
-    },
-    "negotiator": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz",
-      "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g="
-    },
-    "on-finished": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.1.tgz",
-      "integrity": "sha1-+CyhyeOk8yhrG5k4YQ5bhja9PLI="
-    },
-    "on-headers": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
-      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
-    },
-    "optparse": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/optparse/-/optparse-1.0.4.tgz",
-      "integrity": "sha1-wGJXnS0F0kPCIaMEpx4Ml5YjzPE="
-    },
-    "parseurl": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
-    },
-    "pause": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz",
-      "integrity": "sha1-68ikqGGf8LioGsFRPDQ0/0af23Q="
-    },
-    "proxy-addr": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz",
-      "integrity": "sha1-DUCoL4Afw1VWfS7LZe/j8HfxIcU="
-    },
-    "qs": {
-      "version": "2.2.5",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz",
-      "integrity": "sha1-EIirr53MCuWuRbcJ5sa1iIsjkjw="
-    },
-    "random-bytes": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
-      "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
-    },
-    "range-parser": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz",
-      "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU="
-    },
-    "raw-body": {
-      "version": "2.1.7",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
-      "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=",
-      "dependencies": {
-        "bytes": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
-          "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk="
-        },
-        "iconv-lite": {
-          "version": "0.4.13",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
-          "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI="
-        }
-      }
-    },
-    "readable-stream": {
-      "version": "1.1.14",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
-      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
-    },
-    "response-time": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz",
-      "integrity": "sha1-/6cbq5UtYvfB1Jt0NDVfvGjf/Fo=",
-      "dependencies": {
-        "depd": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-        }
-      }
-    },
-    "rndm": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
-      "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w="
-    },
-    "scoped-http-client": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmjs.org/scoped-http-client/-/scoped-http-client-0.11.0.tgz",
-      "integrity": "sha1-iH+oKoNg8V1jmlLlBOVjwVfSbXQ="
-    },
-    "send": {
-      "version": "0.13.0",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz",
-      "integrity": "sha1-UY+SGusFYK7H3KspkLFM9vPM5d4=",
-      "dependencies": {
-        "destroy": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz",
-          "integrity": "sha1-tDO0ck5x/YVR2YhRdIUcX8N34sk="
-        },
-        "ee-first": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-          "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-          "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-        },
-        "statuses": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
-          "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg="
-        }
-      }
-    },
-    "serve-favicon": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz",
-      "integrity": "sha1-3UGeJo3gEqtysxnTN/IQUBP5OB8=",
-      "dependencies": {
-        "ms": {
-          "version": "0.7.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
-          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
-        }
-      }
-    },
-    "serve-index": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz",
-      "integrity": "sha1-egV/xu4o3GP2RWbl+lexEahq7NI=",
-      "dependencies": {
-        "escape-html": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-          "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-        },
-        "mime-db": {
-          "version": "1.30.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
-          "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
-        },
-        "mime-types": {
-          "version": "2.1.17",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
-          "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo="
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.10.3",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz",
-      "integrity": "sha1-zlpuzTEB/tXsCYJ9rCKpwpv7BTU=",
-      "dependencies": {
-        "depd": {
-          "version": "1.1.2",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-          "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-        },
-        "ee-first": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-          "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-        },
-        "escape-html": {
-          "version": "1.0.3",
-          "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-          "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-        },
-        "on-finished": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-          "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-        },
-        "send": {
-          "version": "0.13.2",
-          "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz",
-          "integrity": "sha1-dl52B8gFVFK7pvCwUllTUJhgNt4="
-        },
-        "statuses": {
-          "version": "1.2.1",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz",
-          "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg="
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-    },
-    "stream-counter": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
-      "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94="
-    },
-    "string_decoder": {
-      "version": "0.10.31",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
-      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-    },
-    "strip-ansi": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
-    },
-    "supports-color": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
-      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
-    },
-    "tsscmp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz",
-      "integrity": "sha1-fcSjOvcVgatDN9qR2FylQn69mpc="
-    },
-    "type-is": {
-      "version": "1.5.7",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz",
-      "integrity": "sha1-uTaKWTzG730GReeLL0xky+zQXpA="
-    },
-    "uid-safe": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz",
-      "integrity": "sha1-Otbzg2jG1MjHXsF2I/t5qh0HHYE="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "utils-merge": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
-      "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
-    },
-    "vary": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz",
-      "integrity": "sha1-meSYFWaihhGN+yuBc1ffeZM3bRA="
-    },
-    "vhost": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz",
-      "integrity": "sha1-L7HezUxGaqiLD5NBrzPcGv8keNU="
-    }
-  }
-}
diff --git a/packages/rocketchat-internal-hubot/README.md b/packages/rocketchat-internal-hubot/README.md
deleted file mode 100644
index e760fb78e1fec..0000000000000
--- a/packages/rocketchat-internal-hubot/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-Meteor doesn't interact really well with NPM and the NPM module
-loading mechanism which hubot uses for its scripts.  So we've
-split out most of hubot's scripts into this separate module.
-
-To add a new hubot script:
-
-* **If it is packaged in npm** (probably via the
-[hubot-scripts organization on github](https://github.com/hubot-scripts)),
-just add it to the `package.json`, for example with:
-```
-$ npm install --save hubot-pugme
-```
-
-* **If it is included in the old [hubot-scripts repository](https://github.com/github/hubot-scripts/tree/master/src/scripts)**,
-just add it to the admin settings:
-```
-redis-brain.coffee,shipit.coffee,whatis.coffee,<new-script-name>.coffee
-```
-
-* **If it is a custom script**, or a forked/tweaked version of a
-  script, add it to the `scripts/` directory.
diff --git a/packages/rocketchat-internal-hubot/package.js b/packages/rocketchat-internal-hubot/package.js
deleted file mode 100644
index 10b8e34a38f9e..0000000000000
--- a/packages/rocketchat-internal-hubot/package.js
+++ /dev/null
@@ -1,22 +0,0 @@
-Package.describe({
-	name: 'rocketchat:internal-hubot',
-	version: '0.0.1',
-	summary: 'Internal Hubot for Rocket.Chat',
-	git: '',
-});
-
-Package.onUse(function(api) {
-	api.use([
-		'ecmascript',
-		'tracker',
-		'rocketchat:lib',
-		'templating',
-	]);
-	api.mainModule('server/index.js', 'server');
-});
-
-// It needs to be here cuz they are coffee files and need to be compiled
-Npm.depends({
-	hubot: '2.19.0',
-	'hubot-help': '0.2.2',
-});
diff --git a/packages/rocketchat-internal-hubot/server/hubot.js b/packages/rocketchat-internal-hubot/server/hubot.js
deleted file mode 100644
index 3c6fd1499ae9b..0000000000000
--- a/packages/rocketchat-internal-hubot/server/hubot.js
+++ /dev/null
@@ -1,264 +0,0 @@
-import { Meteor } from 'meteor/meteor';
-import { RocketChat } from 'meteor/rocketchat:lib';
-import _ from 'underscore';
-import s from 'underscore.string';
-
-import 'coffeescript/register';
-
-const Hubot = Npm.require('hubot');
-
-// Start a hubot, connected to our chat room.
-// 'use strict'
-// Log messages?
-const DEBUG = false;
-
-export let InternalHubot = {};
-
-const sendHelper = Meteor.bindEnvironment((robot, envelope, strings, map) => {
-	while (strings.length > 0) {
-		const string = strings.shift();
-		if (typeof(string) === 'function') {
-			string();
-		} else {
-			try {
-				map(string);
-			} catch (err) {
-				if (DEBUG) { console.error(`Hubot error: ${ err }`); }
-				robot.logger.error(`RocketChat send error: ${ err }`);
-			}
-		}
-	}
-});
-
-// Monkey-patch Hubot to support private messages
-Hubot.Response.prototype.priv = (...strings) => this.robot.adapter.priv(this.envelope, ...strings);
-
-// More monkey-patching
-Hubot.Robot.prototype.loadAdapter = () => {}; // disable
-
-export {
-	Hubot,
-};
-
-// grrrr, Meteor.bindEnvironment doesn't preserve `this` apparently
-const bind = function(f) {
-	const g = Meteor.bindEnvironment((self, ...args) => f.apply(self, args));
-	return function(...args) { return g(this, ...Array.from(args)); };
-};
-
-class Robot extends Hubot.Robot {
-	constructor(...args) {
-		super(...(args || []));
-		this.hear = bind(this.hear);
-		this.respond = bind(this.respond);
-		this.enter = bind(this.enter);
-		this.leave = bind(this.leave);
-		this.topic = bind(this.topic);
-		this.error = bind(this.error);
-		this.catchAll = bind(this.catchAll);
-		this.user = Meteor.users.findOne({ username: this.name }, { fields: { username: 1 } });
-	}
-	loadAdapter() { return false; }
-	hear(regex, callback) { return super.hear(regex, Meteor.bindEnvironment(callback)); }
-	respond(regex, callback) { return super.respond(regex, Meteor.bindEnvironment(callback)); }
-	enter(callback) { return super.enter(Meteor.bindEnvironment(callback)); }
-	leave(callback) { return super.leave(Meteor.bindEnvironment(callback)); }
-	topic(callback) { return super.topic(Meteor.bindEnvironment(callback)); }
-	error(callback) { return super.error(Meteor.bindEnvironment(callback)); }
-	catchAll(callback) { return super.catchAll(Meteor.bindEnvironment(callback)); }
-}
-
-export class RocketChatAdapter extends Hubot.Adapter {
-	// Public: Raw method for sending data back to the chat source. Extend this.
-	//
-	// envelope - A Object with message, room and user details.
-	// strings  - One or more Strings for each message to send.
-	//
-	// Returns nothing.
-	send(envelope, ...strings) {
-		if (DEBUG) { console.log('ROCKETCHATADAPTER -> send'.blue); }
-		// console.log envelope, strings
-		return sendHelper(this.robot, envelope, strings, (string) => {
-			if (DEBUG) { console.log(`send ${ envelope.room }: ${ string } (${ envelope.user.id })`); }
-			return RocketChat.sendMessage(InternalHubot.user, { msg: string }, { _id: envelope.room });
-		});
-	}
-
-	// Public: Raw method for sending emote data back to the chat source.
-	//
-	// envelope - A Object with message, room and user details.
-	// strings  - One or more Strings for each message to send.
-	//
-	// Returns nothing.
-	emote(envelope, ...strings) {
-		if (DEBUG) { console.log('ROCKETCHATADAPTER -> emote'.blue); }
-		return sendHelper(this.robot, envelope, strings, (string) => {
-			if (DEBUG) { console.log(`emote ${ envelope.rid }: ${ string } (${ envelope.u.username })`); }
-			if (envelope.message.private) { return this.priv(envelope, `*** ${ string } ***`); }
-			return Meteor.call('sendMessage', {
-				msg: string,
-				rid: envelope.rid,
-				action: true,
-			}
-			);
-		});
-	}
-
-	// Priv: our extension -- send a PM to user
-	priv(envelope, ...strings) {
-		if (DEBUG) { console.log('ROCKETCHATADAPTER -> priv'.blue); }
-		return sendHelper(this.robot, envelope, strings, function(string) {
-			if (DEBUG) { console.log(`priv ${ envelope.room }: ${ string } (${ envelope.user.id })`); }
-			return Meteor.call('sendMessage', {
-				u: {
-					username: RocketChat.settings.get('InternalHubot_Username'),
-				},
-				to: `${ envelope.user.id }`,
-				msg: string,
-				rid: envelope.room,
-			});
-		});
-	}
-
-	// Public: Raw method for building a reply and sending it back to the chat
-	// source. Extend this.
-	//
-	// envelope - A Object with message, room and user details.
-	// strings  - One or more Strings for each reply to send.
-	//
-	// Returns nothing.
-	reply(envelope, ...strings) {
-		if (DEBUG) { console.log('ROCKETCHATADAPTER -> reply'.blue); }
-		if (envelope.message.private) {
-			return this.priv(envelope, ...strings);
-		} else {
-			return this.send(envelope, ...strings.map((str) => `${ envelope.user.name }: ${ str }`));
-		}
-	}
-
-	// Public: Raw method for setting a topic on the chat source. Extend this.
-	//
-	// envelope - A Object with message, room and user details.
-	// strings  - One more more Strings to set as the topic.
-	//
-	// Returns nothing.
-	topic(/* envelope, ...strings*/) {
-		if (DEBUG) { return console.log('ROCKETCHATADAPTER -> topic'.blue); }
-	}
-
-	// Public: Raw method for playing a sound in the chat source. Extend this.
-	//
-	// envelope - A Object with message, room and user details.
-	// strings  - One or more strings for each play message to send.
-	//
-	// Returns nothing
-	play(/* envelope, ...strings*/) {
-		if (DEBUG) { return console.log('ROCKETCHATADAPTER -> play'.blue); }
-	}
-
-	// Public: Raw method for invoking the bot to run. Extend this.
-	//
-	// Returns nothing.
-	run() {
-		if (DEBUG) { console.log('ROCKETCHATADAPTER -> run'.blue); }
-		this.robot.emit('connected');
-		return this.robot.brain.mergeData({});
-	}
-	// @robot.brain.emit 'loaded'
-
-	// Public: Raw method for shutting the bot down. Extend this.
-	//
-	// Returns nothing.
-	close() {
-		if (DEBUG) { return console.log('ROCKETCHATADAPTER -> close'.blue); }
-	}
-}
-
-export const InternalHubotReceiver = (message) => {
-	if (DEBUG) { console.log(message); }
-	if (message.u.username !== InternalHubot.name) {
-		const room = RocketChat.models.Rooms.findOneById(message.rid);
-		const enabledForC = RocketChat.settings.get('InternalHubot_EnableForChannels');
-		const enabledForD = RocketChat.settings.get('InternalHubot_EnableForDirectMessages');
-		const enabledForP = RocketChat.settings.get('InternalHubot_EnableForPrivateGroups');
-		const subscribedToP = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(room._id, InternalHubot.user._id);
-
-		if (
-			(room.t === 'c' && enabledForC)
-			|| (room.t === 'd' && enabledForD)
-			|| (room.t === 'p' && enabledForP && subscribedToP)
-		) {
-			const InternalHubotUser = new Hubot.User(message.u.username, { room: message.rid });
-			const InternalHubotTextMessage = new Hubot.TextMessage(InternalHubotUser, message.msg, message._id);
-			InternalHubot.adapter.receive(InternalHubotTextMessage);
-		}
-	}
-	return message;
-};
-
-export class HubotScripts {
-	constructor(robot) {
-		const modulesToLoad = [
-			'hubot-help/src/help.coffee',
-		];
-		const customPath = RocketChat.settings.get('InternalHubot_PathToLoadCustomScripts');
-		HubotScripts.load(`${ __meteor_bootstrap__.serverDir }/npm/node_modules/meteor/rocketchat_internal-hubot/node_modules/`, modulesToLoad, robot);
-		HubotScripts.load(customPath, RocketChat.settings.get('InternalHubot_ScriptsToLoad').split(',') || [], robot);
-	}
-
-	static load(path, scriptsToLoad, robot) {
-		if (!path || !scriptsToLoad) {
-			return;
-		}
-		scriptsToLoad.forEach((scriptFile) => {
-			try {
-				scriptFile = s.trim(scriptFile);
-				if (scriptFile === '') {
-					return;
-				}
-				// delete require.cache[require.resolve(path+scriptFile)];
-				const fn = Npm.require(path + scriptFile);
-				if (typeof(fn) === 'function') {
-					fn(robot);
-				} else {
-					fn.default(robot);
-				}
-				robot.parseHelp(path + scriptFile);
-				console.log(`Loaded ${ scriptFile }`.green);
-			} catch (e) {
-				console.log(`Can't load ${ scriptFile }`.red);
-				console.log(e);
-			}
-		});
-	}
-}
-
-const init = _.debounce(Meteor.bindEnvironment(() => {
-	if (RocketChat.settings.get('InternalHubot_Enabled')) {
-		InternalHubot = new Robot(null, null, false, RocketChat.settings.get('InternalHubot_Username'));
-		InternalHubot.alias = 'bot';
-		InternalHubot.adapter = new RocketChatAdapter(InternalHubot);
-		new HubotScripts(InternalHubot);
-		InternalHubot.run();
-		return RocketChat.callbacks.add('afterSaveMessage', InternalHubotReceiver, RocketChat.callbacks.priority.LOW, 'InternalHubot');
-	} else {
-		InternalHubot = {};
-		return RocketChat.callbacks.remove('afterSaveMessage', 'InternalHubot');
-	}
-}), 1000);
-
-Meteor.startup(function() {
-	init();
-	RocketChat.models.Settings.findByIds(['InternalHubot_Username', 'InternalHubot_Enabled', 'InternalHubot_ScriptsToLoad', 'InternalHubot_PathToLoadCustomScripts']).observe({
-		changed() {
-			return init();
-		},
-	});
-	// TODO useful when we have the ability to invalidate `require` cache
-	// RocketChat.RateLimiter.limitMethod('reloadInternalHubot', 1, 5000, {
-	// 	userId(/*userId*/) { return true; }
-	// });
-	// Meteor.methods({
-	// 	reloadInternalHubot: () => init()
-	// });
-});
diff --git a/packages/rocketchat-internal-hubot/server/index.js b/packages/rocketchat-internal-hubot/server/index.js
deleted file mode 100644
index f0e3e889ec819..0000000000000
--- a/packages/rocketchat-internal-hubot/server/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import './settings';
-import { Hubot, HubotScripts, InternalHubot, InternalHubotReceiver, RocketChatAdapter } from './hubot';
-
-export {
-	Hubot,
-	HubotScripts,
-	InternalHubot,
-	InternalHubotReceiver,
-	RocketChatAdapter,
-};
diff --git a/packages/rocketchat-internal-hubot/server/settings.js b/packages/rocketchat-internal-hubot/server/settings.js
deleted file mode 100644
index 82bfdec4ed953..0000000000000
--- a/packages/rocketchat-internal-hubot/server/settings.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import { RocketChat } from 'meteor/rocketchat:lib';
-
-RocketChat.settings.addGroup('InternalHubot', function() {
-	this.add('InternalHubot_Enabled', false, { type: 'boolean', i18nLabel: 'Enabled' });
-	this.add('InternalHubot_Username', 'rocket.cat', { type: 'string', i18nLabel: 'Username', i18nDescription: 'InternalHubot_Username_Description', public: true });
-	this.add('InternalHubot_ScriptsToLoad', '', { type: 'string' });
-	this.add('InternalHubot_PathToLoadCustomScripts', '', { type: 'string' });
-	this.add('InternalHubot_EnableForChannels', true, { type: 'boolean' });
-	this.add('InternalHubot_EnableForDirectMessages', false, { type: 'boolean' });
-	this.add('InternalHubot_EnableForPrivateGroups', false, { type: 'boolean' });
-	// this.add('InternalHubot_reload', 'reloadInternalHubot', {
-	// 	type: 'action',
-	// 	actionText: 'reload'
-	// });
-});
diff --git a/server/startup/migrations/v138.js b/server/startup/migrations/v138.js
new file mode 100644
index 0000000000000..b6128f87e2856
--- /dev/null
+++ b/server/startup/migrations/v138.js
@@ -0,0 +1,15 @@
+import { Migrations } from 'meteor/rocketchat:migrations';
+import { Settings } from 'meteor/rocketchat:models';
+
+Migrations.add({
+	version: 138,
+	up() {
+		Settings.remove({ _id: 'InternalHubot_Enabled' });
+		Settings.remove({ _id: 'InternalHubot_Username' });
+		Settings.remove({ _id: 'InternalHubot_ScriptsToLoad' });
+		Settings.remove({ _id: 'InternalHubot_PathToLoadCustomScripts' });
+		Settings.remove({ _id: 'InternalHubot_EnableForChannels' });
+		Settings.remove({ _id: 'InternalHubot_EnableForPrivateGroups' });
+		Settings.remove({ _id: 'InternalHubot_EnableForDirectMessages' });
+	},
+});

From b99988085b7fdb41e26283f74a0ef028e48026f6 Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 16:57:14 -0300
Subject: [PATCH 12/16] Convert rc-nrr and slashcommands open to main module
 structure (#13520)

---
 packages/rocketchat-nrr/client/index.js           | 1 +
 packages/rocketchat-nrr/{ => client}/nrr.js       | 0
 packages/rocketchat-nrr/package.js                | 2 +-
 packages/rocketchat-slashcommands-open/package.js | 2 +-
 4 files changed, 3 insertions(+), 2 deletions(-)
 create mode 100644 packages/rocketchat-nrr/client/index.js
 rename packages/rocketchat-nrr/{ => client}/nrr.js (100%)

diff --git a/packages/rocketchat-nrr/client/index.js b/packages/rocketchat-nrr/client/index.js
new file mode 100644
index 0000000000000..613d0630705e4
--- /dev/null
+++ b/packages/rocketchat-nrr/client/index.js
@@ -0,0 +1 @@
+import './nrr';
diff --git a/packages/rocketchat-nrr/nrr.js b/packages/rocketchat-nrr/client/nrr.js
similarity index 100%
rename from packages/rocketchat-nrr/nrr.js
rename to packages/rocketchat-nrr/client/nrr.js
diff --git a/packages/rocketchat-nrr/package.js b/packages/rocketchat-nrr/package.js
index 00d0ed987f36f..bee573ff25230 100755
--- a/packages/rocketchat-nrr/package.js
+++ b/packages/rocketchat-nrr/package.js
@@ -8,5 +8,5 @@ Package.describe({
 Package.onUse(function(api) {
 	api.use('ecmascript');
 
-	api.mainModule('nrr.js');
+	api.mainModule('client/index.js', 'client');
 });
diff --git a/packages/rocketchat-slashcommands-open/package.js b/packages/rocketchat-slashcommands-open/package.js
index 339f1097ba209..f7a41b0d8cbe4 100644
--- a/packages/rocketchat-slashcommands-open/package.js
+++ b/packages/rocketchat-slashcommands-open/package.js
@@ -14,5 +14,5 @@ Package.onUse(function(api) {
 		'kadira:flow-router',
 		'templating',
 	]);
-	api.addFiles('client/index.js', 'client');
+	api.mainModule('client/index.js', 'client');
 });

From 1eb744204ae9d581faac99bad12e9c8db1f72627 Mon Sep 17 00:00:00 2001
From: Diego Sampaio <chinello@gmail.com>
Date: Tue, 19 Feb 2019 16:57:59 -0300
Subject: [PATCH 13/16] Update Meteor 1.8.0.2 (#13519)

---
 .meteor/packages  |  4 ++--
 .meteor/release   |  2 +-
 .meteor/versions  |  8 ++++----
 package-lock.json | 12 ++++++------
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/.meteor/packages b/.meteor/packages
index 59334fb365374..64d574983ded9 100644
--- a/.meteor/packages
+++ b/.meteor/packages
@@ -16,7 +16,7 @@ check@1.3.1
 ddp-rate-limiter@1.0.7
 ddp-common@1.4.0
 dynamic-import@0.5.0
-ecmascript@0.12.3
+ecmascript@0.12.4
 ejson@1.1.0
 email@1.2.3
 fastclick@1.0.13
@@ -209,4 +209,4 @@ rocketchat:callbacks
 rocketchat:notifications
 rocketchat:promises
 rocketchat:ui-utils
-rocketchat:ui-cached-collection
\ No newline at end of file
+rocketchat:ui-cached-collection
diff --git a/.meteor/release b/.meteor/release
index 2299ae70d9553..91e05fc15b2fe 100644
--- a/.meteor/release
+++ b/.meteor/release
@@ -1 +1 @@
-METEOR@1.8.0.1
+METEOR@1.8.0.2
diff --git a/.meteor/versions b/.meteor/versions
index 43a36c1801020..a26ea4c0a36ee 100644
--- a/.meteor/versions
+++ b/.meteor/versions
@@ -9,7 +9,7 @@ accounts-twitter@1.4.2
 aldeed:simple-schema@1.5.4
 allow-deny@1.1.0
 autoupdate@1.5.0
-babel-compiler@7.2.3
+babel-compiler@7.2.4
 babel-runtime@1.3.0
 base64@1.0.11
 binary-heap@1.0.11
@@ -35,7 +35,7 @@ deps@1.0.12
 diff-sequence@1.1.1
 dispatch:run-as-user@1.1.1
 dynamic-import@0.5.1
-ecmascript@0.12.3
+ecmascript@0.12.4
 ecmascript-runtime@0.7.0
 ecmascript-runtime-client@0.8.0
 ecmascript-runtime-server@0.7.1
@@ -117,7 +117,7 @@ ordered-dict@1.1.0
 ostrio:cookies@2.3.0
 pauli:accounts-linkedin@2.1.5
 pauli:linkedin-oauth@1.2.0
-promise@0.11.1
+promise@0.11.2
 raix:eventemitter@0.1.3
 raix:eventstate@0.0.4
 raix:handlebar-helpers@0.2.5
@@ -193,7 +193,6 @@ rocketchat:mailer@0.0.1
 rocketchat:mailmessages@0.0.1
 rocketchat:mapview@0.0.1
 rocketchat:markdown@0.0.2
-rocketchat:metrics@0.0.1
 rocketchat:mentions@0.0.1
 rocketchat:mentions-flextab@0.0.1
 rocketchat:message-action@0.0.1
@@ -202,6 +201,7 @@ rocketchat:message-mark-as-unread@0.0.1
 rocketchat:message-pin@0.0.1
 rocketchat:message-snippet@0.0.1
 rocketchat:message-star@0.0.1
+rocketchat:metrics@0.0.1
 rocketchat:migrations@0.0.1
 rocketchat:models@1.0.0
 rocketchat:monitoring@2.30.2_3
diff --git a/package-lock.json b/package-lock.json
index 94700c8aa98c1..6ddb160ab7d64 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4440,7 +4440,7 @@
 		},
 		"colors": {
 			"version": "1.1.2",
-			"resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+			"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
 			"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
 			"dev": true
 		},
@@ -7402,7 +7402,7 @@
 		},
 		"get-stream": {
 			"version": "3.0.0",
-			"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+			"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
 			"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
 		},
 		"get-value": {
@@ -11038,7 +11038,7 @@
 		"minimatch": {
 			"version": "3.0.4",
 			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-			"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
 			"requires": {
 				"brace-expansion": "^1.1.7"
 			}
@@ -11605,7 +11605,7 @@
 		"npmlog": {
 			"version": "4.1.2",
 			"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
-			"integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
+			"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
 			"requires": {
 				"are-we-there-yet": "~1.1.2",
 				"console-control-strings": "~1.1.0",
@@ -12261,7 +12261,7 @@
 				},
 				"tough-cookie": {
 					"version": "2.3.4",
-					"resolved": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+					"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
 					"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
 					"dev": true,
 					"requires": {
@@ -13308,7 +13308,7 @@
 				},
 				"pify": {
 					"version": "2.3.0",
-					"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+					"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
 					"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
 					"dev": true
 				}

From 39c43d1be301f70754d96efaa6ffaf1fa5d731ad Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 17:05:48 -0300
Subject: [PATCH 14/16] Fix wrong this scope in Notifications (#13515)

---
 packages/rocketchat-notifications/server/lib/Notifications.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/packages/rocketchat-notifications/server/lib/Notifications.js b/packages/rocketchat-notifications/server/lib/Notifications.js
index f424c2222c3ea..893199491f31a 100644
--- a/packages/rocketchat-notifications/server/lib/Notifications.js
+++ b/packages/rocketchat-notifications/server/lib/Notifications.js
@@ -55,6 +55,7 @@ class RoomStreamer extends Meteor.Streamer {
 
 class Notifications {
 	constructor() {
+		const self = this;
 		this.debug = false;
 		this.notifyUser = this.notifyUser.bind(this);
 		this.streamAll = new Meteor.Streamer('notify-all');
@@ -74,7 +75,7 @@ class Notifications {
 			// });
 			if (Subscriptions.findOneByRoomIdAndUserId(roomId, this.userId) != null) {
 				const subscriptions = Subscriptions.findByRoomIdAndNotUserId(roomId, this.userId).fetch();
-				subscriptions.forEach((subscription) => this.notifyUser(subscription.u._id, e, ...args));
+				subscriptions.forEach((subscription) => self.notifyUser(subscription.u._id, e, ...args));
 			}
 			return false;
 		});

From d252249087fd2ae4023b0ecb479e3d7ce2e4f424 Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 17:38:27 -0300
Subject: [PATCH 15/16] Remove Npm.depends and Npm.require except those that
 are inside package.js (#13518)

---
 package-lock.json                             | 1201 ++++++++++++-----
 package.json                                  |   14 +
 packages/.eslintrc                            |    1 -
 .../.npm/package/.gitignore                   |    1 -
 .../rocketchat-accounts/.npm/package/README   |    7 -
 .../.npm/package/npm-shrinkwrap.json          |  259 ----
 packages/rocketchat-accounts/package.js       |    5 -
 .../rocketchat-grant/.npm/package/.gitignore  |    1 -
 packages/rocketchat-grant/.npm/package/README |    7 -
 .../.npm/package/npm-shrinkwrap.json          |  539 --------
 packages/rocketchat-grant/package.js          |    6 -
 .../.npm/package/.gitignore                   |    1 -
 .../rocketchat-graphql/.npm/package/README    |    7 -
 .../.npm/package/npm-shrinkwrap.json          |  714 ----------
 packages/rocketchat-graphql/package.js        |   12 -
 packages/rocketchat-i18n/.eslintrc            |    5 +
 packages/rocketchat-internal-hubot/.eslintrc  |    5 +
 .../rocketchat-irc/.npm/package/.gitignore    |    1 -
 packages/rocketchat-irc/.npm/package/README   |    7 -
 .../.npm/package/npm-shrinkwrap.json          |   20 -
 packages/rocketchat-irc/package.js            |    4 -
 packages/rocketchat-katex/.eslintrc           |    5 +
 .../rocketchat-lib/server/oauth/facebook.js   |    3 +-
 packages/rocketchat-livechat/package.js       |    8 +-
 .../plugin/build-livechat.js                  |    8 +-
 packages/rocketchat-livestream/package.js     |    3 -
 .../server/RocketAdapter.js                   |    4 +-
 27 files changed, 916 insertions(+), 1932 deletions(-)
 delete mode 100644 packages/rocketchat-accounts/.npm/package/.gitignore
 delete mode 100644 packages/rocketchat-accounts/.npm/package/README
 delete mode 100644 packages/rocketchat-accounts/.npm/package/npm-shrinkwrap.json
 delete mode 100644 packages/rocketchat-grant/.npm/package/.gitignore
 delete mode 100644 packages/rocketchat-grant/.npm/package/README
 delete mode 100644 packages/rocketchat-grant/.npm/package/npm-shrinkwrap.json
 delete mode 100644 packages/rocketchat-graphql/.npm/package/.gitignore
 delete mode 100644 packages/rocketchat-graphql/.npm/package/README
 delete mode 100644 packages/rocketchat-graphql/.npm/package/npm-shrinkwrap.json
 create mode 100644 packages/rocketchat-i18n/.eslintrc
 create mode 100644 packages/rocketchat-internal-hubot/.eslintrc
 delete mode 100644 packages/rocketchat-irc/.npm/package/.gitignore
 delete mode 100644 packages/rocketchat-irc/.npm/package/README
 delete mode 100644 packages/rocketchat-irc/.npm/package/npm-shrinkwrap.json
 create mode 100644 packages/rocketchat-katex/.eslintrc

diff --git a/package-lock.json b/package-lock.json
index 6ddb160ab7d64..539cd76d3f14d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,98 @@
 	"lockfileVersion": 1,
 	"requires": true,
 	"dependencies": {
+		"@accounts/common": {
+			"version": "0.0.18",
+			"resolved": "https://registry.npmjs.org/@accounts/common/-/common-0.0.18.tgz",
+			"integrity": "sha1-QB9Sd+tHk6qNBD8TUCituAh+FHs=",
+			"requires": {
+				"lodash": "^4.16.4"
+			}
+		},
+		"@accounts/graphql-api": {
+			"version": "0.2.3",
+			"resolved": "https://registry.npmjs.org/@accounts/graphql-api/-/graphql-api-0.2.3.tgz",
+			"integrity": "sha512-s21PWJUgPtnGpDzrYc7VgUlwVWQz4QoiwdwK+0qeJmS6LUB812lzH4TArr57LdZ2TzeFwniKIgSqPmknVGASLQ==",
+			"requires": {
+				"@accounts/server": "0.1.0-alpha.58382c10",
+				"deepmerge": "^2.0.0"
+			},
+			"dependencies": {
+				"@accounts/common": {
+					"version": "0.1.0-beta.14",
+					"resolved": "https://registry.npmjs.org/@accounts/common/-/common-0.1.0-beta.14.tgz",
+					"integrity": "sha1-N1yhvZjmxQP0DlCECyTaNXsaQhA=",
+					"requires": {
+						"lodash": "^4.17.10"
+					}
+				},
+				"@accounts/server": {
+					"version": "0.1.0-alpha.58382c10",
+					"resolved": "https://registry.npmjs.org/@accounts/server/-/server-0.1.0-alpha.58382c10.tgz",
+					"integrity": "sha1-rcTz1E7r3M4llFZsoEMOgOBXRXs=",
+					"requires": {
+						"@accounts/common": "^0.1.0-alpha.58382c10",
+						"babel-polyfill": "^6.23.0",
+						"bcryptjs": "^2.4.0",
+						"crypto": "^0.0.3",
+						"emailjs": "^1.0.8",
+						"jsonwebtoken": "^7.2.1",
+						"jwt-decode": "^2.1.0",
+						"lodash": "^4.16.4"
+					}
+				},
+				"jsonwebtoken": {
+					"version": "7.4.3",
+					"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
+					"integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=",
+					"requires": {
+						"joi": "^6.10.1",
+						"jws": "^3.1.4",
+						"lodash.once": "^4.0.0",
+						"ms": "^2.0.0",
+						"xtend": "^4.0.1"
+					}
+				}
+			}
+		},
+		"@accounts/mongo": {
+			"version": "0.0.12",
+			"resolved": "https://registry.npmjs.org/@accounts/mongo/-/mongo-0.0.12.tgz",
+			"integrity": "sha1-n7UNmgn2vThw5u3ZYC/xHL0gxns=",
+			"requires": {
+				"lodash": "^4.17.4",
+				"mongodb": "^2.2.22"
+			}
+		},
+		"@accounts/server": {
+			"version": "0.0.18",
+			"resolved": "https://registry.npmjs.org/@accounts/server/-/server-0.0.18.tgz",
+			"integrity": "sha1-S7UCs0WZUkRgRbqXYyT5MnuLekQ=",
+			"requires": {
+				"@accounts/common": "^0.0.18",
+				"babel-polyfill": "^6.23.0",
+				"bcryptjs": "^2.4.0",
+				"crypto": "^0.0.3",
+				"emailjs": "^1.0.8",
+				"jsonwebtoken": "^7.2.1",
+				"jwt-decode": "^2.1.0",
+				"lodash": "^4.16.4"
+			},
+			"dependencies": {
+				"jsonwebtoken": {
+					"version": "7.4.3",
+					"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
+					"integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=",
+					"requires": {
+						"joi": "^6.10.1",
+						"jws": "^3.1.4",
+						"lodash.once": "^4.0.0",
+						"ms": "^2.0.0",
+						"xtend": "^4.0.1"
+					}
+				}
+			}
+		},
 		"@babel/code-frame": {
 			"version": "7.0.0",
 			"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
@@ -1025,6 +1117,11 @@
 			"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz",
 			"integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw=="
 		},
+		"addressparser": {
+			"version": "0.3.2",
+			"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz",
+			"integrity": "sha1-WYc/Nej89sc2HBAjkmHXbhU0i7I="
+		},
 		"adm-zip": {
 			"version": "0.4.13",
 			"resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz",
@@ -1192,6 +1289,65 @@
 				}
 			}
 		},
+		"apollo-cache-control": {
+			"version": "0.1.1",
+			"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz",
+			"integrity": "sha512-XJQs167e9u+e5ybSi51nGYr70NPBbswdvTEHtbtXbwkZ+n9t0SLPvUcoqceayOSwjK1XYOdU/EKPawNdb3rLQA==",
+			"requires": {
+				"graphql-extensions": "^0.0.x"
+			}
+		},
+		"apollo-link": {
+			"version": "1.2.1",
+			"resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz",
+			"integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==",
+			"requires": {
+				"@types/node": "^9.4.6",
+				"apollo-utilities": "^1.0.0",
+				"zen-observable-ts": "^0.8.6"
+			}
+		},
+		"apollo-server-core": {
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.4.0.tgz",
+			"integrity": "sha512-BP1Vh39krgEjkQxbjTdBURUjLHbFq1zeOChDJgaRsMxGtlhzuLWwwC6lLdPatN8jEPbeHq8Tndp9QZ3iQZOKKA==",
+			"requires": {
+				"apollo-cache-control": "^0.1.0",
+				"apollo-tracing": "^0.1.0",
+				"graphql-extensions": "^0.0.x"
+			}
+		},
+		"apollo-server-express": {
+			"version": "1.3.6",
+			"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.3.6.tgz",
+			"integrity": "sha1-ISCwUCGofe9E+v2EbooOKjKFLbc=",
+			"requires": {
+				"apollo-server-core": "^1.3.6",
+				"apollo-server-module-graphiql": "^1.3.4"
+			}
+		},
+		"apollo-server-module-graphiql": {
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz",
+			"integrity": "sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA=="
+		},
+		"apollo-tracing": {
+			"version": "0.1.4",
+			"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz",
+			"integrity": "sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ==",
+			"requires": {
+				"graphql-extensions": "~0.0.9"
+			}
+		},
+		"apollo-utilities": {
+			"version": "1.1.3",
+			"resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.1.3.tgz",
+			"integrity": "sha512-pF9abhiClX5gfj/WFWZh8DiI33nOLGxRhXH9ZMquaM1V8bhq1WLFPt2QjShWH3kGQVeIGUK+FQefnhe+ZaaAYg==",
+			"requires": {
+				"fast-json-stable-stringify": "^2.0.0",
+				"tslib": "^1.9.3"
+			}
+		},
 		"aproba": {
 			"version": "1.2.0",
 			"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
@@ -2317,7 +2473,6 @@
 			"version": "6.26.0",
 			"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
 			"integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
-			"dev": true,
 			"requires": {
 				"babel-runtime": "^6.26.0",
 				"core-js": "^2.5.0",
@@ -2327,8 +2482,7 @@
 				"regenerator-runtime": {
 					"version": "0.10.5",
 					"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
-					"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
-					"dev": true
+					"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
 				}
 			}
 		},
@@ -2550,6 +2704,11 @@
 			"resolved": "https://registry.npmjs.org/backo/-/backo-1.1.0.tgz",
 			"integrity": "sha1-o2xEaJI/LSZcnopwnqVuza/4B+Y="
 		},
+		"backo2": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+			"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+		},
 		"backoff": {
 			"version": "2.5.0",
 			"resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz",
@@ -3093,6 +3252,11 @@
 				"tweetnacl": "^0.14.3"
 			}
 		},
+		"bcryptjs": {
+			"version": "2.4.3",
+			"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+			"integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
+		},
 		"bech32": {
 			"version": "1.1.3",
 			"resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.3.tgz",
@@ -3287,7 +3451,6 @@
 			"version": "2.10.1",
 			"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
 			"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
-			"dev": true,
 			"requires": {
 				"hoek": "2.x.x"
 			}
@@ -3499,11 +3662,22 @@
 			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
 			"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
 		},
+		"buffer-shims": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
+			"integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E="
+		},
 		"buffer-xor": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
 			"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
 		},
+		"bufferjs": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz",
+			"integrity": "sha1-CV/6OcXmtAoheKEWnJ7/xYSnMgE=",
+			"optional": true
+		},
 		"bugsnag": {
 			"version": "2.4.3",
 			"resolved": "https://registry.npmjs.org/bugsnag/-/bugsnag-2.4.3.tgz",
@@ -3688,16 +3862,6 @@
 			"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
 			"dev": true
 		},
-		"camel-case": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
-			"integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
-			"dev": true,
-			"requires": {
-				"no-case": "^2.2.0",
-				"upper-case": "^1.1.1"
-			}
-		},
 		"camelcase": {
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
@@ -4015,13 +4179,11 @@
 				"chromedriver": "^2.35",
 				"colors": "1.1.2",
 				"commander": "^2.9.0",
-				"cucumber": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
 				"deep-extend": "^0.4.1",
 				"exit": "^0.1.2",
 				"fibers": "^1.0.14",
 				"freeport": "~1.0.5",
 				"fs-extra": "^1.0.0",
-				"glob": "github:lucetius/node-glob#51c7ca6e69bfbd17db5f1ea710e3f2a7a457d9ce",
 				"hapi": "8.8.0",
 				"jasmine": "^2.4.1",
 				"loglevel": "~1.4.0",
@@ -4059,6 +4221,27 @@
 						"type-detect": "^4.0.0"
 					}
 				},
+				"cucumber": {
+					"version": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
+					"from": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
+					"requires": {
+						"camel-case": "^3.0.0",
+						"cli-table": "^0.3.1",
+						"co": "^4.6.0",
+						"colors": "^1.1.2",
+						"commander": "^2.9.0",
+						"duration": "^0.2.0",
+						"fibers": "^1.0.7",
+						"figures": "1.7.0",
+						"gherkin": "4.0.0",
+						"glob": "^7.0.0",
+						"is-generator": "^1.0.2",
+						"lodash": "^4.0.0",
+						"meteor-promise": "^0.8.0",
+						"stack-chain": "^1.3.5",
+						"stacktrace-js": "^1.3.0"
+					}
+				},
 				"debug": {
 					"version": "3.1.0",
 					"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -4077,13 +4260,11 @@
 				"fibers": {
 					"version": "1.0.15",
 					"resolved": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz",
-					"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw=",
-					"dev": true
+					"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw="
 				},
 				"glob": {
-					"version": "github:lucetius/node-glob#51c7ca6e69bfbd17db5f1ea710e3f2a7a457d9ce",
-					"from": "github:lucetius/node-glob#chimp",
-					"dev": true,
+					"version": "7.1.1",
+					"resolved": "github:lucetius/node-glob#51c7ca6e69bfbd17db5f1ea710e3f2a7a457d9ce",
 					"requires": {
 						"fs.realpath": "^1.0.0",
 						"inflight": "^1.0.4",
@@ -4160,8 +4341,7 @@
 				"once": {
 					"version": "1.3.0",
 					"resolved": "https://registry.npmjs.org/once/-/once-1.3.0.tgz",
-					"integrity": "sha1-FRr4a/wfCMS58H0GqyUP/L61ZYE=",
-					"dev": true
+					"integrity": "sha1-FRr4a/wfCMS58H0GqyUP/L61ZYE="
 				},
 				"progress": {
 					"version": "1.1.8",
@@ -4307,23 +4487,6 @@
 				"restore-cursor": "^2.0.0"
 			}
 		},
-		"cli-table": {
-			"version": "0.3.1",
-			"resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
-			"integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
-			"dev": true,
-			"requires": {
-				"colors": "1.0.3"
-			},
-			"dependencies": {
-				"colors": {
-					"version": "1.0.3",
-					"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
-					"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
-					"dev": true
-				}
-			}
-		},
 		"cli-width": {
 			"version": "2.2.0",
 			"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
@@ -4585,6 +4748,11 @@
 				"safe-buffer": "~5.1.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",
@@ -4636,6 +4804,15 @@
 			"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",
+				"vary": "^1"
+			}
+		},
 		"cosmiconfig": {
 			"version": "5.0.7",
 			"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz",
@@ -4743,11 +4920,15 @@
 			"version": "2.0.5",
 			"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
 			"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
-			"dev": true,
 			"requires": {
 				"boom": "2.x.x"
 			}
 		},
+		"crypto": {
+			"version": "0.0.3",
+			"resolved": "https://registry.npmjs.org/crypto/-/crypto-0.0.3.tgz",
+			"integrity": "sha1-RwqBuGvkxe4XrMggeh9TFa4g27A="
+		},
 		"crypto-browserify": {
 			"version": "3.12.0",
 			"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
@@ -4846,36 +5027,6 @@
 			"integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
 			"dev": true
 		},
-		"cucumber": {
-			"version": "github:xolvio/cucumber-js#cf953cb5b5de30dbcc279f59e4ebff3aa040071c",
-			"from": "github:xolvio/cucumber-js#v1.3.0-chimp.6",
-			"dev": true,
-			"requires": {
-				"camel-case": "^3.0.0",
-				"cli-table": "^0.3.1",
-				"co": "^4.6.0",
-				"colors": "^1.1.2",
-				"commander": "^2.9.0",
-				"duration": "^0.2.0",
-				"fibers": "^1.0.7",
-				"figures": "1.7.0",
-				"gherkin": "4.0.0",
-				"glob": "^7.0.0",
-				"is-generator": "^1.0.2",
-				"lodash": "^4.0.0",
-				"meteor-promise": "^0.8.0",
-				"stack-chain": "^1.3.5",
-				"stacktrace-js": "^1.3.0"
-			},
-			"dependencies": {
-				"fibers": {
-					"version": "1.0.15",
-					"resolved": "https://registry.npmjs.org/fibers/-/fibers-1.0.15.tgz",
-					"integrity": "sha1-IvA5yPGLhWGQ+75N7PBWFUwerpw=",
-					"dev": true
-				}
-			}
-		},
 		"cuid": {
 			"version": "1.3.8",
 			"resolved": "https://registry.npmjs.org/cuid/-/cuid-1.3.8.tgz",
@@ -4913,15 +5064,6 @@
 			"integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
 			"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.9"
-			}
-		},
 		"dashdash": {
 			"version": "1.14.1",
 			"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -5034,6 +5176,11 @@
 				"mimic-response": "^1.0.0"
 			}
 		},
+		"deep-copy": {
+			"version": "1.4.2",
+			"resolved": "https://registry.npmjs.org/deep-copy/-/deep-copy-1.4.2.tgz",
+			"integrity": "sha512-VxZwQ/1+WGQPl5nE67uLhh7OqdrmqI1OazrraO9Bbw/M8Bt6Mol/RxzDA6N6ZgRXpsG/W9PgUj8E1LHHBEq2GQ=="
+		},
 		"deep-eql": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
@@ -5056,8 +5203,7 @@
 		"deepmerge": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.0.1.tgz",
-			"integrity": "sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ==",
-			"dev": true
+			"integrity": "sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ=="
 		},
 		"define-properties": {
 			"version": "1.1.3",
@@ -5166,6 +5312,11 @@
 			"resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz",
 			"integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg="
 		},
+		"deprecated-decorator": {
+			"version": "0.1.6",
+			"resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz",
+			"integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc="
+		},
 		"des.js": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
@@ -5350,16 +5501,6 @@
 				"stream-shift": "^1.0.0"
 			}
 		},
-		"duration": {
-			"version": "0.2.2",
-			"resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz",
-			"integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==",
-			"dev": true,
-			"requires": {
-				"d": "1",
-				"es5-ext": "~0.10.46"
-			}
-		},
 		"eastasianwidth": {
 			"version": "0.2.0",
 			"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -5420,6 +5561,25 @@
 				"minimalistic-crypto-utils": "^1.0.0"
 			}
 		},
+		"emailjs": {
+			"version": "1.0.12",
+			"resolved": "https://registry.npmjs.org/emailjs/-/emailjs-1.0.12.tgz",
+			"integrity": "sha1-vWVZxRxJYxJSGGJtoJi+ci96HHI=",
+			"requires": {
+				"addressparser": "^0.3.2",
+				"bufferjs": "1.1.0",
+				"mimelib": "0.2.14",
+				"moment": "2.15.2",
+				"starttls": "1.0.1"
+			},
+			"dependencies": {
+				"moment": {
+					"version": "2.15.2",
+					"resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz",
+					"integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw="
+				}
+			}
+		},
 		"emailreplyparser": {
 			"version": "0.0.5",
 			"resolved": "https://registry.npmjs.org/emailreplyparser/-/emailreplyparser-0.0.5.tgz",
@@ -5453,6 +5613,14 @@
 			"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
 			"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
 		},
+		"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.13"
+			}
+		},
 		"end-of-stream": {
 			"version": "1.4.1",
 			"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -5507,15 +5675,6 @@
 				}
 			}
 		},
-		"error-stack-parser": {
-			"version": "1.3.6",
-			"resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
-			"integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
-			"dev": true,
-			"requires": {
-				"stackframe": "^0.3.1"
-			}
-		},
 		"es-abstract": {
 			"version": "1.12.0",
 			"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
@@ -5538,28 +5697,6 @@
 				"is-symbol": "^1.0.2"
 			}
 		},
-		"es5-ext": {
-			"version": "0.10.47",
-			"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz",
-			"integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==",
-			"dev": true,
-			"requires": {
-				"es6-iterator": "~2.0.3",
-				"es6-symbol": "~3.1.1",
-				"next-tick": "1"
-			}
-		},
-		"es6-iterator": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
-			"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
-			"dev": true,
-			"requires": {
-				"d": "1",
-				"es5-ext": "^0.10.35",
-				"es6-symbol": "^3.1.1"
-			}
-		},
 		"es6-promise": {
 			"version": "4.2.5",
 			"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
@@ -5573,16 +5710,6 @@
 				"es6-promise": "^4.0.3"
 			}
 		},
-		"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",
-				"es5-ext": "~0.10.14"
-			}
-		},
 		"escape-html": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -6300,6 +6427,42 @@
 				}
 			}
 		},
+		"express-session": {
+			"version": "1.15.4",
+			"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.4.tgz",
+			"integrity": "sha1-Xizc9t7+PB7aTpgPE7mGzFjPuVQ=",
+			"requires": {
+				"cookie": "0.3.1",
+				"cookie-signature": "1.0.6",
+				"crc": "3.4.4",
+				"debug": "2.6.8",
+				"depd": "~1.1.0",
+				"on-headers": "~1.0.1",
+				"parseurl": "~1.3.1",
+				"uid-safe": "~2.1.4",
+				"utils-merge": "1.0.0"
+			},
+			"dependencies": {
+				"crc": {
+					"version": "3.4.4",
+					"resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
+					"integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
+				},
+				"debug": {
+					"version": "2.6.8",
+					"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
+					"integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
+					"requires": {
+						"ms": "2.0.0"
+					}
+				},
+				"utils-merge": {
+					"version": "1.0.0",
+					"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
+					"integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
+				}
+			}
+		},
 		"extend": {
 			"version": "3.0.2",
 			"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -6495,16 +6658,6 @@
 			"integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
 			"dev": true
 		},
-		"figures": {
-			"version": "1.7.0",
-			"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
-			"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
-			"dev": true,
-			"requires": {
-				"escape-string-regexp": "^1.0.5",
-				"object-assign": "^4.1.0"
-			}
-		},
 		"file-entry-cache": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
@@ -6837,12 +6990,14 @@
 				"balanced-match": {
 					"version": "1.0.0",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"brace-expansion": {
 					"version": "1.1.11",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"balanced-match": "^1.0.0",
 						"concat-map": "0.0.1"
@@ -6857,17 +7012,20 @@
 				"code-point-at": {
 					"version": "1.1.0",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"concat-map": {
 					"version": "0.0.1",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"console-control-strings": {
 					"version": "1.1.0",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"core-util-is": {
 					"version": "1.0.2",
@@ -6984,7 +7142,8 @@
 				"inherits": {
 					"version": "2.0.3",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"ini": {
 					"version": "1.3.5",
@@ -6996,6 +7155,7 @@
 					"version": "1.0.0",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"number-is-nan": "^1.0.0"
 					}
@@ -7010,6 +7170,7 @@
 					"version": "3.0.4",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"brace-expansion": "^1.1.7"
 					}
@@ -7017,12 +7178,14 @@
 				"minimist": {
 					"version": "0.0.8",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"minipass": {
 					"version": "2.2.4",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"safe-buffer": "^5.1.1",
 						"yallist": "^3.0.0"
@@ -7041,6 +7204,7 @@
 					"version": "0.5.1",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"minimist": "0.0.8"
 					}
@@ -7121,7 +7285,8 @@
 				"number-is-nan": {
 					"version": "1.0.1",
 					"bundled": true,
-					"dev": true
+					"dev": true,
+					"optional": true
 				},
 				"object-assign": {
 					"version": "4.1.1",
@@ -7133,6 +7298,7 @@
 					"version": "1.4.0",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"wrappy": "1"
 					}
@@ -7254,6 +7420,7 @@
 					"version": "1.0.2",
 					"bundled": true,
 					"dev": true,
+					"optional": true,
 					"requires": {
 						"code-point-at": "^1.0.0",
 						"is-fullwidth-code-point": "^1.0.0",
@@ -7418,12 +7585,6 @@
 				"assert-plus": "^1.0.0"
 			}
 		},
-		"gherkin": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/gherkin/-/gherkin-4.0.0.tgz",
-			"integrity": "sha1-edzgTRIj6kO0hip2vlzo+JwSwyw=",
-			"dev": true
-		},
 		"github-from-package": {
 			"version": "0.0.0",
 			"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
@@ -7580,90 +7741,328 @@
 				}
 			}
 		},
-		"good-listener": {
-			"version": "1.2.2",
-			"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
-			"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+		"good-listener": {
+			"version": "1.2.2",
+			"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+			"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+			"requires": {
+				"delegate": "^3.1.2"
+			}
+		},
+		"google-auth-library": {
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-2.0.1.tgz",
+			"integrity": "sha512-CWLKZxqYw4SE+fE3GWbVT9r/10h75w8lB3cdmmLpLtCfccFDcsI84qI5rx7npemlrHtKJh3C2HUz4s6SihCeIQ==",
+			"requires": {
+				"axios": "^0.18.0",
+				"gcp-metadata": "^0.7.0",
+				"gtoken": "^2.3.0",
+				"https-proxy-agent": "^2.2.1",
+				"jws": "^3.1.5",
+				"lodash.isstring": "^4.0.1",
+				"lru-cache": "^4.1.3",
+				"semver": "^5.5.0"
+			},
+			"dependencies": {
+				"lru-cache": {
+					"version": "4.1.5",
+					"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+					"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+					"requires": {
+						"pseudomap": "^1.0.2",
+						"yallist": "^2.1.2"
+					}
+				}
+			}
+		},
+		"google-gax": {
+			"version": "0.20.0",
+			"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.20.0.tgz",
+			"integrity": "sha512-JoaRCQtks60zuB3c5/5y60jG+xFBP67yYIgF6UuuDDVZtj/Z6kCKqjrGWNXEzFH2jolHZcvocST3JMwA/XClvA==",
+			"requires": {
+				"@grpc/grpc-js": "^0.2.0",
+				"@grpc/proto-loader": "^0.3.0",
+				"duplexify": "^3.6.0",
+				"extend": "^3.0.1",
+				"globby": "^8.0.1",
+				"google-auth-library": "^2.0.0",
+				"google-proto-files": "^0.16.0",
+				"grpc": "^1.12.2",
+				"is-stream-ended": "^0.1.4",
+				"lodash": "^4.17.10",
+				"protobufjs": "^6.8.8",
+				"retry-request": "^4.0.0",
+				"semver": "^5.5.1",
+				"through2": "^2.0.3"
+			}
+		},
+		"google-p12-pem": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz",
+			"integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==",
+			"requires": {
+				"node-forge": "^0.7.4",
+				"pify": "^3.0.0"
+			}
+		},
+		"google-proto-files": {
+			"version": "0.16.1",
+			"resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz",
+			"integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==",
+			"requires": {
+				"globby": "^8.0.0",
+				"power-assert": "^1.4.4",
+				"protobufjs": "^6.8.0"
+			}
+		},
+		"googleapis": {
+			"version": "25.0.0",
+			"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-25.0.0.tgz",
+			"integrity": "sha512-hIP2VbwFliL7YHZQRaJrw5+ctunALJUior4KEw0vCYlcDezPnEA+HhTY2oq4I3PCHBKxKwc9xfV37Kkz6e/krw==",
+			"requires": {
+				"async": "2.6.0",
+				"google-auth-library": "^1.0.0",
+				"qs": "^6.5.1",
+				"string-template": "1.0.0",
+				"uuid": "^3.1.0"
+			},
+			"dependencies": {
+				"async": {
+					"version": "2.6.0",
+					"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
+					"integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
+					"requires": {
+						"lodash": "^4.14.0"
+					}
+				},
+				"gcp-metadata": {
+					"version": "0.6.3",
+					"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.6.3.tgz",
+					"integrity": "sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==",
+					"requires": {
+						"axios": "^0.18.0",
+						"extend": "^3.0.1",
+						"retry-axios": "0.3.2"
+					}
+				},
+				"google-auth-library": {
+					"version": "1.6.1",
+					"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.6.1.tgz",
+					"integrity": "sha512-jYiWC8NA9n9OtQM7ANn0Tk464do9yhKEtaJ72pKcaBiEwn4LwcGYIYOfwtfsSm3aur/ed3tlSxbmg24IAT6gAg==",
+					"requires": {
+						"axios": "^0.18.0",
+						"gcp-metadata": "^0.6.3",
+						"gtoken": "^2.3.0",
+						"jws": "^3.1.5",
+						"lodash.isstring": "^4.0.1",
+						"lru-cache": "^4.1.3",
+						"retry-axios": "^0.3.2"
+					}
+				},
+				"lru-cache": {
+					"version": "4.1.5",
+					"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+					"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+					"requires": {
+						"pseudomap": "^1.0.2",
+						"yallist": "^2.1.2"
+					}
+				}
+			}
+		},
+		"graceful-fs": {
+			"version": "4.1.15",
+			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+			"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
+		},
+		"grant": {
+			"version": "3.8.0",
+			"resolved": "https://registry.npmjs.org/grant/-/grant-3.8.0.tgz",
+			"integrity": "sha512-Q8UN1j9JQmmb/Wf7PlYXJn92IjX9Tio21rEV5jOte/novOaZ/l0xMWNel7CDbRw0zqFEnYIIAyh1Cri2u3poUw==",
+			"requires": {
+				"deep-copy": "^1.2.0",
+				"qs": "6.4.0",
+				"request": "2.81.0"
+			},
+			"dependencies": {
+				"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"
+					}
+				},
+				"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="
+				},
+				"aws-sign2": {
+					"version": "0.6.0",
+					"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+					"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
+				},
+				"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.12"
+					}
+				},
+				"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.9.1",
+						"har-schema": "^1.0.5"
+					}
+				},
+				"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.2.2",
+						"sshpk": "^1.7.0"
+					}
+				},
+				"oauth-sign": {
+					"version": "0.8.2",
+					"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+					"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+				},
+				"performance-now": {
+					"version": "0.2.0",
+					"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+					"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
+				},
+				"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="
+				},
+				"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.2.1",
+						"caseless": "~0.12.0",
+						"combined-stream": "~1.0.5",
+						"extend": "~3.0.0",
+						"forever-agent": "~0.6.1",
+						"form-data": "~2.1.1",
+						"har-validator": "~4.2.1",
+						"hawk": "~3.1.3",
+						"http-signature": "~1.1.0",
+						"is-typedarray": "~1.0.0",
+						"isstream": "~0.1.2",
+						"json-stringify-safe": "~5.0.1",
+						"mime-types": "~2.1.7",
+						"oauth-sign": "~0.8.1",
+						"performance-now": "^0.2.0",
+						"qs": "~6.4.0",
+						"safe-buffer": "^5.0.1",
+						"stringstream": "~0.0.4",
+						"tough-cookie": "~2.3.0",
+						"tunnel-agent": "^0.6.0",
+						"uuid": "^3.0.0"
+					}
+				},
+				"tough-cookie": {
+					"version": "2.3.4",
+					"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+					"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+					"requires": {
+						"punycode": "^1.4.1"
+					}
+				}
+			}
+		},
+		"grant-express": {
+			"version": "3.8.0",
+			"resolved": "https://registry.npmjs.org/grant-express/-/grant-express-3.8.0.tgz",
+			"integrity": "sha512-Ph3SSr8vQTt9igZn4GAARjfOYPlB3nxngs0NwBqFNPbBdSPf+m5keEibfrP2GfeYK1GCYoz85BPQzQQZYbBzpQ==",
+			"requires": {
+				"grant": "3.8.0"
+			}
+		},
+		"grapheme-splitter": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
+			"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
+		},
+		"graphql": {
+			"version": "0.13.2",
+			"resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
+			"integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog==",
 			"requires": {
-				"delegate": "^3.1.2"
+				"iterall": "^1.2.1"
 			}
 		},
-		"google-auth-library": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-2.0.1.tgz",
-			"integrity": "sha512-CWLKZxqYw4SE+fE3GWbVT9r/10h75w8lB3cdmmLpLtCfccFDcsI84qI5rx7npemlrHtKJh3C2HUz4s6SihCeIQ==",
+		"graphql-extensions": {
+			"version": "0.0.10",
+			"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz",
+			"integrity": "sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA==",
 			"requires": {
-				"axios": "^0.18.0",
-				"gcp-metadata": "^0.7.0",
-				"gtoken": "^2.3.0",
-				"https-proxy-agent": "^2.2.1",
-				"jws": "^3.1.5",
-				"lodash.isstring": "^4.0.1",
-				"lru-cache": "^4.1.3",
-				"semver": "^5.5.0"
+				"core-js": "^2.5.3",
+				"source-map-support": "^0.5.1"
 			},
 			"dependencies": {
-				"lru-cache": {
-					"version": "4.1.5",
-					"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-					"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+				"source-map": {
+					"version": "0.6.1",
+					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+					"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+				},
+				"source-map-support": {
+					"version": "0.5.10",
+					"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
+					"integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
 					"requires": {
-						"pseudomap": "^1.0.2",
-						"yallist": "^2.1.2"
+						"buffer-from": "^1.0.0",
+						"source-map": "^0.6.0"
 					}
 				}
 			}
 		},
-		"google-gax": {
-			"version": "0.20.0",
-			"resolved": "https://registry.npmjs.org/google-gax/-/google-gax-0.20.0.tgz",
-			"integrity": "sha512-JoaRCQtks60zuB3c5/5y60jG+xFBP67yYIgF6UuuDDVZtj/Z6kCKqjrGWNXEzFH2jolHZcvocST3JMwA/XClvA==",
-			"requires": {
-				"@grpc/grpc-js": "^0.2.0",
-				"@grpc/proto-loader": "^0.3.0",
-				"duplexify": "^3.6.0",
-				"extend": "^3.0.1",
-				"globby": "^8.0.1",
-				"google-auth-library": "^2.0.0",
-				"google-proto-files": "^0.16.0",
-				"grpc": "^1.12.2",
-				"is-stream-ended": "^0.1.4",
-				"lodash": "^4.17.10",
-				"protobufjs": "^6.8.8",
-				"retry-request": "^4.0.0",
-				"semver": "^5.5.1",
-				"through2": "^2.0.3"
-			}
-		},
-		"google-p12-pem": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz",
-			"integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==",
+		"graphql-subscriptions": {
+			"version": "0.5.8",
+			"resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz",
+			"integrity": "sha512-0CaZnXKBw2pwnIbvmVckby5Ge5e2ecmjofhYCdyeACbCly2j3WXDP/pl+s+Dqd2GQFC7y99NB+53jrt55CKxYQ==",
 			"requires": {
-				"node-forge": "^0.7.4",
-				"pify": "^3.0.0"
+				"iterall": "^1.2.1"
 			}
 		},
-		"google-proto-files": {
-			"version": "0.16.1",
-			"resolved": "https://registry.npmjs.org/google-proto-files/-/google-proto-files-0.16.1.tgz",
-			"integrity": "sha512-ykdhaYDiU/jlyrkzZDPemraKwVIgLT31XMHVNSJW//R9VED56hqSDRMx1Jlxbf0O4iDZnBWQ0JQLHbM2r5+wuA==",
+		"graphql-tools": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.2.tgz",
+			"integrity": "sha512-bhDGrvmSgcJBFX3EZEYagmKPk/EJ9vZIcF1WtSFveWfvSsh7crMFSQ9ldftuIXC9UeRwfutpGf3A1q4UpVLaRg==",
 			"requires": {
-				"globby": "^8.0.0",
-				"power-assert": "^1.4.4",
-				"protobufjs": "^6.8.0"
+				"apollo-link": "1.2.1",
+				"apollo-utilities": "^1.0.1",
+				"deprecated-decorator": "^0.1.6",
+				"iterall": "^1.1.3",
+				"uuid": "^3.1.0"
 			}
 		},
-		"graceful-fs": {
-			"version": "4.1.15",
-			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
-			"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
-		},
-		"grapheme-splitter": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-			"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
-		},
 		"gridfs-stream": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/gridfs-stream/-/gridfs-stream-1.1.1.tgz",
@@ -8226,6 +8625,18 @@
 						"hoek": "2.x.x",
 						"joi": "6.x.x",
 						"wreck": "5.x.x"
+					},
+					"dependencies": {
+						"wreck": {
+							"version": "5.6.1",
+							"resolved": "https://registry.npmjs.org/wreck/-/wreck-5.6.1.tgz",
+							"integrity": "sha1-r/ADBAATiJ11YZtccYcN0qjdBpo=",
+							"dev": true,
+							"requires": {
+								"boom": "2.x.x",
+								"hoek": "2.x.x"
+							}
+						}
 					}
 				},
 				"heavy": {
@@ -8237,6 +8648,20 @@
 						"boom": "2.x.x",
 						"hoek": "2.x.x",
 						"joi": "5.x.x"
+					},
+					"dependencies": {
+						"joi": {
+							"version": "5.1.0",
+							"resolved": "https://registry.npmjs.org/joi/-/joi-5.1.0.tgz",
+							"integrity": "sha1-FSrQfbjunGQBmX/1/SwSiWBwv1g=",
+							"dev": true,
+							"requires": {
+								"hoek": "^2.2.x",
+								"isemail": "1.x.x",
+								"moment": "2.x.x",
+								"topo": "1.x.x"
+							}
+						}
 					}
 				},
 				"hoek": {
@@ -8590,7 +9015,6 @@
 			"version": "3.1.3",
 			"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
 			"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
-			"dev": true,
 			"requires": {
 				"boom": "2.x.x",
 				"cryptiles": "2.x.x",
@@ -8621,8 +9045,7 @@
 		"hoek": {
 			"version": "2.16.3",
 			"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-			"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
-			"dev": true
+			"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
 		},
 		"home-or-tmp": {
 			"version": "2.0.0",
@@ -9376,12 +9799,6 @@
 				"number-is-nan": "^1.0.0"
 			}
 		},
-		"is-generator": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz",
-			"integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=",
-			"dev": true
-		},
 		"is-glob": {
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
@@ -9569,6 +9986,11 @@
 			"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="
+		},
 		"isexe": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -9584,6 +10006,11 @@
 			"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
 			"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
 		},
+		"iterall": {
+			"version": "1.2.2",
+			"resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz",
+			"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
+		},
 		"jasmine": {
 			"version": "2.99.0",
 			"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz",
@@ -9606,6 +10033,17 @@
 			"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.x.x",
+				"isemail": "1.x.x",
+				"moment": "2.x.x",
+				"topo": "1.x.x"
+			}
+		},
 		"jquery": {
 			"version": "3.3.1",
 			"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz",
@@ -9829,6 +10267,11 @@
 				"safe-buffer": "^5.0.1"
 			}
 		},
+		"jwt-decode": {
+			"version": "2.2.0",
+			"resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz",
+			"integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk="
+		},
 		"kew": {
 			"version": "0.7.0",
 			"resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz",
@@ -10294,6 +10737,11 @@
 			"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
 			"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
 		},
+		"lodash.isobject": {
+			"version": "3.0.2",
+			"resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
+			"integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0="
+		},
 		"lodash.isplainobject": {
 			"version": "4.0.6",
 			"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
@@ -10324,6 +10772,11 @@
 			"resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
 			"integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM="
 		},
+		"lodash.property": {
+			"version": "4.4.2",
+			"resolved": "https://registry.npmjs.org/lodash.property/-/lodash.property-4.4.2.tgz",
+			"integrity": "sha1-2gcSSCHGQJ0CXzDbjfhRMUUVv/4="
+		},
 		"lodash.reduce": {
 			"version": "4.6.0",
 			"resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
@@ -10466,12 +10919,6 @@
 				"signal-exit": "^3.0.0"
 			}
 		},
-		"lower-case": {
-			"version": "1.1.4",
-			"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
-			"integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
-			"dev": true
-		},
 		"lru-cache": {
 			"version": "5.1.1",
 			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -10761,6 +11208,23 @@
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
 			"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
 		},
+		"merge-graphql-schemas": {
+			"version": "1.5.2",
+			"resolved": "https://registry.npmjs.org/merge-graphql-schemas/-/merge-graphql-schemas-1.5.2.tgz",
+			"integrity": "sha512-KomSriblDYY6A2wixXf9jHRGTPBn37MrhlObEqXY14qA3xwdf4Osb5PR6F+Lgb9rRnXe9wusMIaHwAA1WXdyaw==",
+			"requires": {
+				"deepmerge": "^2.1.0",
+				"glob": "^7.1.2",
+				"is-glob": "^4.0.0"
+			},
+			"dependencies": {
+				"deepmerge": {
+					"version": "2.2.1",
+					"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
+					"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
+				}
+			}
+		},
 		"merge2": {
 			"version": "1.2.3",
 			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
@@ -10944,8 +11408,7 @@
 		"meteor-promise": {
 			"version": "0.8.6",
 			"resolved": "https://registry.npmjs.org/meteor-promise/-/meteor-promise-0.8.6.tgz",
-			"integrity": "sha512-HP6tOr67z/9XU2Dr0F2SSr8WRTuE23AG9Dj578DCJPEYHs67OLKBviU8A8rwvbwMD7Lu2+Of+yAMz2Wd8r4yxg==",
-			"dev": true
+			"integrity": "sha512-HP6tOr67z/9XU2Dr0F2SSr8WRTuE23AG9Dj578DCJPEYHs67OLKBviU8A8rwvbwMD7Lu2+Of+yAMz2Wd8r4yxg=="
 		},
 		"methods": {
 			"version": "1.1.2",
@@ -11010,6 +11473,22 @@
 				"mime-db": "~1.37.0"
 			}
 		},
+		"mimelib": {
+			"version": "0.2.14",
+			"resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz",
+			"integrity": "sha1-KhqnJL0ZC4W9Um5jF6thBu39aDE=",
+			"requires": {
+				"addressparser": "~0.2.0",
+				"encoding": "~0.1"
+			},
+			"dependencies": {
+				"addressparser": {
+					"version": "0.2.1",
+					"resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz",
+					"integrity": "sha1-0RpbLu2gTP7+vfMZbBCuE9ts1gc="
+				}
+			}
+		},
 		"mimer": {
 			"version": "0.3.2",
 			"resolved": "https://registry.npmjs.org/mimer/-/mimer-0.3.2.tgz",
@@ -11262,6 +11741,66 @@
 				"moment": ">= 2.9.0"
 			}
 		},
+		"mongodb": {
+			"version": "2.2.36",
+			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.36.tgz",
+			"integrity": "sha512-P2SBLQ8Z0PVx71ngoXwo12+FiSfbNfGOClAao03/bant5DgLNkOPAck5IaJcEk4gKlQhDEURzfR3xuBG1/B+IA==",
+			"requires": {
+				"es6-promise": "3.2.1",
+				"mongodb-core": "2.1.20",
+				"readable-stream": "2.2.7"
+			},
+			"dependencies": {
+				"es6-promise": {
+					"version": "3.2.1",
+					"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
+					"integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
+				},
+				"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="
+				},
+				"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.0",
+						"inherits": "~2.0.1",
+						"isarray": "~1.0.0",
+						"process-nextick-args": "~1.0.6",
+						"string_decoder": "~1.0.0",
+						"util-deprecate": "~1.0.1"
+					}
+				},
+				"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.0"
+					}
+				}
+			}
+		},
+		"mongodb-core": {
+			"version": "2.1.20",
+			"resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.20.tgz",
+			"integrity": "sha512-IN57CX5/Q1bhDq6ShAR6gIv4koFsZP7L8WOK1S0lR0pVDQaScffSMV5jxubLsmZ7J+UdqmykKw4r9hG3XQEGgQ==",
+			"requires": {
+				"bson": "~1.0.4",
+				"require_optional": "~1.0.0"
+			},
+			"dependencies": {
+				"bson": {
+					"version": "1.0.9",
+					"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz",
+					"integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg=="
+				}
+			}
+		},
 		"more-entropy": {
 			"version": "0.0.7",
 			"resolved": "https://registry.npmjs.org/more-entropy/-/more-entropy-0.0.7.tgz",
@@ -11369,26 +11908,11 @@
 			"integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
 			"dev": true
 		},
-		"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
-		},
 		"nice-try": {
 			"version": "1.0.5",
 			"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
 			"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
 		},
-		"no-case": {
-			"version": "2.3.2",
-			"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
-			"integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
-			"dev": true,
-			"requires": {
-				"lower-case": "^1.1.1"
-			}
-		},
 		"node-abi": {
 			"version": "2.5.0",
 			"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz",
@@ -11767,6 +12291,11 @@
 				"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",
@@ -13194,6 +13723,11 @@
 			"integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
 			"dev": true
 		},
+		"random-bytes": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+			"integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
+		},
 		"randomatic": {
 			"version": "3.1.1",
 			"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
@@ -13680,6 +14214,22 @@
 				"resolve-from": "^1.0.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.1.0"
+			},
+			"dependencies": {
+				"resolve-from": {
+					"version": "2.0.0",
+					"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
+					"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
+				}
+			}
+		},
 		"requires-port": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -14285,7 +14835,6 @@
 			"version": "1.0.9",
 			"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
 			"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
-			"dev": true,
 			"requires": {
 				"hoek": "2.x.x"
 			}
@@ -14419,68 +14968,15 @@
 				"figgy-pudding": "^3.5.1"
 			}
 		},
-		"stack-chain": {
-			"version": "1.3.7",
-			"resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz",
-			"integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=",
-			"dev": true
-		},
-		"stack-generator": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-1.1.0.tgz",
-			"integrity": "sha1-NvapIHUabBD0maE8Msu19RoLiyU=",
-			"dev": true,
-			"requires": {
-				"stackframe": "^1.0.2"
-			},
-			"dependencies": {
-				"stackframe": {
-					"version": "1.0.4",
-					"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz",
-					"integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==",
-					"dev": true
-				}
-			}
-		},
 		"stack-trace": {
 			"version": "0.0.10",
 			"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
 			"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
 		},
-		"stackframe": {
-			"version": "0.3.1",
-			"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
-			"integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
-			"dev": true
-		},
-		"stacktrace-gps": {
-			"version": "2.4.4",
-			"resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-2.4.4.tgz",
-			"integrity": "sha1-acgn6dbW9Bz0ONfxleLjy/zyjEQ=",
-			"dev": true,
-			"requires": {
-				"source-map": "0.5.6",
-				"stackframe": "~0.3"
-			},
-			"dependencies": {
-				"source-map": {
-					"version": "0.5.6",
-					"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
-					"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
-					"dev": true
-				}
-			}
-		},
-		"stacktrace-js": {
-			"version": "1.3.1",
-			"resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-1.3.1.tgz",
-			"integrity": "sha1-Z8qyWJr1xBe5Yvc2mUAne7O2oYs=",
-			"dev": true,
-			"requires": {
-				"error-stack-parser": "^1.3.6",
-				"stack-generator": "^1.0.7",
-				"stacktrace-gps": "^2.4.3"
-			}
+		"starttls": {
+			"version": "1.0.1",
+			"resolved": "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz",
+			"integrity": "sha1-5ggcJd5rF49adfjyccFIdEkYO0I="
 		},
 		"state-toggle": {
 			"version": "1.0.1",
@@ -14571,6 +15067,11 @@
 			"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
 			"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
 		},
+		"string-template": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
+			"integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y="
+		},
 		"string-width": {
 			"version": "1.0.2",
 			"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -14614,8 +15115,7 @@
 		"stringstream": {
 			"version": "0.0.6",
 			"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
-			"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
-			"dev": true
+			"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
 		},
 		"strip-ansi": {
 			"version": "3.0.1",
@@ -14841,6 +15341,21 @@
 				"postcss-sorting": "^4.0.1"
 			}
 		},
+		"subscriptions-transport-ws": {
+			"version": "0.9.11",
+			"resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.11.tgz",
+			"integrity": "sha512-B8fwTIJy2buUcBXM6Ffbax30XcEqvCqL8RXwbivBAiB3X9ezrTcF5nYMmNGZ47sxrDYA1XfQ5W3aTgJEm8BFJA==",
+			"requires": {
+				"backo2": "^1.0.2",
+				"eventemitter3": "^3.1.0",
+				"iterall": "^1.2.1",
+				"lodash.assign": "^4.2.0",
+				"lodash.isobject": "^3.0.2",
+				"lodash.isstring": "^4.0.1",
+				"symbol-observable": "^1.0.4",
+				"ws": "^5.2.0"
+			}
+		},
 		"sugarss": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz",
@@ -14912,6 +15427,11 @@
 			"integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
 			"dev": true
 		},
+		"symbol-observable": {
+			"version": "1.2.0",
+			"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+			"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+		},
 		"symbol-tree": {
 			"version": "3.2.2",
 			"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
@@ -15262,6 +15782,14 @@
 				"jquery": ">=1.12.0"
 			}
 		},
+		"topo": {
+			"version": "1.1.0",
+			"resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
+			"integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
+			"requires": {
+				"hoek": "2.x.x"
+			}
+		},
 		"tough-cookie": {
 			"version": "2.4.3",
 			"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
@@ -15344,8 +15872,7 @@
 		"tslib": {
 			"version": "1.9.3",
 			"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-			"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
-			"dev": true
+			"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
 		},
 		"tty-browserify": {
 			"version": "0.0.0",
@@ -15488,6 +16015,14 @@
 				}
 			}
 		},
+		"uid-safe": {
+			"version": "2.1.5",
+			"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+			"integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+			"requires": {
+				"random-bytes": "~1.0.0"
+			}
+		},
 		"underscore": {
 			"version": "1.9.1",
 			"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
@@ -15709,12 +16244,6 @@
 			"integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
 			"dev": true
 		},
-		"upper-case": {
-			"version": "1.1.3",
-			"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
-			"integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
-			"dev": true
-		},
 		"uri-js": {
 			"version": "4.2.2",
 			"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -15857,6 +16386,11 @@
 				"safe-buffer": "^5.1.1"
 			}
 		},
+		"vary": {
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+			"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+		},
 		"vasync": {
 			"version": "1.6.4",
 			"resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz",
@@ -16026,12 +16560,14 @@
 						"balanced-match": {
 							"version": "1.0.0",
 							"bundled": true,
-							"dev": true
+							"dev": true,
+							"optional": true
 						},
 						"brace-expansion": {
 							"version": "1.1.11",
 							"bundled": true,
 							"dev": true,
+							"optional": true,
 							"requires": {
 								"balanced-match": "^1.0.0",
 								"concat-map": "0.0.1"
@@ -16051,7 +16587,8 @@
 						"concat-map": {
 							"version": "0.0.1",
 							"bundled": true,
-							"dev": true
+							"dev": true,
+							"optional": true
 						},
 						"console-control-strings": {
 							"version": "1.1.0",
@@ -16199,6 +16736,7 @@
 							"version": "3.0.4",
 							"bundled": true,
 							"dev": true,
+							"optional": true,
 							"requires": {
 								"brace-expansion": "^1.1.7"
 							}
@@ -17340,6 +17878,19 @@
 				"fd-slicer": "~1.0.1"
 			}
 		},
+		"zen-observable": {
+			"version": "0.8.13",
+			"resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.13.tgz",
+			"integrity": "sha512-fa+6aDUVvavYsefZw0zaZ/v3ckEtMgCFi30sn91SEZea4y/6jQp05E3omjkX91zV6RVdn15fqnFZ6RKjRGbp2g=="
+		},
+		"zen-observable-ts": {
+			"version": "0.8.15",
+			"resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.15.tgz",
+			"integrity": "sha512-sXKPWiw6JszNEkRv5dQ+lQCttyjHM2Iks74QU5NP8mMPS/NrzTlHDr780gf/wOBqmHkPO6NCLMlsa+fAQ8VE8w==",
+			"requires": {
+				"zen-observable": "^0.8.0"
+			}
+		},
 		"zip-stream": {
 			"version": "2.0.1",
 			"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.0.1.tgz",
diff --git a/package.json b/package.json
index 971ebb1aa5b7c..b61ff03003b97 100644
--- a/package.json
+++ b/package.json
@@ -119,6 +119,9 @@
 		"webpack": "^4.29.3"
 	},
 	"dependencies": {
+		"@accounts/graphql-api": "^0.2.3",
+		"@accounts/mongo": "0.0.12",
+		"@accounts/server": "0.0.18",
 		"@babel/runtime": "^7.2.0",
 		"@google-cloud/language": "^2.0.0",
 		"@google-cloud/storage": "^2.3.1",
@@ -126,6 +129,7 @@
 		"@rocket.chat/apps-engine": "1.4.0",
 		"@slack/client": "^4.8.0",
 		"adm-zip": "^0.4.13",
+		"apollo-server-express": "^1.3.6",
 		"archiver": "^3.0.0",
 		"arraybuffer-to-string": "^1.0.2",
 		"atlassian-crowd": "^0.5.0",
@@ -147,13 +151,20 @@
 		"coffeescript": "^2.3.2",
 		"connect": "^3.6.6",
 		"core-js": "^2.5.7",
+		"cors": "^2.8.4",
 		"csv-parse": "^4.0.1",
 		"emailreplyparser": "^0.0.5",
 		"express": "^4.16.4",
+		"express-session": "^1.15.4",
 		"fibers": "^3.1.1",
 		"file-type": "^10.6.0",
 		"filesize": "^3.6.1",
+		"googleapis": "^25.0.0",
+		"grant-express": "^3.8.0",
 		"grapheme-splitter": "^1.0.4",
+		"graphql": "^0.13.2",
+		"graphql-subscriptions": "^0.5.8",
+		"graphql-tools": "^3.0.2",
 		"gridfs-stream": "^1.1.1",
 		"he": "^1.2.0",
 		"highlight.js": "^9.13.1",
@@ -168,11 +179,13 @@
 		"less": "https://github.com/meteor/less.js/tarball/8130849eb3d7f0ecf0ca8d0af7c4207b0442e3f6",
 		"less-plugin-autoprefix": "^2.0.0",
 		"localforage": "^1.7.3",
+		"lodash.property": "^4.4.2",
 		"lokijs": "^1.5.5",
 		"lru-cache": "^5.1.1",
 		"mailparser": "^2.4.3",
 		"marked": "^0.5.2",
 		"mem": "4.1.0",
+		"merge-graphql-schemas": "^1.5.2",
 		"meteor-node-stubs": "^0.4.1",
 		"mime-db": "^1.37.0",
 		"mime-type": "^3.0.7",
@@ -191,6 +204,7 @@
 		"semver": "^5.6.0",
 		"sharp": "^0.21.0",
 		"speakeasy": "^2.0.0",
+		"subscriptions-transport-ws": "^0.9.11",
 		"tar-stream": "^1.6.2",
 		"toastr": "^2.1.4",
 		"turndown": "^5.0.1",
diff --git a/packages/.eslintrc b/packages/.eslintrc
index 298ee99d54ebe..c18cf4d6871c0 100644
--- a/packages/.eslintrc
+++ b/packages/.eslintrc
@@ -1,6 +1,5 @@
 {
 	"globals": {
-		"Npm"    : false,
 		"Package": false
 	}
 }
diff --git a/packages/rocketchat-accounts/.npm/package/.gitignore b/packages/rocketchat-accounts/.npm/package/.gitignore
deleted file mode 100644
index 3c3629e647f5d..0000000000000
--- a/packages/rocketchat-accounts/.npm/package/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/packages/rocketchat-accounts/.npm/package/README b/packages/rocketchat-accounts/.npm/package/README
deleted file mode 100644
index 3d492553a438e..0000000000000
--- a/packages/rocketchat-accounts/.npm/package/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory and the files immediately inside it are automatically generated
-when you change this package's NPM dependencies. Commit the files in this
-directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
-so that others run the same versions of sub-dependencies.
-
-You should NOT check in the node_modules directory that Meteor automatically
-creates; if you are using git, the .gitignore file tells git to ignore it.
diff --git a/packages/rocketchat-accounts/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-accounts/.npm/package/npm-shrinkwrap.json
deleted file mode 100644
index 64d4dcb8e5b97..0000000000000
--- a/packages/rocketchat-accounts/.npm/package/npm-shrinkwrap.json
+++ /dev/null
@@ -1,259 +0,0 @@
-{
-  "lockfileVersion": 1,
-  "dependencies": {
-    "@accounts/common": {
-      "version": "0.0.18",
-      "resolved": "https://registry.npmjs.org/@accounts/common/-/common-0.0.18.tgz",
-      "integrity": "sha1-QB9Sd+tHk6qNBD8TUCituAh+FHs="
-    },
-    "@accounts/mongo": {
-      "version": "0.0.12",
-      "resolved": "https://registry.npmjs.org/@accounts/mongo/-/mongo-0.0.12.tgz",
-      "integrity": "sha1-n7UNmgn2vThw5u3ZYC/xHL0gxns="
-    },
-    "@accounts/server": {
-      "version": "0.0.18",
-      "resolved": "https://registry.npmjs.org/@accounts/server/-/server-0.0.18.tgz",
-      "integrity": "sha1-S7UCs0WZUkRgRbqXYyT5MnuLekQ="
-    },
-    "addressparser": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz",
-      "integrity": "sha1-WYc/Nej89sc2HBAjkmHXbhU0i7I="
-    },
-    "babel-polyfill": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
-      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM="
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-        }
-      }
-    },
-    "base64url": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz",
-      "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs="
-    },
-    "bcryptjs": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-      "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
-    },
-    "bson": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz",
-      "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw="
-    },
-    "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="
-    },
-    "bufferjs": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz",
-      "integrity": "sha1-CV/6OcXmtAoheKEWnJ7/xYSnMgE="
-    },
-    "core-js": {
-      "version": "2.5.3",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
-      "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4="
-    },
-    "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="
-    },
-    "crypto": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/crypto/-/crypto-0.0.3.tgz",
-      "integrity": "sha1-RwqBuGvkxe4XrMggeh9TFa4g27A="
-    },
-    "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="
-    },
-    "emailjs": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/emailjs/-/emailjs-1.0.12.tgz",
-      "integrity": "sha1-vWVZxRxJYxJSGGJtoJi+ci96HHI="
-    },
-    "encoding": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
-      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s="
-    },
-    "es6-promise": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
-      "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
-    },
-    "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
-    },
-    "iconv-lite": {
-      "version": "0.4.19",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "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="
-    },
-    "joi": {
-      "version": "6.10.1",
-      "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
-      "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY="
-    },
-    "jsonwebtoken": {
-      "version": "7.4.3",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
-      "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg="
-    },
-    "jwa": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz",
-      "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU="
-    },
-    "jws": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
-      "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI="
-    },
-    "jwt-decode": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz",
-      "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk="
-    },
-    "lodash": {
-      "version": "4.17.4",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
-      "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
-    },
-    "lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
-    },
-    "mimelib": {
-      "version": "0.2.14",
-      "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz",
-      "integrity": "sha1-KhqnJL0ZC4W9Um5jF6thBu39aDE=",
-      "dependencies": {
-        "addressparser": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz",
-          "integrity": "sha1-0RpbLu2gTP7+vfMZbBCuE9ts1gc="
-        }
-      }
-    },
-    "moment": {
-      "version": "2.15.2",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz",
-      "integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw="
-    },
-    "mongodb": {
-      "version": "2.2.33",
-      "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.33.tgz",
-      "integrity": "sha1-tTfEcdNKZlG0jzb9vyl1A0Dgi1A="
-    },
-    "mongodb-core": {
-      "version": "2.1.17",
-      "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.17.tgz",
-      "integrity": "sha1-pBizN6FKFJkPtRC5I97mqBMXPfg="
-    },
-    "ms": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
-    },
-    "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="
-    },
-    "readable-stream": {
-      "version": "2.2.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
-      "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE="
-    },
-    "regenerator-runtime": {
-      "version": "0.10.5",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
-      "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
-    },
-    "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=="
-    },
-    "resolve-from": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
-      "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
-    },
-    "safe-buffer": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
-    },
-    "semver": {
-      "version": "5.4.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
-      "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
-    },
-    "starttls": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz",
-      "integrity": "sha1-5ggcJd5rF49adfjyccFIdEkYO0I="
-    },
-    "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=="
-    },
-    "topo": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
-      "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU="
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
-    }
-  }
-}
diff --git a/packages/rocketchat-accounts/package.js b/packages/rocketchat-accounts/package.js
index 396884ab342e0..50596ae7fdf1b 100644
--- a/packages/rocketchat-accounts/package.js
+++ b/packages/rocketchat-accounts/package.js
@@ -15,8 +15,3 @@ Package.onUse(function(api) {
 
 	api.mainModule('server/index.js', 'server');
 });
-
-Npm.depends({
-	'@accounts/server': '0.0.18',
-	'@accounts/mongo': '0.0.12',
-});
diff --git a/packages/rocketchat-grant/.npm/package/.gitignore b/packages/rocketchat-grant/.npm/package/.gitignore
deleted file mode 100644
index 3c3629e647f5d..0000000000000
--- a/packages/rocketchat-grant/.npm/package/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/packages/rocketchat-grant/.npm/package/README b/packages/rocketchat-grant/.npm/package/README
deleted file mode 100644
index 3d492553a438e..0000000000000
--- a/packages/rocketchat-grant/.npm/package/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory and the files immediately inside it are automatically generated
-when you change this package's NPM dependencies. Commit the files in this
-directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
-so that others run the same versions of sub-dependencies.
-
-You should NOT check in the node_modules directory that Meteor automatically
-creates; if you are using git, the .gitignore file tells git to ignore it.
diff --git a/packages/rocketchat-grant/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-grant/.npm/package/npm-shrinkwrap.json
deleted file mode 100644
index 0f2cc65af3df3..0000000000000
--- a/packages/rocketchat-grant/.npm/package/npm-shrinkwrap.json
+++ /dev/null
@@ -1,539 +0,0 @@
-{
-  "lockfileVersion": 1,
-  "dependencies": {
-    "accepts": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
-      "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo="
-    },
-    "ajv": {
-      "version": "4.11.8",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
-      "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY="
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
-    },
-    "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="
-    },
-    "asynckit": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
-    },
-    "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="
-    },
-    "bcrypt-pbkdf": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
-      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40="
-    },
-    "boom": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8="
-    },
-    "caseless": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
-    },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
-    },
-    "combined-stream": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
-      "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk="
-    },
-    "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="
-    },
-    "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="
-    },
-    "crc": {
-      "version": "3.4.4",
-      "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
-      "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
-    },
-    "cryptiles": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
-      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g="
-    },
-    "dashdash": {
-      "version": "1.14.1",
-      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
-      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-        }
-      }
-    },
-    "debug": {
-      "version": "2.6.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz",
-      "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4="
-    },
-    "deep-copy": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/deep-copy/-/deep-copy-1.2.0.tgz",
-      "integrity": "sha1-X7KnqV9UVUc9fOOaOS9Cw1FOEeg="
-    },
-    "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.1",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-      "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
-    },
-    "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="
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "encodeurl": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz",
-      "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA="
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "etag": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz",
-      "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE="
-    },
-    "express": {
-      "version": "4.15.3",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz",
-      "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI="
-    },
-    "express-session": {
-      "version": "1.15.4",
-      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.4.tgz",
-      "integrity": "sha1-Xizc9t7+PB7aTpgPE7mGzFjPuVQ=",
-      "dependencies": {
-        "debug": {
-          "version": "2.6.8",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
-          "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw="
-        }
-      }
-    },
-    "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="
-    },
-    "finalhandler": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz",
-      "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk="
-    },
-    "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="
-    },
-    "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="
-    },
-    "getpass": {
-      "version": "0.1.7",
-      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
-      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-        }
-      }
-    },
-    "grant": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/grant/-/grant-3.8.0.tgz",
-      "integrity": "sha512-Q8UN1j9JQmmb/Wf7PlYXJn92IjX9Tio21rEV5jOte/novOaZ/l0xMWNel7CDbRw0zqFEnYIIAyh1Cri2u3poUw=="
-    },
-    "grant-express": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/grant-express/-/grant-express-3.8.0.tgz",
-      "integrity": "sha512-Ph3SSr8vQTt9igZn4GAARjfOYPlB3nxngs0NwBqFNPbBdSPf+m5keEibfrP2GfeYK1GCYoz85BPQzQQZYbBzpQ=="
-    },
-    "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="
-    },
-    "hawk": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
-      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ="
-    },
-    "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
-    },
-    "http-errors": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz",
-      "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=",
-      "dependencies": {
-        "depd": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz",
-          "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM="
-        }
-      }
-    },
-    "http-signature": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
-      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8="
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "ipaddr.js": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz",
-      "integrity": "sha1-KWrKh4qCGBbluF0KKFqZvP9FgvA="
-    },
-    "is-typedarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
-    },
-    "jsbn": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
-      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
-    },
-    "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="
-    },
-    "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="
-    },
-    "jsprim": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
-      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-        }
-      }
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-    },
-    "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.29.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz",
-      "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg="
-    },
-    "mime-types": {
-      "version": "2.1.16",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz",
-      "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM="
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-    },
-    "negotiator": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
-    },
-    "oauth-sign": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
-      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
-    },
-    "on-finished": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
-      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc="
-    },
-    "on-headers": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
-      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
-    },
-    "parseurl": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz",
-      "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY="
-    },
-    "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="
-    },
-    "performance-now": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
-      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU="
-    },
-    "proxy-addr": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz",
-      "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg="
-    },
-    "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="
-    },
-    "random-bytes": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
-      "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
-    },
-    "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
-    },
-    "request": {
-      "version": "2.81.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
-      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA="
-    },
-    "safe-buffer": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-      "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
-    },
-    "send": {
-      "version": "0.15.3",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz",
-      "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk="
-    },
-    "serve-static": {
-      "version": "1.12.3",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz",
-      "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI="
-    },
-    "setprototypeof": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-      "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
-    },
-    "sntp": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
-      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg="
-    },
-    "sshpk": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
-      "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-        }
-      }
-    },
-    "statuses": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
-      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
-    },
-    "stringstream": {
-      "version": "0.0.5",
-      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
-      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
-    },
-    "tough-cookie": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
-      "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo="
-    },
-    "tunnel-agent": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
-      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0="
-    },
-    "tweetnacl": {
-      "version": "0.14.5",
-      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
-      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
-    },
-    "type-is": {
-      "version": "1.6.15",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
-      "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA="
-    },
-    "uid-safe": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
-      "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA=="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "utils-merge": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
-      "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg="
-    },
-    "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=",
-      "dependencies": {
-        "assert-plus": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
-          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
-        }
-      }
-    }
-  }
-}
diff --git a/packages/rocketchat-grant/package.js b/packages/rocketchat-grant/package.js
index 91c5b6f22aa23..98b720352f50b 100644
--- a/packages/rocketchat-grant/package.js
+++ b/packages/rocketchat-grant/package.js
@@ -18,9 +18,3 @@ Package.onUse(function(api) {
 
 	api.mainModule('server/index.js', 'server');
 });
-
-Npm.depends({
-	express: '4.15.3',
-	'express-session': '1.15.4',
-	'grant-express': '3.8.0',
-});
diff --git a/packages/rocketchat-graphql/.npm/package/.gitignore b/packages/rocketchat-graphql/.npm/package/.gitignore
deleted file mode 100644
index 3c3629e647f5d..0000000000000
--- a/packages/rocketchat-graphql/.npm/package/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/packages/rocketchat-graphql/.npm/package/README b/packages/rocketchat-graphql/.npm/package/README
deleted file mode 100644
index 3d492553a438e..0000000000000
--- a/packages/rocketchat-graphql/.npm/package/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory and the files immediately inside it are automatically generated
-when you change this package's NPM dependencies. Commit the files in this
-directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
-so that others run the same versions of sub-dependencies.
-
-You should NOT check in the node_modules directory that Meteor automatically
-creates; if you are using git, the .gitignore file tells git to ignore it.
diff --git a/packages/rocketchat-graphql/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-graphql/.npm/package/npm-shrinkwrap.json
deleted file mode 100644
index 06ea1069dee26..0000000000000
--- a/packages/rocketchat-graphql/.npm/package/npm-shrinkwrap.json
+++ /dev/null
@@ -1,714 +0,0 @@
-{
-  "lockfileVersion": 1,
-  "dependencies": {
-    "@accounts/common": {
-      "version": "0.1.0-beta.14",
-      "resolved": "https://registry.npmjs.org/@accounts/common/-/common-0.1.0-beta.14.tgz",
-      "integrity": "sha1-N1yhvZjmxQP0DlCECyTaNXsaQhA="
-    },
-    "@accounts/graphql-api": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/@accounts/graphql-api/-/graphql-api-0.2.3.tgz",
-      "integrity": "sha512-s21PWJUgPtnGpDzrYc7VgUlwVWQz4QoiwdwK+0qeJmS6LUB812lzH4TArr57LdZ2TzeFwniKIgSqPmknVGASLQ=="
-    },
-    "@accounts/server": {
-      "version": "0.1.0-alpha.58382c10",
-      "resolved": "https://registry.npmjs.org/@accounts/server/-/server-0.1.0-alpha.58382c10.tgz",
-      "integrity": "sha1-rcTz1E7r3M4llFZsoEMOgOBXRXs="
-    },
-    "@types/node": {
-      "version": "9.6.23",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.23.tgz",
-      "integrity": "sha512-d2SJJpwkiPudEQ3+9ysANN2Nvz4QJKUPoe/WL5zyQzI0RaEeZWH5K5xjvUIGszTItHQpFPdH+u51f6G/LkS8Cg=="
-    },
-    "accepts": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
-      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I="
-    },
-    "addressparser": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz",
-      "integrity": "sha1-WYc/Nej89sc2HBAjkmHXbhU0i7I="
-    },
-    "apollo-cache-control": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz",
-      "integrity": "sha512-XJQs167e9u+e5ybSi51nGYr70NPBbswdvTEHtbtXbwkZ+n9t0SLPvUcoqceayOSwjK1XYOdU/EKPawNdb3rLQA=="
-    },
-    "apollo-link": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz",
-      "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg=="
-    },
-    "apollo-server-core": {
-      "version": "1.3.6",
-      "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-1.3.6.tgz",
-      "integrity": "sha1-CGNiQ8LeVvqMJn1o3WAssfvTI+M="
-    },
-    "apollo-server-express": {
-      "version": "1.3.6",
-      "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-1.3.6.tgz",
-      "integrity": "sha1-ISCwUCGofe9E+v2EbooOKjKFLbc="
-    },
-    "apollo-server-module-graphiql": {
-      "version": "1.3.4",
-      "resolved": "https://registry.npmjs.org/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.4.tgz",
-      "integrity": "sha1-UDmbfFG3Jn0MhBUp9Rc+X8cwTeQ="
-    },
-    "apollo-tracing": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz",
-      "integrity": "sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ=="
-    },
-    "apollo-utilities": {
-      "version": "1.0.16",
-      "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.16.tgz",
-      "integrity": "sha512-5oKnElKqkV920KRbitiyISLeG63tUGAyNdotg58bQSX9Omr+smoNDTIRMRLbyIdKOYLaw3LpDaRepOPqljj0NQ=="
-    },
-    "array-flatten": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
-      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
-    },
-    "async-limiter": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
-      "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
-    },
-    "babel-polyfill": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
-      "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM="
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
-      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
-        }
-      }
-    },
-    "backo2": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
-      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
-    },
-    "balanced-match": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
-    },
-    "bcryptjs": {
-      "version": "2.4.3",
-      "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
-      "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
-    },
-    "body-parser": {
-      "version": "1.18.3",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
-      "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ="
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
-    },
-    "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-from": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
-      "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ=="
-    },
-    "bufferjs": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz",
-      "integrity": "sha1-CV/6OcXmtAoheKEWnJ7/xYSnMgE="
-    },
-    "bytes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "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.4",
-      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
-      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
-    },
-    "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-js": {
-      "version": "2.5.7",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
-      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
-    },
-    "cors": {
-      "version": "2.8.4",
-      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
-      "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY="
-    },
-    "crypto": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/crypto/-/crypto-0.0.3.tgz",
-      "integrity": "sha1-RwqBuGvkxe4XrMggeh9TFa4g27A="
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dependencies": {
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-        }
-      }
-    },
-    "deepmerge": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz",
-      "integrity": "sha512-urQxA1smbLZ2cBbXbaYObM1dJ82aJ2H57A1C/Kklfh/ZN1bgH4G/n5KWhdNfOK11W98gqZfyYj7W4frJJRwA2w=="
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "deprecated-decorator": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz",
-      "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "ecdsa-sig-formatter": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz",
-      "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM="
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "emailjs": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/emailjs/-/emailjs-1.0.12.tgz",
-      "integrity": "sha1-vWVZxRxJYxJSGGJtoJi+ci96HHI="
-    },
-    "encodeurl": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
-      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
-    },
-    "encoding": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
-      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s="
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "etag": {
-      "version": "1.8.1",
-      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
-      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
-    },
-    "eventemitter3": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
-      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
-    },
-    "express": {
-      "version": "4.16.3",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
-      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
-      "dependencies": {
-        "body-parser": {
-          "version": "1.18.2",
-          "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
-          "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ="
-        },
-        "iconv-lite": {
-          "version": "0.4.19",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
-          "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
-        },
-        "qs": {
-          "version": "6.5.1",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
-        },
-        "raw-body": {
-          "version": "2.3.2",
-          "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
-          "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
-          "dependencies": {
-            "depd": {
-              "version": "1.1.1",
-              "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
-              "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
-            },
-            "http-errors": {
-              "version": "1.6.2",
-              "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
-              "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY="
-            },
-            "setprototypeof": {
-              "version": "1.0.3",
-              "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
-              "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
-            }
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.1",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
-          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
-        },
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-        }
-      }
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
-    },
-    "finalhandler": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
-      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
-      "dependencies": {
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-        }
-      }
-    },
-    "forwarded": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
-      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
-    },
-    "fresh": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
-      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "glob": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
-      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ=="
-    },
-    "graphql": {
-      "version": "0.13.2",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz",
-      "integrity": "sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog=="
-    },
-    "graphql-extensions": {
-      "version": "0.0.10",
-      "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz",
-      "integrity": "sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA=="
-    },
-    "graphql-subscriptions": {
-      "version": "0.5.8",
-      "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz",
-      "integrity": "sha512-0CaZnXKBw2pwnIbvmVckby5Ge5e2ecmjofhYCdyeACbCly2j3WXDP/pl+s+Dqd2GQFC7y99NB+53jrt55CKxYQ=="
-    },
-    "graphql-tools": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.2.tgz",
-      "integrity": "sha512-bhDGrvmSgcJBFX3EZEYagmKPk/EJ9vZIcF1WtSFveWfvSsh7crMFSQ9ldftuIXC9UeRwfutpGf3A1q4UpVLaRg=="
-    },
-    "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
-    },
-    "http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0="
-    },
-    "iconv-lite": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-      "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA=="
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
-    },
-    "inherits": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-    },
-    "ipaddr.js": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
-      "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
-    },
-    "is-glob": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
-      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A="
-    },
-    "isemail": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
-      "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
-    },
-    "iterall": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz",
-      "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
-    },
-    "joi": {
-      "version": "6.10.1",
-      "resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
-      "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY="
-    },
-    "jsonwebtoken": {
-      "version": "7.4.3",
-      "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
-      "integrity": "sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg="
-    },
-    "jwa": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz",
-      "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw=="
-    },
-    "jws": {
-      "version": "3.1.5",
-      "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz",
-      "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ=="
-    },
-    "jwt-decode": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz",
-      "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk="
-    },
-    "lodash": {
-      "version": "4.17.10",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
-      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
-    },
-    "lodash.assign": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
-      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
-    },
-    "lodash.isobject": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
-      "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0="
-    },
-    "lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
-    },
-    "lodash.once": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
-      "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
-    },
-    "lodash.property": {
-      "version": "4.4.2",
-      "resolved": "https://registry.npmjs.org/lodash.property/-/lodash.property-4.4.2.tgz",
-      "integrity": "sha1-2gcSSCHGQJ0CXzDbjfhRMUUVv/4="
-    },
-    "media-typer": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
-      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
-    },
-    "merge-graphql-schemas": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/merge-graphql-schemas/-/merge-graphql-schemas-1.5.2.tgz",
-      "integrity": "sha512-KomSriblDYY6A2wixXf9jHRGTPBn37MrhlObEqXY14qA3xwdf4Osb5PR6F+Lgb9rRnXe9wusMIaHwAA1WXdyaw=="
-    },
-    "methods": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
-      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
-    },
-    "mime": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
-    },
-    "mime-db": {
-      "version": "1.33.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
-      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
-    },
-    "mime-types": {
-      "version": "2.1.18",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
-      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ=="
-    },
-    "mimelib": {
-      "version": "0.2.14",
-      "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz",
-      "integrity": "sha1-KhqnJL0ZC4W9Um5jF6thBu39aDE=",
-      "dependencies": {
-        "addressparser": {
-          "version": "0.2.1",
-          "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz",
-          "integrity": "sha1-0RpbLu2gTP7+vfMZbBCuE9ts1gc="
-        }
-      }
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
-    },
-    "moment": {
-      "version": "2.15.2",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz",
-      "integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw="
-    },
-    "ms": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
-    },
-    "negotiator": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
-    },
-    "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="
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
-    },
-    "parseurl": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
-    },
-    "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="
-    },
-    "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="
-    },
-    "proxy-addr": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
-      "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ=="
-    },
-    "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
-    },
-    "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.3.3",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
-      "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw=="
-    },
-    "regenerator-runtime": {
-      "version": "0.10.5",
-      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
-      "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "send": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
-      "dependencies": {
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
-        },
-        "statuses": {
-          "version": "1.4.0",
-          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-          "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
-        }
-      }
-    },
-    "serve-static": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw=="
-    },
-    "setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
-    },
-    "source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-    },
-    "source-map-support": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
-      "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g=="
-    },
-    "starttls": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz",
-      "integrity": "sha1-5ggcJd5rF49adfjyccFIdEkYO0I="
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-    },
-    "subscriptions-transport-ws": {
-      "version": "0.9.11",
-      "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.11.tgz",
-      "integrity": "sha512-B8fwTIJy2buUcBXM6Ffbax30XcEqvCqL8RXwbivBAiB3X9ezrTcF5nYMmNGZ47sxrDYA1XfQ5W3aTgJEm8BFJA=="
-    },
-    "symbol-observable": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
-      "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
-    },
-    "topo": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
-      "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU="
-    },
-    "type-is": {
-      "version": "1.6.16",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
-      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q=="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "utils-merge": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
-      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
-    },
-    "uuid": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
-    },
-    "vary": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
-      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "ws": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.1.tgz",
-      "integrity": "sha512-2NkHdPKjDBj3CHdnAGNpmlliryKqF+n9MYXX7/wsVC4yqYocKreKNjydPDvT3wShAZnndlM0RytEfTALCDvz7A=="
-    },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
-    },
-    "zen-observable": {
-      "version": "0.8.8",
-      "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.8.tgz",
-      "integrity": "sha512-HnhhyNnwTFzS48nihkCZIJGsWGFcYUz+XPDlPK5W84Ifji8SksC6m7sQWOf8zdCGhzQ4tDYuMYGu5B0N1dXTtg=="
-    },
-    "zen-observable-ts": {
-      "version": "0.8.9",
-      "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz",
-      "integrity": "sha512-KJz2O8FxbAdAU5CSc8qZ1K2WYEJb1HxS6XDRF+hOJ1rOYcg6eTMmS9xYHCXzqZZzKw6BbXWyF4UpwSsBQnHJeA=="
-    }
-  }
-}
diff --git a/packages/rocketchat-graphql/package.js b/packages/rocketchat-graphql/package.js
index 8ed9547bc74e2..4fbd5dae02b17 100644
--- a/packages/rocketchat-graphql/package.js
+++ b/packages/rocketchat-graphql/package.js
@@ -21,15 +21,3 @@ Package.onUse(function(api) {
 	]);
 	api.mainModule('server/index.js', 'server');
 });
-
-Npm.depends({
-	'@accounts/graphql-api': '0.2.3',
-	'apollo-server-express': '1.3.6',
-	cors: '2.8.4',
-	graphql: '0.13.2',
-	'graphql-subscriptions': '0.5.8',
-	'graphql-tools': '3.0.2',
-	'lodash.property': '4.4.2',
-	'merge-graphql-schemas': '1.5.2',
-	'subscriptions-transport-ws': '0.9.11',
-});
diff --git a/packages/rocketchat-i18n/.eslintrc b/packages/rocketchat-i18n/.eslintrc
new file mode 100644
index 0000000000000..0815408b0d760
--- /dev/null
+++ b/packages/rocketchat-i18n/.eslintrc
@@ -0,0 +1,5 @@
+{
+	"globals": {
+		"Npm"    : false
+	}
+}
diff --git a/packages/rocketchat-internal-hubot/.eslintrc b/packages/rocketchat-internal-hubot/.eslintrc
new file mode 100644
index 0000000000000..0815408b0d760
--- /dev/null
+++ b/packages/rocketchat-internal-hubot/.eslintrc
@@ -0,0 +1,5 @@
+{
+	"globals": {
+		"Npm"    : false
+	}
+}
diff --git a/packages/rocketchat-irc/.npm/package/.gitignore b/packages/rocketchat-irc/.npm/package/.gitignore
deleted file mode 100644
index 3c3629e647f5d..0000000000000
--- a/packages/rocketchat-irc/.npm/package/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/packages/rocketchat-irc/.npm/package/README b/packages/rocketchat-irc/.npm/package/README
deleted file mode 100644
index 3d492553a438e..0000000000000
--- a/packages/rocketchat-irc/.npm/package/README
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory and the files immediately inside it are automatically generated
-when you change this package's NPM dependencies. Commit the files in this
-directory (npm-shrinkwrap.json, .gitignore, and this README) to source control
-so that others run the same versions of sub-dependencies.
-
-You should NOT check in the node_modules directory that Meteor automatically
-creates; if you are using git, the .gitignore file tells git to ignore it.
diff --git a/packages/rocketchat-irc/.npm/package/npm-shrinkwrap.json b/packages/rocketchat-irc/.npm/package/npm-shrinkwrap.json
deleted file mode 100644
index f6941bfcae390..0000000000000
--- a/packages/rocketchat-irc/.npm/package/npm-shrinkwrap.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "lockfileVersion": 1,
-  "dependencies": {
-    "dbly-linked-list": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/dbly-linked-list/-/dbly-linked-list-0.2.0.tgz",
-      "integrity": "sha512-Ool7y15f6JRDs0YKx7Dh9uiTb1jS1SZLNdT3Y2q16DlaEghXbMsmODS/XittjR2xztt1gJUpz7jVxpqAPF8VGg=="
-    },
-    "lodash.isequal": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
-    },
-    "queue-fifo": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/queue-fifo/-/queue-fifo-0.2.4.tgz",
-      "integrity": "sha512-o2xWptfzdw4QLIozUUcRPnppoTNK+X1DxWGd8csnJ1gQUsATfQaDryaGB1MhAu1L48vqPMtH69PZ1kZD82zlVw=="
-    }
-  }
-}
diff --git a/packages/rocketchat-irc/package.js b/packages/rocketchat-irc/package.js
index b586cd98c8bdc..1d6c1160410ea 100644
--- a/packages/rocketchat-irc/package.js
+++ b/packages/rocketchat-irc/package.js
@@ -17,7 +17,3 @@ Package.onUse(function(api) {
 	]);
 	api.mainModule('server/index.js', 'server');
 });
-
-Npm.depends({
-	'queue-fifo': '0.2.4',
-});
diff --git a/packages/rocketchat-katex/.eslintrc b/packages/rocketchat-katex/.eslintrc
new file mode 100644
index 0000000000000..0815408b0d760
--- /dev/null
+++ b/packages/rocketchat-katex/.eslintrc
@@ -0,0 +1,5 @@
+{
+	"globals": {
+		"Npm"    : false
+	}
+}
diff --git a/packages/rocketchat-lib/server/oauth/facebook.js b/packages/rocketchat-lib/server/oauth/facebook.js
index b35d116d8b386..a86468b55d783 100644
--- a/packages/rocketchat-lib/server/oauth/facebook.js
+++ b/packages/rocketchat-lib/server/oauth/facebook.js
@@ -4,7 +4,8 @@ import { OAuth } from 'meteor/oauth';
 import { HTTP } from 'meteor/http';
 import { registerAccessTokenService } from './oauth';
 
-const crypto = Npm.require('crypto');
+import crypto from 'crypto';
+
 const whitelisted = [
 	'id',
 	'email',
diff --git a/packages/rocketchat-livechat/package.js b/packages/rocketchat-livechat/package.js
index fdd14ae623de0..a62ce16051434 100644
--- a/packages/rocketchat-livechat/package.js
+++ b/packages/rocketchat-livechat/package.js
@@ -6,7 +6,9 @@ Package.describe({
 
 Package.registerBuildPlugin({
 	name: 'Livechat',
-	use: [],
+	use: [
+		'ecmascript',
+	],
 	sources: [
 		'plugin/build-livechat.js',
 	],
@@ -16,10 +18,6 @@ Package.registerBuildPlugin({
 	},
 });
 
-Npm.depends({
-	'ua-parser-js': '0.7.17',
-});
-
 Package.onUse(function(api) {
 	api.use([
 		'ecmascript',
diff --git a/packages/rocketchat-livechat/plugin/build-livechat.js b/packages/rocketchat-livechat/plugin/build-livechat.js
index 9483df7fae6c1..e3dde07ab29a9 100644
--- a/packages/rocketchat-livechat/plugin/build-livechat.js
+++ b/packages/rocketchat-livechat/plugin/build-livechat.js
@@ -1,7 +1,7 @@
-const path = Npm.require('path');
-const shell = Npm.require('shelljs');
-const fs = Npm.require('fs');
-const UglifyJS = Npm.require('uglify-js');
+import path from 'path';
+import shell from 'shelljs';
+import fs from 'fs';
+import UglifyJS from 'uglify-js';
 
 const result = UglifyJS.minify(path.resolve('packages', 'rocketchat-livechat', 'assets', 'rocket-livechat.js'));
 
diff --git a/packages/rocketchat-livestream/package.js b/packages/rocketchat-livestream/package.js
index 5bdeb36baa985..0689e9e523692 100644
--- a/packages/rocketchat-livestream/package.js
+++ b/packages/rocketchat-livestream/package.js
@@ -21,7 +21,4 @@ Package.onUse(function(api) {
 	api.addFiles('client/styles/liveStreamTab.css', 'client');
 	api.mainModule('client/index.js', 'client');
 	api.mainModule('server/index.js', 'server');
-	Npm.depends({
-		googleapis: '25.0.0',
-	});
 });
diff --git a/packages/rocketchat-slackbridge/server/RocketAdapter.js b/packages/rocketchat-slackbridge/server/RocketAdapter.js
index ac3f3d0c11442..d073412bcc859 100644
--- a/packages/rocketchat-slackbridge/server/RocketAdapter.js
+++ b/packages/rocketchat-slackbridge/server/RocketAdapter.js
@@ -8,13 +8,13 @@ import { Messages, Rooms, Users } from 'meteor/rocketchat:models';
 import { createRoom, sendMessage, setUserAvatar } from 'meteor/rocketchat:lib';
 import { logger } from './logger';
 import _ from 'underscore';
+import util from 'util';
 
 export default class RocketAdapter {
 	constructor(slackBridge) {
 		logger.rocket.debug('constructor');
 		this.slackBridge = slackBridge;
-		this.util = Npm.require('util');
-
+		this.util = util;
 		this.userTags = {};
 		this.slack = {};
 	}

From 894b6e6fee8287ab9a9c1c71e5c85879b2298be0 Mon Sep 17 00:00:00 2001
From: Marcos Spessatto Defendi <marcos.defendi@ulbra.inf.br>
Date: Tue, 19 Feb 2019 17:40:26 -0300
Subject: [PATCH 16/16] Remove Package references (#13523)

---
 packages/rocketchat-api/server/v1/settings.js   | 2 --
 packages/rocketchat-file/package.js             | 1 +
 packages/rocketchat-file/server/file.server.js  | 5 +++--
 packages/rocketchat-livechat/server/livechat.js | 3 +--
 packages/rocketchat-logger/client/logger.js     | 3 +--
 5 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/packages/rocketchat-api/server/v1/settings.js b/packages/rocketchat-api/server/v1/settings.js
index 5069a2278dd20..7b320c5431fc9 100644
--- a/packages/rocketchat-api/server/v1/settings.js
+++ b/packages/rocketchat-api/server/v1/settings.js
@@ -134,8 +134,6 @@ API.v1.addRoute('settings/:_id', { authRequired: true }, {
 
 API.v1.addRoute('service.configurations', { authRequired: false }, {
 	get() {
-		const { ServiceConfiguration } = Package['service-configuration'];
-
 		return API.v1.success({
 			configurations: ServiceConfiguration.configurations.find({}, { fields: { secret: 0 } }).fetch(),
 		});
diff --git a/packages/rocketchat-file/package.js b/packages/rocketchat-file/package.js
index 6ca7b8df24263..57fd066a0f2fa 100644
--- a/packages/rocketchat-file/package.js
+++ b/packages/rocketchat-file/package.js
@@ -8,6 +8,7 @@ Package.describe({
 Package.onUse(function(api) {
 	api.use([
 		'ecmascript',
+		'mongo',
 	]);
 	api.mainModule('server/index.js', 'server');
 });
diff --git a/packages/rocketchat-file/server/file.server.js b/packages/rocketchat-file/server/file.server.js
index a2548ad63d204..2484f4d7965d8 100644
--- a/packages/rocketchat-file/server/file.server.js
+++ b/packages/rocketchat-file/server/file.server.js
@@ -1,4 +1,5 @@
 import { Meteor } from 'meteor/meteor';
+import { MongoInternals } from 'meteor/mongo';
 import Grid from 'gridfs-stream';
 import stream from 'stream';
 import fs from 'fs';
@@ -38,8 +39,8 @@ RocketChatFile.GridFS = class {
 
 		this.name = name;
 		this.transformWrite = transformWrite;
-		const mongo = Package.mongo.MongoInternals.NpmModule;
-		const { db } = Package.mongo.MongoInternals.defaultRemoteCollectionDriver().mongo;
+		const mongo = MongoInternals.NpmModule;
+		const { db } = MongoInternals.defaultRemoteCollectionDriver().mongo;
 		this.store = new Grid(db, mongo);
 		this.findOneSync = Meteor.wrapAsync(this.store.collection(this.name).findOne.bind(this.store.collection(this.name)));
 		this.removeSync = Meteor.wrapAsync(this.store.remove.bind(this.store));
diff --git a/packages/rocketchat-livechat/server/livechat.js b/packages/rocketchat-livechat/server/livechat.js
index 2f2f51969f1a9..714b34621a7ab 100644
--- a/packages/rocketchat-livechat/server/livechat.js
+++ b/packages/rocketchat-livechat/server/livechat.js
@@ -1,11 +1,10 @@
 import { Meteor } from 'meteor/meteor';
 import { WebApp } from 'meteor/webapp';
 import { settings } from 'meteor/rocketchat:settings';
+import { Autoupdate } from 'meteor/autoupdate';
 import _ from 'underscore';
 import url from 'url';
 
-const { Autoupdate } = Package.autoupdate;
-
 WebApp.connectHandlers.use('/livechat', Meteor.bindEnvironment((req, res, next) => {
 	const reqUrl = url.parse(req.url);
 	if (reqUrl.pathname !== '/') {
diff --git a/packages/rocketchat-logger/client/logger.js b/packages/rocketchat-logger/client/logger.js
index 52aae560559b8..4ca8ffce787c0 100644
--- a/packages/rocketchat-logger/client/logger.js
+++ b/packages/rocketchat-logger/client/logger.js
@@ -1,7 +1,6 @@
+import { Template } from 'meteor/templating';
 import _ from 'underscore';
 
-const { Template } = Package.templating;
-
 Template.log = false;
 
 Template.logMatch = /.*/;