From 794c6431e3668d5efbb2f19ea166444aaad2832d Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 18 Oct 2016 15:53:56 +0100 Subject: [PATCH 001/204] project name should be clickable href in invite email --- services/web/app/coffee/Features/Email/EmailBuilder.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index f7a7a78a05..562fee0936 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -92,7 +92,7 @@ templates.projectInvite = layout: NotificationEmailLayout type:"notification" compiledTemplate: _.template """ -

Hi, <%= owner.email %> wants to share '<%= project.name %>' with you

+

Hi, <%= owner.email %> wants to share '<%= project.name %>' with you

From aacdb1e96bd58ba2c1ffcec4edf6ccab87c367f8 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Mon, 28 Nov 2016 19:19:00 +0000 Subject: [PATCH 002/204] to string record event check --- .../web/app/coffee/Features/Analytics/AnalyticsManager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee index 6840f8fa88..9f34d6d9d1 100644 --- a/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee +++ b/services/web/app/coffee/Features/Analytics/AnalyticsManager.coffee @@ -18,7 +18,7 @@ module.exports = recordEvent: (user_id, event, segmentation = {}, callback = (error) ->) -> - if user_id == settings.smokeTest?.userId + if user_id+"" == settings.smokeTest?.userId+"" return callback() opts = body: From 6e9458e9e158ef4a6d30702d754b62b05a6ed62c Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 29 Nov 2016 14:38:25 +0000 Subject: [PATCH 003/204] wip --- .../infrastructure/ExpressLocals.coffee | 19 +++++++++++++++++++ services/web/app/views/project/list.jade | 3 ++- .../web/app/views/project/list/side-bar.jade | 9 ++++++++- .../left-hand-menu-promo-controller.coffee | 5 ++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index e469df9422..ce997f2eaf 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -189,6 +189,25 @@ module.exports = (app, webRouter, apiRouter)-> return AuthenticationController.isUserLoggedIn(req) res.locals.getSessionUser = -> return AuthenticationController.getSessionUser(req) + + res.locals.caseStudyToShow = -> + Settings.caseStudysToShow = [ + { + url:"http://www.sharelatex.com/i/university/indiana", + domains: ["sharelatex.com", 'chicargo.edu'], + title: "Indiana University Case Study", + logo:"/img/crests/logo/iu.png" + } + + ] + + caseStudy = _.filter Settings.caseStudysToShow, (caseStudy)-> + matches = _.filter caseStudy.domains, (domain)-> + email = AuthenticationController.getSessionUser(req)?.email + return email.indexOf(domain) != -1 + return matches.length > 0 + + return caseStudy?[0] or {} next() webRouter.use (req, res, next) -> diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 6f1d87424a..9739e54621 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -10,7 +10,8 @@ block content window.data = { projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, - notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')} + notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, + caseStudy: !{JSON.stringify(caseStudyToShow())} }; window.algolia = { institutions: { diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.jade index 1fb0e2bda9..d3eaeaaba7 100644 --- a/services/web/app/views/project/list/side-bar.jade +++ b/services/web/app/views/project/list/side-bar.jade @@ -94,7 +94,7 @@ - if (showUserDetailsArea) span(ng-controller="LeftHandMenuPromoController", ng-cloak) - .row-spaced#userProfileInformation(ng-if="hasProjects") + .row-spaced#userProfileInformation(ng-if="hasProjects && !showCaseStudy") div(ng-controller="UserProfileController") hr(ng-show="percentComplete < 100") .text-centered.user-profile(ng-show="percentComplete < 100") @@ -108,6 +108,13 @@ ng-click="openUserProfileModal()" ) #{translate("complete")} + .row-spaced(ng-if="hasProjects && showCaseStudy", ng-cloak).text-centered + hr + a(href="{{caseStudy.url}}") + p.small read about: + p + img(src="{{caseStudy.logo}}") + a(href="{{caseStudy.url}}") {{caseStudy.title}} .row-spaced(ng-if="hasProjects && userHasNoSubscription", ng-cloak).text-centered hr diff --git a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee index 5a96bde5c1..d5d1a2b110 100644 --- a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee +++ b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee @@ -6,4 +6,7 @@ define [ $scope.hasProjects = window.data.projects.length > 0 $scope.userHasNoSubscription = window.userHasNoSubscription - $scope.randomView = _.shuffle(["default", "dropbox", "github"])[0] + + $scope.showCaseStudy = window.data.caseStudy?.url? + $scope.caseStudy = window.data.caseStudy + From 1830d41eba0d2f1caf7e30b3116aaac218a69e19 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 8 Dec 2016 14:09:06 +0000 Subject: [PATCH 004/204] Proxy ranges between doc updater and docstore --- .../Features/Docstore/DocstoreManager.coffee | 5 +++-- .../DocumentUpdaterHandler.coffee | 4 ++-- .../Documents/DocumentController.coffee | 7 ++++--- .../Project/ProjectEntityHandler.coffee | 6 +++--- .../coffee/Docstore/DocstoreManagerTests.coffee | 11 +++++++---- .../DocumentUpdaterHandlerTests.coffee | 3 ++- .../Documents/DocumentControllerTests.coffee | 7 +++++-- .../Project/ProjectEntityHandlerTests.coffee | 17 ++++++++++------- 8 files changed, 36 insertions(+), 24 deletions(-) diff --git a/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee b/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee index 772d927d78..cf48dfe07b 100644 --- a/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee +++ b/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee @@ -45,13 +45,13 @@ module.exports = DocstoreManager = return callback(error) if error? if 200 <= res.statusCode < 300 logger.log doc_id: doc_id, project_id: project_id, version: doc.version, rev: doc.rev, "got doc from docstore api" - callback(null, doc.lines, doc.rev, doc.version) + callback(null, doc.lines, doc.rev, doc.version, doc.ranges) else error = new Error("docstore api responded with non-success code: #{res.statusCode}") logger.error err: error, project_id: project_id, doc_id: doc_id, "error getting doc from docstore" callback(error) - updateDoc: (project_id, doc_id, lines, version, callback = (error, modified, rev) ->) -> + updateDoc: (project_id, doc_id, lines, version, ranges, callback = (error, modified, rev) ->) -> logger.log project_id: project_id, doc_id: doc_id, "updating doc in docstore api" url = "#{settings.apis.docstore.url}/project/#{project_id}/doc/#{doc_id}" request.post { @@ -59,6 +59,7 @@ module.exports = DocstoreManager = json: lines: lines version: version + ranges: ranges }, (error, res, result) -> return callback(error) if error? if 200 <= res.statusCode < 300 diff --git a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee index dcf0615b25..9b3364f8ad 100644 --- a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee +++ b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee @@ -95,7 +95,7 @@ module.exports = DocumentUpdaterHandler = logger.error err: error, project_id: project_id, doc_id: doc_id, "document updater returned failure status code: #{res.statusCode}" return callback(error) - getDocument: (project_id, doc_id, fromVersion, callback = (error, exists, doclines, version) ->) -> + getDocument: (project_id, doc_id, fromVersion, callback = (error, doclines, version, ranges, ops) ->) -> timer = new metrics.Timer("get-document") url = "#{settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}?fromVersion=#{fromVersion}" logger.log project_id:project_id, doc_id: doc_id, "getting doc from document updater" @@ -110,7 +110,7 @@ module.exports = DocumentUpdaterHandler = body = JSON.parse(body) catch error return callback(error) - callback null, body.lines, body.version, body.ops + callback null, body.lines, body.version, body.ranges, body.ops else logger.error project_id:project_id, doc_id:doc_id, url: url, "doc updater returned a non-success status code: #{res.statusCode}" callback new Error("doc updater returned a non-success status code: #{res.statusCode}") diff --git a/services/web/app/coffee/Features/Documents/DocumentController.coffee b/services/web/app/coffee/Features/Documents/DocumentController.coffee index 560f232ba1..2042f6a218 100644 --- a/services/web/app/coffee/Features/Documents/DocumentController.coffee +++ b/services/web/app/coffee/Features/Documents/DocumentController.coffee @@ -7,7 +7,7 @@ module.exports = doc_id = req.params.doc_id plain = req?.query?.plain == 'true' logger.log doc_id:doc_id, project_id:project_id, "receiving get document request from api (docupdater)" - ProjectEntityHandler.getDoc project_id, doc_id, (error, lines, rev, version) -> + ProjectEntityHandler.getDoc project_id, doc_id, (error, lines, rev, version, ranges) -> if error? logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding element for getDocument" return next(error) @@ -19,14 +19,15 @@ module.exports = res.send JSON.stringify { lines: lines version: version + ranges: ranges } setDocument: (req, res, next = (error) ->) -> project_id = req.params.Project_id doc_id = req.params.doc_id - {lines, version} = req.body + {lines, version, ranges} = req.body logger.log doc_id:doc_id, project_id:project_id, "receiving set document request from api (docupdater)" - ProjectEntityHandler.updateDocLines project_id, doc_id, lines, version, (error) -> + ProjectEntityHandler.updateDocLines project_id, doc_id, lines, version, ranges, (error) -> if error? logger.err err:error, doc_id:doc_id, project_id:project_id, "error finding element for getDocument" return next(error) diff --git a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee index 21932cefc9..eefaeab6ab 100644 --- a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee @@ -126,7 +126,7 @@ module.exports = ProjectEntityHandler = doc = new Doc name: docName # Put doc in docstore first, so that if it errors, we don't have a doc_id in the project # which hasn't been created in docstore. - DocstoreManager.updateDoc project_id.toString(), doc._id.toString(), docLines, 0, (err, modified, rev) -> + DocstoreManager.updateDoc project_id.toString(), doc._id.toString(), docLines, 0, {}, (err, modified, rev) -> return callback(err) if err? ProjectEntityHandler._putElement project, folder_id, doc, "doc", (err, result)=> @@ -292,7 +292,7 @@ module.exports = ProjectEntityHandler = return callback(err) callback(err, folder, parentFolder_id) - updateDocLines : (project_id, doc_id, lines, version, callback = (error) ->)-> + updateDocLines : (project_id, doc_id, lines, version, ranges, callback = (error) ->)-> ProjectGetter.getProjectWithoutDocLines project_id, (err, project)-> return callback(err) if err? return callback(new Errors.NotFoundError("project not found")) if !project? @@ -307,7 +307,7 @@ module.exports = ProjectEntityHandler = return callback(error) logger.log project_id: project_id, doc_id: doc_id, "telling docstore manager to update doc" - DocstoreManager.updateDoc project_id, doc_id, lines, version, (err, modified, rev) -> + DocstoreManager.updateDoc project_id, doc_id, lines, version, ranges, (err, modified, rev) -> if err? logger.error err: err, doc_id: doc_id, project_id:project_id, lines: lines, "error sending doc to docstore" return callback(err) diff --git a/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee b/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee index e288c46aea..52603c28bb 100644 --- a/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee @@ -57,12 +57,13 @@ describe "DocstoreManager", -> @lines = ["mock", "doc", "lines"] @rev = 5 @version = 42 + @ranges = { "mock": "ranges" } @modified = true describe "with a successful response code", -> beforeEach -> @request.post = sinon.stub().callsArgWith(1, null, statusCode: 204, { modified: @modified, rev: @rev }) - @DocstoreManager.updateDoc @project_id, @doc_id, @lines, @version, @callback + @DocstoreManager.updateDoc @project_id, @doc_id, @lines, @version, @ranges, @callback it "should update the doc in the docstore api", -> @request.post @@ -71,6 +72,7 @@ describe "DocstoreManager", -> json: lines: @lines version: @version + ranges: @ranges }) .should.equal true @@ -80,7 +82,7 @@ describe "DocstoreManager", -> describe "with a failed response code", -> beforeEach -> @request.post = sinon.stub().callsArgWith(1, null, statusCode: 500, "") - @DocstoreManager.updateDoc @project_id, @doc_id, @lines, @version, @callback + @DocstoreManager.updateDoc @project_id, @doc_id, @lines, @version, @ranges, @callback it "should call the callback with an error", -> @callback.calledWith(new Error("docstore api responded with non-success code: 500")).should.equal true @@ -100,6 +102,7 @@ describe "DocstoreManager", -> lines: @lines = ["mock", "doc", "lines"] rev: @rev = 5 version: @version = 42 + ranges: @ranges = { "mock": "ranges" } describe "with a successful response code", -> beforeEach -> @@ -115,7 +118,7 @@ describe "DocstoreManager", -> .should.equal true it "should call the callback with the lines, version and rev", -> - @callback.calledWith(null, @lines, @rev, @version).should.equal true + @callback.calledWith(null, @lines, @rev, @version, @ranges).should.equal true describe "with a failed response code", -> beforeEach -> @@ -148,7 +151,7 @@ describe "DocstoreManager", -> .should.equal true it "should call the callback with the lines, version and rev", -> - @callback.calledWith(null, @lines, @rev, @version).should.equal true + @callback.calledWith(null, @lines, @rev, @version, @ranges).should.equal true describe "getAllDocs", -> describe "with a successful response code", -> diff --git a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee index aaae05219b..eca005f295 100644 --- a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee @@ -267,6 +267,7 @@ describe 'DocumentUpdaterHandler - Flushing documents :', -> lines: @lines version: @version ops: @ops = ["mock-op-1", "mock-op-2"] + ranges: @ranges = {"mock":"ranges"} @fromVersion = 2 @request.get = sinon.stub().callsArgWith(1, null, {statusCode: 200}, @body) @handler.getDocument @project_id, @doc_id, @fromVersion, @callback @@ -276,7 +277,7 @@ describe 'DocumentUpdaterHandler - Flushing documents :', -> @request.get.calledWith(url).should.equal true it "should call the callback with the lines and version", -> - @callback.calledWith(null, @lines, @version, @ops).should.equal true + @callback.calledWith(null, @lines, @version, @ranges, @ops).should.equal true describe "when the document updater API returns an error", -> beforeEach -> diff --git a/services/web/test/UnitTests/coffee/Documents/DocumentControllerTests.coffee b/services/web/test/UnitTests/coffee/Documents/DocumentControllerTests.coffee index a554319baa..fedfa1c1b3 100644 --- a/services/web/test/UnitTests/coffee/Documents/DocumentControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Documents/DocumentControllerTests.coffee @@ -23,6 +23,7 @@ describe "DocumentController", -> @doc_id = "doc-id-123" @doc_lines = ["one", "two", "three"] @version = 42 + @ranges = {"mock": "ranges"} @rev = 5 describe "getDocument", -> @@ -33,7 +34,7 @@ describe "DocumentController", -> describe "when the document exists", -> beforeEach -> - @ProjectEntityHandler.getDoc = sinon.stub().callsArgWith(2, null, @doc_lines, @rev, @version) + @ProjectEntityHandler.getDoc = sinon.stub().callsArgWith(2, null, @doc_lines, @rev, @version, @ranges) @DocumentController.getDocument(@req, @res, @next) it "should get the document from Mongo", -> @@ -46,6 +47,7 @@ describe "DocumentController", -> @res.body.should.equal JSON.stringify lines: @doc_lines version: @version + ranges: @ranges describe "when the document doesn't exist", -> beforeEach -> @@ -68,11 +70,12 @@ describe "DocumentController", -> @req.body = lines: @doc_lines version: @version + ranges: @ranges @DocumentController.setDocument(@req, @res, @next) it "should update the document in Mongo", -> @ProjectEntityHandler.updateDocLines - .calledWith(@project_id, @doc_id, @doc_lines, @version) + .calledWith(@project_id, @doc_id, @doc_lines, @version, @ranges) .should.equal true it "should return a successful response", -> diff --git a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee index 5a0c860ab2..f3dcda07cf 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee @@ -382,7 +382,9 @@ describe 'ProjectEntityHandler', -> beforeEach -> @lines = ["mock", "doc", "lines"] @rev = 5 - @DocstoreManager.getDoc = sinon.stub().callsArgWith(3, null, @lines, @rev) + @version = 42 + @ranges = {"mock": "ranges"} + @DocstoreManager.getDoc = sinon.stub().callsArgWith(3, null, @lines, @rev, @version, @ranges) @ProjectEntityHandler.getDoc project_id, doc_id, @callback it "should call the docstore", -> @@ -391,7 +393,7 @@ describe 'ProjectEntityHandler', -> .should.equal true it "should call the callback with the lines, version and rev", -> - @callback.calledWith(null, @lines, @rev).should.equal true + @callback.calledWith(null, @lines, @rev, @version, @ranges).should.equal true describe 'addDoc', -> beforeEach -> @@ -590,6 +592,7 @@ describe 'ProjectEntityHandler', -> _id: doc_id } @version = 42 + @ranges = {"mock":"ranges"} @ProjectGetter.getProjectWithoutDocLines = sinon.stub().callsArgWith(1, null, @project) @projectLocator.findElement = sinon.stub().callsArgWith(1, null, @doc, {fileSystem: @path}) @tpdsUpdateSender.addDoc = sinon.stub().callsArg(1) @@ -599,7 +602,7 @@ describe 'ProjectEntityHandler', -> describe "when the doc has been modified", -> beforeEach -> @DocstoreManager.updateDoc = sinon.stub().yields(null, true, @rev = 5) - @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @callback + @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @ranges, @callback it "should get the project without doc lines", -> @ProjectGetter.getProjectWithoutDocLines @@ -617,7 +620,7 @@ describe 'ProjectEntityHandler', -> it "should update the doc in the docstore", -> @DocstoreManager.updateDoc - .calledWith(project_id, doc_id, @lines, @version) + .calledWith(project_id, doc_id, @lines, @version, @ranges) .should.equal true it "should mark the project as updated", -> @@ -642,7 +645,7 @@ describe 'ProjectEntityHandler', -> describe "when the doc has not been modified", -> beforeEach -> @DocstoreManager.updateDoc = sinon.stub().yields(null, false, @rev = 5) - @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @callback + @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @ranges, @callback it "should not mark the project as updated", -> @projectUpdater.markAsUpdated.called.should.equal false @@ -656,7 +659,7 @@ describe 'ProjectEntityHandler', -> describe "when the project is not found", -> beforeEach -> @ProjectGetter.getProjectWithoutDocLines = sinon.stub().callsArgWith(1, null, null) - @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @callback + @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @ranges, @version, @callback it "should return a not found error", -> @callback.calledWith(new Errors.NotFoundError()).should.equal true @@ -664,7 +667,7 @@ describe 'ProjectEntityHandler', -> describe "when the doc is not found", -> beforeEach -> @projectLocator.findElement = sinon.stub().callsArgWith(1, null, null, null) - @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @version, @callback + @ProjectEntityHandler.updateDocLines project_id, doc_id, @lines, @ranges, @version, @callback it "should log out the error", -> @logger.error From 1d426e538f732e785338f74df7c7d25fc45f33a9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 8 Dec 2016 14:10:30 +0000 Subject: [PATCH 005/204] Load ranges from docupdater and toggle track changes when possible --- .../web/app/views/project/editor/editor.jade | 4 +- .../views/project/editor/review-panel.jade | 8 +- .../public/coffee/ide/editor/Document.coffee | 10 +- .../coffee/ide/editor/EditorManager.coffee | 33 ++++++ .../coffee/ide/editor/ShareJsDoc.coffee | 21 ++-- .../ide/editor/directives/aceEditor.coffee | 4 +- .../track-changes/TrackChangesManager.coffee | 101 ++++++++++-------- ...gesTracker.coffee => RangesTracker.coffee} | 34 ++++-- .../controllers/ReviewPanelController.coffee | 29 +++-- 9 files changed, 150 insertions(+), 94 deletions(-) rename services/web/public/coffee/ide/review-panel/{ChangesTracker.coffee => RangesTracker.coffee} (94%) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 50da35d08a..3126d63df2 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -52,8 +52,8 @@ div.full-size( review-panel="reviewPanel", events-bridge="reviewPanelEventsBridge" track-changes-enabled="trackChangesFeatureFlag", - track-new-changes= "reviewPanel.trackNewChanges", - changes-tracker="reviewPanel.changesTracker", + track-changes= "editor.trackChanges", + ranges-tracker="reviewPanel.rangesTracker", doc-id="editor.open_doc_id" ) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index dbb3a34631..be41e80e2c 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,10 +1,12 @@ #review-panel .review-panel-toolbar - span.review-panel-toolbar-label(ng-click="reviewPanel.trackNewChanges = true;", ng-if="reviewPanel.trackNewChanges === false") Track Changes is + span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is strong off - span.review-panel-toolbar-label(ng-click="reviewPanel.trackNewChanges = false;", ng-if="reviewPanel.trackNewChanges === true") Track Changes is + span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = false;", ng-if="editor.wantTrackChanges === true") Track Changes is strong on - review-panel-toggle(ng-model="reviewPanel.trackNewChanges") + review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges") + span.review-panel-toolbar-spinner(ng-if="editor.wantTrackChanges != editor.trackChanges") + i.fa.fa-spin.fa-spinner .rp-entry-list( review-panel-sorted diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 17b1d9e28f..213fbe3514 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -77,6 +77,9 @@ define [ hasBufferedOps: () -> @doc?.hasBufferedOps() + + setTrackingChanges: (track_changes) -> + @doc.track_changes = track_changes _bindToSocketEvents: () -> @_onUpdateAppliedHandler = (update) => @_onUpdateApplied(update) @@ -239,16 +242,19 @@ define [ _joinDoc: (callback = (error) ->) -> if @doc? - @ide.socket.emit 'joinDoc', @doc_id, @doc.getVersion(), (error, docLines, version, updates) => + @ide.socket.emit 'joinDoc', @doc_id, @doc.getVersion(), (error, docLines, version, updates, ranges) => return callback(error) if error? @joined = true @doc.catchUp( updates ) + # TODO: Worry about whether these ranges are consistent with the doc still + @opening_ranges = ranges callback() else - @ide.socket.emit 'joinDoc', @doc_id, (error, docLines, version) => + @ide.socket.emit 'joinDoc', @doc_id, (error, docLines, version, updates, ranges) => return callback(error) if error? @joined = true @doc = new ShareJsDoc @doc_id, docLines, version, @ide.socket + @opening_ranges = ranges @_bindToShareJsDocEvents() callback() diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index eb063c9c6a..b7fccc29af 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -10,6 +10,8 @@ define [ open_doc_id: null open_doc_name: null opening: true + trackChanges: false + wantTrackChanges: false } @$scope.$on "entity:selected", (event, entity) => @@ -31,6 +33,10 @@ define [ @$scope.$on "flush-changes", () => Document.flushAll() + + @$scope.$watch "editor.wantTrackChanges", (value) => + return if !value? + @_syncTrackChangesState(@$scope.editor.sharejs_doc) autoOpenDoc: () -> open_doc_id = @@ -83,6 +89,8 @@ define [ "Sorry, something went wrong opening this document. Please try again." ) return + + @_syncTrackChangesState(sharejs_doc) @$scope.$broadcast "doc:opened" @@ -144,3 +152,28 @@ define [ stopIgnoringExternalUpdates: () -> @_ignoreExternalUpdates = false + + _syncTimeout: null + _syncTrackChangesState: (doc) -> + return if !doc? + + if @_syncTimeout? + clearTimeout @_syncTimeout + @_syncTimeout = null + + want = @$scope.editor.wantTrackChanges + have = @$scope.editor.trackChanges + if want == have + return + + console.log "Trying to set track changes to:", want + do tryToggle = () => + saved = !doc.getInflightOp()? and !doc.getPendingOp()? + if saved + console.log "SUCCESS, changing value", want + doc.setTrackingChanges(want) + @$scope.$apply () => + @$scope.editor.trackChanges = want + else + console.log "Still in flight, will try soon" + @_syncTimeout = setTimeout tryToggle, 100 diff --git a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee index 5d8b4ef11a..bb2d6b3e38 100644 --- a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee +++ b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee @@ -9,21 +9,9 @@ define [ # Dencode any binary bits of data # See http://ecmanaut.blogspot.co.uk/2006/07/encoding-decoding-utf8-in-javascript.html @type = "text" - docLines = for line in docLines - if line.text? - @type = "json" - line.text = decodeURIComponent(escape(line.text)) - else - @type = "text" - line = decodeURIComponent(escape(line)) - line - - if @type == "text" - snapshot = docLines.join("\n") - else if @type == "json" - snapshot = { lines: docLines } - else - throw new Error("Unknown type: #{@type}") + docLines = (decodeURIComponent(escape(line)) for line in docLines) + snapshot = docLines.join("\n") + @track_changes = false @connection = { send: (update) => @@ -34,6 +22,9 @@ define [ if window.dropUpdates? and Math.random() < window.dropUpdates sl_console.log "Simulating a lost update", update return + if @track_changes + update.meta ?= {} + update.meta.tc = 1 @socket.emit "applyOtUpdate", @doc_id, update, (error) => return @_handleError(error) if error? state: "ok" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 885deec2f8..bbbcff5a85 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -54,9 +54,9 @@ define [ syntaxValidation: "=" reviewPanel: "=" eventsBridge: "=" - trackNewChanges: "=" + trackChanges: "=" trackChangesEnabled: "=" - changesTracker: "=" + rangesTracker: "=" docId: "=" } link: (scope, element, attrs) -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index af9815b2cb..54b20f7018 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -10,15 +10,22 @@ define [ constructor: (@$scope, @editor, @element) -> window.trackChangesManager ?= @ - @$scope.$watch "changesTracker", (changesTracker) => - return if !changesTracker? - @disconnectFromChangesTracker() - @changesTracker = changesTracker - @connectToChangesTracker() + @$scope.$watch "rangesTracker", (rangesTracker) => + return if !rangesTracker? + @disconnectFromRangesTracker() + @rangesTracker = rangesTracker + @connectToRangesTracker() - @$scope.$watch "trackNewChanges", (track_new_changes) => - return if !track_new_changes? - @changesTracker?.track_changes = track_new_changes + @$scope.$watch "trackChanges", (track_changes) => + return if !track_changes? + @rangesTracker?.track_changes = track_changes + + @$scope.$watch "sharejsDoc", (doc) => + return if !doc? + if doc.opening_ranges?.changes? + @rangesTracker.changes = doc.opening_ranges.changes + if doc.opening_ranges?.comments? + @rangesTracker.comments = doc.opening_ranges.comments @$scope.$on "comment:add", (e, comment) => @addCommentToSelection(comment) @@ -75,12 +82,12 @@ define [ else user_id = window.user.id - was_tracking = @changesTracker.track_changes + was_tracking = @rangesTracker.track_changes if @dont_track_next_update - @changesTracker.track_changes = false + @rangesTracker.track_changes = false @dont_track_next_update = false @applyChange(e, { user_id }) - @changesTracker.track_changes = was_tracking + @rangesTracker.track_changes = was_tracking # TODO: Just for debugging, remove before going live. setTimeout () => @@ -111,68 +118,68 @@ define [ else unbindFromAce() - disconnectFromChangesTracker: () -> + disconnectFromRangesTracker: () -> @changeIdToMarkerIdMap = {} - if @changesTracker? - @changesTracker.off "insert:added" - @changesTracker.off "insert:removed" - @changesTracker.off "delete:added" - @changesTracker.off "delete:removed" - @changesTracker.off "changes:moved" - @changesTracker.off "comment:added" - @changesTracker.off "comment:moved" - @changesTracker.off "comment:removed" - @changesTracker.off "comment:resolved" - @changesTracker.off "comment:unresolved" + if @rangesTracker? + @rangesTracker.off "insert:added" + @rangesTracker.off "insert:removed" + @rangesTracker.off "delete:added" + @rangesTracker.off "delete:removed" + @rangesTracker.off "changes:moved" + @rangesTracker.off "comment:added" + @rangesTracker.off "comment:moved" + @rangesTracker.off "comment:removed" + @rangesTracker.off "comment:resolved" + @rangesTracker.off "comment:unresolved" - connectToChangesTracker: () -> - @changesTracker.track_changes = @$scope.trackNewChanges + connectToRangesTracker: () -> + @rangesTracker.track_changes = @$scope.trackChanges - @changesTracker.on "insert:added", (change) => + @rangesTracker.on "insert:added", (change) => sl_console.log "[insert:added]", change @_onInsertAdded(change) - @changesTracker.on "insert:removed", (change) => + @rangesTracker.on "insert:removed", (change) => sl_console.log "[insert:removed]", change @_onInsertRemoved(change) - @changesTracker.on "delete:added", (change) => + @rangesTracker.on "delete:added", (change) => sl_console.log "[delete:added]", change @_onDeleteAdded(change) - @changesTracker.on "delete:removed", (change) => + @rangesTracker.on "delete:removed", (change) => sl_console.log "[delete:removed]", change @_onDeleteRemoved(change) - @changesTracker.on "changes:moved", (changes) => + @rangesTracker.on "changes:moved", (changes) => sl_console.log "[changes:moved]", changes @_onChangesMoved(changes) - @changesTracker.on "comment:added", (comment) => + @rangesTracker.on "comment:added", (comment) => sl_console.log "[comment:added]", comment @_onCommentAdded(comment) - @changesTracker.on "comment:moved", (comment) => + @rangesTracker.on "comment:moved", (comment) => sl_console.log "[comment:moved]", comment @_onCommentMoved(comment) - @changesTracker.on "comment:removed", (comment) => + @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment @_onCommentRemoved(comment) - @changesTracker.on "comment:resolved", (comment) => + @rangesTracker.on "comment:resolved", (comment) => sl_console.log "[comment:resolved]", comment @_onCommentRemoved(comment) - @changesTracker.on "comment:unresolved", (comment) => + @rangesTracker.on "comment:unresolved", (comment) => sl_console.log "[comment:unresolved]", comment @_onCommentAdded(comment) redrawAnnotations: () -> - for change in @changesTracker.changes + for change in @rangesTracker.changes if change.op.i? @_onInsertAdded(change) else if change.op.d? @_onDeleteAdded(change) - for comment in @changesTracker.comments + for comment in @rangesTracker.comments @_onCommentAdded(comment) addComment: (offset, length, content) -> - @changesTracker.addComment offset, length, { + @rangesTracker.addComment offset, length, { thread: [{ content: content user_id: window.user_id @@ -192,12 +199,12 @@ define [ @editor.selection.selectLine() acceptChangeId: (change_id) -> - @changesTracker.removeChangeId(change_id) + @rangesTracker.removeChangeId(change_id) rejectChangeId: (change_id) -> - change = @changesTracker.getChange(change_id) + change = @rangesTracker.getChange(change_id) return if !change? - @changesTracker.removeChangeId(change_id) + @rangesTracker.removeChangeId(change_id) @dont_track_next_update = true session = @editor.getSession() if change.op.d? @@ -215,15 +222,15 @@ define [ throw new Error("unknown change: #{JSON.stringify(change)}") removeCommentId: (comment_id) -> - @changesTracker.removeCommentId(comment_id) + @rangesTracker.removeCommentId(comment_id) resolveCommentId: (comment_id, user_id) -> - @changesTracker.resolveCommentId(comment_id, { + @rangesTracker.resolveCommentId(comment_id, { user_id, ts: new Date() }) unresolveCommentId: (comment_id) -> - @changesTracker.unresolveCommentId(comment_id) + @rangesTracker.unresolveCommentId(comment_id) checkMapping: () -> session = @editor.getSession() @@ -234,7 +241,7 @@ define [ markers[marker_id] = marker expected_markers = [] - for change in @changesTracker.changes + for change in @rangesTracker.changes if @changeIdToMarkerIdMap[change.id]? op = change.op {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -246,7 +253,7 @@ define [ expected_markers.push { marker_id: background_marker_id, start, end } expected_markers.push { marker_id: callout_marker_id, start, end: start } - for comment in @changesTracker.comments + for comment in @rangesTracker.comments if @changeIdToMarkerIdMap[comment.id]? {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[comment.id] start = @_shareJsOffsetToAcePosition(comment.offset) @@ -269,7 +276,7 @@ define [ applyChange: (delta, metadata) -> op = @_aceChangeToShareJs(delta) - @changesTracker.applyOp(op, metadata) + @rangesTracker.applyOp(op, metadata) updateFocus: () -> selection = @editor.getSelectionRange() diff --git a/services/web/public/coffee/ide/review-panel/ChangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee similarity index 94% rename from services/web/public/coffee/ide/review-panel/ChangesTracker.coffee rename to services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 0b668c90dd..6a3625fd09 100644 --- a/services/web/public/coffee/ide/review-panel/ChangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -1,7 +1,5 @@ -define [ - "utils/EventEmitter" -], (EventEmitter) -> - class ChangesTracker extends EventEmitter +load = (EventEmitter) -> + class RangesTracker extends EventEmitter # The purpose of this class is to track a set of inserts and deletes to a document, like # track changes in Word. We store these as a set of ShareJs style ranges: # {i: "foo", p: 42} # Insert 'foo' at offset 42 @@ -36,7 +34,7 @@ define [ # * Deletes by another user will consume deletes by the first user # * Inserts by another user will not combine with inserts by the first user. If they are in the # middle of a previous insert by the first user, the original insert will be split into two. - constructor: () -> + constructor: (@changes = [], @comments = []) -> # Change objects have the following structure: # { # id: ... # Uniquely generated by us @@ -48,8 +46,6 @@ define [ # # Ids are used to uniquely identify a change, e.g. for updating it in the database, or keeping in # sync with Ace ranges. - @changes = [] - @comments = [] @id = 0 addComment: (offset, length, metadata) -> @@ -375,7 +371,23 @@ define [ @emit "changes:moved", moved_changes _newId: () -> - (@id++).toString() + # Generate a Mongo ObjectId + # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js + @_pid ?= Math.floor(Math.random() * (32767)) + @_machine ?= Math.floor(Math.random() * (16777216)) + timestamp = Math.floor(new Date().valueOf() / 1000) + @_increment ?= 0 + @_increment++ + + timestamp = timestamp.toString(16) + machine = @_machine.toString(16) + pid = @_pid.toString(16) + increment = @_increment.toString(16) + + return '00000000'.substr(0, 8 - timestamp.length) + timestamp + + '000000'.substr(0, 6 - machine.length) + machine + + '0000'.substr(0, 4 - pid.length) + pid + + '000000'.substr(0, 6 - increment.length) + increment; _addOp: (op, metadata) -> change = { @@ -453,3 +465,9 @@ define [ else # Only update to the current change if we haven't removed it. previous_change = change return { moved_changes, remove_changes } + +if define? + define ["utils/EventEmitter"], load +else + EventEmitter = require("events").EventEmitter + module.exports = load(EventEmitter) \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 9623e2af9a..d581c388a9 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -2,8 +2,8 @@ define [ "base", "utils/EventEmitter" "ide/colors/ColorManager" - "ide/review-panel/ChangesTracker" -], (App, EventEmitter, ColorManager, ChangesTracker) -> + "ide/review-panel/RangesTracker" +], (App, EventEmitter, ColorManager, RangesTracker) -> App.controller "ReviewPanelController", ($scope, $element, ide, $timeout) -> $reviewPanelEl = $element.find "#review-panel" @@ -13,7 +13,6 @@ define [ $scope.reviewPanel = entries: {} - trackNewChanges: false hasEntries: false subView: $scope.SubViews.CUR_FILE openSubView: $scope.SubViews.CUR_FILE @@ -24,15 +23,15 @@ define [ $scope.reviewPanelEventsBridge = new EventEmitter() - changesTrackers = {} + rangesTrackers = {} getDocEntries = (doc_id) -> $scope.reviewPanel.entries[doc_id] ?= {} return $scope.reviewPanel.entries[doc_id] getChangeTracker = (doc_id) -> - changesTrackers[doc_id] ?= new ChangesTracker() - return changesTrackers[doc_id] + rangesTrackers[doc_id] ?= new RangesTracker() + return rangesTrackers[doc_id] # TODO Just for prototyping purposes; remove afterwards. mockedUserId = 'mock_user_id_1' @@ -115,12 +114,12 @@ define [ ide.$scope.$on "file-tree:initialized", () -> ide.fileTreeManager.forEachEntity (entity) -> if mock_changes[entity.name]? - changesTracker = getChangeTracker(entity.id) + rangesTracker = getChangeTracker(entity.id) for change in mock_changes[entity.name].changes - changesTracker._addOp change.op, change.metadata + rangesTracker._addOp change.op, change.metadata for comment in mock_changes[entity.name].comments - changesTracker.addComment comment.offset, comment.length, comment.metadata - for doc_id, changesTracker of changesTrackers + rangesTracker.addComment comment.offset, comment.length, comment.metadata + for doc_id, rangesTracker of rangesTrackers updateEntries(doc_id) scrollbar = {} @@ -150,8 +149,8 @@ define [ $scope.$watch "editor.open_doc_id", (open_doc_id) -> return if !open_doc_id? - changesTrackers[open_doc_id] ?= new ChangesTracker() - $scope.reviewPanel.changesTracker = changesTrackers[open_doc_id] + rangesTrackers[open_doc_id] ?= new RangesTracker() + $scope.reviewPanel.rangesTracker = rangesTrackers[open_doc_id] $scope.$watch (() -> entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] or {} @@ -166,14 +165,14 @@ define [ $scope.$broadcast "review-panel:layout" updateEntries = (doc_id) -> - changesTracker = getChangeTracker(doc_id) + rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) # Assume we'll delete everything until we see it, then we'll remove it from this object delete_changes = {} delete_changes[change_id] = true for change_id, change of entries - for change in changesTracker.changes + for change in rangesTracker.changes delete delete_changes[change.id] entries[change.id] ?= {} @@ -189,7 +188,7 @@ define [ for key, value of new_entry entries[change.id][key] = value - for comment in changesTracker.comments + for comment in rangesTracker.comments delete delete_changes[comment.id] entries[comment.id] ?= {} new_entry = { From 293ba1fc4c4cc2244a126e864a823bad77de33b3 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 9 Dec 2016 15:43:08 +0000 Subject: [PATCH 006/204] Fetch all ranges from docstore when viewing overview panel --- .../Features/Docstore/DocstoreManager.coffee | 15 +++++++++ .../Features/Editor/EditorController.coffee | 1 - .../HistoryController.coffee} | 4 +-- .../HistoryManager.coffee} | 2 +- .../InactiveProjectManager.coffee | 3 -- .../Features/Ranges/RangesController.coffee | 11 +++++++ .../Features/Ranges/RangesManager.coffee | 8 +++++ services/web/app/coffee/router.coffee | 11 ++++--- .../views/project/editor/review-panel.jade | 3 ++ .../controllers/ReviewPanelController.coffee | 24 +++++++++++++- .../Docstore/DocstoreManagerTests.coffee | 32 +++++++++++++++++++ .../HistoryControllerTests.coffee} | 10 +++--- .../HistoryManagerTests.coffee} | 14 ++++---- 13 files changed, 114 insertions(+), 24 deletions(-) rename services/web/app/coffee/Features/{TrackChanges/TrackChangesController.coffee => History/HistoryController.coffee} (84%) rename services/web/app/coffee/Features/{TrackChanges/TrackChangesManager.coffee => History/HistoryManager.coffee} (96%) create mode 100644 services/web/app/coffee/Features/Ranges/RangesController.coffee create mode 100644 services/web/app/coffee/Features/Ranges/RangesManager.coffee rename services/web/test/UnitTests/coffee/{TrackChanges/TrackChangesControllerTests.coffee => History/HistoryControllerTests.coffee} (83%) rename services/web/test/UnitTests/coffee/{TrackChanges/TrackChangesManagerTests.coffee => History/HistoryManagerTests.coffee} (81%) diff --git a/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee b/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee index cf48dfe07b..06dd14c17b 100644 --- a/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee +++ b/services/web/app/coffee/Features/Docstore/DocstoreManager.coffee @@ -29,6 +29,21 @@ module.exports = DocstoreManager = error = new Error("docstore api responded with non-success code: #{res.statusCode}") logger.error err: error, project_id: project_id, "error getting all docs from docstore" callback(error) + + getAllRanges: (project_id, callback = (error) ->) -> + logger.log { project_id }, "getting all doc ranges for project in docstore api" + url = "#{settings.apis.docstore.url}/project/#{project_id}/ranges" + request.get { + url: url + json: true + }, (error, res, docs) -> + return callback(error) if error? + if 200 <= res.statusCode < 300 + callback(null, docs) + else + error = new Error("docstore api responded with non-success code: #{res.statusCode}") + logger.error err: error, project_id: project_id, "error getting all doc ranges from docstore" + callback(error) getDoc: (project_id, doc_id, options = {}, callback = (error, lines, rev, version) ->) -> if typeof(options) == "function" diff --git a/services/web/app/coffee/Features/Editor/EditorController.coffee b/services/web/app/coffee/Features/Editor/EditorController.coffee index 476ba96174..b5abab3bf9 100644 --- a/services/web/app/coffee/Features/Editor/EditorController.coffee +++ b/services/web/app/coffee/Features/Editor/EditorController.coffee @@ -7,7 +7,6 @@ ProjectDetailsHandler = require('../Project/ProjectDetailsHandler') ProjectDeleter = require("../Project/ProjectDeleter") DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') EditorRealTimeController = require("./EditorRealTimeController") -TrackChangesManager = require("../TrackChanges/TrackChangesManager") async = require('async') LockManager = require("../../infrastructure/LockManager") _ = require('underscore') diff --git a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee b/services/web/app/coffee/Features/History/HistoryController.coffee similarity index 84% rename from services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee rename to services/web/app/coffee/Features/History/HistoryController.coffee index bc6e00a29a..d4f42b38b1 100644 --- a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee +++ b/services/web/app/coffee/Features/History/HistoryController.coffee @@ -3,8 +3,8 @@ request = require "request" settings = require "settings-sharelatex" AuthenticationController = require "../Authentication/AuthenticationController" -module.exports = TrackChangesController = - proxyToTrackChangesApi: (req, res, next = (error) ->) -> +module.exports = HistoryController = + proxyToHistoryApi: (req, res, next = (error) ->) -> user_id = AuthenticationController.getLoggedInUserId req url = settings.apis.trackchanges.url + req.url logger.log url: url, "proxying to track-changes api" diff --git a/services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee b/services/web/app/coffee/Features/History/HistoryManager.coffee similarity index 96% rename from services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee rename to services/web/app/coffee/Features/History/HistoryManager.coffee index ddcfe3e44a..ea3f492613 100644 --- a/services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee +++ b/services/web/app/coffee/Features/History/HistoryManager.coffee @@ -2,7 +2,7 @@ settings = require "settings-sharelatex" request = require "request" logger = require "logger-sharelatex" -module.exports = TrackChangesManager = +module.exports = HistoryManager = flushProject: (project_id, callback = (error) ->) -> logger.log project_id: project_id, "flushing project in track-changes api" url = "#{settings.apis.trackchanges.url}/project/#{project_id}/flush" diff --git a/services/web/app/coffee/Features/InactiveData/InactiveProjectManager.coffee b/services/web/app/coffee/Features/InactiveData/InactiveProjectManager.coffee index a2afee0573..5c984dcb5d 100644 --- a/services/web/app/coffee/Features/InactiveData/InactiveProjectManager.coffee +++ b/services/web/app/coffee/Features/InactiveData/InactiveProjectManager.coffee @@ -5,8 +5,6 @@ DocstoreManager = require("../Docstore/DocstoreManager") ProjectGetter = require("../Project/ProjectGetter") ProjectUpdateHandler = require("../Project/ProjectUpdateHandler") Project = require("../../models/Project").Project -TrackChangesManager = require("../TrackChanges/TrackChangesManager") - MILISECONDS_IN_DAY = 86400000 module.exports = InactiveProjectManager = @@ -52,7 +50,6 @@ module.exports = InactiveProjectManager = logger.log project_id:project_id, "deactivating inactive project" jobs = [ (cb)-> DocstoreManager.archiveProject project_id, cb - # (cb)-> TrackChangesManager.archiveProject project_id, cb (cb)-> ProjectUpdateHandler.markAsInactive project_id, cb ] async.series jobs, (err)-> diff --git a/services/web/app/coffee/Features/Ranges/RangesController.coffee b/services/web/app/coffee/Features/Ranges/RangesController.coffee new file mode 100644 index 0000000000..96a42588ac --- /dev/null +++ b/services/web/app/coffee/Features/Ranges/RangesController.coffee @@ -0,0 +1,11 @@ +RangesManager = require "./RangesManager" +logger = require "logger-sharelatex" + +module.exports = RangesController = + getAllRanges: (req, res, next) -> + project_id = req.params.project_id + logger.log {project_id}, "request for project ranges" + RangesManager.getAllRanges project_id, (error, docs = []) -> + return next(error) if error? + docs = ({id: d._id, ranges: d.ranges} for d in docs) + res.json docs diff --git a/services/web/app/coffee/Features/Ranges/RangesManager.coffee b/services/web/app/coffee/Features/Ranges/RangesManager.coffee new file mode 100644 index 0000000000..1fdf55b4a8 --- /dev/null +++ b/services/web/app/coffee/Features/Ranges/RangesManager.coffee @@ -0,0 +1,8 @@ +DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" +DocstoreManager = require "../Docstore/DocstoreManager" + +module.exports = RangesManager = + getAllRanges: (project_id, callback = (error, docs) ->) -> + DocumentUpdaterHandler.flushProjectToMongo project_id, (error) -> + return callback(error) if error? + DocstoreManager.getAllRanges project_id, callback \ No newline at end of file diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 14ac3b8d22..36e26782ba 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -25,7 +25,7 @@ ClsiCookieManager = require("./Features/Compile/ClsiCookieManager") HealthCheckController = require("./Features/HealthCheck/HealthCheckController") ProjectDownloadsController = require "./Features/Downloads/ProjectDownloadsController" FileStoreController = require("./Features/FileStore/FileStoreController") -TrackChangesController = require("./Features/TrackChanges/TrackChangesController") +HistoryController = require("./Features/History/HistoryController") PasswordResetRouter = require("./Features/PasswordReset/PasswordResetRouter") StaticPagesRouter = require("./Features/StaticPages/StaticPagesRouter") ChatController = require("./Features/Chat/ChatController") @@ -40,6 +40,7 @@ AuthorizationMiddlewear = require('./Features/Authorization/AuthorizationMiddlew BetaProgramController = require('./Features/BetaProgram/BetaProgramController') AnalyticsRouter = require('./Features/Analytics/AnalyticsRouter') AnnouncementsController = require("./Features/Announcements/AnnouncementsController") +RangesController = require("./Features/Ranges/RangesController") logger = require("logger-sharelatex") _ = require("underscore") @@ -171,9 +172,11 @@ module.exports = class Router webRouter.post '/project/:Project_id/rename', AuthorizationMiddlewear.ensureUserCanAdminProject, ProjectController.renameProject - webRouter.get "/project/:Project_id/updates", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.proxyToTrackChangesApi - webRouter.get "/project/:Project_id/doc/:doc_id/diff", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.proxyToTrackChangesApi - webRouter.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.proxyToTrackChangesApi + webRouter.get "/project/:Project_id/updates", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi + webRouter.get "/project/:Project_id/doc/:doc_id/diff", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi + webRouter.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi + + webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRanges webRouter.get '/Project/:Project_id/download/zip', AuthorizationMiddlewear.ensureUserCanReadProject, ProjectDownloadsController.downloadProject webRouter.get '/project/download/zip', AuthorizationMiddlewear.ensureUserCanReadMultipleProjects, ProjectDownloadsController.downloadMultipleProjects diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index be41e80e2c..2da1277572 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -49,8 +49,11 @@ .rp-entry-list( ng-if="reviewPanel.subView === SubViews.OVERVIEW" ) + .rp-overview-loading(ng-if="reviewPanel.overview.loading") + i.fa.fa-spinner.fa-spin .rp-overview-file( ng-repeat="(doc_id, entries) in reviewPanel.entries" + ng-if="!reviewPanel.overview.loading" ) .rp-overview-file-header | {{ getFileName(doc_id) }} diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index d581c388a9..8543e86402 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -4,7 +4,7 @@ define [ "ide/colors/ColorManager" "ide/review-panel/RangesTracker" ], (App, EventEmitter, ColorManager, RangesTracker) -> - App.controller "ReviewPanelController", ($scope, $element, ide, $timeout) -> + App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http) -> $reviewPanelEl = $element.find "#review-panel" $scope.SubViews = @@ -16,6 +16,8 @@ define [ hasEntries: false subView: $scope.SubViews.CUR_FILE openSubView: $scope.SubViews.CUR_FILE + overview: + loading: false $scope.commentState = adding: false @@ -146,6 +148,11 @@ define [ else # Reset back to what we had when previously open $scope.reviewPanel.subView = $scope.reviewPanel.openSubView + + $scope.$watch "reviewPanel.subView", (view) -> + return if !view? + if view == $scope.SubViews.OVERVIEW + refreshOverviewPanel() $scope.$watch "editor.open_doc_id", (open_doc_id) -> return if !open_doc_id? @@ -164,6 +171,21 @@ define [ $scope.$broadcast "review-panel:toggle" $scope.$broadcast "review-panel:layout" + refreshOverviewPanel = () -> + $scope.reviewPanel.overview.loading = true + $http.get "/project/#{$scope.project_id}/ranges" + .success (docs) -> + for doc in docs + if doc.id != $scope.editor.open_doc_id # this is kept up to date in real-time, don't overwrite + rangesTrackers[doc.id] ?= new RangesTracker() + rangesTrackers[doc.id].comments = doc.ranges?.comments or [] + rangesTrackers[doc.id].changes = doc.ranges?.changes or [] + updateEntries(doc.id) + $scope.reviewPanel.overview.loading = false + .error (error) -> + console.log "loading ranges errored", error + $scope.reviewPanel.overview.loading = false + updateEntries = (doc_id) -> rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) diff --git a/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee b/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee index 52603c28bb..abcc55a0b9 100644 --- a/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Docstore/DocstoreManagerTests.coffee @@ -186,6 +186,38 @@ describe "DocstoreManager", -> }, "error getting all docs from docstore") .should.equal true + describe "getAllRanges", -> + describe "with a successful response code", -> + beforeEach -> + @request.get = sinon.stub().callsArgWith(1, null, statusCode: 204, @docs = [{ _id: "mock-doc-id", ranges: "mock-ranges" }]) + @DocstoreManager.getAllRanges @project_id, @callback + + it "should get all the project doc ranges in the docstore api", -> + @request.get + .calledWith({ + url: "#{@settings.apis.docstore.url}/project/#{@project_id}/ranges" + json: true + }) + .should.equal true + + it "should call the callback with the docs", -> + @callback.calledWith(null, @docs).should.equal true + + describe "with a failed response code", -> + beforeEach -> + @request.get = sinon.stub().callsArgWith(1, null, statusCode: 500, "") + @DocstoreManager.getAllRanges @project_id, @callback + + it "should call the callback with an error", -> + @callback.calledWith(new Error("docstore api responded with non-success code: 500")).should.equal true + + it "should log the error", -> + @logger.error + .calledWith({ + err: new Error("docstore api responded with a non-success code: 500") + project_id: @project_id + }, "error getting all doc ranges from docstore") + .should.equal true describe "archiveProject", -> describe "with a successful response code", -> diff --git a/services/web/test/UnitTests/coffee/TrackChanges/TrackChangesControllerTests.coffee b/services/web/test/UnitTests/coffee/History/HistoryControllerTests.coffee similarity index 83% rename from services/web/test/UnitTests/coffee/TrackChanges/TrackChangesControllerTests.coffee rename to services/web/test/UnitTests/coffee/History/HistoryControllerTests.coffee index bcc57b58b8..577aae6a9d 100644 --- a/services/web/test/UnitTests/coffee/TrackChanges/TrackChangesControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/History/HistoryControllerTests.coffee @@ -1,21 +1,21 @@ chai = require('chai') chai.should() sinon = require("sinon") -modulePath = "../../../../app/js/Features/TrackChanges/TrackChangesController" +modulePath = "../../../../app/js/Features/History/HistoryController" SandboxedModule = require('sandboxed-module') -describe "TrackChangesController", -> +describe "HistoryController", -> beforeEach -> @user_id = "user-id-123" @AuthenticationController = getLoggedInUserId: sinon.stub().returns(@user_id) - @TrackChangesController = SandboxedModule.require modulePath, requires: + @HistoryController = SandboxedModule.require modulePath, requires: "request" : @request = sinon.stub() "settings-sharelatex": @settings = {} "logger-sharelatex": @logger = {log: sinon.stub(), error: sinon.stub()} "../Authentication/AuthenticationController": @AuthenticationController - describe "proxyToTrackChangesApi", -> + describe "proxyToHistoryApi", -> beforeEach -> @req = { url: "/mock/url", method: "POST" } @res = "mock-res" @@ -28,7 +28,7 @@ describe "TrackChangesController", -> pipe: sinon.stub() on: (event, handler) -> @events[event] = handler @request.returns @proxy - @TrackChangesController.proxyToTrackChangesApi @req, @res, @next + @HistoryController.proxyToHistoryApi @req, @res, @next describe "successfully", -> it "should get the user id", -> diff --git a/services/web/test/UnitTests/coffee/TrackChanges/TrackChangesManagerTests.coffee b/services/web/test/UnitTests/coffee/History/HistoryManagerTests.coffee similarity index 81% rename from services/web/test/UnitTests/coffee/TrackChanges/TrackChangesManagerTests.coffee rename to services/web/test/UnitTests/coffee/History/HistoryManagerTests.coffee index 90b36f89c5..65b22812ea 100644 --- a/services/web/test/UnitTests/coffee/TrackChanges/TrackChangesManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/History/HistoryManagerTests.coffee @@ -2,12 +2,12 @@ chai = require('chai') expect = chai.expect chai.should() sinon = require("sinon") -modulePath = "../../../../app/js/Features/TrackChanges/TrackChangesManager" +modulePath = "../../../../app/js/Features/History/HistoryManager" SandboxedModule = require('sandboxed-module') -describe "TrackChangesManager", -> +describe "HistoryManager", -> beforeEach -> - @TrackChangesManager = SandboxedModule.require modulePath, requires: + @HistoryManager = SandboxedModule.require modulePath, requires: "request" : @request = sinon.stub() "settings-sharelatex": @settings = apis: @@ -22,7 +22,7 @@ describe "TrackChangesManager", -> describe "with a successful response code", -> beforeEach -> @request.post = sinon.stub().callsArgWith(1, null, statusCode: 204, "") - @TrackChangesManager.flushProject @project_id, @callback + @HistoryManager.flushProject @project_id, @callback it "should flush the project in the track changes api", -> @request.post @@ -35,7 +35,7 @@ describe "TrackChangesManager", -> describe "with a failed response code", -> beforeEach -> @request.post = sinon.stub().callsArgWith(1, null, statusCode: 500, "") - @TrackChangesManager.flushProject @project_id, @callback + @HistoryManager.flushProject @project_id, @callback it "should call the callback with an error", -> @callback.calledWith(new Error("track-changes api responded with a non-success code: 500")).should.equal true @@ -52,12 +52,12 @@ describe "TrackChangesManager", -> it "should call the post endpoint", (done)-> @request.post.callsArgWith(1, null, {}) - @TrackChangesManager.archiveProject @project_id, (err)=> + @HistoryManager.archiveProject @project_id, (err)=> @request.post.calledWith("#{@settings.apis.trackchanges.url}/project/#{@project_id}/archive") done() it "should return an error on a non success", (done)-> @request.post.callsArgWith(1, null, {statusCode:500}) - @TrackChangesManager.archiveProject @project_id, (err)=> + @HistoryManager.archiveProject @project_id, (err)=> expect(err).to.exist done() \ No newline at end of file From 0a6a6c3c2831b30706da1a3916d23fad3ed2b9e5 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 9 Dec 2016 16:17:28 +0000 Subject: [PATCH 007/204] Keep files ordered in overview panel in the same was as the file tree --- .../web/app/views/project/editor/review-panel.jade | 10 ++++++---- .../public/coffee/ide/file-tree/FileTreeManager.coffee | 10 ++++++++++ .../coffee/ide/review-panel/ReviewPanelManager.coffee | 1 + .../controllers/ReviewPanelController.coffee | 9 --------- .../coffee/ide/review-panel/filters/notEmpty.coffee | 5 +++++ 5 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 services/web/public/coffee/ide/review-panel/filters/notEmpty.coffee diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 2da1277572..f6e43f93f2 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -52,13 +52,15 @@ .rp-overview-loading(ng-if="reviewPanel.overview.loading") i.fa.fa-spinner.fa-spin .rp-overview-file( - ng-repeat="(doc_id, entries) in reviewPanel.entries" + ng-repeat="doc in docs" ng-if="!reviewPanel.overview.loading" ) - .rp-overview-file-header - | {{ getFileName(doc_id) }} + .rp-overview-file-header( + ng-if="reviewPanel.entries[doc.doc.id] | notEmpty" + ) + | {{ doc.path }} .rp-entry-wrapper( - ng-repeat="(entry_id, entry) in entries | orderOverviewEntries" + ng-repeat="(entry_id, entry) in reviewPanel.entries[doc.doc.id] | orderOverviewEntries" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( diff --git a/services/web/public/coffee/ide/file-tree/FileTreeManager.coffee b/services/web/public/coffee/ide/file-tree/FileTreeManager.coffee index 8c49d54c23..c4ad4b30a4 100644 --- a/services/web/public/coffee/ide/file-tree/FileTreeManager.coffee +++ b/services/web/public/coffee/ide/file-tree/FileTreeManager.coffee @@ -275,6 +275,16 @@ define [ doc: entity path: path } + # Keep list ordered by folders, then name + @$scope.docs.sort (a,b) -> + aDepth = (a.path.match(/\//g) || []).length + bDepth = (b.path.match(/\//g) || []).length + if aDepth - bDepth != 0 + return -(aDepth - bDepth) # Deeper path == folder first + else if a.path < b.path + return -1 + else + return 1 getEntityPath: (entity) -> @_getEntityPathInFolder @$scope.rootFolder, entity diff --git a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee index 6a23d15016..cd1231c798 100644 --- a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee +++ b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee @@ -5,5 +5,6 @@ define [ "ide/review-panel/directives/changeEntry" "ide/review-panel/directives/commentEntry" "ide/review-panel/directives/addCommentEntry" + "ide/review-panel/filters/notEmpty" "ide/review-panel/filters/orderOverviewEntries" ], () -> \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 8543e86402..0990baac4d 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -354,15 +354,6 @@ define [ $scope.gotoEntry = (doc_id, entry) -> ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) - DOC_ID_NAMES = {} - $scope.getFileName = (doc_id) -> - # This is called a lot and is relatively expensive, so cache the result - if !DOC_ID_NAMES[doc_id]? - entity = ide.fileTreeManager.findEntityById(doc_id) - return if !entity? - DOC_ID_NAMES[doc_id] = ide.fileTreeManager.getEntityPath(entity) - return DOC_ID_NAMES[doc_id] - # TODO: Eventually we need to get this from the server, and update it # when we get an id we don't know. This'll do for client side testing refreshUsers = () -> diff --git a/services/web/public/coffee/ide/review-panel/filters/notEmpty.coffee b/services/web/public/coffee/ide/review-panel/filters/notEmpty.coffee new file mode 100644 index 0000000000..52100c7ff1 --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/filters/notEmpty.coffee @@ -0,0 +1,5 @@ +define [ + "base" +], (App) -> + app.filter 'notEmpty', () -> + (object) -> !angular.equals({}, object) From 898277b4afee2bf973747ccf4239a357665d6bfb Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 13 Dec 2016 17:34:29 +0000 Subject: [PATCH 008/204] Refactor ops model so it all happens in Document --- .../web/app/views/project/editor/editor.jade | 1 - .../public/coffee/ide/editor/Document.coffee | 23 +++++- .../coffee/ide/editor/ShareJsDoc.coffee | 4 +- .../ide/editor/directives/aceEditor.coffee | 1 - .../track-changes/TrackChangesManager.coffee | 78 ++++++------------- .../editor/sharejs/vendor/client/doc.coffee | 5 +- .../editor/sharejs/vendor/types/text.coffee | 66 ++++++++++++++-- .../controllers/ReviewPanelController.coffee | 11 ++- 8 files changed, 115 insertions(+), 74 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 3126d63df2..8d58e35f2e 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -53,7 +53,6 @@ div.full-size( events-bridge="reviewPanelEventsBridge" track-changes-enabled="trackChangesFeatureFlag", track-changes= "editor.trackChanges", - ranges-tracker="reviewPanel.rangesTracker", doc-id="editor.open_doc_id" ) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 213fbe3514..a0c07443c8 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -1,7 +1,8 @@ define [ "utils/EventEmitter" "ide/editor/ShareJsDoc" -], (EventEmitter, ShareJsDoc) -> + "ide/review-panel/RangesTracker" +], (EventEmitter, ShareJsDoc, RangesTracker) -> class Document extends EventEmitter @getDocument: (ide, doc_id) -> @openDocs ||= {} @@ -247,14 +248,15 @@ define [ @joined = true @doc.catchUp( updates ) # TODO: Worry about whether these ranges are consistent with the doc still - @opening_ranges = ranges + @ranges?.changes = ranges?.changes + @ranges?.comments = ranges?.comments callback() else @ide.socket.emit 'joinDoc', @doc_id, (error, docLines, version, updates, ranges) => return callback(error) if error? @joined = true @doc = new ShareJsDoc @doc_id, docLines, version, @ide.socket - @opening_ranges = ranges + @ranges = new RangesTracker(ranges?.changes, ranges?.comments) @_bindToShareJsDocEvents() callback() @@ -313,6 +315,8 @@ define [ inflightOp: inflightOp, pendingOp: pendingOp v: version + @doc.on "change", (ops, oldSnapshot, msg) => + @_applyOpsToRanges(ops, oldSnapshot, msg) _onError: (error, meta = {}) -> meta.doc_id = @doc_id @@ -325,3 +329,16 @@ define [ # the disconnect event, which means we try to leaveDoc when the connection comes back. # This could intefere with the new connection of a new instance of this document. @_cleanUp() + + _applyOpsToRanges: (ops = [], oldSnapshot, msg) -> + track_changes_as = null + remote_op = msg? + if remote_op and msg.meta?.tc + track_changes_as = msg.meta.user_id + else if !remote_op and @track_changes_as? + track_changes_as = @track_changes_as + console.log "CHANGED", oldSnapshot, ops, track_changes_as + @ranges.track_changes = track_changes_as? + for op in ops + console.log "APPLYING OP", op, @ranges.track_changes + @ranges.applyOp op, { user_id: track_changes_as } diff --git a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee index bb2d6b3e38..feb82c1e3f 100644 --- a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee +++ b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee @@ -34,8 +34,8 @@ define [ @_doc = new ShareJs.Doc @connection, @doc_id, type: @type @_doc.setFlushDelay(SINGLE_USER_FLUSH_DELAY) - @_doc.on "change", () => - @trigger "change" + @_doc.on "change", (args...) => + @trigger "change", args... @_doc.on "acknowledge", () => @lastAcked = new Date() # note time of last ack from server for an op we sent @trigger "acknowledge" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index bbbcff5a85..88ce71fcd2 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -56,7 +56,6 @@ define [ eventsBridge: "=" trackChanges: "=" trackChangesEnabled: "=" - rangesTracker: "=" docId: "=" } link: (scope, element, attrs) -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 54b20f7018..ca8452f5c0 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -10,22 +10,15 @@ define [ constructor: (@$scope, @editor, @element) -> window.trackChangesManager ?= @ - @$scope.$watch "rangesTracker", (rangesTracker) => - return if !rangesTracker? - @disconnectFromRangesTracker() - @rangesTracker = rangesTracker - @connectToRangesTracker() - @$scope.$watch "trackChanges", (track_changes) => return if !track_changes? - @rangesTracker?.track_changes = track_changes + @setTrackChanges(track_changes) @$scope.$watch "sharejsDoc", (doc) => return if !doc? - if doc.opening_ranges?.changes? - @rangesTracker.changes = doc.opening_ranges.changes - if doc.opening_ranges?.comments? - @rangesTracker.comments = doc.opening_ranges.comments + @disconnectFromRangesTracker() + @rangesTracker = doc.ranges + @connectToRangesTracker() @$scope.$on "comment:add", (e, comment) => @addCommentToSelection(comment) @@ -65,48 +58,15 @@ define [ onResize = () => @recalculateReviewEntriesScreenPositions() - onChange = (e) => - if !@editor.initing - # This change is trigger by a sharejs 'change' event, which is before the - # sharejs 'remoteop' event. So wait until the next event loop when the 'remoteop' - # will have fired, before we decide if it was a remote op. - setTimeout () => - if @nextUpdateMetaData? - user_id = @nextUpdateMetaData.user_id - # The remote op may have contained multiple atomic ops, each of which is an Ace - # 'change' event (i.e. bulk commenting out of lines is a single remote op - # but gives us one event for each % inserted). These all come in a single event loop - # though, so wait until the next one before clearing the metadata. - setTimeout () => - @nextUpdateMetaData = null - else - user_id = window.user.id - - was_tracking = @rangesTracker.track_changes - if @dont_track_next_update - @rangesTracker.track_changes = false - @dont_track_next_update = false - @applyChange(e, { user_id }) - @rangesTracker.track_changes = was_tracking - - # TODO: Just for debugging, remove before going live. - setTimeout () => - @checkMapping() - , 100 - onChangeSession = (e) => - e.oldSession?.getDocument().off "change", onChange - e.session.getDocument().on "change", onChange @redrawAnnotations() bindToAce = () => - @editor.getSession().getDocument().on "change", onChange @editor.on "changeSelection", onChangeSelection @editor.on "changeSession", onChangeSession @editor.renderer.on "resize", onResize unbindFromAce = () => - @editor.getSession().getDocument().off "change", onChange @editor.off "changeSelection", onChangeSelection @editor.off "changeSession", onChangeSession @editor.renderer.off "resize", onResize @@ -132,41 +92,49 @@ define [ @rangesTracker.off "comment:removed" @rangesTracker.off "comment:resolved" @rangesTracker.off "comment:unresolved" + + setTrackChanges: (value) -> + if value + @$scope.sharejsDoc?.track_changes_as = window.user.id + else + @$scope.sharejsDoc?.track_changes_as = null connectToRangesTracker: () -> - @rangesTracker.track_changes = @$scope.trackChanges + @setTrackChanges(@$scope.trackChanges) + # Add a timeout because on remote ops, we get these notifications before + # ace has updated @rangesTracker.on "insert:added", (change) => sl_console.log "[insert:added]", change - @_onInsertAdded(change) + setTimeout () => @_onInsertAdded(change) @rangesTracker.on "insert:removed", (change) => sl_console.log "[insert:removed]", change - @_onInsertRemoved(change) + setTimeout () => @_onInsertRemoved(change) @rangesTracker.on "delete:added", (change) => sl_console.log "[delete:added]", change - @_onDeleteAdded(change) + setTimeout () => @_onDeleteAdded(change) @rangesTracker.on "delete:removed", (change) => sl_console.log "[delete:removed]", change - @_onDeleteRemoved(change) + setTimeout () => @_onDeleteRemoved(change) @rangesTracker.on "changes:moved", (changes) => sl_console.log "[changes:moved]", changes - @_onChangesMoved(changes) + setTimeout () => @_onChangesMoved(changes) @rangesTracker.on "comment:added", (comment) => sl_console.log "[comment:added]", comment - @_onCommentAdded(comment) + setTimeout () => @_onCommentAdded(comment) @rangesTracker.on "comment:moved", (comment) => sl_console.log "[comment:moved]", comment - @_onCommentMoved(comment) + setTimeout () => @_onCommentMoved(comment) @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment - @_onCommentRemoved(comment) + setTimeout () => @_onCommentRemoved(comment) @rangesTracker.on "comment:resolved", (comment) => sl_console.log "[comment:resolved]", comment - @_onCommentRemoved(comment) + setTimeout () => @_onCommentRemoved(comment) @rangesTracker.on "comment:unresolved", (comment) => sl_console.log "[comment:unresolved]", comment - @_onCommentAdded(comment) + setTimeout () => @_onCommentAdded(comment) redrawAnnotations: () -> for change in @rangesTracker.changes diff --git a/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee b/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee index d25baf89d5..301c4d5e04 100644 --- a/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee +++ b/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee @@ -71,7 +71,7 @@ class Doc # Its important that these event handlers are called with oldSnapshot. # The reason is that the OT type APIs might need to access the snapshots to # determine information about the received op. - @emit 'change', docOp, oldSnapshot + @emit 'change', docOp, oldSnapshot, msg @emit 'remoteop', docOp, oldSnapshot, msg if isRemote _connectionStateChanged: (state, data) -> @@ -274,6 +274,7 @@ class Doc submitOp: (op, callback) -> op = @type.normalize(op) if @type.normalize? + oldSnapshot = @snapshot # If this throws an exception, no changes should have been made to the doc @snapshot = @type.apply @snapshot, op @@ -284,7 +285,7 @@ class Doc @pendingCallbacks.push callback if callback - @emit 'change', op + @emit 'change', op, oldSnapshot @delayedFlush() diff --git a/services/web/public/coffee/ide/editor/sharejs/vendor/types/text.coffee b/services/web/public/coffee/ide/editor/sharejs/vendor/types/text.coffee index c64b4dfa68..2a3b79997d 100644 --- a/services/web/public/coffee/ide/editor/sharejs/vendor/types/text.coffee +++ b/services/web/public/coffee/ide/editor/sharejs/vendor/types/text.coffee @@ -31,7 +31,8 @@ checkValidComponent = (c) -> i_type = typeof c.i d_type = typeof c.d - throw new Error 'component needs an i or d field' unless (i_type == 'string') ^ (d_type == 'string') + c_type = typeof c.c + throw new Error 'component needs an i, d or c field' unless (i_type == 'string') ^ (d_type == 'string') ^ (c_type == 'string') throw new Error 'position cannot be negative' unless c.p >= 0 @@ -44,11 +45,15 @@ text.apply = (snapshot, op) -> for component in op if component.i? snapshot = strInject snapshot, component.p, component.i - else + else if component.d? deleted = snapshot[component.p...(component.p + component.d.length)] throw new Error "Delete component '#{component.d}' does not match deleted text '#{deleted}'" unless component.d == deleted snapshot = snapshot[...component.p] + snapshot[(component.p + component.d.length)..] - + else if component.c? + comment = snapshot[component.p...(component.p + component.c.length)] + throw new Error "Comment component '#{component.c}' does not match commented text '#{comment}'" unless component.c == comment + else + throw new Error "Unknown op type" snapshot @@ -112,7 +117,7 @@ transformPosition = (pos, c, insertAfter) -> pos + c.i.length else pos - else + else if c.d? # I think this could also be written as: Math.min(c.p, Math.min(c.p - otherC.p, otherC.d.length)) # but I think its harder to read that way, and it compiles using ternary operators anyway # so its no slower written like this. @@ -122,6 +127,10 @@ transformPosition = (pos, c, insertAfter) -> c.p else pos - c.d.length + else if c.c? + pos + else + throw new Error("unknown op type") # Helper method to transform a cursor position as a result of an op. # @@ -143,7 +152,7 @@ text._tc = transformComponent = (dest, c, otherC, side) -> if c.i? append dest, {i:c.i, p:transformPosition(c.p, otherC, side == 'right')} - else # Delete + else if c.d? # Delete if otherC.i? # delete vs insert s = c.d if c.p < otherC.p @@ -152,7 +161,7 @@ text._tc = transformComponent = (dest, c, otherC, side) -> if s != '' append dest, {d:s, p:c.p + otherC.i.length} - else # Delete vs delete + else if otherC.d? # Delete vs delete if c.p >= otherC.p + otherC.d.length append dest, {d:c.d, p:c.p - otherC.d.length} else if c.p + c.d.length <= otherC.p @@ -177,6 +186,51 @@ text._tc = transformComponent = (dest, c, otherC, side) -> # This could be rewritten similarly to insert v delete, above. newC.p = transformPosition newC.p, otherC append dest, newC + + else if otherC.c? + append dest, c + + else + throw new Error("unknown op type") + + else if c.c? # Comment + if otherC.i? + if c.p < otherC.p < c.p + c.c.length + offset = otherC.p - c.p + new_c = (c.c[0..(offset-1)] + otherC.i + c.c[offset...]) + append dest, {c:new_c, p:c.p, t: c.t} + else + append dest, {c:c.c, p:transformPosition(c.p, otherC, true), t: c.t} + + else if otherC.d? + if c.p >= otherC.p + otherC.d.length + append dest, {c:c.c, p:c.p - otherC.d.length, t: c.t} + else if c.p + c.c.length <= otherC.p + append dest, c + else # Delete overlaps comment + # They overlap somewhere. + newC = {c:'', p:c.p, t: c.t} + if c.p < otherC.p + newC.c = c.c[...(otherC.p - c.p)] + if c.p + c.c.length > otherC.p + otherC.d.length + newC.c += c.c[(otherC.p + otherC.d.length - c.p)..] + + # This is entirely optional - just for a check that the deleted + # text in the two ops matches + intersectStart = Math.max c.p, otherC.p + intersectEnd = Math.min c.p + c.c.length, otherC.p + otherC.d.length + cIntersect = c.c[intersectStart - c.p...intersectEnd - c.p] + otherIntersect = otherC.d[intersectStart - otherC.p...intersectEnd - otherC.p] + throw new Error 'Delete ops delete different text in the same region of the document' unless cIntersect == otherIntersect + + newC.p = transformPosition newC.p, otherC + append dest, newC + + else if otherC.c? + append dest, c + + else + throw new Error("unknown op type") dest diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 0990baac4d..df4afe306a 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -154,10 +154,13 @@ define [ if view == $scope.SubViews.OVERVIEW refreshOverviewPanel() - $scope.$watch "editor.open_doc_id", (open_doc_id) -> - return if !open_doc_id? - rangesTrackers[open_doc_id] ?= new RangesTracker() - $scope.reviewPanel.rangesTracker = rangesTrackers[open_doc_id] + $scope.$watch "editor.sharejs_doc", (doc) -> + return if !doc? + console.log "DOC changed", doc + # The open doc range tracker is kept up to date in real-time so + # replace any outdated info with this + rangesTrackers[doc.doc_id] = doc.ranges + $scope.reviewPanel.rangesTracker = rangesTrackers[doc.doc_id] $scope.$watch (() -> entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] or {} From 5717cafcec6e0dc7929409995496ce0eaf961d53 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 13 Dec 2016 17:57:46 +0000 Subject: [PATCH 009/204] Create comments via comment ops --- .../public/coffee/ide/editor/Document.coffee | 2 + .../coffee/ide/editor/ShareJsDoc.coffee | 1 + .../track-changes/TrackChangesManager.coffee | 36 +++++----- .../sharejs/vendor/types/text-api.coffee | 2 +- .../ide/review-panel/RangesTracker.coffee | 68 +++++++++++++------ .../controllers/ReviewPanelController.coffee | 10 +-- 6 files changed, 71 insertions(+), 48 deletions(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index a0c07443c8..1287f207a5 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -41,6 +41,8 @@ define [ editorDoc = @ace?.getSession().getDocument() editorDoc?.off "change", @_checkConsistency @ide.$scope.$emit 'document:closed', @doc + + submitOp: (args...) -> @doc?.submitOp(args...) _checkConsistency: () -> # We've been seeing a lot of errors when I think there shouldn't be diff --git a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee index feb82c1e3f..48a7bbf3c6 100644 --- a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee +++ b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee @@ -61,6 +61,7 @@ define [ @_doc._onMessage message catch error # Version mismatches are thrown as errors + console.log error @_handleError(error) if message?.meta?.type == "external" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index ca8452f5c0..f8aa9099f1 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -20,8 +20,8 @@ define [ @rangesTracker = doc.ranges @connectToRangesTracker() - @$scope.$on "comment:add", (e, comment) => - @addCommentToSelection(comment) + @$scope.$on "comment:add", (e) => + @addCommentToSelection() @$scope.$on "comment:select_line", (e) => @selectLineIfNoSelection() @@ -146,21 +146,16 @@ define [ for comment in @rangesTracker.comments @_onCommentAdded(comment) - addComment: (offset, length, content) -> - @rangesTracker.addComment offset, length, { - thread: [{ - content: content - user_id: window.user_id - ts: new Date() - }] - } + addComment: (offset, content) -> + op = { c: content, p: offset } + # @rangesTracker.applyOp op # Will apply via sharejs + @$scope.sharejsDoc.submitOp op - addCommentToSelection: (content) -> + addCommentToSelection: () -> range = @editor.getSelectionRange() + content = @editor.getSelectedText() offset = @_aceRangeToShareJs(range.start) - end = @_aceRangeToShareJs(range.end) - length = end - offset - @addComment(offset, length, content) + @addComment(offset, content) selectLineIfNoSelection: () -> if @editor.selection.isEmpty() @@ -201,6 +196,7 @@ define [ @rangesTracker.unresolveCommentId(comment_id) checkMapping: () -> + # TODO: reintroduce this check session = @editor.getSession() # Make a copy of session.getMarkers() so we can modify it @@ -224,8 +220,8 @@ define [ for comment in @rangesTracker.comments if @changeIdToMarkerIdMap[comment.id]? {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[comment.id] - start = @_shareJsOffsetToAcePosition(comment.offset) - end = @_shareJsOffsetToAcePosition(comment.offset + comment.length) + start = @_shareJsOffsetToAcePosition(comment.op.p) + end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) expected_markers.push { marker_id: background_marker_id, start, end } expected_markers.push { marker_id: callout_marker_id, start, end: start } @@ -341,8 +337,8 @@ define [ _onCommentAdded: (comment) -> if !@changeIdToMarkerIdMap[comment.id]? # Only create new markers if they don't already exist - start = @_shareJsOffsetToAcePosition(comment.offset) - end = @_shareJsOffsetToAcePosition(comment.offset + comment.length) + start = @_shareJsOffsetToAcePosition(comment.op.p) + end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) session = @editor.getSession() doc = session.getDocument() background_range = new Range(start.row, start.column, end.row, end.column) @@ -387,8 +383,8 @@ define [ @broadcastChange() _onCommentMoved: (comment) -> - start = @_shareJsOffsetToAcePosition(comment.offset) - end = @_shareJsOffsetToAcePosition(comment.offset + comment.length) + start = @_shareJsOffsetToAcePosition(comment.op.p) + end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) @_updateMarker(comment.id, start, end) @editor.renderer.updateBackMarkers() @broadcastChange() diff --git a/services/web/public/coffee/ide/editor/sharejs/vendor/types/text-api.coffee b/services/web/public/coffee/ide/editor/sharejs/vendor/types/text-api.coffee index 96243ceffb..274b6019c5 100644 --- a/services/web/public/coffee/ide/editor/sharejs/vendor/types/text-api.coffee +++ b/services/web/public/coffee/ide/editor/sharejs/vendor/types/text-api.coffee @@ -28,5 +28,5 @@ text.api = for component in op if component.i != undefined @emit 'insert', component.p, component.i - else + else if component.d != undefined @emit 'delete', component.p, component.d diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 6a3625fd09..550c7da585 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -48,15 +48,6 @@ load = (EventEmitter) -> # sync with Ace ranges. @id = 0 - addComment: (offset, length, metadata) -> - # TODO: Don't allow overlapping comments? - @comments.push comment = { - id: @_newId() - offset, length, metadata - } - @emit "comment:added", comment - return comment - getComment: (comment_id) -> comment = null for c in @comments @@ -97,7 +88,7 @@ load = (EventEmitter) -> return if !change? @_removeChange(change) - applyOp: (op, metadata) -> + applyOp: (op, metadata = {}) -> metadata.ts ?= new Date() # Apply an op that has been applied to the document to our changes to keep them up to date if op.i? @@ -106,14 +97,32 @@ load = (EventEmitter) -> else if op.d? @applyDeleteToChanges(op, metadata) @applyDeleteToComments(op) + else if op.c? + @addComment(op, metadata) + else + throw new Error("unknown op type") + + addComment: (op, metadata) -> + # TODO: Don't allow overlapping comments? + @comments.push comment = { + id: @_newId() + op: # Copy because we'll modify in place + c: op.c + p: op.p + t: op.t + metadata + } + @emit "comment:added", comment + return comment applyInsertToComments: (op) -> for comment in @comments - if op.p <= comment.offset - comment.offset += op.i.length + if op.p <= comment.op.p + comment.op.p += op.i.length @emit "comment:moved", comment - else if op.p < comment.offset + comment.length - comment.length += op.i.length + else if op.p < comment.op.p + comment.op.c.length + offset = op.p - comment.op.p + comment.op.c = comment.op.c[0..(offset-1)] + op.i + comment.op.c[offset...] @emit "comment:moved", comment applyDeleteToComments: (op) -> @@ -121,20 +130,35 @@ load = (EventEmitter) -> op_length = op.d.length op_end = op.p + op_length for comment in @comments - comment_end = comment.offset + comment.length - if op_end <= comment.offset + comment_start = comment.op.p + comment_end = comment.op.p + comment.op.c.length + comment_length = comment_end - comment_start + if op_end <= comment_start # delete is fully before comment - comment.offset -= op_length + comment.op.p -= op_length @emit "comment:moved", comment else if op_start >= comment_end # delete is fully after comment, nothing to do else # delete and comment overlap - delete_length_before = Math.max(0, comment.offset - op_start) - delete_length_after = Math.max(0, op_end - comment_end) - delete_length_overlapping = op_length - delete_length_before - delete_length_after - comment.offset = Math.min(comment.offset, op_start) - comment.length -= delete_length_overlapping + if op_start <= comment_start + remaining_before = "" + else + remaining_before = comment.op.c.slice(0, op_start - comment_start) + if op_end >= comment_end + remaining_after = "" + else + remaining_after = comment.op.c.slice(op_end - comment_start) + + # Check deleted content matches delete op + deleted_comment = comment.op.c.slice(remaining_before.length, comment_length - remaining_after.length) + offset = Math.max(0, comment_start - op_start) + deleted_op_content = op.d.slice(offset).slice(0, deleted_comment.length) + if deleted_comment != deleted_op_content + throw new Error("deleted content does not match comment content") + + comment.op.p = Math.min(comment_start, op_start) + comment.op.c = remaining_before + remaining_after @emit "comment:moved", comment applyInsertToChanges: (op, metadata) -> diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index df4afe306a..cc48079b8e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -218,11 +218,11 @@ define [ entries[comment.id] ?= {} new_entry = { type: "comment" - thread: comment.metadata.thread - resolved: comment.metadata.resolved - resolved_data: comment.metadata.resolved_data - offset: comment.offset - length: comment.length + thread: comment.metadata.thread or [] + resolved: comment.metadata?.resolved + resolved_data: comment.metadata?.resolved_data + content: comment.op.c + offset: comment.op.p } for key, value of new_entry entries[comment.id][key] = value From 47a5eb538202994e09f0c66804a6d42b9f022554 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 15 Dec 2016 17:22:39 +0000 Subject: [PATCH 010/204] Add a new layout and body template for e-mails. --- .../Email/Bodies/SingleCTAEmailBody.coffee | 26 ++ .../coffee/Features/Email/EmailBuilder.coffee | 30 +- .../Layouts/BaseWithHeaderEmailLayout.coffee | 378 ++++++++++++++++++ 3 files changed, 420 insertions(+), 14 deletions(-) create mode 100644 services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee create mode 100644 services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee diff --git a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee new file mode 100644 index 0000000000..98a0ffe30d --- /dev/null +++ b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee @@ -0,0 +1,26 @@ +_ = require("underscore") +settings = require "settings-sharelatex" + +module.exports = _.template """ + + +
+
+

+ <%= title %> +

+
 
+

+ <%= greeting %> +

+

+ <%= message %> +

+
 
+
+
+ View project +
+
+
+""" diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 70d11e219b..908aac53f1 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -1,6 +1,12 @@ _ = require('underscore') + PersonalEmailLayout = require("./Layouts/PersonalEmailLayout") NotificationEmailLayout = require("./Layouts/NotificationEmailLayout") +BaseWithHeaderEmailLayout = require("./Layouts/BaseWithHeaderEmailLayout") + +SingleCTAEmailBody = require("./Bodies/SingleCTAEmailBody") + + settings = require("settings-sharelatex") @@ -107,9 +113,9 @@ If you didn't request a password reset, let us know. templates.projectInvite = subject: _.template "<%= project.name %> - shared by <%= owner.email %>" - layout: NotificationEmailLayout + layout: BaseWithHeaderEmailLayout type:"notification" - plainTextTemplate: _.template """ + plainTextTemplate: plainTextTpl: """ Hi, <%= owner.email %> wants to share '<%= project.name %>' with you. Follow this link to view the project: <%= inviteUrl %> @@ -118,18 +124,14 @@ Thank you #{settings.appName} - <%= siteUrl %> """ - compiledTemplate: _.template """ -

Hi, <%= owner.email %> wants to share '<%= project.name %>' with you

-
- - - View Project - - -
-

Thank you

-

#{settings.appName}

-""" + compiledTemplate: (opts) -> + SingleCTAEmailBody({ + title: "#{ opts.project.name } – shared by #{ opts.owner.email }" + greeting: "Hi," + message: "#{ opts.owner.email } wants to share “#{ opts.project.name }” with you." + ctaURL: opts.inviteUrl + }) + templates.completeJoinGroupAccount = diff --git a/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee b/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee new file mode 100644 index 0000000000..7b68d3bf49 --- /dev/null +++ b/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee @@ -0,0 +1,378 @@ +_ = require("underscore") +settings = require "settings-sharelatex" + +module.exports = _.template """ + + + + + + + + + Project invite + + + + + + + + +
+
+ +
+
+ + +
+
+

+ SHARELATEX +

+
+
+
+
 
+
+
 
+ + <%= body %> + +
+
 
+

ShareLaTeX • www.sharelatex.com

+
+
+ +
+
+ +
                                                           
+ + + +""" From 7dfc2c61a6b3137f95e8d1e7d7668778b7122b7e Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 10:06:56 +0000 Subject: [PATCH 011/204] Make the CTA button text configurable. --- .../coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee | 4 +++- services/web/app/coffee/Features/Email/EmailBuilder.coffee | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee index 98a0ffe30d..07954e2162 100644 --- a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee +++ b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee @@ -17,7 +17,9 @@ module.exports = _.template """
 
- View project + + <%= ctaText %> +
diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 908aac53f1..dd908c9d42 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -115,7 +115,7 @@ templates.projectInvite = subject: _.template "<%= project.name %> - shared by <%= owner.email %>" layout: BaseWithHeaderEmailLayout type:"notification" - plainTextTemplate: plainTextTpl: """ + plainTextTemplate: """ Hi, <%= owner.email %> wants to share '<%= project.name %>' with you. Follow this link to view the project: <%= inviteUrl %> @@ -129,6 +129,7 @@ Thank you title: "#{ opts.project.name } – shared by #{ opts.owner.email }" greeting: "Hi," message: "#{ opts.owner.email } wants to share “#{ opts.project.name }” with you." + ctaText: "View project" ctaURL: opts.inviteUrl }) From 2234c438a165d299baa754f456e8036958fc28dc Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 12:16:33 +0000 Subject: [PATCH 012/204] Support a secondary message in the single CTA email template. --- .../coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee index 07954e2162..6d0756596c 100644 --- a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee +++ b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee @@ -22,6 +22,12 @@ module.exports = _.template """
+ <% if (secondaryMessage) { %> +
 
+

+ <%= secondaryMessage %> +

+ <% } %> From 0fe3664a820a173de07c05a30a130570475ed4be Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 12:16:45 +0000 Subject: [PATCH 013/204] Use the new template in the reset pwd email. --- .../coffee/Features/Email/EmailBuilder.coffee | 35 ++++++------------- .../Layouts/BaseWithHeaderEmailLayout.coffee | 4 ++- 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index dd908c9d42..97a1023e3b 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -84,31 +84,15 @@ Thank you #{settings.appName} - <%= siteUrl %> """ - compiledTemplate: _.template """ -

Password Reset

-

-We got a request to reset your #{settings.appName} password. -

-

-
-
- - - Reset password - - -
-
-
- -If you ignore this message, your password won't be changed. -

-If you didn't request a password reset, let us know. - -

-

Thank you

-

#{settings.appName}

-""" + compiledTemplate: (opts) -> + SingleCTAEmailBody({ + title: "Password Reset" + greeting: "Hi," + message: "We got a request to reset your #{settings.appName} password." + secondaryMessage: "If you ignore this message, your password won't be changed.
If you didn't request a password reset, let us know." + ctaText: "Reset password" + ctaURL: opts.setNewPasswordUrl + }) templates.projectInvite = @@ -129,6 +113,7 @@ Thank you title: "#{ opts.project.name } – shared by #{ opts.owner.email }" greeting: "Hi," message: "#{ opts.owner.email } wants to share “#{ opts.project.name }” with you." + secondaryMessage: null ctaText: "View project" ctaURL: opts.inviteUrl }) diff --git a/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee b/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee index 7b68d3bf49..6d25df2197 100644 --- a/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee +++ b/services/web/app/coffee/Features/Email/Layouts/BaseWithHeaderEmailLayout.coffee @@ -362,7 +362,9 @@ module.exports = _.template """
 
-

ShareLaTeX • www.sharelatex.com

+

+ #{ settings.appName} • #{ settings.siteUrl } +

From ca5040882f5134c436a4460997ab2629cbc2f21d Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 14:57:59 +0000 Subject: [PATCH 014/204] Use the new template in the join group email. --- .../coffee/Features/Email/EmailBuilder.coffee | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 97a1023e3b..c083334bed 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -67,7 +67,7 @@ ShareLaTeX Co-founder templates.passwordResetRequested = subject: _.template "Password Reset - #{settings.appName}" - layout: NotificationEmailLayout + layout: BaseWithHeaderEmailLayout type:"notification" plainTextTemplate: _.template """ Password Reset @@ -122,7 +122,7 @@ Thank you templates.completeJoinGroupAccount = subject: _.template "Verify Email to join <%= group_name %> group" - layout: NotificationEmailLayout + layout: BaseWithHeaderEmailLayout type:"notification" plainTextTemplate: _.template """ Hi, please verify your email to join the <%= group_name %> and get your free premium account @@ -133,23 +133,15 @@ Thank You #{settings.appName} - <%= siteUrl %> """ - compiledTemplate: _.template """ -

Hi, please verify your email to join the <%= group_name %> and get your free premium account

-
-
- -
-
-

Thank you

-

#{settings.appName}

-""" - + compiledTemplate: (opts) -> + SingleCTAEmailBody({ + title: "Verify Email to join #{ opts.group_name } group" + greeting: "Hi," + message: "please verify your email to join the #{ opts.group_name } group and get your free premium account." + secondaryMessage: null + ctaText: "Verify now" + ctaURL: opts.completeJoinUrl + }) module.exports = templates: templates @@ -165,4 +157,4 @@ module.exports = html: template.layout(opts) text: template?.plainTextTemplate?(opts) type:template.type - } + } \ No newline at end of file From 869f729132ff170fb2b5c1d3d904cb307ba1aba8 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 15:15:06 +0000 Subject: [PATCH 015/204] Fix forgotten templating function. --- services/web/app/coffee/Features/Email/EmailBuilder.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index c083334bed..0a5f653178 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -99,7 +99,7 @@ templates.projectInvite = subject: _.template "<%= project.name %> - shared by <%= owner.email %>" layout: BaseWithHeaderEmailLayout type:"notification" - plainTextTemplate: """ + plainTextTemplate: _.template """ Hi, <%= owner.email %> wants to share '<%= project.name %>' with you. Follow this link to view the project: <%= inviteUrl %> From 988005e92901f2fd6678402a8ce558e8526dea0d Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 16 Dec 2016 16:42:41 +0000 Subject: [PATCH 016/204] Send and get comments via the chat api --- .../Features/Chat/ChatApiHandler.coffee | 48 ++++ .../Features/Chat/ChatController.coffee | 33 ++- .../coffee/Features/Chat/ChatHandler.coffee | 32 --- .../Comments/CommentsController.coffee | 25 +++ services/web/app/coffee/router.coffee | 8 +- .../views/project/editor/review-panel.jade | 18 +- .../public/coffee/ide/editor/Document.coffee | 2 - .../track-changes/TrackChangesManager.coffee | 12 +- .../ide/review-panel/RangesTracker.coffee | 54 ++--- .../controllers/ReviewPanelController.coffee | 211 +++++------------- .../directives/commentEntry.coffee | 2 +- .../coffee/Chat/ChatApiHandlerTests.coffee | 92 ++++++++ .../coffee/Chat/ChatControllerTests.coffee | 88 +++----- .../coffee/Chat/ChatHandlerTests.coffee | 89 -------- .../Comments/CommentsControllerTests.coffee | 65 ++++++ 15 files changed, 380 insertions(+), 399 deletions(-) create mode 100644 services/web/app/coffee/Features/Chat/ChatApiHandler.coffee delete mode 100644 services/web/app/coffee/Features/Chat/ChatHandler.coffee create mode 100644 services/web/app/coffee/Features/Comments/CommentsController.coffee create mode 100644 services/web/test/UnitTests/coffee/Chat/ChatApiHandlerTests.coffee delete mode 100644 services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee create mode 100644 services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee diff --git a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee new file mode 100644 index 0000000000..e21e94d232 --- /dev/null +++ b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee @@ -0,0 +1,48 @@ +request = require("request") +settings = require("settings-sharelatex") +logger = require("logger-sharelatex") + +module.exports = ChatApiHandler = + _apiRequest: (opts, callback = (error, data) ->) -> + request opts, (error, response, data) -> + return callback(error) if error? + if 200 <= response.statusCode < 300 + return callback null, data + else + error = new Error("chat api returned non-success code: #{response.statusCode}") + error.statusCode = response.statusCode + logger.error {err: error, opts}, "error sending request to chat api" + return callback error + + sendGlobalMessage: (project_id, user_id, content, callback)-> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/messages" + method: "POST" + json: {user_id, content} + }, callback + + getGlobalMessages: (project_id, limit, before, callback)-> + qs = {} + qs.limit = limit if limit? + qs.before = before if before? + + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/messages" + method: "GET" + qs: qs + json: true + }, callback + + sendComment: (project_id, thread_id, user_id, content, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages" + method: "POST" + json: {user_id, content} + }, callback + + getThreads: (project_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/threads" + method: "GET" + json: true + }, callback \ No newline at end of file diff --git a/services/web/app/coffee/Features/Chat/ChatController.coffee b/services/web/app/coffee/Features/Chat/ChatController.coffee index 35c280712a..d9a5d7db70 100644 --- a/services/web/app/coffee/Features/Chat/ChatController.coffee +++ b/services/web/app/coffee/Features/Chat/ChatController.coffee @@ -1,33 +1,26 @@ -ChatHandler = require("./ChatHandler") +ChatApiHandler = require("./ChatApiHandler") EditorRealTimeController = require("../Editor/EditorRealTimeController") logger = require("logger-sharelatex") AuthenticationController = require('../Authentication/AuthenticationController') module.exports = - - sendMessage: (req, res, next)-> - project_id = req.params.Project_id - messageContent = req.body.content + project_id = req.params.project_id + content = req.body.content user_id = AuthenticationController.getLoggedInUserId(req) if !user_id? err = new Error('no logged-in user') return next(err) - ChatHandler.sendMessage project_id, user_id, messageContent, (err, builtMessge)-> - if err? - logger.err err:err, project_id:project_id, user_id:user_id, messageContent:messageContent, "problem sending message to chat api" - return res.sendStatus(500) - EditorRealTimeController.emitToRoom project_id, "new-chat-message", builtMessge, (err)-> - res.send() + ChatApiHandler.sendGlobalMessage project_id, user_id, content, (err, message) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "new-chat-message", message, (err)-> + res.send(204) - getMessages: (req, res)-> - project_id = req.params.Project_id + getMessages: (req, res, next)-> + project_id = req.params.project_id query = req.query logger.log project_id:project_id, query:query, "getting messages" - ChatHandler.getMessages project_id, query, (err, messages)-> - if err? - logger.err err:err, query:query, "problem getting messages from chat api" - return res.sendStatus 500 - logger.log length:messages?.length, "sending messages to client" - res.set 'Content-Type', 'application/json' - res.send messages + ChatApiHandler.getGlobalMessages project_id, query.limit, query.before, (err, messages) -> + return next(err) if err? + logger.log length: messages?.length, "sending messages to client" + res.json messages diff --git a/services/web/app/coffee/Features/Chat/ChatHandler.coffee b/services/web/app/coffee/Features/Chat/ChatHandler.coffee deleted file mode 100644 index b77652bc39..0000000000 --- a/services/web/app/coffee/Features/Chat/ChatHandler.coffee +++ /dev/null @@ -1,32 +0,0 @@ -request = require("request") -settings = require("settings-sharelatex") -logger = require("logger-sharelatex") - -module.exports = - - sendMessage: (project_id, user_id, messageContent, callback)-> - opts = - method:"post" - json: - content:messageContent - user_id:user_id - uri:"#{settings.apis.chat.internal_url}/room/#{project_id}/messages" - request opts, (err, response, body)-> - if err? - logger.err err:err, "problem sending new message to chat" - callback(err, body) - - - - getMessages: (project_id, query, callback)-> - qs = {} - qs.limit = query.limit if query?.limit? - qs.before = query.before if query?.before? - - opts = - uri:"#{settings.apis.chat.internal_url}/room/#{project_id}/messages" - method:"get" - qs: qs - - request opts, (err, response, body)-> - callback(err, body) \ No newline at end of file diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee new file mode 100644 index 0000000000..0e9658f1d3 --- /dev/null +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -0,0 +1,25 @@ +ChatApiHandler = require("../Chat/ChatApiHandler") +EditorRealTimeController = require("../Editor/EditorRealTimeController") +logger = require("logger-sharelatex") +AuthenticationController = require('../Authentication/AuthenticationController') + +module.exports = CommentsController = + sendComment: (req, res, next) -> + {project_id, thread_id} = req.params + content = req.body.content + user_id = AuthenticationController.getLoggedInUserId(req) + if !user_id? + err = new Error('no logged-in user') + return next(err) + logger.log {project_id, thread_id, user_id, content}, "sending comment" + ChatApiHandler.sendComment project_id, thread_id, user_id, content, (err, comment) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "new-comment", thread_id, comment, (err)-> + res.send 204 + + getThreads: (req, res, next) -> + {project_id} = req.params + logger.log {project_id}, "getting comment threads for project" + ChatApiHandler.getThreads project_id, (err, threads) -> + return next(err) if err? + res.json threads \ No newline at end of file diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 36e26782ba..0ad7f74c4f 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -41,6 +41,7 @@ BetaProgramController = require('./Features/BetaProgram/BetaProgramController') AnalyticsRouter = require('./Features/Analytics/AnalyticsRouter') AnnouncementsController = require("./Features/Announcements/AnnouncementsController") RangesController = require("./Features/Ranges/RangesController") +CommentsController = require "./Features/Comments/CommentsController" logger = require("logger-sharelatex") _ = require("underscore") @@ -226,8 +227,11 @@ module.exports = class Router webRouter.post "/spelling/check", AuthenticationController.requireLogin(), SpellingController.proxyRequestToSpellingApi webRouter.post "/spelling/learn", AuthenticationController.requireLogin(), SpellingController.proxyRequestToSpellingApi - webRouter.get "/project/:Project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.getMessages - webRouter.post "/project/:Project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.sendMessage + webRouter.get "/project/:project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.getMessages + webRouter.post "/project/:project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.sendMessage + + webRouter.post "/project/:project_id/thread/:thread_id/messages", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.sendComment + webRouter.get "/project/:project_id/threads", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.getThreads webRouter.post "/project/:Project_id/references/index", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.index webRouter.post "/project/:Project_id/references/indexAll", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.indexAll diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index f6e43f93f2..6ffc1bdbb9 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -28,7 +28,7 @@ div(ng-if="entry.type === 'comment'") comment-entry( entry="entry" - users="users" + threads="reviewPanel.commentThreads" on-resolve="resolveComment(entry, entry_id)" on-unresolve="unresolveComment(entry_id)" on-show-thread="showThread(entry)" @@ -150,19 +150,19 @@ script(type='text/ng-template', id='commentEntryTemplate') ) .rp-comment( ng-if="!entry.resolved || entry.showWhenResolved" - ng-repeat="comment in entry.thread" - ng-class="users[comment.user_id].isSelf ? 'rp-comment-self' : '';" + ng-repeat="comment in threads[entry.thread_id]" + ng-class="comment.user.isSelf ? 'rp-comment-self' : '';" ) .rp-avatar( - ng-if="!users[comment.user_id].isSelf;" - style="background-color: hsl({{ users[comment.user_id].hue }}, 70%, 50%);" - ) {{ users[comment.user_id].avatar_text | limitTo : 1 }} - .rp-comment-body(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 90%);") + ng-if="!comment.user.isSelf;" + style="background-color: hsl({{ comment.user.hue }}, 70%, 50%);" + ) {{ comment.user.avatar_text | limitTo : 1 }} + .rp-comment-body(style="color: hsl({{ comment.user.hue }}, 70%, 90%);") p.rp-comment-content {{ comment.content }} p.rp-comment-metadata - | {{ comment.ts | date : 'MMM d, y h:mm a' }} + | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} |  •  - span(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 40%);") {{ users[comment.user_id].name }} + span(style="color: hsl({{ comment.user.hue }}, 70%, 40%);") {{ comment.user.name }} .rp-comment-reply(ng-if="!entry.resolved || entry.showWhenResolved") textarea.rp-comment-input( ng-model="entry.replyContent" diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 1287f207a5..229e281dd8 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -339,8 +339,6 @@ define [ track_changes_as = msg.meta.user_id else if !remote_op and @track_changes_as? track_changes_as = @track_changes_as - console.log "CHANGED", oldSnapshot, ops, track_changes_as @ranges.track_changes = track_changes_as? for op in ops - console.log "APPLYING OP", op, @ranges.track_changes @ranges.applyOp op, { user_id: track_changes_as } diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index f8aa9099f1..cd2f79f798 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -20,8 +20,8 @@ define [ @rangesTracker = doc.ranges @connectToRangesTracker() - @$scope.$on "comment:add", (e) => - @addCommentToSelection() + @$scope.$on "comment:add", (e, thread_id) => + @addCommentToSelection(thread_id) @$scope.$on "comment:select_line", (e) => @selectLineIfNoSelection() @@ -146,16 +146,16 @@ define [ for comment in @rangesTracker.comments @_onCommentAdded(comment) - addComment: (offset, content) -> - op = { c: content, p: offset } + addComment: (offset, content, thread_id) -> + op = { c: content, p: offset, t: thread_id } # @rangesTracker.applyOp op # Will apply via sharejs @$scope.sharejsDoc.submitOp op - addCommentToSelection: () -> + addCommentToSelection: (thread_id) -> range = @editor.getSelectionRange() content = @editor.getSelectedText() offset = @_aceRangeToShareJs(range.start) - @addComment(offset, content) + @addComment(offset, content, thread_id) selectLineIfNoSelection: () -> if @editor.selection.isEmpty() diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 550c7da585..8e9607d00a 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -35,18 +35,25 @@ load = (EventEmitter) -> # * Inserts by another user will not combine with inserts by the first user. If they are in the # middle of a previous insert by the first user, the original insert will be split into two. constructor: (@changes = [], @comments = []) -> - # Change objects have the following structure: - # { - # id: ... # Uniquely generated by us - # op: { # ShareJs style op tracking the offset (p) and content inserted (i) or deleted (d) - # i: "..." - # p: 42 - # } - # } - # - # Ids are used to uniquely identify a change, e.g. for updating it in the database, or keeping in - # sync with Ace ranges. - @id = 0 + + @_increment: 0 + @newId: () -> + # Generate a Mongo ObjectId + # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js + @_pid ?= Math.floor(Math.random() * (32767)) + @_machine ?= Math.floor(Math.random() * (16777216)) + timestamp = Math.floor(new Date().valueOf() / 1000) + @_increment++ + + timestamp = timestamp.toString(16) + machine = @_machine.toString(16) + pid = @_pid.toString(16) + increment = @_increment.toString(16) + + return '00000000'.substr(0, 8 - timestamp.length) + timestamp + + '000000'.substr(0, 6 - machine.length) + machine + + '0000'.substr(0, 4 - pid.length) + pid + + '000000'.substr(0, 6 - increment.length) + increment; getComment: (comment_id) -> comment = null @@ -105,7 +112,7 @@ load = (EventEmitter) -> addComment: (op, metadata) -> # TODO: Don't allow overlapping comments? @comments.push comment = { - id: @_newId() + id: RangesTracker.newId() op: # Copy because we'll modify in place c: op.c p: op.p @@ -394,28 +401,9 @@ load = (EventEmitter) -> if moved_changes.length > 0 @emit "changes:moved", moved_changes - _newId: () -> - # Generate a Mongo ObjectId - # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js - @_pid ?= Math.floor(Math.random() * (32767)) - @_machine ?= Math.floor(Math.random() * (16777216)) - timestamp = Math.floor(new Date().valueOf() / 1000) - @_increment ?= 0 - @_increment++ - - timestamp = timestamp.toString(16) - machine = @_machine.toString(16) - pid = @_pid.toString(16) - increment = @_increment.toString(16) - - return '00000000'.substr(0, 8 - timestamp.length) + timestamp + - '000000'.substr(0, 6 - machine.length) + machine + - '0000'.substr(0, 4 - pid.length) + pid + - '000000'.substr(0, 6 - increment.length) + increment; - _addOp: (op, metadata) -> change = { - id: @_newId() + id: RangesTracker.newId() op: op metadata: metadata } diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index cc48079b8e..cff77f5e1e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -18,12 +18,27 @@ define [ openSubView: $scope.SubViews.CUR_FILE overview: loading: false + commentThreads: {} $scope.commentState = adding: false content: "" $scope.reviewPanelEventsBridge = new EventEmitter() + + $http.get "/project/#{$scope.project_id}/threads" + .success (threads) -> + for thread_id, comments of threads + for comment in comments + formatComment(comment) + $scope.reviewPanel.commentThreads = threads + + ide.socket.on "new-comment", (thread_id, comment) -> + $scope.reviewPanel.commentThreads[thread_id] ?= [] + $scope.reviewPanel.commentThreads[thread_id].push(formatComment(comment)) + $scope.$apply() + $timeout () -> + $scope.$broadcast "review-panel:layout" rangesTrackers = {} @@ -35,95 +50,6 @@ define [ rangesTrackers[doc_id] ?= new RangesTracker() return rangesTrackers[doc_id] - # TODO Just for prototyping purposes; remove afterwards. - mockedUserId = 'mock_user_id_1' - mockedUserId2 = 'mock_user_id_2' - - if window.location.search.match /mocktc=true/ - mock_changes = { - "main.tex": - changes: [{ - op: { i: "Habitat loss and conflicts with humans are the greatest causes of concern.", p: 925 - 38 } - metadata: { user_id: mockedUserId, ts: new Date(Date.now() - 30 * 60 * 1000) } - }, { - op: { d: "The lion is now a vulnerable species. ", p: 778 } - metadata: { user_id: mockedUserId, ts: new Date(Date.now() - 31 * 60 * 1000) } - }] - comments: [{ - offset: 1375 - 38 - length: 79 - metadata: - thread: [{ - content: "Do we have a source for this?" - user_id: mockedUserId - ts: new Date(Date.now() - 45 * 60 * 1000) - }] - }] - "chapter_1.tex": - changes: [{ - "op":{"p":740,"d":", to take down large animals"}, - "metadata":{"user_id":mockedUserId, ts: new Date(Date.now() - 15 * 60 * 1000)} - }, { - "op":{"i":", to keep hold of the prey","p":920}, - "metadata":{"user_id":mockedUserId, ts: new Date(Date.now() - 130 * 60 * 1000)} - }, { - "op":{"i":" being","p":1057}, - "metadata":{"user_id":mockedUserId2, ts: new Date(Date.now() - 72 * 60 * 1000)} - }] - comments:[{ - "offset":111,"length":5, - "metadata":{ - "thread": [ - {"content":"Have we used 'pride' too much here?","user_id":mockedUserId, ts: new Date(Date.now() - 12 * 60 * 1000)}, - {"content":"No, I think this is OK","user_id":mockedUserId2, ts: new Date(Date.now() - 9 * 60 * 1000)} - ] - } - },{ - "offset":452,"length":21, - "metadata":{ - "thread":[ - {"content":"TODO: Don't use as many parentheses!","user_id":mockedUserId2, ts: new Date(Date.now() - 99 * 60 * 1000)} - ] - } - }] - "chapter_2.tex": - changes: [{ - "op":{"p":458,"d":"other"}, - "metadata":{"user_id":mockedUserId, ts: new Date(Date.now() - 133 * 60 * 1000)} - },{ - "op":{"i":"usually 2-3, ","p":928}, - "metadata":{"user_id":mockedUserId, ts: new Date(Date.now() - 27 * 60 * 1000)} - },{ - "op":{"i":"If the parents are a male lion and a female tiger, it is called a liger. A tigon comes from a male tiger and a female lion.","p":1126}, - "metadata":{"user_id":mockedUserId, ts: new Date(Date.now() - 152 * 60 * 1000)} - }] - comments: [{ - "offset":299,"length":10, - "metadata":{ - "thread":[{ - "content":"Should we use a different word here if 'den' needs clarifying?","user_id":mockedUserId,"ts": new Date(Date.now() - 430 * 60 * 1000) - }] - } - },{ - "offset":843,"length":66, - "metadata":{ - "thread":[{ - "content":"This sentence is a little ambiguous","user_id":mockedUserId,"ts": new Date(Date.now() - 430 * 60 * 1000) - }] - } - }] - } - ide.$scope.$on "file-tree:initialized", () -> - ide.fileTreeManager.forEachEntity (entity) -> - if mock_changes[entity.name]? - rangesTracker = getChangeTracker(entity.id) - for change in mock_changes[entity.name].changes - rangesTracker._addOp change.op, change.metadata - for comment in mock_changes[entity.name].comments - rangesTracker.addComment comment.offset, comment.length, comment.metadata - for doc_id, rangesTracker of rangesTrackers - updateEntries(doc_id) - scrollbar = {} $scope.reviewPanelEventsBridge.on "aceScrollbarVisibilityChanged", (isVisible, scrollbarWidth) -> scrollbar = {isVisible, scrollbarWidth} @@ -156,7 +82,6 @@ define [ $scope.$watch "editor.sharejs_doc", (doc) -> return if !doc? - console.log "DOC changed", doc # The open doc range tracker is kept up to date in real-time so # replace any outdated info with this rangesTrackers[doc.doc_id] = doc.ranges @@ -218,7 +143,7 @@ define [ entries[comment.id] ?= {} new_entry = { type: "comment" - thread: comment.metadata.thread or [] + thread_id: comment.op.t resolved: comment.metadata?.resolved resolved_data: comment.metadata?.resolved_data content: comment.op.c @@ -250,7 +175,7 @@ define [ for id, entry of entries if entry.type == "comment" and not entry.resolved - entry.focused = (entry.offset <= cursor_offset <= entry.offset + entry.length) + entry.focused = (entry.offset <= cursor_offset <= entry.offset + entry.content.length) else if entry.type == "insert" entry.focused = (entry.offset <= cursor_offset <= entry.offset + entry.content.length) else if entry.type == "delete" @@ -268,21 +193,20 @@ define [ $scope.$broadcast "change:reject", entry_id $scope.startNewComment = () -> - # $scope.commentState.adding = true $scope.$broadcast "comment:select_line" $timeout () -> $scope.$broadcast "review-panel:layout" $scope.submitNewComment = (content) -> - # $scope.commentState.adding = false - $scope.$broadcast "comment:add", content - # $scope.commentState.content = "" + thread_id = RangesTracker.newId() + $scope.$broadcast "comment:add", thread_id + $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) + .error (error) -> + ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") $timeout () -> $scope.$broadcast "review-panel:layout" $scope.cancelNewComment = (entry) -> - # $scope.commentState.adding = false - # $scope.commentState.content = "" $timeout () -> $scope.$broadcast "review-panel:layout" @@ -291,40 +215,19 @@ define [ $timeout () -> $scope.$broadcast "review-panel:layout" - # $scope.handleCommentReplyKeyPress = (ev, entry) -> - # if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey - # ev.preventDefault() - # ev.target.blur() - # $scope.submitReply(entry) - $scope.submitReply = (entry, entry_id) -> $scope.unresolveComment(entry_id) - entry.thread.push { - content: entry.replyContent - ts: new Date() - user_id: window.user_id - } - entry.replyContent = "" - entry.replying = false - $timeout () -> - $scope.$broadcast "review-panel:layout" - # TODO Just for prototyping purposes; remove afterwards - window.setTimeout((() -> - $scope.$applyAsync(() -> submitMockedReply(entry)) - ), 1000 * 2) + thread_id = entry.thread_id + content = entry.replyContent + $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) + .error (error) -> + ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") - # TODO Just for prototyping purposes; remove afterwards. - submitMockedReply = (entry) -> - entry.thread.push { - content: 'Sounds good!' - ts: new Date() - user_id: mockedUserId - } entry.replyContent = "" entry.replying = false $timeout () -> $scope.$broadcast "review-panel:layout" - + $scope.cancelReply = (entry) -> entry.replying = false entry.replyContent = "" @@ -361,37 +264,39 @@ define [ # when we get an id we don't know. This'll do for client side testing refreshUsers = () -> $scope.users = {} - # TODO Just for prototyping purposes; remove afterwards. - $scope.users[mockedUserId] = { - email: "paulo@sharelatex.com" - name: "Paulo Reis" - isSelf: false - hue: 70 - avatar_text: "PR" - } - $scope.users[mockedUserId2] = { - email: "james@sharelatex.com" - name: "James Allen" - isSelf: false - hue: 320 - avatar_text: "JA" - } - for member in $scope.project.members.concat($scope.project.owner) - if member._id == window.user_id - name = "You" - isSelf = true - else - name = "#{member.first_name} #{member.last_name}" - isSelf = false + $scope.users[member._id] = formatUser(member) - $scope.users[member._id] = { - email: member.email - name: name - isSelf: isSelf - hue: ColorManager.getHueForUserId(member._id) - avatar_text: [member.first_name, member.last_name].filter((n) -> n?).map((n) -> n[0]).join "" + formatComment = (comment) -> + comment.user = formatUser(user) + comment.timestamp = new Date(comment.timestamp) + return comment + + formatUser = (user) -> + if !user? + return { + email: null + name: "Anonymous" + isSelf: false + hue: ColorManager.ANONYMOUS_HUE + avatar_text: "A" } + + id = user._id or user.id + if id == window.user_id + name = "You" + isSelf = true + else + name = "#{user.first_name} #{user.last_name}" + isSelf = false + return { + id: id + email: user.email + name: name + isSelf: isSelf + hue: ColorManager.getHueForUserId(id) + avatar_text: [user.first_name, user.last_name].filter((n) -> n?).map((n) -> n[0]).join "" + } $scope.$watch "project.members", (members) -> return if !members? diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 6938062e2b..76798b1935 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -6,7 +6,7 @@ define [ templateUrl: "commentEntryTemplate" scope: entry: "=" - users: "=" + threads: "=" onResolve: "&" onReply: "&" onIndicatorClick: "&" diff --git a/services/web/test/UnitTests/coffee/Chat/ChatApiHandlerTests.coffee b/services/web/test/UnitTests/coffee/Chat/ChatApiHandlerTests.coffee new file mode 100644 index 0000000000..ea569b8a53 --- /dev/null +++ b/services/web/test/UnitTests/coffee/Chat/ChatApiHandlerTests.coffee @@ -0,0 +1,92 @@ +should = require('chai').should() +SandboxedModule = require('sandboxed-module') +assert = require('assert') +path = require('path') +sinon = require('sinon') +modulePath = path.join __dirname, "../../../../app/js/Features/Chat/ChatApiHandler" +expect = require("chai").expect + +describe "ChatApiHandler", -> + beforeEach -> + @settings = + apis: + chat: + internal_url:"chat.sharelatex.env" + @request = sinon.stub() + @ChatApiHandler = SandboxedModule.require modulePath, requires: + "settings-sharelatex": @settings + "logger-sharelatex": { log: sinon.stub(), error: sinon.stub() } + "request": @request + @project_id = "3213213kl12j" + @user_id = "2k3jlkjs9" + @content = "my message here" + @callback = sinon.stub() + + describe "sendGlobalMessage", -> + describe "successfully", -> + beforeEach -> + @message = { "mock": "message" } + @request.callsArgWith(1, null, {statusCode: 200}, @message) + @ChatApiHandler.sendGlobalMessage @project_id, @user_id, @content, @callback + + it "should post the data to the chat api", -> + @request.calledWith({ + url: "#{@settings.apis.chat.internal_url}/project/#{@project_id}/messages" + method: "POST" + json: + content: @content + user_id: @user_id + }).should.equal true + + it "should return the message from the post", -> + @callback.calledWith(null, @message).should.equal true + + describe "with a non-success status code", -> + beforeEach -> + @request.callsArgWith(1, null, {statusCode: 500}) + @ChatApiHandler.sendGlobalMessage @project_id, @user_id, @content, @callback + + it "should return an error", -> + error = new Error() + error.statusCode = 500 + @callback.calledWith(error).should.equal true + + describe "getGlobalMessages", -> + beforeEach -> + @messages = [{ "mock": "message" }] + @limit = 30 + @before = "1234" + + describe "successfully", -> + beforeEach -> + @request.callsArgWith(1, null, {statusCode: 200}, @messages) + @ChatApiHandler.getGlobalMessages @project_id, @limit, @before, @callback + + it "should make get request for room to chat api", -> + @request.calledWith({ + method: "GET" + url: "#{@settings.apis.chat.internal_url}/project/#{@project_id}/messages" + qs: + limit: @limit + before: @before + json: true + }).should.equal true + + it "should return the messages from the request", -> + @callback.calledWith(null, @messages).should.equal true + + describe "with failure error code", -> + beforeEach -> + @request.callsArgWith(1, null, {statusCode: 500}, null) + @ChatApiHandler.getGlobalMessages @project_id, @limit, @before, @callback + + it "should return an error", -> + error = new Error() + error.statusCode = 500 + @callback.calledWith(error).should.equal true + + + + + + diff --git a/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee b/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee index a491e4b499..3db5dadd30 100644 --- a/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee @@ -7,75 +7,59 @@ modulePath = path.join __dirname, "../../../../app/js/Features/Chat/ChatControll expect = require("chai").expect describe "ChatController", -> - beforeEach -> - - @user_id = 'ier_' + @user_id = 'mock-user-id' @settings = {} - @ChatHandler = - sendMessage:sinon.stub() - getMessages:sinon.stub() - + @ChatApiHandler = {} @EditorRealTimeController = emitToRoom:sinon.stub().callsArgWith(3) - @AuthenticationController = getLoggedInUserId: sinon.stub().returns(@user_id) @ChatController = SandboxedModule.require modulePath, requires: - "settings-sharelatex":@settings - "logger-sharelatex": log:-> - "./ChatHandler":@ChatHandler - "../Editor/EditorRealTimeController":@EditorRealTimeController + "settings-sharelatex": @settings + "logger-sharelatex": log: -> + "./ChatApiHandler": @ChatApiHandler + "../Editor/EditorRealTimeController": @EditorRealTimeController '../Authentication/AuthenticationController': @AuthenticationController - @query = - before:"some time" - @req = params: - Project_id:@project_id - session: - user: - _id:@user_id - body: - content:@messageContent + project_id: @project_id @res = - set:sinon.stub() + json: sinon.stub() + send: sinon.stub() describe "sendMessage", -> - - it "should tell the chat handler about the message", (done)-> - @ChatHandler.sendMessage.callsArgWith(3) - @res.send = => - @ChatHandler.sendMessage.calledWith(@project_id, @user_id, @messageContent).should.equal true - done() + beforeEach -> + @req.body = + content: @content = "message-content" + @ChatApiHandler.sendGlobalMessage = sinon.stub().yields(null, @message = {"mock": "message"}) @ChatController.sendMessage @req, @res - it "should tell the editor real time controller about the update with the data from the chat handler", (done)-> - @chatMessage = - content:"hello world" - @ChatHandler.sendMessage.callsArgWith(3, null, @chatMessage) - @res.send = => - @EditorRealTimeController.emitToRoom.calledWith(@project_id, "new-chat-message", @chatMessage).should.equal true - done() - @ChatController.sendMessage @req, @res + it "should tell the chat handler about the message", -> + @ChatApiHandler.sendGlobalMessage + .calledWith(@project_id, @user_id, @content) + .should.equal true + + it "should tell the editor real time controller about the update with the data from the chat handler", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "new-chat-message", @message) + .should.equal true + + it "should return a 204 status code", -> + @res.send.calledWith(204).should.equal true describe "getMessages", -> beforeEach -> - @req.query = @query - - it "should ask the chat handler about the request", (done)-> - - @ChatHandler.getMessages.callsArgWith(2) - @res.send = => - @ChatHandler.getMessages.calledWith(@project_id, @query).should.equal true - done() + @req.query = + limit: @limit = "30" + before: @before = "12345" + @ChatApiHandler.getGlobalMessages = sinon.stub().yields(null, @messages = ["mock", "messages"]) @ChatController.getMessages @req, @res - it "should return the messages", (done)-> - messages = [{content:"hello"}] - @ChatHandler.getMessages.callsArgWith(2, null, messages) - @res.send = (sentMessages)=> - @res.set.calledWith('Content-Type', 'application/json').should.equal true - sentMessages.should.deep.equal messages - done() - @ChatController.getMessages @req, @res + it "should ask the chat handler about the request", -> + @ChatApiHandler.getGlobalMessages + .calledWith(@project_id, @limit, @before) + .should.equal true + + it "should return the messages", -> + @res.json.calledWith(@messages).should.equal true \ No newline at end of file diff --git a/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee b/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee deleted file mode 100644 index 22b6a575cc..0000000000 --- a/services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee +++ /dev/null @@ -1,89 +0,0 @@ -should = require('chai').should() -SandboxedModule = require('sandboxed-module') -assert = require('assert') -path = require('path') -sinon = require('sinon') -modulePath = path.join __dirname, "../../../../app/js/Features/Chat/ChatHandler" -expect = require("chai").expect - -describe "ChatHandler", -> - - beforeEach -> - - @settings = - apis: - chat: - internal_url:"chat.sharelatex.env" - @request = sinon.stub() - @ChatHandler = SandboxedModule.require modulePath, requires: - "settings-sharelatex":@settings - "logger-sharelatex": log:-> - "request": @request - @project_id = "3213213kl12j" - @user_id = "2k3jlkjs9" - @messageContent = "my message here" - - describe "sending message", -> - - beforeEach -> - @messageResponse = - message:"Details" - @request.callsArgWith(1, null, null, @messageResponse) - - it "should post the data to the chat api", (done)-> - - @ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err)=> - @opts = - method:"post" - json: - content:@messageContent - user_id:@user_id - uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages" - @request.calledWith(@opts).should.equal true - done() - - it "should return the message from the post", (done)-> - @ChatHandler.sendMessage @project_id, @user_id, @messageContent, (err, returnedMessage)=> - returnedMessage.should.equal @messageResponse - done() - - describe "get messages", -> - - beforeEach -> - @returnedMessages = [{content:"hello world"}] - @request.callsArgWith(1, null, null, @returnedMessages) - @query = {} - - it "should make get request for room to chat api", (done)-> - - @ChatHandler.getMessages @project_id, @query, (err)=> - @opts = - method:"get" - uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages" - qs:{} - @request.calledWith(@opts).should.equal true - done() - - it "should make get request for room to chat api with query string", (done)-> - @query = {limit:5, before:12345, ignore:"this"} - - @ChatHandler.getMessages @project_id, @query, (err)=> - @opts = - method:"get" - uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages" - qs: - limit:5 - before:12345 - @request.calledWith(@opts).should.equal true - done() - - it "should return the messages from the request", (done)-> - @ChatHandler.getMessages @project_id, @query, (err, returnedMessages)=> - returnedMessages.should.equal @returnedMessages - done() - - - - - - diff --git a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee new file mode 100644 index 0000000000..8acaa66886 --- /dev/null +++ b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee @@ -0,0 +1,65 @@ +should = require('chai').should() +SandboxedModule = require('sandboxed-module') +assert = require('assert') +path = require('path') +sinon = require('sinon') +modulePath = path.join __dirname, "../../../../app/js/Features/Comments/CommentsController" +expect = require("chai").expect + +describe "CommentsController", -> + beforeEach -> + @user_id = 'mock-user-id' + @settings = {} + @ChatApiHandler = {} + @EditorRealTimeController = + emitToRoom:sinon.stub() + @AuthenticationController = + getLoggedInUserId: sinon.stub().returns(@user_id) + @CommentsController = SandboxedModule.require modulePath, requires: + "settings-sharelatex": @settings + "logger-sharelatex": log: -> + "../Chat/ChatApiHandler": @ChatApiHandler + "../Editor/EditorRealTimeController": @EditorRealTimeController + '../Authentication/AuthenticationController': @AuthenticationController + @req = {} + @res = + json: sinon.stub() + send: sinon.stub() + + describe "sendComment", -> + beforeEach -> + @req.params = + project_id: @project_id + thread_id: @thread_id + @req.body = + content: @content = "message-content" + @ChatApiHandler.sendComment = sinon.stub().yields(null, @message = {"mock": "message"}) + @CommentsController.sendComment @req, @res + + it "should tell the chat handler about the message", -> + @ChatApiHandler.sendComment + .calledWith(@project_id, @thread_id, @user_id, @content) + .should.equal true + + it "should tell the editor real time controller about the update with the data from the chat handler", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "new-comment", @thread_id, @message) + .should.equal true + + it "should return a 204 status code", -> + @res.send.calledWith(204).should.equal true + + describe "getThreads", -> + beforeEach -> + @req.params = + project_id: @project_id + @ChatApiHandler.getThreads = sinon.stub().yields(null, @threads = {"mock", "threads"}) + @CommentsController.getThreads @req, @res + + it "should ask the chat handler about the request", -> + @ChatApiHandler.getThreads + .calledWith(@project_id) + .should.equal true + + it "should return the messages", -> + @res.json.calledWith(@threads).should.equal true \ No newline at end of file From d6fcc21ab571267d61827e1f0f6f0c6f0c8e67cb Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 16 Dec 2016 17:04:26 +0000 Subject: [PATCH 017/204] Add support for GMail go-to actions in the single CTA template. --- .../Email/Bodies/SingleCTAEmailBody.coffee | 15 +++++++++++++++ .../app/coffee/Features/Email/EmailBuilder.coffee | 6 ++++++ 2 files changed, 21 insertions(+) diff --git a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee index 6d0756596c..00a878c276 100644 --- a/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee +++ b/services/web/app/coffee/Features/Email/Bodies/SingleCTAEmailBody.coffee @@ -31,4 +31,19 @@ module.exports = _.template """ +<% if (gmailGoToAction) { %> + +<% } %> """ diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 0a5f653178..306aad3d2a 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -92,6 +92,7 @@ Thank you secondaryMessage: "If you ignore this message, your password won't be changed.
If you didn't request a password reset, let us know." ctaText: "Reset password" ctaURL: opts.setNewPasswordUrl + gmailGoToAction: null }) @@ -116,6 +117,10 @@ Thank you secondaryMessage: null ctaText: "View project" ctaURL: opts.inviteUrl + gmailGoToAction: + target: opts.inviteUrl + name: "View project" + description: "Join #{ opts.project.name } at ShareLaTeX" }) @@ -141,6 +146,7 @@ Thank You secondaryMessage: null ctaText: "Verify now" ctaURL: opts.completeJoinUrl + gmailGoToAction: null }) module.exports = From ef0a5801d5f111b3ed9beebec27d64b28c6ba734 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:02 +0000 Subject: [PATCH 018/204] Create a RedisWrapper, and use it for rate limiting. --- .../coffee/infrastructure/RateLimiter.coffee | 33 +- .../coffee/infrastructure/RedisWrapper.coffee | 28 + services/web/npm-shrinkwrap.json | 4311 ----------------- services/web/package.json | 1 - .../infrastructure/RateLimterTests.coffee | 91 +- 5 files changed, 98 insertions(+), 4366 deletions(-) create mode 100644 services/web/app/coffee/infrastructure/RedisWrapper.coffee delete mode 100644 services/web/npm-shrinkwrap.json diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 7c84fc9db7..be96c6eda2 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -1,15 +1,28 @@ settings = require("settings-sharelatex") -redis = require("redis-sharelatex") -rclient = redis.createClient(settings.redis.web) -redback = require("redback").use(rclient) +RedisWrapper = require('./RedisWrapper') +rclient = RedisWrapper.client('ratelimiter') -module.exports = + +module.exports = RateLimiter = + + _buildKey: (endpoint, subject) -> + return "RateLimiter:#{endpoint}:{#{subject}}" addCount: (opts, callback = (opts, shouldProcess)->)-> - ratelimit = redback.createRateLimit(opts.endpointName) - ratelimit.addCount opts.subjectName, opts.timeInterval, (err, callCount)-> - shouldProcess = callCount < opts.throttle - callback(err, shouldProcess) - + k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) + multi = rclient.multi() + multi.incr(k) + multi.get(k) + multi.expire(k, opts.timeInterval) + multi.exec (err, results)-> + console.log ">> results", results + count = results[1] + # account for the different results from `multi` when using cluster + if count instanceof Object + count = count[1] + allow = count < opts.throttle + callback err, allow + clearRateLimit: (endpointName, subject, callback) -> - rclient.del "#{endpointName}:#{subject}", callback \ No newline at end of file + k = RateLimiter._buildKey(endpointName, subject) + rclient.del k, callback diff --git a/services/web/app/coffee/infrastructure/RedisWrapper.coffee b/services/web/app/coffee/infrastructure/RedisWrapper.coffee new file mode 100644 index 0000000000..ae77918d2f --- /dev/null +++ b/services/web/app/coffee/infrastructure/RedisWrapper.coffee @@ -0,0 +1,28 @@ +Settings = require 'settings-sharelatex' +redis = require 'redis-sharelatex' +ioredis = require 'ioredis' +logger = require 'logger-sharelatex' + + +# A per-feature interface to Redis, +# looks up the feature in `settings.redis` +# and returns an appropriate client. +# Necessary because we don't want to migrate web over +# to redis-cluster all at once. + +# TODO: consider merging into `redis-sharelatex` + + +module.exports = Redis = + + # feature = 'websessions' | 'ratelimiter' | ... + client: (feature) -> + redisFeatureSettings = Settings.redis[feature] or Settings.redis.web + if redisFeatureSettings?.cluster? + logger.log {feature}, "creating redis-cluster client" + rclient = new ioredis.Cluster(redisFeatureSettings.cluster) + rclient._is_redis_cluster = true + else + logger.log {feature}, "creating redis client" + rclient = redis.createClient(redisFeatureSettings) + return rclient diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json deleted file mode 100644 index 04fdfc0142..0000000000 --- a/services/web/npm-shrinkwrap.json +++ /dev/null @@ -1,4311 +0,0 @@ -{ - "name": "web-sharelatex", - "version": "0.1.4", - "dependencies": { - "archiver": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "dependencies": { - "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" - }, - "readable-stream": { - "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-stream": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "dependencies": { - "bl": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" - }, - "end-of-stream": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "dependencies": { - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - } - } - } - } - }, - "zip-stream": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "dependencies": { - "crc32-stream": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" - }, - "debug": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "dependencies": { - "ms": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" - } - } - }, - "deflate-crc32-stream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" - } - } - }, - "lazystream": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" - }, - "file-utils": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "dependencies": { - "lodash": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" - }, - "iconv-lite": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" - }, - "glob": { - "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "findup-sync": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "dependencies": { - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "isbinaryfile": { - "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "async": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" - }, - "base64-stream": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "dependencies": { - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "basic-auth-connect": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" - }, - "bcrypt": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "dependencies": { - "bindings": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" - }, - "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" - } - } - }, - "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "dependencies": { - "bytes": { - "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - }, - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" - }, - "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - } - } - }, - "bufferedstream": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" - }, - "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", - "dependencies": { - "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.2", - "from": "ms@0.7.2" - } - } - }, - "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "dependencies": { - "double-ended-queue": { - "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" - }, - "redis-commands": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" - }, - "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" - } - } - } - } - }, - "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "dependencies": { - "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "dependencies": { - "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" - } - } - }, - "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "dependencies": { - "follow-redirects": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "stream-consume": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" - } - } - }, - "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - } - } - }, - "cookie": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" - }, - "cookie-parser": { - "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "dependencies": { - "cookie": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - } - } - }, - "csurf": { - "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "dependencies": { - "cookie": { - "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "dependencies": { - "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" - }, - "rndm": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" - }, - "tsscmp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" - }, - "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "dependencies": { - "random-bytes": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" - } - } - } - } - }, - "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" - }, - "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" - } - } - } - } - }, - "dateformat": { - "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" - }, - "express": { - "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "dependencies": { - "accepts": { - "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "dependencies": { - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "negotiator": { - "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" - } - } - }, - "array-flatten": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" - }, - "content-disposition": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" - }, - "content-type": { - "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" - }, - "cookie": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" - }, - "escape-html": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" - }, - "etag": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" - }, - "finalhandler": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "fresh": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" - }, - "merge-descriptors": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" - }, - "methods": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "path-to-regexp": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" - }, - "proxy-addr": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "dependencies": { - "forwarded": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" - }, - "ipaddr.js": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" - } - } - }, - "qs": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" - }, - "range-parser": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" - }, - "send": { - "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "dependencies": { - "destroy": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } - }, - "serve-static": { - "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "dependencies": { - "escape-html": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - }, - "send": { - "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "dependencies": { - "depd": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "destroy": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } - } - } - }, - "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - } - } - }, - "vary": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" - }, - "utils-merge": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" - } - } - }, - "express-session": { - "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", - "dependencies": { - "cookie": { - "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" - }, - "cookie-signature": { - "version": "1.0.6", - "from": "cookie-signature@1.0.6" - }, - "crc": { - "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "depd@1.1.0" - }, - "on-headers": { - "version": "1.0.1", - "from": "on-headers@1.0.1" - }, - "parseurl": { - "version": "1.3.1", - "from": "parseurl@1.3.1" - }, - "uid-safe": { - "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "dependencies": { - "base64-url": { - "version": "1.3.3", - "from": "base64-url@1.3.3" - }, - "random-bytes": { - "version": "1.0.0", - "from": "random-bytes@1.0.0" - } - } - }, - "utils-merge": { - "version": "1.0.0", - "from": "utils-merge@1.0.0" - } - } - }, - "grunt": { - "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "dependencies": { - "async": { - "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" - }, - "coffee-script": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" - }, - "colors": { - "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" - }, - "dateformat": { - "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" - }, - "eventemitter2": { - "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" - }, - "findup-sync": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "dependencies": { - "glob": { - "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "glob": { - "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "dependencies": { - "graceful-fs": { - "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "inherits": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - } - } - }, - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "iconv-lite": { - "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" - }, - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "nopt": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "rimraf": { - "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - }, - "lodash": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" - }, - "underscore.string": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" - }, - "which": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" - }, - "js-yaml": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "dependencies": { - "argparse": { - "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "dependencies": { - "underscore": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - }, - "underscore.string": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" - } - } - }, - "esprima": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" - } - } - }, - "exit": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "getobject": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" - }, - "grunt-legacy-util": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" - }, - "grunt-legacy-log": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "dependencies": { - "grunt-legacy-log-utils": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - }, - "underscore.string": { - "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" - } - } - } - } - }, - "heapdump": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" - }, - "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "dependencies": { - "eventemitter3": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" - }, - "requires-port": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - } - } - }, - "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" - }, - "cluster-key-slot": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" - }, - "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.2", - "from": "ms@0.7.2" - } - } - }, - "double-ended-queue": { - "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" - }, - "flexbuffer": { - "version": "0.0.6", - "from": "flexbuffer@0.0.6" - }, - "redis-commands": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" - }, - "redis-parser": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" - } - } - }, - "jade": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "dependencies": { - "commander": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "transformers": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "dependencies": { - "promise": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "dependencies": { - "is-promise": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" - } - } - }, - "css": { - "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "dependencies": { - "css-parse": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" - }, - "css-stringify": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" - } - } - }, - "uglify-js": { - "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "dependencies": { - "source-map": { - "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "optimist": { - "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - } - } - } - } - } - } - }, - "character-parser": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" - }, - "monocle": { - "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "dependencies": { - "readdirp": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "dependencies": { - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - } - } - }, - "with": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "dependencies": { - "uglify-js": { - "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - } - } - } - } - }, - "constantinople": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "dependencies": { - "uglify-js": { - "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "window-size": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" - }, - "wordwrap": { - "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" - } - } - } - } - } - } - } - } - }, - "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "dependencies": { - "mv": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "ncp": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" - }, - "rimraf": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "safe-json-stringify": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" - } - } - }, - "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" - }, - "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "dependencies": { - "precond": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" - } - } - }, - "ldap-filter": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" - }, - "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" - }, - "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "dependencies": { - "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" - } - } - }, - "dtrace-provider": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - } - } - } - } - }, - "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" - }, - "logger-sharelatex": { - "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", - "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", - "dependencies": { - "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "dependencies": { - "dtrace-provider": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - } - } - }, - "mv": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "ncp": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" - }, - "rimraf": { - "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "dependencies": { - "glob": { - "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "dependencies": { - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - }, - "safe-json-stringify": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" - } - } - }, - "coffee-script": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" - }, - "raven": { - "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "dependencies": { - "cookie": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" - }, - "lsmod": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" - }, - "stack-trace": { - "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" - } - } - } - } - }, - "lynx": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "dependencies": { - "mersenne": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" - }, - "statsd-parser": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" - } - } - }, - "marked": { - "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" - }, - "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "methods": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - }, - "parseurl": { - "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" - }, - "vary": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" - } - } - }, - "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "dependencies": { - "coffee-script": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" - } - } - }, - "mimelib": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "dependencies": { - "encoding": { - "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - } - } - }, - "addressparser": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" - } - } - }, - "mocha": { - "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "dependencies": { - "commander": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" - }, - "growl": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "diff": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "glob": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mongojs": { - "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "dependencies": { - "thunky": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "mongodb": { - "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "dependencies": { - "bson": { - "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "dependencies": { - "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" - } - } - }, - "kerberos": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "dependencies": { - "nan": { - "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - } - } - }, - "mongoose": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "dependencies": { - "async": { - "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" - }, - "bson": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "dependencies": { - "bson-ext": { - "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "dependencies": { - "bindings": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" - }, - "nan": { - "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" - } - } - } - } - }, - "hooks-fixed": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" - }, - "kareem": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" - }, - "mongodb": { - "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "dependencies": { - "mongodb-core": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "dependencies": { - "bson": { - "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" - }, - "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "dependencies": { - "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" - } - } - } - } - }, - "readable-stream": { - "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mpath": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" - }, - "mpromise": { - "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" - }, - "mquery": { - "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "dependencies": { - "bluebird": { - "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - } - } - }, - "ms": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" - }, - "muri": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" - }, - "regexp-clone": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" - }, - "sliced": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" - } - } - }, - "multer": { - "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "dependencies": { - "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "dependencies": { - "dicer": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "dependencies": { - "streamsearch": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" - } - } - }, - "readable-stream": { - "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "qs": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" - }, - "type-is": { - "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "dependencies": { - "mime-db": { - "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" - } - } - } - } - } - } - }, - "node-uuid": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" - }, - "nodemailer": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "dependencies": { - "libmime": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "dependencies": { - "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "libbase64": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" - }, - "libqp": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" - } - } - }, - "mailcomposer": { - "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "dependencies": { - "buildmail": { - "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "dependencies": { - "addressparser": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" - }, - "libbase64": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" - }, - "libqp": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" - }, - "nodemailer-fetch": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" - } - } - } - } - }, - "nodemailer-direct-transport": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "dependencies": { - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - }, - "nodemailer-shared": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "dependencies": { - "nodemailer-fetch": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" - } - } - }, - "nodemailer-smtp-pool": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "nodemailer-wellknown": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" - }, - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - }, - "nodemailer-smtp-transport": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "dependencies": { - "clone": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "nodemailer-wellknown": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" - }, - "smtp-connection": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" - } - } - } - } - }, - "nodemailer-sendgrid-transport": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "dependencies": { - "sendgrid": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "dependencies": { - "mime": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "lodash": { - "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "smtpapi": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" - } - } - } - } - }, - "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "dependencies": { - "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "dependencies": { - "sax": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" - }, - "xml2js": { - "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "dependencies": { - "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" - } - } - }, - "jmespath": { - "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" - } - } - } - } - }, - "optimist": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "passport": { - "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - }, - "pause": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" - } - } - }, - "passport-ldapauth": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - }, - "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "dependencies": { - "bcryptjs": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" - }, - "lru-cache": { - "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "dependencies": { - "pseudomap": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - } - } - } - } - } - } - }, - "passport-local": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" - } - } - }, - "passport-saml": { - "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", - "dependencies": { - "passport-strategy": { - "version": "1.0.0", - "from": "passport-strategy@*" - }, - "q": { - "version": "1.1.2", - "from": "q@1.1.x" - }, - "xml2js": { - "version": "0.4.17", - "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", - "dependencies": { - "sax": { - "version": "1.2.1", - "from": "sax@>=0.6.0" - }, - "xmlbuilder": { - "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" - } - } - }, - "xml-crypto": { - "version": "0.8.4", - "from": "xml-crypto@0.8.x", - "dependencies": { - "xmldom": { - "version": "0.1.19", - "from": "xmldom@=0.1.19" - }, - "xpath.js": { - "version": "1.0.6", - "from": "xpath.js@>=0.0.3" - } - } - }, - "xmldom": { - "version": "0.1.22", - "from": "xmldom@0.1.x" - }, - "xmlbuilder": { - "version": "2.5.2", - "from": "xmlbuilder@2.5.x", - "dependencies": { - "lodash": { - "version": "3.2.0", - "from": "lodash@~3.2.0" - } - } - }, - "xml-encryption": { - "version": "0.7.4", - "from": "xml-encryption@~0.7", - "dependencies": { - "ejs": { - "version": "0.8.8", - "from": "ejs@~0.8.3" - }, - "async": { - "version": "0.2.10", - "from": "async@~0.2.7" - }, - "xpath": { - "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" - }, - "node-forge": { - "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" - } - } - } - } - }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" - }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - } - } - }, - "redback": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" - }, - "redis": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" - }, - "redis-sharelatex": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "dependencies": { - "chai": { - "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "dependencies": { - "assertion-error": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" - }, - "deep-eql": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "dependencies": { - "type-detect": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" - } - } - } - } - }, - "coffee-script": { - "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "dependencies": { - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, - "grunt-contrib-coffee": { - "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "dependencies": { - "coffee-script": { - "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - } - } - }, - "chalk": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "strip-ansi": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" - } - } - }, - "supports-color": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" - } - } - }, - "lodash": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" - } - } - }, - "grunt-mocha-test": { - "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "dependencies": { - "hooker": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "fs-extra": { - "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "dependencies": { - "ncp": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - } - } - } - } - }, - "mocha": { - "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "dependencies": { - "commander": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" - }, - "growl": { - "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" - }, - "jade": { - "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "dependencies": { - "commander": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "mkdirp": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - } - } - }, - "diff": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "mkdirp": { - "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" - }, - "glob": { - "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "redis": { - "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" - }, - "redis-sentinel": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "dependencies": { - "redis": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" - }, - "q": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" - } - } - }, - "sandboxed-module": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "dependencies": { - "require-like": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" - }, - "stack-trace": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" - } - } - }, - "sinon": { - "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "dependencies": { - "formatio": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "dependencies": { - "samsam": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "underscore": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" - } - } - }, - "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "dependencies": { - "aws-sign2": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "extend": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - } - } - }, - "har-validator": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "commander": { - "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - } - } - } - } - }, - "hawk": { - "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "http-signature": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - } - } - }, - "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" - }, - "getpass": { - "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" - }, - "jsbn": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "isstream": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "dependencies": { - "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "oauth-sign": { - "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" - }, - "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" - }, - "tunnel-agent": { - "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" - } - } - }, - "requests": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "dependencies": { - "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" - }, - "eventemitter3": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" - }, - "extendible": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" - }, - "hang": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" - }, - "loads": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "dependencies": { - "failure": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" - }, - "one-time": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" - }, - "xhr-response": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" - }, - "xhr-status": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" - } - } - }, - "xhr-send": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" - } - } - }, - "rimraf": { - "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" - }, - "sanitizer": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" - }, - "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "dependencies": { - "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" - }, - "depd": { - "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "dottie": { - "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" - }, - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "inflection": { - "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" - }, - "lodash": { - "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" - }, - "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" - }, - "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" - }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - } - } - }, - "semver": { - "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - }, - "shimmer": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" - }, - "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "dependencies": { - "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" - } - } - }, - "toposort-class": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" - }, - "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" - }, - "wkx": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" - } - } - }, - "settings-sharelatex": { - "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", - "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", - "dependencies": { - "coffee-script": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" - } - } - }, - "sixpack-client": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" - }, - "temp": { - "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - } - } - }, - "underscore": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" - }, - "v8-profiler": { - "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "dependencies": { - "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" - }, - "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "nopt": { - "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" - } - } - }, - "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "dependencies": { - "delegates": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - }, - "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "dependencies": { - "aproba": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" - }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" - }, - "has-unicode": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - }, - "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" - }, - "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "wide-align": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" - } - } - }, - "set-blocking": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - } - } - }, - "rc": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "dependencies": { - "deep-extend": { - "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" - }, - "ini": { - "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - } - } - }, - "rimraf": { - "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "dependencies": { - "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - }, - "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - } - } - } - } - }, - "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - }, - "fstream": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "fstream": { - "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "fstream-ignore": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" - }, - "concat-map": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - } - } - }, - "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "dependencies": { - "wrappy": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - } - } - }, - "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" - }, - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - }, - "uid-number": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" - } - } - } - } - } - } - }, - "xml2js": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "dependencies": { - "sax": { - "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" - } - } - } - } -} diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..38ec9aebf2 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -50,7 +50,6 @@ "passport": "^0.3.2", "passport-ldapauth": "^0.6.0", "passport-local": "^1.0.0", - "redback": "0.4.0", "redis": "0.10.1", "redis-sharelatex": "0.0.9", "request": "^2.69.0", diff --git a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee index 21c0d96f4f..cb0bb5de09 100644 --- a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee +++ b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee @@ -6,7 +6,7 @@ expect = chai.expect modulePath = "../../../../app/js/infrastructure/RateLimiter.js" SandboxedModule = require('sandboxed-module') -describe "FileStoreHandler", -> +describe "RateLimiter", -> beforeEach -> @settings = @@ -15,23 +15,22 @@ describe "FileStoreHandler", -> port:"1234" host:"somewhere" password: "password" - @redbackInstance = - addCount: sinon.stub() - - @redback = - createRateLimit: sinon.stub().returns(@redbackInstance) - @redis = - createClient: -> - return auth:-> + @rclient = + incr: sinon.stub() + get: sinon.stub() + expire: sinon.stub() + exec: sinon.stub() + @rclient.multi = sinon.stub().returns(@rclient) + @RedisWrapper = + client: sinon.stub().returns(@rclient) @limiter = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()} - "redis-sharelatex": @redis - "redback": use: => @redback + "./RedisWrapper": @RedisWrapper @endpointName = "compiles" - @subject = "some project id" + @subject = "some-project-id" @timeInterval = 20 @throttleLimit = 5 @@ -40,43 +39,47 @@ describe "FileStoreHandler", -> subjectName: @subject throttle: @throttleLimit timeInterval: @timeInterval + @key = "RateLimiter:#{@endpointName}:{#{@subject}}" + for redisType, resultSet of { + normal:[10, '10', 10], + cluster:[[null,10], [null,'10'], [null,10]] + } + do (redisType, resultSet) -> - describe "addCount", -> + describe "addCount with #{redisType} redis", -> - beforeEach -> - @redbackInstance.addCount.callsArgWith(2, null, 10) + beforeEach -> + @results = resultSet + @rclient.incr = sinon.stub() + @rclient.get = sinon.stub() + @rclient.expire = sinon.stub() + @rclient.exec = sinon.stub().callsArgWith(0, null, @results) - it "should use correct namespace", (done)-> - @limiter.addCount @details, => - @redback.createRateLimit.calledWith(@endpointName).should.equal true - done() + it "should use correct key", (done)-> + @limiter.addCount @details, => + @rclient.incr.calledWith(@key).should.equal true + done() - it "should only call it once", (done)-> - @limiter.addCount @details, => - @redbackInstance.addCount.callCount.should.equal 1 - done() + it "should only call it once", (done)-> + @limiter.addCount @details, => + @rclient.exec.callCount.should.equal 1 + done() - it "should use the subjectName", (done)-> - @limiter.addCount @details, => - @redbackInstance.addCount.calledWith(@details.subjectName, @details.timeInterval).should.equal true - done() + it "should return true if the count is less than throttle", (done)-> + @details.throttle = 100 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal true + done() - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 100 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal true - done() - - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 1 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() - - it "should return false if the limit is matched", (done)-> - @details.throttle = 10 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + it "should return true if the count is less than throttle", (done)-> + @details.throttle = 1 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal false + done() + it "should return false if the limit is matched", (done)-> + @details.throttle = 10 + @limiter.addCount @details, (err, canProcess)=> + canProcess.should.equal false + done() From 9f787943b631104123921febf9291437d5484b5a Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:23 +0000 Subject: [PATCH 019/204] Remove stray redis imports. --- .../web/app/coffee/Features/ServerAdmin/AdminController.coffee | 2 -- .../web/app/coffee/Features/User/UserSessionsManager.coffee | 1 - services/web/app/coffee/infrastructure/Server.coffee | 1 - 3 files changed, 4 deletions(-) diff --git a/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee b/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee index 005f2d23d3..b813878335 100755 --- a/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee +++ b/services/web/app/coffee/Features/ServerAdmin/AdminController.coffee @@ -6,8 +6,6 @@ Project = require('../../models/Project').Project DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') Settings = require('settings-sharelatex') util = require('util') -redis = require("redis-sharelatex") -rclient = redis.createClient(Settings.redis.web) RecurlyWrapper = require('../Subscription/RecurlyWrapper') SubscriptionHandler = require('../Subscription/SubscriptionHandler') projectEntityHandler = require('../Project/ProjectEntityHandler') diff --git a/services/web/app/coffee/Features/User/UserSessionsManager.coffee b/services/web/app/coffee/Features/User/UserSessionsManager.coffee index 78016e8a09..2cd3b17e7f 100644 --- a/services/web/app/coffee/Features/User/UserSessionsManager.coffee +++ b/services/web/app/coffee/Features/User/UserSessionsManager.coffee @@ -1,5 +1,4 @@ Settings = require('settings-sharelatex') -redis = require('redis-sharelatex') logger = require("logger-sharelatex") Async = require('async') _ = require('underscore') diff --git a/services/web/app/coffee/infrastructure/Server.coffee b/services/web/app/coffee/infrastructure/Server.coffee index 43683bdd4e..01d431fa49 100644 --- a/services/web/app/coffee/infrastructure/Server.coffee +++ b/services/web/app/coffee/infrastructure/Server.coffee @@ -7,7 +7,6 @@ crawlerLogger = require('./CrawlerLogger') expressLocals = require('./ExpressLocals') Router = require('../router') metrics.inc("startup") -redis = require("redis-sharelatex") UserSessionsRedis = require('../Features/User/UserSessionsRedis') sessionsRedisClient = UserSessionsRedis.client() From 535e489ae541500b3458ea6f66be2a0f21324018 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 12:17:58 +0000 Subject: [PATCH 020/204] Add an example `redis.ratelimiter` config. --- services/web/config/settings.defaults.coffee | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index e3b842a0d2..145da0b997 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -48,6 +48,16 @@ module.exports = settings = # {host: 'localhost', port: 7005} # ] + # ratelimiter: + # cluster: [ + # {host: 'localhost', port: 7000} + # {host: 'localhost', port: 7001} + # {host: 'localhost', port: 7002} + # {host: 'localhost', port: 7003} + # {host: 'localhost', port: 7004} + # {host: 'localhost', port: 7005} + # ] + api: host: "localhost" port: "6379" From 03b541fb64bd3c0d3ac7cf9bdf1b04bdf5b647c0 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 14:10:27 +0000 Subject: [PATCH 021/204] Fix small mistakes --- services/web/app/coffee/infrastructure/RateLimiter.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index be96c6eda2..dd9c270794 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -8,14 +8,13 @@ module.exports = RateLimiter = _buildKey: (endpoint, subject) -> return "RateLimiter:#{endpoint}:{#{subject}}" - addCount: (opts, callback = (opts, shouldProcess)->)-> + addCount: (opts, callback = (err, shouldProcess)->)-> k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) multi = rclient.multi() multi.incr(k) multi.get(k) multi.expire(k, opts.timeInterval) multi.exec (err, results)-> - console.log ">> results", results count = results[1] # account for the different results from `multi` when using cluster if count instanceof Object From d428f9adbc954c4b8d2251f29ff8822c07d02e02 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 14:10:51 +0000 Subject: [PATCH 022/204] Make `LoginRateLimiter` a thin wrapper around `RateLimiter` --- .../Features/Security/LoginRateLimiter.coffee | 28 +++--- .../Security/LoginRateLimiterTests.coffee | 96 +++++++++---------- 2 files changed, 59 insertions(+), 65 deletions(-) diff --git a/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee b/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee index a8453f9b81..20943628ed 100644 --- a/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee +++ b/services/web/app/coffee/Features/Security/LoginRateLimiter.coffee @@ -1,23 +1,21 @@ -Settings = require('settings-sharelatex') -redis = require("redis-sharelatex") -rclient = redis.createClient(Settings.redis.web) +RateLimiter = require('../../infrastructure/RateLimiter') -buildKey = (k)-> - return "LoginRateLimit:#{k}" ONE_MIN = 60 ATTEMPT_LIMIT = 10 + module.exports = - processLoginRequest: (email, callback)-> - multi = rclient.multi() - multi.incr(buildKey(email)) - multi.get(buildKey(email)) - multi.expire(buildKey(email), ONE_MIN * 2) - multi.exec (err, results)-> - loginCount = results[1] - allow = loginCount <= ATTEMPT_LIMIT - callback err, allow + + processLoginRequest: (email, callback) -> + opts = + endpointName: 'login' + throttle: ATTEMPT_LIMIT + timeInterval: ONE_MIN * 2 + subjectName: email + RateLimiter.addCount opts, (err, shouldAllow) -> + callback(err, shouldAllow) recordSuccessfulLogin: (email, callback = ->)-> - rclient.del buildKey(email), callback \ No newline at end of file + RateLimiter.clearRateLimit 'login', email, callback + diff --git a/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee b/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee index 2c4dc59262..bbb4dcd675 100644 --- a/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee +++ b/services/web/test/UnitTests/coffee/Security/LoginRateLimiterTests.coffee @@ -1,78 +1,74 @@ SandboxedModule = require('sandboxed-module') sinon = require('sinon') require('chai').should() +expect = require('chai').expect modulePath = require('path').join __dirname, '../../../../app/js/Features/Security/LoginRateLimiter' -buildKey = (k)-> - return "LoginRateLimit:#{k}" describe "LoginRateLimiter", -> + beforeEach -> @email = "bob@bob.com" - @incrStub = sinon.stub() - @getStub = sinon.stub() - @execStub = sinon.stub() - @expireStub = sinon.stub() - @delStub = sinon.stub().callsArgWith(1) - - @rclient = - auth:-> - del: @delStub - multi: => - incr: @incrStub - expire: @expireStub - get: @getStub - exec: @execStub + @RateLimiter = + clearRateLimit: sinon.stub() + addCount: sinon.stub() @LoginRateLimiter = SandboxedModule.require modulePath, requires: - 'redis-sharelatex' : createClient: () => @rclient - "settings-sharelatex":{redis:{}} - + '../../infrastructure/RateLimiter': @RateLimiter + describe "processLoginRequest", -> - it "should inc the counter for login requests in redis", (done)-> - @execStub.callsArgWith(0, "null", ["",""]) - @LoginRateLimiter.processLoginRequest @email, => - @incrStub.calledWith(buildKey(@email)).should.equal true + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + + it 'should call RateLimiter.addCount', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + @RateLimiter.addCount.callCount.should.equal 1 + expect(@RateLimiter.addCount.lastCall.args[0].endpointName).to.equal 'login' + expect(@RateLimiter.addCount.lastCall.args[0].subjectName).to.equal @email done() - it "should set a expire", (done)-> - @execStub.callsArgWith(0, "null", ["",""]) - @LoginRateLimiter.processLoginRequest @email, => - @expireStub.calledWith(buildKey(@email), 60 * 2).should.equal true - done() + describe 'when login is allowed', -> - it "should return true if the count is below 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 9]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal true - done() + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - it "should return true if the count is 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 10]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal true - done() + it 'should call pass allow=true', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.equal null + expect(allow).to.equal true + done() - it "should return false if the count is above 10", (done)-> - @execStub.callsArgWith(0, "null", ["", 11]) - @LoginRateLimiter.processLoginRequest @email, (err, isAllowed)=> - isAllowed.should.equal false - done() + describe 'when login is blocked', -> + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, false) - describe "smoke test user", -> - - it "should have a higher limit", (done)-> - done() + it 'should call pass allow=false', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.equal null + expect(allow).to.equal false + done() + describe 'when addCount produces an error', -> + beforeEach -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, new Error('woops')) + it 'should produce an error', (done) -> + @LoginRateLimiter.processLoginRequest @email, (err, allow) => + expect(err).to.not.equal null + expect(err).to.be.instanceof Error + done() describe "recordSuccessfulLogin", -> - it "should delete the user key", (done)-> + beforeEach -> + @RateLimiter.clearRateLimit = sinon.stub().callsArgWith 2, null + + it "should call clearRateLimit", (done)-> @LoginRateLimiter.recordSuccessfulLogin @email, => - @delStub.calledWith(buildKey(@email)).should.equal true - done() \ No newline at end of file + @RateLimiter.clearRateLimit.callCount.should.equal 1 + @RateLimiter.clearRateLimit.calledWith('login', @email).should.equal true + done() From 822f76a88327d4a05c7afe1f14e72280fd0c4ba9 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 19 Dec 2016 15:12:22 +0000 Subject: [PATCH 023/204] Add unit tests for RedisWrapper --- .../coffee/infrastructure/RedisWrapper.coffee | 2 +- .../infrastructure/RedisWrapperTests.coffee | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee diff --git a/services/web/app/coffee/infrastructure/RedisWrapper.coffee b/services/web/app/coffee/infrastructure/RedisWrapper.coffee index ae77918d2f..5d8b5836b5 100644 --- a/services/web/app/coffee/infrastructure/RedisWrapper.coffee +++ b/services/web/app/coffee/infrastructure/RedisWrapper.coffee @@ -21,7 +21,7 @@ module.exports = Redis = if redisFeatureSettings?.cluster? logger.log {feature}, "creating redis-cluster client" rclient = new ioredis.Cluster(redisFeatureSettings.cluster) - rclient._is_redis_cluster = true + rclient.__is_redis_cluster = true else logger.log {feature}, "creating redis client" rclient = redis.createClient(redisFeatureSettings) diff --git a/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee new file mode 100644 index 0000000000..83ea202dcd --- /dev/null +++ b/services/web/test/UnitTests/coffee/infrastructure/RedisWrapperTests.coffee @@ -0,0 +1,66 @@ +assert = require("chai").assert +sinon = require('sinon') +chai = require('chai') +should = chai.should() +expect = chai.expect +modulePath = "../../../../app/js/infrastructure/RedisWrapper.js" +SandboxedModule = require('sandboxed-module') + +describe 'RedisWrapper', -> + + beforeEach -> + @featureName = 'somefeature' + @settings = + redis: + web: + port:"1234" + host:"somewhere" + password: "password" + somefeature: {} + @normalRedisInstance = + thisIsANormalRedisInstance: true + n: 1 + @clusterRedisInstance = + thisIsAClusterRedisInstance: true + n: 2 + @redis = + createClient: sinon.stub().returns(@normalRedisInstance) + @ioredis = + Cluster: sinon.stub().returns(@clusterRedisInstance) + @logger = {log: sinon.stub()} + + @RedisWrapper = SandboxedModule.require modulePath, requires: + 'logger-sharelatex': @logger + 'settings-sharelatex': @settings + 'redis-sharelatex': @redis + 'ioredis': @ioredis + + describe 'client', -> + + beforeEach -> + @call = () => + @RedisWrapper.client(@featureName) + + describe 'when feature uses cluster', -> + + beforeEach -> + @settings.redis.somefeature = + cluster: [1, 2, 3] + + it 'should return a cluster client', -> + client = @call() + expect(client).to.equal @clusterRedisInstance + expect(client.__is_redis_cluster).to.equal true + + describe 'when feature uses normal redis', -> + + beforeEach -> + @settings.redis.somefeature = + port:"1234" + host:"somewhere" + password: "password" + + it 'should return a regular redis client', -> + client = @call() + expect(client).to.equal @normalRedisInstance + expect(client.__is_redis_cluster).to.equal undefined From 7bbbfe20b9c6cfd6ba8e74926c43a61d783fb240 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 21 Dec 2016 13:50:13 +0000 Subject: [PATCH 024/204] If external auth is used, remove `/register` items from header nav. (logic moved from docker-image settings file) --- .../app/coffee/infrastructure/ExpressLocals.coffee | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index e469df9422..d976a1d23a 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -244,6 +244,17 @@ module.exports = (app, webRouter, apiRouter)-> for key, value of Settings.nav res.locals.nav[key] = _.clone(Settings.nav[key]) res.locals.templates = Settings.templateLinks + try + externalAuth = res.locals.externalAuthenticationSystemUsed() + if externalAuth and res.locals.nav.header? + # filter out '/register' link + res.locals.nav.header = _.filter( + res.locals.nav.header, + (h) -> + h.url != '/register' + ) + catch error + logger.error {error}, "error while trying to filter out '/register' links from header" next() webRouter.use (req, res, next) -> From fdafcf9677477495361b855146c2c09ebc0bd4db Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 4 Jan 2017 15:24:49 +0000 Subject: [PATCH 025/204] Restyle insertions and deletions - increasing info density. --- .../views/project/editor/review-panel.jade | 20 +-- .../stylesheets/app/editor/review-panel.less | 122 +++++++----------- 2 files changed, 54 insertions(+), 88 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 6ffc1bdbb9..44fb82d310 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -116,19 +116,19 @@ script(type='text/ng-template', id='changeEntryTemplate') .rp-entry( ng-class="[ 'rp-entry-' + entry.type, (entry.focused ? 'rp-entry-focused' : '')]" ) - .rp-entry-header + .rp-entry-body .rp-entry-action-icon(ng-switch="entry.type") i.fa.fa-pencil(ng-switch-when="insert") i.rp-icon-delete(ng-switch-when="delete") - .rp-entry-metadata - p.rp-entry-metadata-line(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} - p.rp-entry-metadata-line {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} - .rp-avatar(style="background-color: hsl({{ user.hue }}, 70%, 50%);") {{ user.avatar_text | limitTo : 1 }} - .rp-entry-body(ng-switch="entry.type") - span(ng-switch-when="insert") Added  - ins.rp-content-highlight {{ entry.content }} - span(ng-switch-when="delete") Deleted  - del.rp-content-highlight {{ entry.content }} + .rp-entry-details + .rp-entry-description(ng-switch="entry.type") + span(ng-switch-when="insert") Added  + ins.rp-content-highlight {{ entry.content }} + span(ng-switch-when="delete") Deleted  + del.rp-content-highlight {{ entry.content }} + .rp-entry-metadata + span {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  + span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} .rp-entry-actions a.rp-entry-button(href, ng-click="onReject();") i.fa.fa-times diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index d14e843591..72efa23a03 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -1,31 +1,31 @@ -@rp-base-font-size : 12px; -@rp-small-font-size : 10px; -@rp-icon-large-size : 22px; +@rp-base-font-size : 12px; +@rp-small-font-size : 10px; +@rp-icon-large-size : 22px; -@rp-bg-blue : #dadfed; -@rp-bg-dim-blue : #fafafa; -@rp-highlight-blue : #8a96b5; +@rp-bg-blue : #dadfed; +@rp-bg-dim-blue : #fafafa; +@rp-highlight-blue : #8a96b5; -@rp-border-grey : #d9d9d9; +@rp-border-grey : #d9d9d9; -@rp-green : #2c8e30; -@rp-dim-green : #cae3cb; -@rp-red : #c5060b; -@rp-dim-red : #f3cdce; -@rp-yellow : #f3b111; -@rp-dim-yellow : #ffe9b2; -@rp-grey : #aaaaaa; +@rp-green : #2c8e30; +@rp-dim-green : #cae3cb; +@rp-red : #c5060b; +@rp-dim-red : #f3cdce; +@rp-yellow : #f3b111; +@rp-dim-yellow : #ffe9b2; +@rp-grey : #aaaaaa; -@rp-type-blue : #6b7797; -@rp-type-darkgrey : #3f3f3f; +@rp-type-blue : #6b7797; +@rp-type-darkgrey : #3f3f3f; -@rp-entry-ribbon-width : 4px; -@rp-entry-arrow-width : 6px; -@rp-semibold-weight : 600; -@review-panel-width : 230px; -@review-off-width : 22px; +@rp-entry-ribbon-width : 4px; +@rp-entry-arrow-width : 6px; +@rp-semibold-weight : 600; +@review-panel-width : 230px; +@review-off-width : 22px; -@rp-toolbar-height: 32px; +@rp-toolbar-height : 32px; .rp-button() { background-color: @rp-highlight-blue; @@ -264,14 +264,13 @@ } } } - - .rp-entry-header { + .rp-entry-body { display: flex; align-items: center; - padding: 5px; + padding: 3px 5px; .rp-state-overview & { - padding: 0px; + padding: 0; } } .rp-entry-action-icon { @@ -280,48 +279,33 @@ line-height: 0; .rp-state-overview & { - font-size: @rp-base-font-size; - padding: 0px; - margin-right: 5px; + display: none; } } - .rp-entry-metadata { - flex-grow: 1; - padding: 0 5px; - line-height: 1.2; - - .rp-state-overview & { - display: flex; - line-height: inherit; - padding: 0; - } + .rp-entry-details { + line-height: 1.4; + margin-left: 5px; } - .rp-entry-metadata-line { - margin: 0; - .rp-state-overview &:last-of-type { - flex-grow: 1; - text-align: right; + .rp-entry-metadata { + font-size: @rp-small-font-size; + .rp-state-overview & { } } + .rp-entry-user { + font-weight: @rp-semibold-weight; + } - .rp-entry-body { - padding: 5px; + .rp-content-highlight { + color: @rp-type-darkgrey; + font-weight: @rp-semibold-weight; + text-decoration: none; - .rp-state-overview & { - padding: 0; - } - } - .rp-content-highlight { - color: @rp-type-darkgrey; - font-weight: @rp-semibold-weight; - text-decoration: none; - - .rp-entry-delete & { - text-decoration: line-through; + .rp-entry-delete & { + text-decoration: line-through; + } } - } .rp-entry-actions { display: flex; @@ -426,24 +410,6 @@ resize: vertical; } -.rp-avatar { - border-radius: 3px; - font-weight: @rp-semibold-weight; - font-size: @rp-icon-large-size; - line-height: 1.2; - text-transform: uppercase; - color: #FFF; - width: 1.3em; - height: 1.3em; - text-align: center; - flex-grow: 0; - flex-shrink: 0; - - .rp-state-overview & { - display: none; - } -} - .rp-icon-delete { display: inline-block; line-height: 1; @@ -524,10 +490,10 @@ padding: 2px 5px; border-top: solid 1px @rp-border-grey; border-bottom: solid 1px @rp-border-grey; - background-color: #FFF; + background-color: @rp-bg-dim-blue; margin-top: 10px; font-weight: @rp-semibold-weight; - border-left: solid @rp-entry-ribbon-width currentColor; + text-align: center; } .rp-nav { From 84d9b2aa49f69726b627b64ba4b285c37a90c946 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 4 Jan 2017 16:26:02 +0100 Subject: [PATCH 026/204] Save resolve and reopened state --- .../Features/Chat/ChatApiHandler.coffee | 13 ++++++++ .../Comments/CommentsController.coffee | 21 +++++++++++-- services/web/app/coffee/router.coffee | 2 ++ .../views/project/editor/review-panel.jade | 30 +++++++++---------- .../controllers/ReviewPanelController.coffee | 22 ++++++++++---- 5 files changed, 66 insertions(+), 22 deletions(-) diff --git a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee index e21e94d232..aa4b75ce11 100644 --- a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee +++ b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee @@ -45,4 +45,17 @@ module.exports = ChatApiHandler = url: "#{settings.apis.chat.internal_url}/project/#{project_id}/threads" method: "GET" json: true + }, callback + + resolveThread: (project_id, thread_id, user_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/resolve" + method: "POST" + json: {user_id} + }, callback + + reopenThread: (project_id, thread_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/reopen" + method: "POST" }, callback \ No newline at end of file diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee index 0e9658f1d3..07974d6872 100644 --- a/services/web/app/coffee/Features/Comments/CommentsController.coffee +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -14,7 +14,7 @@ module.exports = CommentsController = logger.log {project_id, thread_id, user_id, content}, "sending comment" ChatApiHandler.sendComment project_id, thread_id, user_id, content, (err, comment) -> return next(err) if err? - EditorRealTimeController.emitToRoom project_id, "new-comment", thread_id, comment, (err)-> + EditorRealTimeController.emitToRoom project_id, "new-comment", thread_id, comment, (err) -> res.send 204 getThreads: (req, res, next) -> @@ -22,4 +22,21 @@ module.exports = CommentsController = logger.log {project_id}, "getting comment threads for project" ChatApiHandler.getThreads project_id, (err, threads) -> return next(err) if err? - res.json threads \ No newline at end of file + res.json threads + + resolveThread: (req, res, next) -> + {project_id, thread_id} = req.params + user_id = AuthenticationController.getLoggedInUserId(req) + logger.log {project_id, thread_id, user_id}, "resolving comment thread" + ChatApiHandler.resolveThread project_id, thread_id, user_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "resolve-thread", thread_id, user_id, (err)-> + res.send 204 + + reopenThread: (req, res, next) -> + {project_id, thread_id} = req.params + logger.log {project_id, thread_id}, "reopening comment thread" + ChatApiHandler.reopenThread project_id, thread_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "reopen-thread", thread_id, (err)-> + res.send 204 \ No newline at end of file diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 0ad7f74c4f..13c8568f17 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -232,6 +232,8 @@ module.exports = class Router webRouter.post "/project/:project_id/thread/:thread_id/messages", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.sendComment webRouter.get "/project/:project_id/threads", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.getThreads + webRouter.post "/project/:project_id/thread/:thread_id/resolve", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.resolveThread + webRouter.post "/project/:project_id/thread/:thread_id/reopen", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.reopenThread webRouter.post "/project/:Project_id/references/index", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.index webRouter.post "/project/:Project_id/references/indexAll", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.indexAll diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 6ffc1bdbb9..16f003633a 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -30,7 +30,7 @@ entry="entry" threads="reviewPanel.commentThreads" on-resolve="resolveComment(entry, entry_id)" - on-unresolve="unresolveComment(entry_id)" + on-unresolve="unresolveComment(entry, entry_id)" on-show-thread="showThread(entry)" on-hide-thread="hideThread(entry)" on-delete="deleteComment(entry_id)" @@ -77,7 +77,7 @@ entry="entry" users="users" on-resolve="resolveComment(entry, entry.id)" - on-unresolve="unresolveComment(entry.id)" + on-unresolve="unresolveComment(entry, entry.id)" on-delete="deleteComment(entry.id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" @@ -139,18 +139,18 @@ script(type='text/ng-template', id='changeEntryTemplate') script(type='text/ng-template', id='commentEntryTemplate') div - .rp-entry-callout.rp-entry-callout-comment(ng-if="!entry.resolved") + .rp-entry-callout.rp-entry-callout-comment(ng-if="!threads[entry.thread_id].resolved") .rp-entry-indicator( ng-class="{ 'rp-entry-indicator-focused': entry.focused }" ng-click="onIndicatorClick();" ) i.fa.fa-comment .rp-entry.rp-entry-comment( - ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolved': entry.resolved}" + ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolved': threads[entry.thread_id].resolved}" ) .rp-comment( - ng-if="!entry.resolved || entry.showWhenResolved" - ng-repeat="comment in threads[entry.thread_id]" + ng-if="!threads[entry.thread_id].resolved || entry.showWhenResolved" + ng-repeat="comment in threads[entry.thread_id].messages" ng-class="comment.user.isSelf ? 'rp-comment-self' : '';" ) .rp-avatar( @@ -163,29 +163,29 @@ script(type='text/ng-template', id='commentEntryTemplate') | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} |  •  span(style="color: hsl({{ comment.user.hue }}, 70%, 40%);") {{ comment.user.name }} - .rp-comment-reply(ng-if="!entry.resolved || entry.showWhenResolved") + .rp-comment-reply(ng-if="!threads[entry.thread_id].resolved || entry.showWhenResolved") textarea.rp-comment-input( ng-model="entry.replyContent" ng-keypress="handleCommentReplyKeyPress($event);" stop-propagation="click" placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) - .rp-comment-resolved-description(ng-if="entry.resolved && !entry.showWhenResolved") + .rp-comment-resolved-description(ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") div | Comment resolved by - span(style="color: hsl({{ users[entry.resolved_data.user_id].hue }}, 70%, 40%);") {{ users[entry.resolved_data.user_id].name }} - div {{ entry.resolved_data.ts | date : 'MMM d, y h:mm a' }} + span(style="color: hsl({{ threads[entry.thread_id].resolved_by_user.hue }}, 70%, 40%);") {{ threads[entry.thread_id].resolved_by_user.name }} + div {{ threads[entry.thread_id].resolved_at | date : 'MMM d, y h:mm a' }} .rp-entry-actions - a.rp-entry-button(href, ng-click="onResolve();", ng-if="!entry.resolved") + a.rp-entry-button(href, ng-click="onResolve();", ng-if="!threads[entry.thread_id].resolved") i.fa.fa-check |  Mark as resolved - a.rp-entry-button(href, ng-click="onShowThread();", ng-if="entry.resolved && !entry.showWhenResolved") + a.rp-entry-button(href, ng-click="onShowThread();", ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") |  Show - a.rp-entry-button(href, ng-click="onHideThread();", ng-if="entry.resolved && entry.showWhenResolved") + a.rp-entry-button(href, ng-click="onHideThread();", ng-if="threads[entry.thread_id].resolved && entry.showWhenResolved") |  Hide - a.rp-entry-button(href, ng-click="onUnresolve();", ng-if="entry.resolved") + a.rp-entry-button(href, ng-click="onUnresolve();", ng-if="threads[entry.thread_id].resolved") |  Re-open - a.rp-entry-button(href, ng-click="onDelete();", ng-if="entry.resolved") + a.rp-entry-button(href, ng-click="onDelete();", ng-if="threads[entry.thread_id].resolved") |  Delete diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index cff77f5e1e..55ea4a46e1 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -28,14 +28,16 @@ define [ $http.get "/project/#{$scope.project_id}/threads" .success (threads) -> - for thread_id, comments of threads - for comment in comments + for thread_id, thread of threads + for comment in thread.messages formatComment(comment) + if thread.resolved_by_user? + formatUser(thread.resolved_by_user) $scope.reviewPanel.commentThreads = threads ide.socket.on "new-comment", (thread_id, comment) -> - $scope.reviewPanel.commentThreads[thread_id] ?= [] - $scope.reviewPanel.commentThreads[thread_id].push(formatComment(comment)) + $scope.reviewPanel.commentThreads[thread_id] ?= { messages: [] } + $scope.reviewPanel.commentThreads[thread_id].messages.push(formatComment(comment)) $scope.$apply() $timeout () -> $scope.$broadcast "review-panel:layout" @@ -236,9 +238,19 @@ define [ $scope.resolveComment = (entry, entry_id) -> entry.showWhenResolved = false entry.focused = false + thread = $scope.reviewPanel.commentThreads[entry.thread_id] + thread.resolved = true + thread.resolved_by_user = $scope.users[window.user_id] + thread.resolved_at = new Date() + $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} $scope.$broadcast "comment:resolve", entry_id, window.user_id - $scope.unresolveComment = (entry_id) -> + $scope.unresolveComment = (entry, entry_id) -> + thread = $scope.reviewPanel.commentThreads[entry.thread_id] + delete thread.resolved + delete thread.resolved_by_user + delete thread.resolved_at + $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/reopen", {_csrf: window.csrfToken} $scope.$broadcast "comment:unresolve", entry_id $scope.deleteComment = (entry_id) -> From 1599c4167087ee3e0803c9b986582df0ba42c7da Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 4 Jan 2017 15:34:24 +0000 Subject: [PATCH 027/204] Sizing adjustments. --- .../web/public/stylesheets/app/editor/review-panel.less | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 72efa23a03..c2dd9f314c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -1,6 +1,6 @@ @rp-base-font-size : 12px; @rp-small-font-size : 10px; -@rp-icon-large-size : 22px; +@rp-icon-large-size : 18px; @rp-bg-blue : #dadfed; @rp-bg-dim-blue : #fafafa; @@ -31,6 +31,7 @@ background-color: @rp-highlight-blue; color: #FFF; text-align: center; + line-height: 1.3; &:hover, &:focus { background-color: darken(@rp-highlight-blue, 5%); @@ -267,7 +268,7 @@ .rp-entry-body { display: flex; align-items: center; - padding: 3px 5px; + padding: 4px 5px; .rp-state-overview & { padding: 0; @@ -275,7 +276,7 @@ } .rp-entry-action-icon { font-size: @rp-icon-large-size; - padding: 0 5px; + padding: 0 3px; line-height: 0; .rp-state-overview & { From 898d20a6fcc155f7bfe2d5cd26ec1806fece435b Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 5 Jan 2017 10:34:28 +0100 Subject: [PATCH 028/204] Fix signature of call to unresolveComment --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 55ea4a46e1..aa993183d7 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -218,7 +218,7 @@ define [ $scope.$broadcast "review-panel:layout" $scope.submitReply = (entry, entry_id) -> - $scope.unresolveComment(entry_id) + $scope.unresolveComment(entry, entry_id) thread_id = entry.thread_id content = entry.replyContent $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) From 5155ebaeec2082a0deb2472bf665c194b3d6d5e6 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 5 Jan 2017 10:55:16 +0100 Subject: [PATCH 029/204] Don't show resolved comments when loading editor --- .../track-changes/TrackChangesManager.coffee | 38 +++++++++---------- .../ide/review-panel/RangesTracker.coffee | 13 ------- .../controllers/ReviewPanelController.coffee | 7 ++-- 3 files changed, 22 insertions(+), 36 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index cd2f79f798..030aa8c252 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -35,11 +35,11 @@ define [ @$scope.$on "comment:remove", (e, comment_id) => @removeCommentId(comment_id) - @$scope.$on "comment:resolve", (e, comment_id, user_id) => - @resolveCommentId(comment_id, user_id) + @$scope.$on "comment:resolve_thread", (e, thread_id) => + @resolveCommentByThreadId(thread_id) - @$scope.$on "comment:unresolve", (e, comment_id) => - @unresolveCommentId(comment_id) + @$scope.$on "comment:unresolve_thread", (e, thread_id) => + @unresolveCommentByThreadId(thread_id) @$scope.$on "review-panel:recalculate-screen-positions", () => @recalculateReviewEntriesScreenPositions() @@ -90,9 +90,7 @@ define [ @rangesTracker.off "comment:added" @rangesTracker.off "comment:moved" @rangesTracker.off "comment:removed" - @rangesTracker.off "comment:resolved" - @rangesTracker.off "comment:unresolved" - + setTrackChanges: (value) -> if value @$scope.sharejsDoc?.track_changes_as = window.user.id @@ -129,12 +127,6 @@ define [ @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment setTimeout () => @_onCommentRemoved(comment) - @rangesTracker.on "comment:resolved", (comment) => - sl_console.log "[comment:resolved]", comment - setTimeout () => @_onCommentRemoved(comment) - @rangesTracker.on "comment:unresolved", (comment) => - sl_console.log "[comment:unresolved]", comment - setTimeout () => @_onCommentAdded(comment) redrawAnnotations: () -> for change in @rangesTracker.changes @@ -187,13 +179,18 @@ define [ removeCommentId: (comment_id) -> @rangesTracker.removeCommentId(comment_id) - resolveCommentId: (comment_id, user_id) -> - @rangesTracker.resolveCommentId(comment_id, { - user_id, ts: new Date() - }) + RESOLVED_THREADS: {} + resolveCommentByThreadId: (thread_id) -> + @RESOLVED_THREADS[thread_id] = true + for comment in @rangesTracker?.comments or [] + if comment.op.t == thread_id + @_onCommentRemoved(comment) - unresolveCommentId: (comment_id) -> - @rangesTracker.unresolveCommentId(comment_id) + unresolveCommentByThreadId: (thread_id) -> + @RESOLVED_THREADS[thread_id] = false + for comment in @rangesTracker?.comments or [] + if comment.op.t == thread_id + @_onCommentAdded(comment) checkMapping: () -> # TODO: reintroduce this check @@ -335,6 +332,9 @@ define [ @broadcastChange() _onCommentAdded: (comment) -> + if @RESOLVED_THREADS[comment.op.t] + # Comment is resolved so shouldn't be displayed. + return if !@changeIdToMarkerIdMap[comment.id]? # Only create new markers if they don't already exist start = @_shareJsOffsetToAcePosition(comment.op.p) diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 8e9607d00a..6ff301e803 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -63,19 +63,6 @@ load = (EventEmitter) -> break return comment - resolveCommentId: (comment_id, resolved_data) -> - comment = @getComment(comment_id) - return if !comment? - comment.metadata.resolved = true - comment.metadata.resolved_data = resolved_data - @emit "comment:resolved", comment - - unresolveCommentId: (comment_id) -> - comment = @getComment(comment_id) - return if !comment? - comment.metadata.resolved = false - @emit "comment:unresolved", comment - removeCommentId: (comment_id) -> comment = @getComment(comment_id) return if !comment? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index aa993183d7..ccfb012f2a 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -32,6 +32,7 @@ define [ for comment in thread.messages formatComment(comment) if thread.resolved_by_user? + $scope.$broadcast "comment:resolve_thread", thread_id formatUser(thread.resolved_by_user) $scope.reviewPanel.commentThreads = threads @@ -146,8 +147,6 @@ define [ new_entry = { type: "comment" thread_id: comment.op.t - resolved: comment.metadata?.resolved - resolved_data: comment.metadata?.resolved_data content: comment.op.c offset: comment.op.p } @@ -243,7 +242,7 @@ define [ thread.resolved_by_user = $scope.users[window.user_id] thread.resolved_at = new Date() $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} - $scope.$broadcast "comment:resolve", entry_id, window.user_id + $scope.$broadcast "comment:resolve_thread", entry.thread_id $scope.unresolveComment = (entry, entry_id) -> thread = $scope.reviewPanel.commentThreads[entry.thread_id] @@ -251,7 +250,7 @@ define [ delete thread.resolved_by_user delete thread.resolved_at $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/reopen", {_csrf: window.csrfToken} - $scope.$broadcast "comment:unresolve", entry_id + $scope.$broadcast "comment:unresolve_thread", entry.thread_id $scope.deleteComment = (entry_id) -> $scope.$broadcast "comment:remove", entry_id From d13035a4f474cb4e87605d5296e595e2dfa7101b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 5 Jan 2017 11:50:43 +0000 Subject: [PATCH 030/204] Simpler UI for comments; remove some unused code. --- .../views/project/editor/review-panel.jade | 69 +++++++--------- .../directives/commentEntry.coffee | 4 - .../stylesheets/app/editor/review-panel.less | 82 ++++++------------- 3 files changed, 54 insertions(+), 101 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index aade8bde51..6139d5b52f 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -30,10 +30,6 @@ entry="entry" threads="reviewPanel.commentThreads" on-resolve="resolveComment(entry, entry_id)" - on-unresolve="unresolveComment(entry, entry_id)" - on-show-thread="showThread(entry)" - on-hide-thread="hideThread(entry)" - on-delete="deleteComment(entry_id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" ) @@ -66,8 +62,6 @@ change-entry( entry="entry" user="users[entry.metadata.user_id]" - on-reject="rejectChange(entry.id);" - on-accept="acceptChange(entry.id);" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc_id, entry)" ) @@ -76,9 +70,6 @@ comment-entry( entry="entry" users="users" - on-resolve="resolveComment(entry, entry.id)" - on-unresolve="unresolveComment(entry, entry.id)" - on-delete="deleteComment(entry.id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc_id, entry)" @@ -127,7 +118,8 @@ script(type='text/ng-template', id='changeEntryTemplate') span(ng-switch-when="delete") Deleted  del.rp-content-highlight {{ entry.content }} .rp-entry-metadata - span {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  + | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} + |  •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} .rp-entry-actions a.rp-entry-button(href, ng-click="onReject();") @@ -139,54 +131,51 @@ script(type='text/ng-template', id='changeEntryTemplate') script(type='text/ng-template', id='commentEntryTemplate') div - .rp-entry-callout.rp-entry-callout-comment(ng-if="!threads[entry.thread_id].resolved") + .rp-entry-callout.rp-entry-callout-comment .rp-entry-indicator( ng-class="{ 'rp-entry-indicator-focused': entry.focused }" ng-click="onIndicatorClick();" ) i.fa.fa-comment .rp-entry.rp-entry-comment( - ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolved': threads[entry.thread_id].resolved}" + ng-class="{ 'rp-entry-focused': entry.focused }" ) - .rp-comment( - ng-if="!threads[entry.thread_id].resolved || entry.showWhenResolved" - ng-repeat="comment in threads[entry.thread_id].messages" - ng-class="comment.user.isSelf ? 'rp-comment-self' : '';" - ) - .rp-avatar( - ng-if="!comment.user.isSelf;" - style="background-color: hsl({{ comment.user.hue }}, 70%, 50%);" - ) {{ comment.user.avatar_text | limitTo : 1 }} - .rp-comment-body(style="color: hsl({{ comment.user.hue }}, 70%, 90%);") + div + .rp-comment( + ng-repeat="comment in threads[entry.thread_id].messages" + ) p.rp-comment-content {{ comment.content }} - p.rp-comment-metadata + .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} |  •  - span(style="color: hsl({{ comment.user.hue }}, 70%, 40%);") {{ comment.user.name }} - .rp-comment-reply(ng-if="!threads[entry.thread_id].resolved || entry.showWhenResolved") + span.rp-entry-user(style="color: hsl({{ comment.user.hue }}, 70%, 40%);") {{ comment.user.name }} + .rp-comment-reply textarea.rp-comment-input( ng-model="entry.replyContent" ng-keypress="handleCommentReplyKeyPress($event);" stop-propagation="click" placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) - .rp-comment-resolved-description(ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") - div - | Comment resolved by - span(style="color: hsl({{ threads[entry.thread_id].resolved_by_user.hue }}, 70%, 40%);") {{ threads[entry.thread_id].resolved_by_user.name }} - div {{ threads[entry.thread_id].resolved_at | date : 'MMM d, y h:mm a' }} + //- .rp-comment-resolved-description(ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") + //- div + //- | Comment resolved by + //- span(style="color: hsl({{ threads[entry.thread_id].resolved_by_user.hue }}, 70%, 40%);") {{ threads[entry.thread_id].resolved_by_user.name }} + //- div {{ threads[entry.thread_id].resolved_at | date : 'MMM d, y h:mm a' }} .rp-entry-actions - a.rp-entry-button(href, ng-click="onResolve();", ng-if="!threads[entry.thread_id].resolved") + a.rp-entry-button(href, ng-click="onResolve();") i.fa.fa-check - |  Mark as resolved - a.rp-entry-button(href, ng-click="onShowThread();", ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") - |  Show - a.rp-entry-button(href, ng-click="onHideThread();", ng-if="threads[entry.thread_id].resolved && entry.showWhenResolved") - |  Hide - a.rp-entry-button(href, ng-click="onUnresolve();", ng-if="threads[entry.thread_id].resolved") - |  Re-open - a.rp-entry-button(href, ng-click="onDelete();", ng-if="threads[entry.thread_id].resolved") - |  Delete + |  Resolve + a.rp-entry-button(href, ng-click="onReply();") + i.fa.fa-reply + |  Reply + //- a.rp-entry-button(href, ng-click="onShowThread();", ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") + //- |  Show + //- a.rp-entry-button(href, ng-click="onHideThread();", ng-if="threads[entry.thread_id].resolved && entry.showWhenResolved") + //- |  Hide + //- a.rp-entry-button(href, ng-click="onUnresolve();", ng-if="threads[entry.thread_id].resolved") + //- |  Re-open + //- a.rp-entry-button(href, ng-click="onDelete();", ng-if="threads[entry.thread_id].resolved") + //- |  Delete script(type='text/ng-template', id='addCommentEntryTemplate') diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 76798b1935..2ee7862379 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -10,10 +10,6 @@ define [ onResolve: "&" onReply: "&" onIndicatorClick: "&" - onDelete: "&" - onUnresolve: "&" - onShowThread: "&" - onHideThread: "&" link: (scope, element, attrs) -> scope.handleCommentReplyKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index c2dd9f314c..a55c82220d 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -291,8 +291,6 @@ .rp-entry-metadata { font-size: @rp-small-font-size; - .rp-state-overview & { - } } .rp-entry-user { font-weight: @rp-semibold-weight; @@ -328,69 +326,39 @@ } .rp-comment { - display: flex; - align-items: flex-start; - padding: 5px; + margin: 2px 5px; + padding-bottom: 3px; + line-height: 1.4; + border-bottom: solid 1px @rp-border-grey; + + &:last-child { + margin-bottom: 2px; + border-bottom-width: 0; + } .rp-state-overview & { - padding: 3px 0; - line-height: 1.2; + padding: 0; } } - .rp-comment-body { - position: relative; - background-color: currentColor; - flex-grow: 1; - padding: 2px 5px; - margin-left: @rp-entry-arrow-width; - border-radius: 3px; - - .rp-comment-self & { - margin-left: 0; - margin-right: @rp-entry-arrow-width; - } - - &::after { - .triangle(left, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); - top: (@review-off-width / 2) - @rp-entry-arrow-width; - left: -@rp-entry-arrow-width; - content: ''; - - .rp-comment-self & { - .triangle(right, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); - right: -@rp-entry-arrow-width; - left: auto; - } - - } - } - .rp-comment-content { - margin: 0; - color: @rp-type-darkgrey; - } - - .rp-comment-metadata { - color: @rp-type-blue; - font-size: @rp-small-font-size; - margin: 0; - } - - .rp-comment-reply { - padding: 0 5px; - - .rp-state-overview & { - padding: 3px 0 0; - } + .rp-comment-content { + margin: 0; + color: @rp-type-darkgrey; } - .rp-comment-resolved-description { - padding: 5px; - - .rp-state-overview & { - padding: 0px; - } + .rp-comment-metadata { + color: @rp-type-blue; + font-size: @rp-small-font-size; + margin: 0; } + .rp-comment-reply { + padding: 0 5px; + + .rp-state-overview & { + padding: 3px 0 0; + } + } + .rp-add-comment-btn { .rp-button(); display: block; From 862e15b8429a3a78fc9d5bc7b1bdf6a35484a985 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Thu, 5 Jan 2017 15:02:10 +0000 Subject: [PATCH 031/204] log out user id and anonymous when loading editor --- .../web/app/coffee/Features/Project/ProjectController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 1d975ea5b3..44933fdcbc 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -197,7 +197,7 @@ module.exports = ProjectController = user_id = null project_id = req.params.Project_id - logger.log project_id:project_id, "loading editor" + logger.log project_id:project_id, anonymous:anonymous, user_id:user_id, "loading editor" async.parallel { project: (cb)-> From a1435d13a35e5c5de2761cb32b8d5e7e25785a5c Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 5 Jan 2017 17:15:27 +0000 Subject: [PATCH 032/204] Basic structure for the resolved comments dropdown. --- .../views/project/editor/review-panel.jade | 34 ++++++++++++++----- .../review-panel/ReviewPanelManager.coffee | 1 + .../resolvedCommentsDropdown.coffee | 28 +++++++++++++++ .../stylesheets/app/editor/review-panel.less | 25 +++++++++++++- 4 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 6139d5b52f..a2f8d01efd 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,5 +1,9 @@ #review-panel .review-panel-toolbar + resolved-comments-dropdown( + entries="reviewPanel.entries" + threads="reviewPanel.commentThreads" + ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is strong off span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = false;", ng-if="editor.wantTrackChanges === true") Track Changes is @@ -118,8 +122,7 @@ script(type='text/ng-template', id='changeEntryTemplate') span(ng-switch-when="delete") Deleted  del.rp-content-highlight {{ entry.content }} .rp-entry-metadata - | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} - |  •  + | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} .rp-entry-actions a.rp-entry-button(href, ng-click="onReject();") @@ -142,13 +145,16 @@ script(type='text/ng-template', id='commentEntryTemplate') ) div .rp-comment( - ng-repeat="comment in threads[entry.thread_id].messages" + ng-repeat="comment in threads[entry.thread_id].messages track by comment.id" ) - p.rp-comment-content {{ comment.content }} + p.rp-comment-content + span.rp-entry-user( + style="color: hsl({{ comment.user.hue }}, 70%, 40%);" + ng-if="$first || comment.user.id !== threads[entry.thread_id].messages[$index - 1].user.id" + ) {{ comment.user.name }}:  + | {{ comment.content }} .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} - |  •  - span.rp-entry-user(style="color: hsl({{ comment.user.hue }}, 70%, 40%);") {{ comment.user.name }} .rp-comment-reply textarea.rp-comment-input( ng-model="entry.replyContent" @@ -163,7 +169,7 @@ script(type='text/ng-template', id='commentEntryTemplate') //- div {{ threads[entry.thread_id].resolved_at | date : 'MMM d, y h:mm a' }} .rp-entry-actions a.rp-entry-button(href, ng-click="onResolve();") - i.fa.fa-check + i.fa.fa-inbox |  Resolve a.rp-entry-button(href, ng-click="onReply();") i.fa.fa-reply @@ -212,4 +218,16 @@ script(type='text/ng-template', id='addCommentEntryTemplate') |  Cancel a.rp-entry-button(href, ng-click="submitNewComment()") i.fa.fa-comment - |  Comment \ No newline at end of file + |  Comment + +script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') + .resolved-comments + a.resolved-comments-toggle( + href + ng-click="state.isOpen = !state.isOpen" + ) + i.fa.fa-inbox + .resolved-comments-dropdown( + ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }" + ) + div wut diff --git a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee index cd1231c798..51358f8bc7 100644 --- a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee +++ b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee @@ -5,6 +5,7 @@ define [ "ide/review-panel/directives/changeEntry" "ide/review-panel/directives/commentEntry" "ide/review-panel/directives/addCommentEntry" + "ide/review-panel/directives/resolvedCommentsDropdown" "ide/review-panel/filters/notEmpty" "ide/review-panel/filters/orderOverviewEntries" ], () -> \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee new file mode 100644 index 0000000000..61a187be5b --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -0,0 +1,28 @@ +define [ + "base" +], (App) -> + App.directive "resolvedCommentsDropdown", () -> + restrict: "E" + templateUrl: "resolvedCommentsDropdownTemplate" + scope: + entries: "=" + threads: "=" + link: (scope, element, attrs) -> + scope.state = + isOpen: false + + scope.resolvedComments = {} + + filterResolvedComments = () -> + scope.resolvedComments = {} + + for fileId, fileEntries of scope.entries + scope.resolvedComments[fileId] = {} + for entryId, entry of fileEntries + if entry.type == "comment" and scope.threads[entry.thread_id].resolved? + scope.resolvedComments[fileId][entryId] = scope.threads[entry.thread_id] + + scope.$watchCollection "entries", filterResolvedComments + scope.$watchCollection "threads", filterResolvedComments + + diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index a55c82220d..fc6193deb7 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -100,7 +100,6 @@ .rp-size-expanded & { display: flex; align-items: center; - justify-content: space-between; padding: 0 5px; } .rp-state-current-file & { @@ -120,6 +119,8 @@ .review-panel-toolbar-label { cursor: pointer; margin-right: 5px; + text-align: right; + flex-grow: 1; } .rp-entry-list { @@ -633,3 +634,25 @@ } } + +.resolved-comments-toggle { + font-size: @rp-icon-large-size; + color: lighten(@rp-type-blue, 25%); + border: solid 1px @rp-border-grey; + border-radius: 3px; + padding: 0 4px; + + &:hover, + &:focus { + text-decoration: none; + color: @rp-type-blue; + } +} + +.resolved-comments-dropdown { + display: none; + + &-open { + display: block; + } +} From 84ce2d0e14b720f4a2c74894295c3e8ad1bdf0ed Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 6 Jan 2017 11:00:21 +0000 Subject: [PATCH 033/204] change default nav to use translations for login and register --- services/web/config/settings.defaults.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index ccfec59235..708892e2fa 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -336,11 +336,11 @@ module.exports = settings = }] header: [{ - text: "Register" + text: "register" url: "/register" only_when_logged_out: true }, { - text: "Log In" + text: "log_in" url: "/login" only_when_logged_out: true }, { From 0b67265eb61b1f57da4450c9bbef9dd2eb5c7a8e Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 6 Jan 2017 11:32:57 +0000 Subject: [PATCH 034/204] use admin email for closed site --- services/web/app/views/general/closed.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/general/closed.jade b/services/web/app/views/general/closed.jade index 9f21372c81..4a27e84681 100644 --- a/services/web/app/views/general/closed.jade +++ b/services/web/app/views/general/closed.jade @@ -11,4 +11,4 @@ block content | Sorry, ShareLaTeX is briefly down for maintenance. | We should be back within minutes, but if not, or you have | an urgent request, please contact us at - | support@sharelatex.com + | #{settings.adminEmail} From f2e6e69df67d9ae087ad29ee9c65ddba97ac446a Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 6 Jan 2017 11:59:49 +0000 Subject: [PATCH 035/204] Add an entry directive for resolved comments, with file and quoted text. --- .../directives/resolvedCommentEntry.coffee | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee new file mode 100644 index 0000000000..e3691c1962 --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -0,0 +1,11 @@ +define [ + "base" +], (App) -> + App.directive "resolvedCommentEntry", () -> + restrict: "E" + templateUrl: "resolvedCommentEntryTemplate" + scope: + thread: "=" + doc: "=" + onReopen: "&" + onDelete: "&" \ No newline at end of file From 42585085c08659cfa305b04947a010d18568dd6a Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 6 Jan 2017 12:00:17 +0000 Subject: [PATCH 036/204] Integrate new directive, plumb data into it. More styling. --- .../views/project/editor/review-panel.jade | 54 +++++++++++++------ .../review-panel/ReviewPanelManager.coffee | 1 + .../resolvedCommentsDropdown.coffee | 17 +++--- .../stylesheets/app/editor/review-panel.less | 26 ++++++++- 4 files changed, 76 insertions(+), 22 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index a2f8d01efd..3e4962f676 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -3,6 +3,7 @@ resolved-comments-dropdown( entries="reviewPanel.entries" threads="reviewPanel.commentThreads" + docs="docs" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is strong off @@ -162,11 +163,6 @@ script(type='text/ng-template', id='commentEntryTemplate') stop-propagation="click" placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) - //- .rp-comment-resolved-description(ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") - //- div - //- | Comment resolved by - //- span(style="color: hsl({{ threads[entry.thread_id].resolved_by_user.hue }}, 70%, 40%);") {{ threads[entry.thread_id].resolved_by_user.name }} - //- div {{ threads[entry.thread_id].resolved_at | date : 'MMM d, y h:mm a' }} .rp-entry-actions a.rp-entry-button(href, ng-click="onResolve();") i.fa.fa-inbox @@ -174,15 +170,31 @@ script(type='text/ng-template', id='commentEntryTemplate') a.rp-entry-button(href, ng-click="onReply();") i.fa.fa-reply |  Reply - //- a.rp-entry-button(href, ng-click="onShowThread();", ng-if="threads[entry.thread_id].resolved && !entry.showWhenResolved") - //- |  Show - //- a.rp-entry-button(href, ng-click="onHideThread();", ng-if="threads[entry.thread_id].resolved && entry.showWhenResolved") - //- |  Hide - //- a.rp-entry-button(href, ng-click="onUnresolve();", ng-if="threads[entry.thread_id].resolved") - //- |  Re-open - //- a.rp-entry-button(href, ng-click="onDelete();", ng-if="threads[entry.thread_id].resolved") - //- |  Delete - + +script(type='text/ng-template', id='resolvedCommentEntryTemplate') + .rp-entry.rp-entry-comment + div + .rp-comment-context + | Quoted text on  + .rp-comment-context-file {{ doc.doc.name }} + .rp-comment-context-quote {{ thread.content }} + .rp-comment( + ng-repeat="comment in thread.messages track by comment.id" + ) + p.rp-comment-content + span.rp-entry-user( + style="color: hsl({{ comment.user.hue }}, 70%, 40%);" + ng-if="$first || comment.user.id !== thread.messages[$index - 1].user.id" + ) {{ comment.user.name }}:  + | {{ comment.content }} + .rp-entry-metadata + | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} + .rp-entry-actions + a.rp-entry-button(href, ng-click="onUnresolve();") + |  Re-open + a.rp-entry-button(href, ng-click="onDelete();") + |  Delete + script(type='text/ng-template', id='addCommentEntryTemplate') div @@ -222,6 +234,10 @@ script(type='text/ng-template', id='addCommentEntryTemplate') script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') .resolved-comments + .resolved-comments-backdrop( + ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }" + ng-click="state.isOpen = !state.isOpen" + ) a.resolved-comments-toggle( href ng-click="state.isOpen = !state.isOpen" @@ -230,4 +246,12 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') .resolved-comments-dropdown( ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }" ) - div wut + div( + ng-repeat="doc in docs" + ) + resolved-comment-entry( + ng-repeat="thread in resolvedCommentsPerFile[doc.doc.id]" + thread="thread" + doc="doc" + ) + diff --git a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee index 51358f8bc7..2ad425b737 100644 --- a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee +++ b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee @@ -5,6 +5,7 @@ define [ "ide/review-panel/directives/changeEntry" "ide/review-panel/directives/commentEntry" "ide/review-panel/directives/addCommentEntry" + "ide/review-panel/directives/resolvedCommentEntry" "ide/review-panel/directives/resolvedCommentsDropdown" "ide/review-panel/filters/notEmpty" "ide/review-panel/filters/orderOverviewEntries" diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 61a187be5b..5bdd85e71e 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -5,22 +5,27 @@ define [ restrict: "E" templateUrl: "resolvedCommentsDropdownTemplate" scope: - entries: "=" - threads: "=" + entries : "=" + threads : "=" + docs : "=" link: (scope, element, attrs) -> scope.state = isOpen: false - scope.resolvedComments = {} + scope.resolvedCommentsPerFile = {} filterResolvedComments = () -> - scope.resolvedComments = {} + scope.resolvedCommentsPerFile = {} for fileId, fileEntries of scope.entries - scope.resolvedComments[fileId] = {} + scope.resolvedCommentsPerFile[fileId] = {} for entryId, entry of fileEntries if entry.type == "comment" and scope.threads[entry.thread_id].resolved? - scope.resolvedComments[fileId][entryId] = scope.threads[entry.thread_id] + scope.resolvedCommentsPerFile[fileId][entryId] = angular.copy scope.threads[entry.thread_id] + scope.resolvedCommentsPerFile[fileId][entryId].content = entry.content + + console.log scope.resolvedCommentsPerFile + scope.$watchCollection "entries", filterResolvedComments scope.$watchCollection "threads", filterResolvedComments diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index fc6193deb7..48c37e0159 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -230,6 +230,10 @@ border-bottom: solid 1px @rp-border-grey; cursor: pointer; } + .resolved-comments-dropdown & { + position: static; + margin-bottom: 5px; + } border-left: solid @rp-entry-ribbon-width transparent; border-radius: 3px; @@ -649,9 +653,29 @@ } } +.resolved-comments-backdrop { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(0, 0, 0, .5); + + &-visible { + display: block; + } +} + .resolved-comments-dropdown { display: none; - + position: absolute; + width: 300px; + background-color: @rp-bg-blue; + text-align: left; + padding: 5px; + border-radius: 3px; + &-open { display: block; } From 3a5d45fa32731ce104edb549a271ca7814cd30fc Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 6 Jan 2017 13:41:58 +0100 Subject: [PATCH 037/204] Get user info via web, not chat --- .../Features/Chat/ChatController.coffee | 16 +- .../Comments/CommentsController.coffee | 59 ++++++- .../Features/Ranges/RangesController.coffee | 9 + .../Features/Ranges/RangesManager.coffee | 17 +- .../Features/User/UserInfoController.coffee | 21 +-- .../Features/User/UserInfoManager.coffee | 5 + services/web/app/coffee/router.coffee | 1 + .../ide/chat/services/chatMessages.coffee | 10 +- .../controllers/ReviewPanelController.coffee | 62 ++++--- .../coffee/Chat/ChatControllerTests.coffee | 19 ++- .../Comments/CommentsControllerTests.coffee | 154 +++++++++++++++++- .../coffee/Ranges/RangesManagerTests.coffee | 55 +++++++ .../User/UserInfoControllerTests.coffee | 25 ++- 13 files changed, 384 insertions(+), 69 deletions(-) create mode 100644 services/web/app/coffee/Features/User/UserInfoManager.coffee create mode 100644 services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee diff --git a/services/web/app/coffee/Features/Chat/ChatController.coffee b/services/web/app/coffee/Features/Chat/ChatController.coffee index d9a5d7db70..7e4e190290 100644 --- a/services/web/app/coffee/Features/Chat/ChatController.coffee +++ b/services/web/app/coffee/Features/Chat/ChatController.coffee @@ -2,6 +2,9 @@ ChatApiHandler = require("./ChatApiHandler") EditorRealTimeController = require("../Editor/EditorRealTimeController") logger = require("logger-sharelatex") AuthenticationController = require('../Authentication/AuthenticationController') +UserInfoManager = require('../User/UserInfoManager') +UserInfoController = require('../User/UserInfoController') +CommentsController = require('../Comments/CommentsController') module.exports = sendMessage: (req, res, next)-> @@ -13,8 +16,11 @@ module.exports = return next(err) ChatApiHandler.sendGlobalMessage project_id, user_id, content, (err, message) -> return next(err) if err? - EditorRealTimeController.emitToRoom project_id, "new-chat-message", message, (err)-> - res.send(204) + UserInfoManager.getPersonalInfo message.user_id, (err, user) -> + return next(err) if err? + message.user = UserInfoController.formatPersonalInfo(user) + EditorRealTimeController.emitToRoom project_id, "new-chat-message", message, (err)-> + res.send(204) getMessages: (req, res, next)-> project_id = req.params.project_id @@ -22,5 +28,7 @@ module.exports = logger.log project_id:project_id, query:query, "getting messages" ChatApiHandler.getGlobalMessages project_id, query.limit, query.before, (err, messages) -> return next(err) if err? - logger.log length: messages?.length, "sending messages to client" - res.json messages + CommentsController._injectUserInfoIntoThreads [{ messages: messages }], (err) -> + return next(err) if err? + logger.log length: messages?.length, "sending messages to client" + res.json messages diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee index 07974d6872..20346dccbb 100644 --- a/services/web/app/coffee/Features/Comments/CommentsController.coffee +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -2,6 +2,9 @@ ChatApiHandler = require("../Chat/ChatApiHandler") EditorRealTimeController = require("../Editor/EditorRealTimeController") logger = require("logger-sharelatex") AuthenticationController = require('../Authentication/AuthenticationController') +UserInfoManager = require('../User/UserInfoManager') +UserInfoController = require('../User/UserInfoController') +async = require "async" module.exports = CommentsController = sendComment: (req, res, next) -> @@ -14,29 +17,67 @@ module.exports = CommentsController = logger.log {project_id, thread_id, user_id, content}, "sending comment" ChatApiHandler.sendComment project_id, thread_id, user_id, content, (err, comment) -> return next(err) if err? - EditorRealTimeController.emitToRoom project_id, "new-comment", thread_id, comment, (err) -> - res.send 204 + UserInfoManager.getPersonalInfo comment.user_id, (err, user) -> + return next(err) if err? + comment.user = UserInfoController.formatPersonalInfo(user) + EditorRealTimeController.emitToRoom project_id, "new-comment", thread_id, comment, (err) -> + res.send 204 getThreads: (req, res, next) -> {project_id} = req.params logger.log {project_id}, "getting comment threads for project" ChatApiHandler.getThreads project_id, (err, threads) -> return next(err) if err? - res.json threads - + CommentsController._injectUserInfoIntoThreads threads, (error, threads) -> + return next(err) if err? + res.json threads + resolveThread: (req, res, next) -> {project_id, thread_id} = req.params user_id = AuthenticationController.getLoggedInUserId(req) logger.log {project_id, thread_id, user_id}, "resolving comment thread" - ChatApiHandler.resolveThread project_id, thread_id, user_id, (err, threads) -> + ChatApiHandler.resolveThread project_id, thread_id, user_id, (err) -> return next(err) if err? - EditorRealTimeController.emitToRoom project_id, "resolve-thread", thread_id, user_id, (err)-> - res.send 204 - + UserInfoManager.getPersonalInfo user_id, (err, user) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "resolve-thread", thread_id, UserInfoController.formatPersonalInfo(user), (err)-> + res.send 204 + reopenThread: (req, res, next) -> {project_id, thread_id} = req.params logger.log {project_id, thread_id}, "reopening comment thread" ChatApiHandler.reopenThread project_id, thread_id, (err, threads) -> return next(err) if err? EditorRealTimeController.emitToRoom project_id, "reopen-thread", thread_id, (err)-> - res.send 204 \ No newline at end of file + res.send 204 + + _injectUserInfoIntoThreads: (threads, callback = (error, threads) ->) -> + userCache = {} + getUserDetails = (user_id, callback = (error, user) ->) -> + return callback(null, userCache[user_id]) if userCache[user_id]? + UserInfoManager.getPersonalInfo user_id, (err, user) -> + return callback(error) if error? + user = UserInfoController.formatPersonalInfo user + userCache[user_id] = user + callback null, user + + jobs = [] + for thread in threads + do (thread) -> + if thread.resolved + jobs.push (cb) -> + getUserDetails thread.resolved_by_user_id, (error, user) -> + cb(error) if error? + thread.resolved_by_user = user + cb() + for message in thread.messages + do (message) -> + jobs.push (cb) -> + getUserDetails message.user_id, (error, user) -> + cb(error) if error? + message.user = user + cb() + + async.series jobs, (error) -> + return callback(error) if error? + return callback null, threads \ No newline at end of file diff --git a/services/web/app/coffee/Features/Ranges/RangesController.coffee b/services/web/app/coffee/Features/Ranges/RangesController.coffee index 96a42588ac..78457c2e64 100644 --- a/services/web/app/coffee/Features/Ranges/RangesController.coffee +++ b/services/web/app/coffee/Features/Ranges/RangesController.coffee @@ -1,5 +1,6 @@ RangesManager = require "./RangesManager" logger = require "logger-sharelatex" +UserInfoController = require "../User/UserInfoController" module.exports = RangesController = getAllRanges: (req, res, next) -> @@ -9,3 +10,11 @@ module.exports = RangesController = return next(error) if error? docs = ({id: d._id, ranges: d.ranges} for d in docs) res.json docs + + getAllRangesUsers: (req, res, next) -> + project_id = req.params.project_id + logger.log {project_id}, "request for project range users" + RangesManager.getAllRangesUsers project_id, (error, users) -> + return next(error) if error? + users = (UserInfoController.formatPersonalInfo(user) for user in users) + res.json users diff --git a/services/web/app/coffee/Features/Ranges/RangesManager.coffee b/services/web/app/coffee/Features/Ranges/RangesManager.coffee index 1fdf55b4a8..b538c1f443 100644 --- a/services/web/app/coffee/Features/Ranges/RangesManager.coffee +++ b/services/web/app/coffee/Features/Ranges/RangesManager.coffee @@ -1,8 +1,23 @@ DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" DocstoreManager = require "../Docstore/DocstoreManager" +UserInfoManager = require "../User/UserInfoManager" +async = require "async" module.exports = RangesManager = getAllRanges: (project_id, callback = (error, docs) ->) -> DocumentUpdaterHandler.flushProjectToMongo project_id, (error) -> return callback(error) if error? - DocstoreManager.getAllRanges project_id, callback \ No newline at end of file + DocstoreManager.getAllRanges project_id, callback + + getAllRangesUsers: (project_id, callback = (error, users) ->) -> + user_ids = {} + RangesManager.getAllRanges project_id, (error, docs) -> + return callback(error) if error? + jobs = [] + for doc in docs + for change in doc.ranges?.changes or [] + user_ids[change.metadata.user_id] = true + + async.mapSeries Object.keys(user_ids), (user_id, cb) -> + UserInfoManager.getPersonalInfo user_id, cb + , callback \ No newline at end of file diff --git a/services/web/app/coffee/Features/User/UserInfoController.coffee b/services/web/app/coffee/Features/User/UserInfoController.coffee index 92f111bda7..a77f575a48 100644 --- a/services/web/app/coffee/Features/User/UserInfoController.coffee +++ b/services/web/app/coffee/Features/User/UserInfoController.coffee @@ -26,17 +26,12 @@ module.exports = UserController = UserController.sendFormattedPersonalInfo(user, res, next) sendFormattedPersonalInfo: (user, res, next = (error) ->) -> - UserController._formatPersonalInfo user, (error, info) -> - return next(error) if error? - res.send JSON.stringify(info) + info = UserController.formatPersonalInfo(user) + res.send JSON.stringify(info) - _formatPersonalInfo: (user, callback = (error, info) ->) -> - callback null, { - id: user._id.toString() - first_name: user.first_name - last_name: user.last_name - email: user.email - signUpDate: user.signUpDate - role: user.role - institution: user.institution - } + formatPersonalInfo: (user, callback = (error, info) ->) -> + formatted_user = { id: user._id.toString() } + for key in ["first_name", "last_name", "email", "signUpDate", "role", "institution"] + if user[key]? + formatted_user[key] = user[key] + return formatted_user diff --git a/services/web/app/coffee/Features/User/UserInfoManager.coffee b/services/web/app/coffee/Features/User/UserInfoManager.coffee new file mode 100644 index 0000000000..90971e31a5 --- /dev/null +++ b/services/web/app/coffee/Features/User/UserInfoManager.coffee @@ -0,0 +1,5 @@ +UserGetter = require "./UserGetter" + +module.exports = UserInfoManager = + getPersonalInfo: (user_id, callback = (error) ->) -> + UserGetter.getUser user_id, { _id: true, first_name: true, last_name: true, email: true }, callback \ No newline at end of file diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 13c8568f17..1332a2d7e5 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -178,6 +178,7 @@ module.exports = class Router webRouter.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRanges + webRouter.get "/project/:project_id/ranges/users", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRangesUsers webRouter.get '/Project/:Project_id/download/zip', AuthorizationMiddlewear.ensureUserCanReadProject, ProjectDownloadsController.downloadProject webRouter.get '/project/download/zip', AuthorizationMiddlewear.ensureUserCanReadMultipleProjects, ProjectDownloadsController.downloadMultipleProjects diff --git a/services/web/public/coffee/ide/chat/services/chatMessages.coffee b/services/web/public/coffee/ide/chat/services/chatMessages.coffee index 1205a51267..6c33f95ea7 100644 --- a/services/web/public/coffee/ide/chat/services/chatMessages.coffee +++ b/services/web/public/coffee/ide/chat/services/chatMessages.coffee @@ -1,5 +1,6 @@ define [ "base" + "libs/md5" ], (App) -> App.factory "chatMessages", ($http, ide) -> MESSAGES_URL = "/project/#{ide.project_id}/messages" @@ -72,7 +73,7 @@ define [ firstMessage.contents.unshift message.content else chat.state.messages.unshift({ - user: message.user + user: formatUser(message.user) timestamp: message.timestamp contents: [message.content] }) @@ -93,9 +94,14 @@ define [ lastMessage.contents.push message.content else chat.state.messages.push({ - user: message.user + user: formatUser(message.user) timestamp: message.timestamp contents: [message.content] }) + + formatUser = (user) -> + hash = CryptoJS.MD5(user.email.toLowerCase()) + user.gravatar_url = "//www.gravatar.com/avatar/#{hash}" + return user return chat \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index ccfb012f2a..103f566617 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -24,18 +24,10 @@ define [ adding: false content: "" + $scope.users = {} + $scope.reviewPanelEventsBridge = new EventEmitter() - $http.get "/project/#{$scope.project_id}/threads" - .success (threads) -> - for thread_id, thread of threads - for comment in thread.messages - formatComment(comment) - if thread.resolved_by_user? - $scope.$broadcast "comment:resolve_thread", thread_id - formatUser(thread.resolved_by_user) - $scope.reviewPanel.commentThreads = threads - ide.socket.on "new-comment", (thread_id, comment) -> $scope.reviewPanel.commentThreads[thread_id] ?= { messages: [] } $scope.reviewPanel.commentThreads[thread_id].messages.push(formatComment(comment)) @@ -141,6 +133,9 @@ define [ for key, value of new_entry entries[change.id][key] = value + if !$scope.users[change.metadata.user_id]? + refreshChangeUsers(change.metadata.user_id) + for comment in rangesTracker.comments delete delete_changes[comment.id] entries[comment.id] ?= {} @@ -239,7 +234,7 @@ define [ entry.focused = false thread = $scope.reviewPanel.commentThreads[entry.thread_id] thread.resolved = true - thread.resolved_by_user = $scope.users[window.user_id] + thread.resolved_by_user = formatUser(ide.$scope.user) thread.resolved_at = new Date() $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} $scope.$broadcast "comment:resolve_thread", entry.thread_id @@ -271,12 +266,41 @@ define [ $scope.gotoEntry = (doc_id, entry) -> ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) - # TODO: Eventually we need to get this from the server, and update it - # when we get an id we don't know. This'll do for client side testing - refreshUsers = () -> - $scope.users = {} - for member in $scope.project.members.concat($scope.project.owner) - $scope.users[member._id] = formatUser(member) + _refreshingRangeUsers = false + _refreshedForUserIds = {} + refreshChangeUsers = (refresh_for_user_id) -> + if refresh_for_user_id? + if _refreshedForUserIds[refresh_for_user_id]? + # We've already tried to refresh to get this user id, so stop it looping + return + _refreshedForUserIds[refresh_for_user_id] = true + + # Only do one refresh at once + if _refreshingRangeUsers + return + _refreshingRangeUsers = true + + $http.get "/project/#{$scope.project_id}/ranges/users" + .success (users) -> + _refreshingRangeUsers = false + $scope.users = {} + for user in users + $scope.users[user.id] = formatUser(user) + .error () -> + _refreshingRangeUsers = false + + refreshThreads = () -> + $http.get "/project/#{$scope.project_id}/threads" + .success (threads) -> + for thread_id, thread of threads + for comment in thread.messages + formatComment(comment) + if thread.resolved_by_user? + $scope.$broadcast "comment:resolve_thread", thread_id + formatUser(thread.resolved_by_user) + $scope.reviewPanel.commentThreads = threads + + refreshThreads() formatComment = (comment) -> comment.user = formatUser(user) @@ -308,7 +332,3 @@ define [ hue: ColorManager.getHueForUserId(id) avatar_text: [user.first_name, user.last_name].filter((n) -> n?).map((n) -> n[0]).join "" } - - $scope.$watch "project.members", (members) -> - return if !members? - refreshUsers() diff --git a/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee b/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee index 3db5dadd30..851eb47f09 100644 --- a/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Chat/ChatControllerTests.coffee @@ -21,6 +21,9 @@ describe "ChatController", -> "./ChatApiHandler": @ChatApiHandler "../Editor/EditorRealTimeController": @EditorRealTimeController '../Authentication/AuthenticationController': @AuthenticationController + '../User/UserInfoManager': @UserInfoManager = {} + '../User/UserInfoController': @UserInfoController = {} + '../Comments/CommentsController': @CommentsController = {} @req = params: project_id: @project_id @@ -32,9 +35,22 @@ describe "ChatController", -> beforeEach -> @req.body = content: @content = "message-content" - @ChatApiHandler.sendGlobalMessage = sinon.stub().yields(null, @message = {"mock": "message"}) + @UserInfoManager.getPersonalInfo = sinon.stub().yields(null, @user = {"unformatted": "user"}) + @UserInfoController.formatPersonalInfo = sinon.stub().returns(@formatted_user = {"formatted": "user"}) + @ChatApiHandler.sendGlobalMessage = sinon.stub().yields(null, @message = {"mock": "message", user_id: @user_id}) @ChatController.sendMessage @req, @res + it "should look up the user", -> + @UserInfoManager.getPersonalInfo + .calledWith(@user_id) + .should.equal true + + it "should format and inject the user into the message", -> + @UserInfoController.formatPersonalInfo + .calledWith(@user) + .should.equal true + @message.user.should.deep.equal @formatted_user + it "should tell the chat handler about the message", -> @ChatApiHandler.sendGlobalMessage .calledWith(@project_id, @user_id, @content) @@ -53,6 +69,7 @@ describe "ChatController", -> @req.query = limit: @limit = "30" before: @before = "12345" + @CommentsController._injectUserInfoIntoThreads = sinon.stub().yields() @ChatApiHandler.getGlobalMessages = sinon.stub().yields(null, @messages = ["mock", "messages"]) @ChatController.getMessages @req, @res diff --git a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee index 8acaa66886..ecf57abd2e 100644 --- a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee @@ -21,6 +21,8 @@ describe "CommentsController", -> "../Chat/ChatApiHandler": @ChatApiHandler "../Editor/EditorRealTimeController": @EditorRealTimeController '../Authentication/AuthenticationController': @AuthenticationController + '../User/UserInfoManager': @UserInfoManager = {} + '../User/UserInfoController': @UserInfoController = {} @req = {} @res = json: sinon.stub() @@ -29,12 +31,25 @@ describe "CommentsController", -> describe "sendComment", -> beforeEach -> @req.params = - project_id: @project_id - thread_id: @thread_id + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" @req.body = content: @content = "message-content" - @ChatApiHandler.sendComment = sinon.stub().yields(null, @message = {"mock": "message"}) + @UserInfoManager.getPersonalInfo = sinon.stub().yields(null, @user = {"unformatted": "user"}) + @UserInfoController.formatPersonalInfo = sinon.stub().returns(@formatted_user = {"formatted": "user"}) + @ChatApiHandler.sendComment = sinon.stub().yields(null, @message = {"mock": "message", user_id: @user_id}) @CommentsController.sendComment @req, @res + + it "should look up the user", -> + @UserInfoManager.getPersonalInfo + .calledWith(@user_id) + .should.equal true + + it "should format and inject the user into the comment", -> + @UserInfoController.formatPersonalInfo + .calledWith(@user) + .should.equal true + @message.user.should.deep.equal @formatted_user it "should tell the chat handler about the message", -> @ChatApiHandler.sendComment @@ -52,14 +67,143 @@ describe "CommentsController", -> describe "getThreads", -> beforeEach -> @req.params = - project_id: @project_id + project_id: @project_id = "mock-project-id" @ChatApiHandler.getThreads = sinon.stub().yields(null, @threads = {"mock", "threads"}) + @CommentsController._injectUserInfoIntoThreads = sinon.stub().yields(null, @threads) @CommentsController.getThreads @req, @res it "should ask the chat handler about the request", -> @ChatApiHandler.getThreads .calledWith(@project_id) .should.equal true + + it "should inject the user details into the threads", -> + @CommentsController._injectUserInfoIntoThreads + .calledWith(@threads) + .should.equal true it "should return the messages", -> - @res.json.calledWith(@threads).should.equal true \ No newline at end of file + @res.json.calledWith(@threads).should.equal true + + describe "resolveThread", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + @ChatApiHandler.resolveThread = sinon.stub().yields() + @UserInfoManager.getPersonalInfo = sinon.stub().yields(null, @user = {"unformatted": "user"}) + @UserInfoController.formatPersonalInfo = sinon.stub().returns(@formatted_user = {"formatted": "user"}) + @CommentsController.resolveThread @req, @res + + it "should ask the chat handler to resolve the thread", -> + @ChatApiHandler.resolveThread + .calledWith(@project_id, @thread_id) + .should.equal true + + it "should look up the user", -> + @UserInfoManager.getPersonalInfo + .calledWith(@user_id) + .should.equal true + + it "should tell the client the comment was resolved", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "resolve-thread", @thread_id, @formatted_user) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "reopenThread", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + @ChatApiHandler.reopenThread = sinon.stub().yields() + @CommentsController.reopenThread @req, @res + + it "should ask the chat handler to reopen the thread", -> + @ChatApiHandler.reopenThread + .calledWith(@project_id, @thread_id) + .should.equal true + + it "should tell the client the comment was resolved", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "reopen-thread", @thread_id) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "_injectUserInfoIntoThreads", -> + beforeEach -> + @users = { + "user_id_1": { + "mock": "user_1" + } + "user_id_2": { + "mock": "user_2" + } + } + @UserInfoManager.getPersonalInfo = (user_id, callback) => + return callback(null, @users[user_id]) + sinon.spy @UserInfoManager, "getPersonalInfo" + @UserInfoController.formatPersonalInfo = (user) -> + return { "formatted": user["mock"] } + + it "should inject a user object into messaged and resolved data", (done) -> + @CommentsController._injectUserInfoIntoThreads [ + { + resolved: true + resolved_by_user_id: "user_id_1" + messages: [{ + user_id: "user_id_1" + content: "foo" + }, { + user_id: "user_id_2" + content: "bar" + }] + }, + { + messages: [{ + user_id: "user_id_1" + content: "baz" + }] + } + ], (error, threads) -> + expect(threads).to.deep.equal [ + { + resolved: true + resolved_by_user_id: "user_id_1" + resolved_by_user: { "formatted": "user_1" } + messages: [{ + user_id: "user_id_1" + user: { "formatted": "user_1" } + content: "foo" + }, { + user_id: "user_id_2" + user: { "formatted": "user_2" } + content: "bar" + }] + }, + { + messages: [{ + user_id: "user_id_1" + user: { "formatted": "user_1" } + content: "baz" + }] + } + ] + done() + + it "should only need to look up each user once", (done) -> + @CommentsController._injectUserInfoIntoThreads [{ + messages: [{ + user_id: "user_id_1" + content: "foo" + }, { + user_id: "user_id_1" + content: "bar" + }] + }], (error, threads) => + @UserInfoManager.getPersonalInfo.calledOnce.should.equal true + done() \ No newline at end of file diff --git a/services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee b/services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee new file mode 100644 index 0000000000..5f5c09d402 --- /dev/null +++ b/services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee @@ -0,0 +1,55 @@ +should = require('chai').should() +SandboxedModule = require('sandboxed-module') +assert = require('assert') +sinon = require('sinon') +path = require "path" +modulePath = path.join __dirname, "../../../../app/js/Features/Ranges/RangesManager" +expect = require("chai").expect + +describe "RangesManager", -> + beforeEach -> + @RangesManager = SandboxedModule.require modulePath, requires: + "../DocumentUpdater/DocumentUpdaterHandler": @DocumentUpdaterHandler = {} + "../Docstore/DocstoreManager": @DocstoreManager = {} + "../User/UserInfoManager": @UserInfoManager = {} + + describe "getAllRangesUsers", -> + beforeEach -> + @project_id = "mock-project-id" + @user_id1 = "mock-user-id-1" + @user_id1 = "mock-user-id-2" + @docs = [{ + ranges: + changes: [{ + op: { i: "foo", p: 42 } + metadata: + user_id: @user_id1 + }, { + op: { i: "bar", p: 102 } + metadata: + user_id: @user_id2 + }] + }, { + ranges: + changes: [{ + op: { i: "baz", p: 3 } + metadata: + user_id: @user_id1 + }] + }] + @users = {} + @users[@user_id1] = {"mock": "user-1"} + @users[@user_id2] = {"mock": "user-2"} + @UserInfoManager.getPersonalInfo = (user_id, callback) => callback null, @users[user_id] + sinon.spy @UserInfoManager, "getPersonalInfo" + @RangesManager.getAllRanges = sinon.stub().yields(null, @docs) + + it "should return an array of unique users", (done) -> + @RangesManager.getAllRangesUsers @project_id, (error, users) => + users.should.deep.equal [{"mock": "user-1"}, {"mock": "user-2"}] + done() + + it "should only call getPersonalInfo once for each user", (done) -> + @RangesManager.getAllRangesUsers @project_id, (error, users) => + @UserInfoManager.getPersonalInfo.calledTwice.should.equal true + done() \ No newline at end of file diff --git a/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee b/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee index df895e630d..37a1c034f0 100644 --- a/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/User/UserInfoControllerTests.coffee @@ -93,18 +93,18 @@ describe "UserInfoController", -> first_name: @user.first_name last_name: @user.last_name email: @user.email - @UserInfoController._formatPersonalInfo = sinon.stub().callsArgWith(1, null, @formattedInfo) + @UserInfoController.formatPersonalInfo = sinon.stub().returns(@formattedInfo) @UserInfoController.sendFormattedPersonalInfo @user, @res it "should format the user details for the response", -> - @UserInfoController._formatPersonalInfo + @UserInfoController.formatPersonalInfo .calledWith(@user) .should.equal true it "should send the formatted details back to the client", -> @res.body.should.equal JSON.stringify(@formattedInfo) - describe "_formatPersonalInfo", -> + describe "formatPersonalInfo", -> it "should return the correctly formatted data", -> @user = _id: ObjectId() @@ -115,14 +115,13 @@ describe "UserInfoController", -> signUpDate: new Date() role:"student" institution:"sheffield" - @UserInfoController._formatPersonalInfo @user, (error, info) => - expect(info).to.deep.equal { - id: @user._id.toString() - first_name: @user.first_name - last_name: @user.last_name - email: @user.email - signUpDate: @user.signUpDate - role: @user.role - institution: @user.institution - } + expect(@UserInfoController.formatPersonalInfo(@user)).to.deep.equal { + id: @user._id.toString() + first_name: @user.first_name + last_name: @user.last_name + email: @user.email + signUpDate: @user.signUpDate + role: @user.role + institution: @user.institution + } From cb24e9390a1e48a32e7724630ab15145b367580d Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 6 Jan 2017 14:17:57 +0100 Subject: [PATCH 038/204] Fix comments in overview panel --- services/web/app/views/project/editor/review-panel.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 3e4962f676..dcaefeea12 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -74,7 +74,7 @@ div(ng-if="entry.type === 'comment'") comment-entry( entry="entry" - users="users" + threads="reviewPanel.commentThreads" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc_id, entry)" From 0478fcd9258199249127b9175865cd33f0ceb5f9 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 6 Jan 2017 15:24:33 +0000 Subject: [PATCH 039/204] Add comment resolution info. --- .../views/project/editor/review-panel.jade | 25 ++++-- .../controllers/ReviewPanelController.coffee | 2 +- .../resolvedCommentsDropdown.coffee | 5 +- .../stylesheets/app/editor/review-panel.less | 77 +++++++++++++------ 4 files changed, 73 insertions(+), 36 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index dcaefeea12..e8bddadf49 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -172,12 +172,12 @@ script(type='text/ng-template', id='commentEntryTemplate') |  Reply script(type='text/ng-template', id='resolvedCommentEntryTemplate') - .rp-entry.rp-entry-comment + .rp-resolved-comment div - .rp-comment-context + .rp-resolved-comment-context | Quoted text on  - .rp-comment-context-file {{ doc.doc.name }} - .rp-comment-context-quote {{ thread.content }} + span.rp-resolved-comment-context-file {{ doc.doc.name }} + p.rp-resolved-comment-context-quote {{ thread.content }} .rp-comment( ng-repeat="comment in thread.messages track by comment.id" ) @@ -189,6 +189,15 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') | {{ comment.content }} .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} + .rp-comment.rp-comment-resolver + p.rp-comment-resolver-content + span.rp-entry-user( + style="color: hsl({{ thread.resolved_by_user.hue }}, 70%, 40%);" + ) {{ thread.resolved_by_user.name }}:  + | Marked as resolved. + .rp-entry-metadata + | {{ thread.resolved_at | date : 'MMM d, y h:mm a' }} + .rp-entry-actions a.rp-entry-button(href, ng-click="onUnresolve();") |  Re-open @@ -234,10 +243,10 @@ script(type='text/ng-template', id='addCommentEntryTemplate') script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') .resolved-comments - .resolved-comments-backdrop( - ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }" - ng-click="state.isOpen = !state.isOpen" - ) + //- .resolved-comments-backdrop( + //- ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }" + //- ng-click="state.isOpen = !state.isOpen" + //- ) a.resolved-comments-toggle( href ng-click="state.isOpen = !state.isOpen" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 103f566617..a41bb07958 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -297,7 +297,7 @@ define [ formatComment(comment) if thread.resolved_by_user? $scope.$broadcast "comment:resolve_thread", thread_id - formatUser(thread.resolved_by_user) + thread.resolved_by_user = formatUser(thread.resolved_by_user) $scope.reviewPanel.commentThreads = threads refreshThreads() diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 5bdd85e71e..7f9457bcdf 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -20,13 +20,10 @@ define [ for fileId, fileEntries of scope.entries scope.resolvedCommentsPerFile[fileId] = {} for entryId, entry of fileEntries - if entry.type == "comment" and scope.threads[entry.thread_id].resolved? + if entry.type == "comment" and scope.threads[entry.thread_id]?.resolved? scope.resolvedCommentsPerFile[fileId][entryId] = angular.copy scope.threads[entry.thread_id] scope.resolvedCommentsPerFile[fileId][entryId].content = entry.content - console.log scope.resolvedCommentsPerFile - - scope.$watchCollection "entries", filterResolvedComments scope.$watchCollection "threads", filterResolvedComments diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 48c37e0159..16a52fbabe 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -226,7 +226,6 @@ } .rp-state-overview & { border-radius: 0; - padding: 2px 5px; border-bottom: solid 1px @rp-border-grey; cursor: pointer; } @@ -274,10 +273,6 @@ display: flex; align-items: center; padding: 4px 5px; - - .rp-state-overview & { - padding: 0; - } } .rp-entry-action-icon { font-size: @rp-icon-large-size; @@ -292,6 +287,10 @@ .rp-entry-details { line-height: 1.4; margin-left: 5px; + + .rp-state-overview & { + margin-left: 0; + } } .rp-entry-metadata { @@ -299,6 +298,7 @@ } .rp-entry-user { font-weight: @rp-semibold-weight; + font-style: normal; } .rp-content-highlight { @@ -336,13 +336,20 @@ line-height: 1.4; border-bottom: solid 1px @rp-border-grey; + + &:last-child { margin-bottom: 2px; border-bottom-width: 0; } .rp-state-overview & { - padding: 0; + margin: 4px 5px; + + &:first-child { + margin-top: 0; + padding-top: 4px; + } } } .rp-comment-content { @@ -355,13 +362,17 @@ font-size: @rp-small-font-size; margin: 0; } + + .rp-comment-resolver { + color: @rp-type-blue; + font-style: italic; + } + .rp-comment-resolver-content { + margin: 0; + } .rp-comment-reply { padding: 0 5px; - - .rp-state-overview & { - padding: 3px 0 0; - } } .rp-add-comment-btn { @@ -396,6 +407,26 @@ } } +.rp-resolved-comment { + border-left: solid @rp-entry-ribbon-width @rp-yellow; + border-radius: 3px; + background-color: #FFF; + margin-bottom: 5px; +} + .rp-resolved-comment-context { + background-color: lighten(@rp-yellow, 35%); + padding: 4px 5px; + } + .rp-resolved-comment-context-file { + font-weight: @rp-semibold-weight; + } + + .rp-resolved-comment-context-quote { + color: #000; + font-family: @font-family-monospace; + margin: 0; + } + .rp-entry-callout { .rp-state-current-file & { position: absolute; @@ -653,19 +684,19 @@ } } -.resolved-comments-backdrop { - display: none; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: rgba(0, 0, 0, .5); +// .resolved-comments-backdrop { +// display: none; +// position: fixed; +// top: 0; +// right: 0; +// bottom: 0; +// left: 0; +// background-color: rgba(0, 0, 0, .5); - &-visible { - display: block; - } -} +// &-visible { +// display: block; +// } +// } .resolved-comments-dropdown { display: none; @@ -673,7 +704,7 @@ width: 300px; background-color: @rp-bg-blue; text-align: left; - padding: 5px; + padding: 5px 5px 0; border-radius: 3px; &-open { From 037b61cbba7d29c577c88a7b7ff9b3db096638be Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 6 Jan 2017 17:22:22 +0000 Subject: [PATCH 040/204] Further styling. --- .../stylesheets/app/editor/review-panel.less | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 16a52fbabe..204191f418 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -365,9 +365,9 @@ .rp-comment-resolver { color: @rp-type-blue; - font-style: italic; } .rp-comment-resolver-content { + font-style: italic; margin: 0; } @@ -702,10 +702,22 @@ display: none; position: absolute; width: 300px; + left: -150px; + margin-top: @rp-entry-arrow-width * 1.5; + margin-left: 1em; background-color: @rp-bg-blue; text-align: left; padding: 5px 5px 0; border-radius: 3px; + box-shadow: 0 0 20px 10px rgba(0, 0, 0, .3); + + &::before { + content: ''; + .triangle(top, @rp-entry-arrow-width * 3, @rp-entry-arrow-width * 1.5, @rp-bg-blue); + top: -@rp-entry-ribbon-width * 2; + left: 50%; + margin-left: -@rp-entry-arrow-width * .75; + } &-open { display: block; From ae30f32481ca7ebbeeed34c260409aa3cec41a3a Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 10:49:03 +0100 Subject: [PATCH 041/204] Use deterministic ids based on a seed --- .../public/coffee/ide/editor/Document.coffee | 7 ++++ .../coffee/ide/editor/EditorManager.coffee | 3 -- .../coffee/ide/editor/ShareJsDoc.coffee | 6 ++-- .../editor/sharejs/vendor/client/doc.coffee | 2 ++ .../ide/review-panel/RangesTracker.coffee | 34 ++++++++----------- .../controllers/ReviewPanelController.coffee | 21 +++++++++++- 6 files changed, 47 insertions(+), 26 deletions(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 229e281dd8..6984479b21 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -83,6 +83,9 @@ define [ setTrackingChanges: (track_changes) -> @doc.track_changes = track_changes + + setTrackChangesIdSeeds: (id_seeds) -> + @doc.track_changes_id_seeds = id_seeds _bindToSocketEvents: () -> @_onUpdateAppliedHandler = (update) => @_onUpdateApplied(update) @@ -319,6 +322,8 @@ define [ v: version @doc.on "change", (ops, oldSnapshot, msg) => @_applyOpsToRanges(ops, oldSnapshot, msg) + @doc.on "flipped_pending_to_inflight", () => + @trigger "flipped_pending_to_inflight" _onError: (error, meta = {}) -> meta.doc_id = @doc_id @@ -335,6 +340,8 @@ define [ _applyOpsToRanges: (ops = [], oldSnapshot, msg) -> track_changes_as = null remote_op = msg? + if msg.meta?.tc? + @ranges.setIdSeed(msg.meta.tc) if remote_op and msg.meta?.tc track_changes_as = msg.meta.user_id else if !remote_op and @track_changes_as? diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index b7fccc29af..629e1a4cb3 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -166,14 +166,11 @@ define [ if want == have return - console.log "Trying to set track changes to:", want do tryToggle = () => saved = !doc.getInflightOp()? and !doc.getPendingOp()? if saved - console.log "SUCCESS, changing value", want doc.setTrackingChanges(want) @$scope.$apply () => @$scope.editor.trackChanges = want else - console.log "Still in flight, will try soon" @_syncTimeout = setTimeout tryToggle, 100 diff --git a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee index 48a7bbf3c6..f580c56f77 100644 --- a/services/web/public/coffee/ide/editor/ShareJsDoc.coffee +++ b/services/web/public/coffee/ide/editor/ShareJsDoc.coffee @@ -24,7 +24,7 @@ define [ return if @track_changes update.meta ?= {} - update.meta.tc = 1 + update.meta.tc = @track_changes_id_seeds.inflight @socket.emit "applyOtUpdate", @doc_id, update, (error) => return @_handleError(error) if error? state: "ok" @@ -44,6 +44,8 @@ define [ # ops as quickly as possible for low latency. @_doc.setFlushDelay(0) @trigger "remoteop", args... + @_doc.on "flipped_pending_to_inflight", () => + @trigger "flipped_pending_to_inflight" @_doc.on "error", (e) => @_handleError(e) @@ -117,7 +119,7 @@ define [ attachToAce: (ace) -> @_doc.attach_ace(ace, false, window.maxDocLength) detachFromAce: () -> @_doc.detach_ace?() - + INFLIGHT_OP_TIMEOUT: 5000 # Retry sending ops after 5 seconds without an ack WAIT_FOR_CONNECTION_TIMEOUT: 500 # If we're waiting for the project to join, try again in 0.5 seconds _startInflightOpTimeout: (update) -> diff --git a/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee b/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee index 301c4d5e04..aca3560b49 100644 --- a/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee +++ b/services/web/public/coffee/ide/editor/sharejs/vendor/client/doc.coffee @@ -266,6 +266,8 @@ class Doc @pendingOp = null @pendingCallbacks = [] + @emit "flipped_pending_to_inflight" + #console.log "SENDING OP TO SERVER", @inflightOp, @version @connection.send {doc:@name, op:@inflightOp, v:@version} diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 6ff301e803..36ef621493 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -36,24 +36,18 @@ load = (EventEmitter) -> # middle of a previous insert by the first user, the original insert will be split into two. constructor: (@changes = [], @comments = []) -> - @_increment: 0 - @newId: () -> - # Generate a Mongo ObjectId - # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js - @_pid ?= Math.floor(Math.random() * (32767)) - @_machine ?= Math.floor(Math.random() * (16777216)) - timestamp = Math.floor(new Date().valueOf() / 1000) - @_increment++ - - timestamp = timestamp.toString(16) - machine = @_machine.toString(16) - pid = @_pid.toString(16) - increment = @_increment.toString(16) - - return '00000000'.substr(0, 8 - timestamp.length) + timestamp + - '000000'.substr(0, 6 - machine.length) + machine + - '0000'.substr(0, 4 - pid.length) + pid + - '000000'.substr(0, 6 - increment.length) + increment; + getIdSeed: () -> + return @id_seed + + setIdSeed: (seed) -> + @id_seed = seed + @id_increment = 0 + + newId: () -> + @id_increment++ + increment = @id_increment.toString(16) + id = @id_seed + '000000'.substr(0, 6 - increment.length) + increment; + return id getComment: (comment_id) -> comment = null @@ -99,7 +93,7 @@ load = (EventEmitter) -> addComment: (op, metadata) -> # TODO: Don't allow overlapping comments? @comments.push comment = { - id: RangesTracker.newId() + id: @newId() op: # Copy because we'll modify in place c: op.c p: op.p @@ -390,7 +384,7 @@ load = (EventEmitter) -> _addOp: (op, metadata) -> change = { - id: RangesTracker.newId() + id: @newId() op: op metadata: metadata } diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 103f566617..4a5c02ba01 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -75,12 +75,17 @@ define [ if view == $scope.SubViews.OVERVIEW refreshOverviewPanel() - $scope.$watch "editor.sharejs_doc", (doc) -> + $scope.$watch "editor.sharejs_doc", (doc, old_doc) -> return if !doc? # The open doc range tracker is kept up to date in real-time so # replace any outdated info with this rangesTrackers[doc.doc_id] = doc.ranges $scope.reviewPanel.rangesTracker = rangesTrackers[doc.doc_id] + if old_doc? + old_doc.off "flipped_pending_to_inflight" + doc.on "flipped_pending_to_inflight", () -> + regenerateTrackChangesId(doc) + regenerateTrackChangesId(doc) $scope.$watch (() -> entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] or {} @@ -94,6 +99,20 @@ define [ $scope.$broadcast "review-panel:toggle" $scope.$broadcast "review-panel:layout" + regenerateTrackChangesId = (doc) -> + old_id = getChangeTracker(doc.doc_id).getIdSeed() + # Generate a the first 18 characters of Mongo ObjectId, leaving 6 for the increment part + # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js + pid = Math.floor(Math.random() * (32767)).toString(16) + machine = Math.floor(Math.random() * (16777216)).toString(16) + timestamp = Math.floor(new Date().valueOf() / 1000).toString(16) + new_id = '00000000'.substr(0, 8 - timestamp.length) + timestamp + + '000000'.substr(0, 6 - machine.length) + machine + + '0000'.substr(0, 4 - pid.length) + pid + + getChangeTracker(doc.doc_id).setIdSeed(new_id) + doc.setTrackChangesIdSeeds({pending: new_id, inflight: old_id}) + refreshOverviewPanel = () -> $scope.reviewPanel.overview.loading = true $http.get "/project/#{$scope.project_id}/ranges" From 14c624614d695c9e71661c51a55d0158638568fb Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 10:51:55 +0100 Subject: [PATCH 042/204] Update RangesTracker --- services/web/public/coffee/ide/review-panel/RangesTracker.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 36ef621493..09d471d476 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -35,6 +35,7 @@ load = (EventEmitter) -> # * Inserts by another user will not combine with inserts by the first user. If they are in the # middle of a previous insert by the first user, the original insert will be split into two. constructor: (@changes = [], @comments = []) -> + @setIdSeed("") getIdSeed: () -> return @id_seed From 9379cff89d3f5dff680478c12f4d8b1776f9eab8 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 15:25:27 +0100 Subject: [PATCH 043/204] Add end point for accepting change in doc updater --- .../DocumentUpdaterHandler.coffee | 24 +++++++---- .../Features/Ranges/RangesController.coffee | 8 ++++ services/web/app/coffee/router.coffee | 1 + .../public/coffee/ide/editor/Document.coffee | 2 +- .../controllers/ReviewPanelController.coffee | 3 +- .../DocumentUpdaterHandlerTests.coffee | 38 +++++++++++++++- .../GetNumberOfDocsInMemoryTests.coffee | 43 ------------------- 7 files changed, 63 insertions(+), 56 deletions(-) delete mode 100644 services/web/test/UnitTests/coffee/DocumentUpdater/GetNumberOfDocsInMemoryTests.coffee diff --git a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee index 9b3364f8ad..bb4922704f 100644 --- a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee +++ b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee @@ -137,15 +137,21 @@ module.exports = DocumentUpdaterHandler = logger.error project_id:project_id, doc_id:doc_id, url: url, "doc updater returned a non-success status code: #{res.statusCode}" callback new Error("doc updater returned a non-success status code: #{res.statusCode}") - getNumberOfDocsInMemory : (callback)-> - request.get "#{settings.apis.documentupdater.url}/total", (err, req, body)-> - try - body = JSON.parse body - catch err - logger.err err:err, "error parsing response from doc updater about the total number of docs" - callback(err, body?.total) - - + acceptChange: (project_id, doc_id, change_id, callback = (error) ->) -> + timer = new metrics.Timer("accept-change") + url = "#{settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}/change/#{change_id}/accept" + logger.log {project_id, doc_id, change_id}, "accepting change in document updater" + request.post url, (error, res, body)-> + timer.done() + if error? + logger.error {err:error, project_id, doc_id, change_id}, "error accepting change in doc updater" + return callback(error) + if res.statusCode >= 200 and res.statusCode < 300 + logger.log {project_id, doc_id, change_id}, "accepted change in document updater" + return callback(null) + else + logger.error {project_id, doc_id, change_id}, "doc updater returned a non-success status code: #{res.statusCode}" + callback new Error("doc updater returned a non-success status code: #{res.statusCode}") PENDINGUPDATESKEY = "PendingUpdates" DOCLINESKEY = "doclines" diff --git a/services/web/app/coffee/Features/Ranges/RangesController.coffee b/services/web/app/coffee/Features/Ranges/RangesController.coffee index 78457c2e64..0c740cf892 100644 --- a/services/web/app/coffee/Features/Ranges/RangesController.coffee +++ b/services/web/app/coffee/Features/Ranges/RangesController.coffee @@ -1,6 +1,7 @@ RangesManager = require "./RangesManager" logger = require "logger-sharelatex" UserInfoController = require "../User/UserInfoController" +DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" module.exports = RangesController = getAllRanges: (req, res, next) -> @@ -18,3 +19,10 @@ module.exports = RangesController = return next(error) if error? users = (UserInfoController.formatPersonalInfo(user) for user in users) res.json users + + acceptChange: (req, res, next) -> + {project_id, doc_id, change_id} = req.params + logger.log {project_id, doc_id, change_id}, "request to accept change" + DocumentUpdaterHandler.acceptChange project_id, doc_id, change_id, (error) -> + return next(error) if error? + res.send 204 diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 1332a2d7e5..1d032c74ac 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -179,6 +179,7 @@ module.exports = class Router webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRanges webRouter.get "/project/:project_id/ranges/users", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRangesUsers + webRouter.post "/project/:project_id/doc/:doc_id/changes/:change_id/accept", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, RangesController.acceptChange webRouter.get '/Project/:Project_id/download/zip', AuthorizationMiddlewear.ensureUserCanReadProject, ProjectDownloadsController.downloadProject webRouter.get '/project/download/zip', AuthorizationMiddlewear.ensureUserCanReadMultipleProjects, ProjectDownloadsController.downloadMultipleProjects diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 6984479b21..d037aeb165 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -340,7 +340,7 @@ define [ _applyOpsToRanges: (ops = [], oldSnapshot, msg) -> track_changes_as = null remote_op = msg? - if msg.meta?.tc? + if msg?.meta?.tc? @ranges.setIdSeed(msg.meta.tc) if remote_op and msg.meta?.tc track_changes_as = msg.meta.user_id diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 70edf939ad..5fdc14f5e5 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -200,8 +200,9 @@ define [ $scope.$broadcast "review-panel:recalculate-screen-positions" $scope.$broadcast "review-panel:layout" - + $scope.acceptChange = (entry_id) -> + $http.post "/project/#{$scope.project_id}/doc/#{$scope.editor.open_doc_id}/changes/#{entry_id}/accept", {_csrf: window.csrfToken} $scope.$broadcast "change:accept", entry_id $scope.rejectChange = (entry_id) -> diff --git a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee index eca005f295..3bde5e991a 100644 --- a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee @@ -8,8 +8,7 @@ path = require 'path' _ = require 'underscore' modulePath = path.join __dirname, '../../../../app/js/Features/DocumentUpdater/DocumentUpdaterHandler' -describe 'DocumentUpdaterHandler - Flushing documents :', -> - +describe 'DocumentUpdaterHandler', -> beforeEach -> @project_id = "project-id-923" @doc_id = "doc-id-394" @@ -296,3 +295,38 @@ describe 'DocumentUpdaterHandler - Flushing documents :', -> @callback .calledWith(new Error("doc updater returned failure status code: 500")) .should.equal true + + describe "acceptChange", -> + beforeEach -> + @change_id = "mock-change-id-1" + @callback = sinon.stub() + + describe "successfully", -> + beforeEach -> + @request.post = sinon.stub().callsArgWith(1, null, {statusCode: 200}, @body) + @handler.acceptChange @project_id, @doc_id, @change_id, @callback + + it 'should accept the change in the document updater', -> + url = "#{@settings.apis.documentupdater.url}/project/#{@project_id}/doc/#{@doc_id}/change/#{@change_id}/accept" + @request.post.calledWith(url).should.equal true + + it "should call the callback", -> + @callback.calledWith(null).should.equal true + + describe "when the document updater API returns an error", -> + beforeEach -> + @request.post = sinon.stub().callsArgWith(1, @error = new Error("something went wrong"), null, null) + @handler.acceptChange @project_id, @doc_id, @change_id, @callback + + it "should return an error to the callback", -> + @callback.calledWith(@error).should.equal true + + describe "when the document updater returns a failure error code", -> + beforeEach -> + @request.post = sinon.stub().callsArgWith(1, null, { statusCode: 500 }, "") + @handler.acceptChange @project_id, @doc_id, @change_id, @callback + + it "should return the callback with an error", -> + @callback + .calledWith(new Error("doc updater returned failure status code: 500")) + .should.equal true diff --git a/services/web/test/UnitTests/coffee/DocumentUpdater/GetNumberOfDocsInMemoryTests.coffee b/services/web/test/UnitTests/coffee/DocumentUpdater/GetNumberOfDocsInMemoryTests.coffee deleted file mode 100644 index 213fd2257b..0000000000 --- a/services/web/test/UnitTests/coffee/DocumentUpdater/GetNumberOfDocsInMemoryTests.coffee +++ /dev/null @@ -1,43 +0,0 @@ -path = require("path") -sinon = require("sinon") -SandboxedModule = require('sandboxed-module') - -modulePath = path.join __dirname, '../../../../app/js/Features/DocumentUpdater/DocumentUpdaterHandler' - -describe "getNumberOfDocsInMemory", -> - beforeEach -> - @host = "doc.updater" - @noOfDocs = 42 - @callback = sinon.stub() - @DocumentUpdateHandler = SandboxedModule.require modulePath, requires: - "redis-sharelatex" : - createClient: () -> - auth:-> - "soa-req-id": null - "logger-sharelatex": @logger = - log: sinon.stub() - error: sinon.stub() - "../../infrastructure/Metrics" : @metrics - "../../Features/Project/ProjectLocator": @ProjectLocator = {} - "../../models/Project":Project:{} - "request" : defaults: () => @request = {} - "settings-sharelatex": - apis: documentupdater: url: @host - redis: web:{} - - - @request.get = sinon.stub().callsArgWith(1, null, {statusCode: 200}, JSON.stringify(total: @noOfDocs)) - @DocumentUpdateHandler.getNumberOfDocsInMemory @callback - - it "should call the doc updater", -> - @request.get - .calledWith("#{@host}/total") - .should.equal true - - it "should return the number of docs", -> - @callback - .calledWith(null, @noOfDocs) - .should.equal true - - - From 4871d56725dc75a2e50360e370c517bb2ba3076e Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 9 Jan 2017 14:30:29 +0000 Subject: [PATCH 044/204] Isolate overview panel overrides. --- .../review-panel/controllers/ReviewPanelController.coffee | 7 ++----- .../web/public/stylesheets/app/editor/review-panel.less | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 70edf939ad..b311a5e0f1 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -55,11 +55,7 @@ define [ $reviewPanelEl.css "right", "#{ scrollbar.scrollbarWidth }px" else $reviewPanelEl.css "right", "0" - - $scope.$watch "reviewPanel.subView", (subView) -> - return if !subView? - updateScrollbar() - + $scope.$watch "ui.reviewPanelOpen", (open) -> return if !open? if !open @@ -72,6 +68,7 @@ define [ $scope.$watch "reviewPanel.subView", (view) -> return if !view? + updateScrollbar() if view == $scope.SubViews.OVERVIEW refreshOverviewPanel() diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 204191f418..6219ec2e59 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -137,7 +137,6 @@ bottom: 0; } - .rp-state-overview & { flex-grow: 2; overflow-y: auto; @@ -314,7 +313,7 @@ .rp-entry-actions { display: flex; - .rp-state-overview & { + .rp-entry-list .rp-state-overview & { display: none; } } @@ -336,14 +335,12 @@ line-height: 1.4; border-bottom: solid 1px @rp-border-grey; - - &:last-child { margin-bottom: 2px; border-bottom-width: 0; } - .rp-state-overview & { + .rp-entry-list .rp-state-overview & { margin: 4px 5px; &:first-child { From 7e33d1a24e15b0b27c03bb4831a981ccbf4e389d Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 15:30:48 +0100 Subject: [PATCH 045/204] Fix generation of thread id --- .../controllers/ReviewPanelController.coffee | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 5fdc14f5e5..6fbbc6139d 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -99,17 +99,22 @@ define [ $scope.$broadcast "review-panel:toggle" $scope.$broadcast "review-panel:layout" - regenerateTrackChangesId = (doc) -> - old_id = getChangeTracker(doc.doc_id).getIdSeed() + generatePartialMongoId = () -> # Generate a the first 18 characters of Mongo ObjectId, leaving 6 for the increment part # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js pid = Math.floor(Math.random() * (32767)).toString(16) machine = Math.floor(Math.random() * (16777216)).toString(16) timestamp = Math.floor(new Date().valueOf() / 1000).toString(16) - new_id = '00000000'.substr(0, 8 - timestamp.length) + timestamp + + return '00000000'.substr(0, 8 - timestamp.length) + timestamp + '000000'.substr(0, 6 - machine.length) + machine + '0000'.substr(0, 4 - pid.length) + pid - + + generateFullMongoId = () -> + return generatePartialMongoId() + "000000" + + regenerateTrackChangesId = (doc) -> + old_id = getChangeTracker(doc.doc_id).getIdSeed() + new_id = generatePartialMongoId() getChangeTracker(doc.doc_id).setIdSeed(new_id) doc.setTrackChangesIdSeeds({pending: new_id, inflight: old_id}) @@ -214,7 +219,7 @@ define [ $scope.$broadcast "review-panel:layout" $scope.submitNewComment = (content) -> - thread_id = RangesTracker.newId() + thread_id = generateFullMongoId() $scope.$broadcast "comment:add", thread_id $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) .error (error) -> From 43f6b9de7c4e6b5d751cff82a23b5ec788371ce1 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 15:54:12 +0100 Subject: [PATCH 046/204] Inform other clients when we accept a change --- .../Features/Ranges/RangesController.coffee | 2 ++ .../controllers/ReviewPanelController.coffee | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/Ranges/RangesController.coffee b/services/web/app/coffee/Features/Ranges/RangesController.coffee index 0c740cf892..4b2c1449a3 100644 --- a/services/web/app/coffee/Features/Ranges/RangesController.coffee +++ b/services/web/app/coffee/Features/Ranges/RangesController.coffee @@ -2,6 +2,7 @@ RangesManager = require "./RangesManager" logger = require "logger-sharelatex" UserInfoController = require "../User/UserInfoController" DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" +EditorRealTimeController = require("../Editor/EditorRealTimeController") module.exports = RangesController = getAllRanges: (req, res, next) -> @@ -25,4 +26,5 @@ module.exports = RangesController = logger.log {project_id, doc_id, change_id}, "request to accept change" DocumentUpdaterHandler.acceptChange project_id, doc_id, change_id, (error) -> return next(error) if error? + EditorRealTimeController.emitToRoom project_id, "accept-change", doc_id, change_id, (err)-> res.send 204 diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 6fbbc6139d..6793c1fc81 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -34,6 +34,15 @@ define [ $scope.$apply() $timeout () -> $scope.$broadcast "review-panel:layout" + + ide.socket.on "accept-change", (doc_id, change_id) -> + console.log "Got remote accept change", doc_id, change_id + if doc_id != $scope.editor.open_doc_id + getChangeTracker(doc_id).removeChangeId(change_id) + else + $scope.$broadcast "change:accept", change_id + updateEntries(doc_id) + $scope.$apply () -> rangesTrackers = {} @@ -124,13 +133,12 @@ define [ .success (docs) -> for doc in docs if doc.id != $scope.editor.open_doc_id # this is kept up to date in real-time, don't overwrite - rangesTrackers[doc.id] ?= new RangesTracker() - rangesTrackers[doc.id].comments = doc.ranges?.comments or [] - rangesTrackers[doc.id].changes = doc.ranges?.changes or [] + rangesTracker = getChangeTracker(doc.id) + rangesTracker.comments = doc.ranges?.comments or [] + rangesTracker.changes = doc.ranges?.changes or [] updateEntries(doc.id) $scope.reviewPanel.overview.loading = false .error (error) -> - console.log "loading ranges errored", error $scope.reviewPanel.overview.loading = false updateEntries = (doc_id) -> From 037389b7dd071185625c1f6d4afc20c540061822 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 9 Jan 2017 14:59:01 +0000 Subject: [PATCH 047/204] Decouple ranges update from the overview panel; integrate it with the dropdown. --- .../views/project/editor/review-panel.jade | 9 +++++-- .../controllers/ReviewPanelController.coffee | 25 ++++++++++++++++--- .../resolvedCommentsDropdown.coffee | 15 ++++++++--- .../stylesheets/app/editor/review-panel.less | 9 +++++-- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index e8bddadf49..40c54b6888 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -4,6 +4,8 @@ entries="reviewPanel.entries" threads="reviewPanel.commentThreads" docs="docs" + on-open="refreshResolvedCommentsDropdown();" + is-loading="reviewPanel.dropdown.loading" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is strong off @@ -50,7 +52,7 @@ .rp-entry-list( ng-if="reviewPanel.subView === SubViews.OVERVIEW" ) - .rp-overview-loading(ng-if="reviewPanel.overview.loading") + .rp-loading(ng-if="reviewPanel.overview.loading") i.fa.fa-spinner.fa-spin .rp-overview-file( ng-repeat="doc in docs" @@ -249,13 +251,16 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') //- ) a.resolved-comments-toggle( href - ng-click="state.isOpen = !state.isOpen" + ng-click="toggleOpenState();" ) i.fa.fa-inbox .resolved-comments-dropdown( ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }" ) + .rp-loading(ng-if="isLoading") + i.fa.fa-spinner.fa-spin div( + ng-if="!isLoading" ng-repeat="doc in docs" ) resolved-comment-entry( diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index f7aa4ae19c..87d4b2eeb1 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -18,6 +18,8 @@ define [ openSubView: $scope.SubViews.CUR_FILE overview: loading: false + dropdown: + loading: false commentThreads: {} $scope.commentState = @@ -115,8 +117,7 @@ define [ getChangeTracker(doc.doc_id).setIdSeed(new_id) doc.setTrackChangesIdSeeds({pending: new_id, inflight: old_id}) - refreshOverviewPanel = () -> - $scope.reviewPanel.overview.loading = true + refreshRanges = () -> $http.get "/project/#{$scope.project_id}/ranges" .success (docs) -> for doc in docs @@ -125,11 +126,27 @@ define [ rangesTrackers[doc.id].comments = doc.ranges?.comments or [] rangesTrackers[doc.id].changes = doc.ranges?.changes or [] updateEntries(doc.id) - $scope.reviewPanel.overview.loading = false + # $scope.reviewPanel.overview.loading = false .error (error) -> console.log "loading ranges errored", error + # $scope.reviewPanel.overview.loading = false + + refreshOverviewPanel = () -> + $scope.reviewPanel.overview.loading = true + refreshRanges() + .then () -> $scope.reviewPanel.overview.loading = false - + .catch () -> + $scope.reviewPanel.overview.loading = false + + $scope.refreshResolvedCommentsDropdown = () -> + $scope.reviewPanel.dropdown.loading = true + refreshRanges() + .then () -> + $scope.reviewPanel.dropdown.loading = false + .catch () -> + $scope.reviewPanel.dropdown.loading = false + updateEntries = (doc_id) -> rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 7f9457bcdf..b909948d55 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -5,13 +5,22 @@ define [ restrict: "E" templateUrl: "resolvedCommentsDropdownTemplate" scope: - entries : "=" - threads : "=" - docs : "=" + entries : "=" + threads : "=" + docs : "=" + onOpen : "&" + isLoading : "=" + link: (scope, element, attrs) -> scope.state = isOpen: false + scope.toggleOpenState = () -> + scope.state.isOpen = !scope.state.isOpen + if (scope.state.isOpen) + console.log('will call stuff') + scope.onOpen() + scope.resolvedCommentsPerFile = {} filterResolvedComments = () -> diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 6219ec2e59..2d02361b54 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -313,7 +313,7 @@ .rp-entry-actions { display: flex; - .rp-entry-list .rp-state-overview & { + .rp-state-overview .rp-entry-list & { display: none; } } @@ -340,7 +340,7 @@ border-bottom-width: 0; } - .rp-entry-list .rp-state-overview & { + .rp-state-overview .rp-entry-list & { margin: 4px 5px; &:first-child { @@ -498,6 +498,11 @@ text-align: center; } +.rp-loading { + text-align: center; + padding: 5px; +} + .rp-nav { display: flex; flex-shrink: 0; From dbe5331566dd4280f16c6a22289550b71e9a8c58 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 16:09:29 +0100 Subject: [PATCH 048/204] Tell other clients when comments are resolved and reopened --- .../controllers/ReviewPanelController.coffee | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 6793c1fc81..4bc7266feb 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -43,6 +43,12 @@ define [ $scope.$broadcast "change:accept", change_id updateEntries(doc_id) $scope.$apply () -> + + ide.socket.on "resolve-thread", (thread_id, user) -> + _onCommentResolved(thread_id, user) + + ide.socket.on "reopen-thread", (thread_id) -> + _onCommentReopened(thread_id) rangesTrackers = {} @@ -265,20 +271,26 @@ define [ $scope.resolveComment = (entry, entry_id) -> entry.showWhenResolved = false entry.focused = false - thread = $scope.reviewPanel.commentThreads[entry.thread_id] - thread.resolved = true - thread.resolved_by_user = formatUser(ide.$scope.user) - thread.resolved_at = new Date() $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} - $scope.$broadcast "comment:resolve_thread", entry.thread_id - + _onCommentResolved(entry.thread_id, ide.$scope.user) + $scope.unresolveComment = (entry, entry_id) -> - thread = $scope.reviewPanel.commentThreads[entry.thread_id] + _onCommentReopened(entry.thread_id) + $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/reopen", {_csrf: window.csrfToken} + + _onCommentResolved = (thread_id, user) -> + thread = $scope.reviewPanel.commentThreads[thread_id] + thread.resolved = true + thread.resolved_by_user = formatUser(user) + thread.resolved_at = new Date() + $scope.$broadcast "comment:resolve_thread", thread_id + + _onCommentReopened = (thread_id) -> + thread = $scope.reviewPanel.commentThreads[thread_id] delete thread.resolved delete thread.resolved_by_user delete thread.resolved_at - $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/reopen", {_csrf: window.csrfToken} - $scope.$broadcast "comment:unresolve_thread", entry.thread_id + $scope.$broadcast "comment:unresolve_thread", thread_id $scope.deleteComment = (entry_id) -> $scope.$broadcast "comment:remove", entry_id From 1a100b77df85ca4e53de60eec9cbf7fa54582931 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 9 Jan 2017 15:15:03 +0000 Subject: [PATCH 049/204] Hide resolved comments from the review panel. --- services/web/app/views/project/editor/review-panel.jade | 4 ++-- .../review-panel/directives/resolvedCommentsDropdown.coffee | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 40c54b6888..91f0b762f7 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -32,7 +32,7 @@ on-indicator-click="toggleReviewPanel();" ) - div(ng-if="entry.type === 'comment'") + div(ng-if="entry.type === 'comment' && !(reviewPanel.commentThreads[entry.thread_id].resolved === true)") comment-entry( entry="entry" threads="reviewPanel.commentThreads" @@ -73,7 +73,7 @@ ng-click="gotoEntry(doc_id, entry)" ) - div(ng-if="entry.type === 'comment'") + div(ng-if="entry.type === 'comment' && !(reviewPanel.commentThreads[entry.thread_id].resolved === true)") comment-entry( entry="entry" threads="reviewPanel.commentThreads" diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index b909948d55..df3299de51 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -18,7 +18,6 @@ define [ scope.toggleOpenState = () -> scope.state.isOpen = !scope.state.isOpen if (scope.state.isOpen) - console.log('will call stuff') scope.onOpen() scope.resolvedCommentsPerFile = {} From 4e128b6ab7e008eefdb2821edd06d2c442af6a3c Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 9 Jan 2017 17:25:06 +0100 Subject: [PATCH 050/204] Send user data in /threads dat --- .../coffee/Features/Chat/ChatController.coffee | 2 +- .../Features/Comments/CommentsController.coffee | 2 +- .../Comments/CommentsControllerTests.coffee | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/services/web/app/coffee/Features/Chat/ChatController.coffee b/services/web/app/coffee/Features/Chat/ChatController.coffee index 7e4e190290..3090f4f108 100644 --- a/services/web/app/coffee/Features/Chat/ChatController.coffee +++ b/services/web/app/coffee/Features/Chat/ChatController.coffee @@ -28,7 +28,7 @@ module.exports = logger.log project_id:project_id, query:query, "getting messages" ChatApiHandler.getGlobalMessages project_id, query.limit, query.before, (err, messages) -> return next(err) if err? - CommentsController._injectUserInfoIntoThreads [{ messages: messages }], (err) -> + CommentsController._injectUserInfoIntoThreads {global: { messages: messages }}, (err) -> return next(err) if err? logger.log length: messages?.length, "sending messages to client" res.json messages diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee index 20346dccbb..ee9b8b9f84 100644 --- a/services/web/app/coffee/Features/Comments/CommentsController.coffee +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -62,7 +62,7 @@ module.exports = CommentsController = callback null, user jobs = [] - for thread in threads + for thread_id, thread of threads do (thread) -> if thread.resolved jobs.push (cb) -> diff --git a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee index ecf57abd2e..cbc24bca1f 100644 --- a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee @@ -151,8 +151,8 @@ describe "CommentsController", -> return { "formatted": user["mock"] } it "should inject a user object into messaged and resolved data", (done) -> - @CommentsController._injectUserInfoIntoThreads [ - { + @CommentsController._injectUserInfoIntoThreads { + thread1: { resolved: true resolved_by_user_id: "user_id_1" messages: [{ @@ -163,15 +163,15 @@ describe "CommentsController", -> content: "bar" }] }, - { + thread2: { messages: [{ user_id: "user_id_1" content: "baz" }] } - ], (error, threads) -> - expect(threads).to.deep.equal [ - { + }, (error, threads) -> + expect(threads).to.deep.equal { + thread1: { resolved: true resolved_by_user_id: "user_id_1" resolved_by_user: { "formatted": "user_1" } @@ -185,14 +185,14 @@ describe "CommentsController", -> content: "bar" }] }, - { + thread2: { messages: [{ user_id: "user_id_1" user: { "formatted": "user_1" } content: "baz" }] } - ] + } done() it "should only need to look up each user once", (done) -> From 70134d44d06839f08f1dc01d353ac59812e6bc5d Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 9 Jan 2017 17:22:01 +0000 Subject: [PATCH 051/204] Add unresolve action to the dropdown. --- services/web/app/views/project/editor/review-panel.jade | 8 +++++++- .../review-panel/controllers/ReviewPanelController.coffee | 6 +++--- .../review-panel/directives/resolvedCommentEntry.coffee | 4 ++-- .../directives/resolvedCommentsDropdown.coffee | 6 ++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 91f0b762f7..886f99ffe3 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -5,6 +5,7 @@ threads="reviewPanel.commentThreads" docs="docs" on-open="refreshResolvedCommentsDropdown();" + on-unresolve="unresolveComment(threadId);" is-loading="reviewPanel.dropdown.loading" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is @@ -201,7 +202,10 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') | {{ thread.resolved_at | date : 'MMM d, y h:mm a' }} .rp-entry-actions - a.rp-entry-button(href, ng-click="onUnresolve();") + a.rp-entry-button( + href + ng-click="onUnresolve({ 'threadId': threadId });" + ) |  Re-open a.rp-entry-button(href, ng-click="onDelete();") |  Delete @@ -265,7 +269,9 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ) resolved-comment-entry( ng-repeat="thread in resolvedCommentsPerFile[doc.doc.id]" + thread-id="thread.threadId" thread="thread" doc="doc" + on-unresolve="handleUnresolve(threadId);" ) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 8de7822ecd..d84c0cb354 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -285,9 +285,9 @@ define [ $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} _onCommentResolved(entry.thread_id, ide.$scope.user) - $scope.unresolveComment = (entry, entry_id) -> - _onCommentReopened(entry.thread_id) - $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/reopen", {_csrf: window.csrfToken} + $scope.unresolveComment = (thread_id) -> + _onCommentReopened(thread_id) + $http.post "/project/#{$scope.project_id}/thread/#{thread_id}/reopen", {_csrf: window.csrfToken} _onCommentResolved = (thread_id, user) -> thread = $scope.reviewPanel.commentThreads[thread_id] diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index e3691c1962..28acad8b99 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -5,7 +5,7 @@ define [ restrict: "E" templateUrl: "resolvedCommentEntryTemplate" scope: + threadId: "=" thread: "=" doc: "=" - onReopen: "&" - onDelete: "&" \ No newline at end of file + onUnresolve: "&" \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index df3299de51..e0144f9d94 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -9,6 +9,7 @@ define [ threads : "=" docs : "=" onOpen : "&" + onUnresolve : "&" isLoading : "=" link: (scope, element, attrs) -> @@ -22,6 +23,10 @@ define [ scope.resolvedCommentsPerFile = {} + scope.handleUnresolve = (threadId) -> + scope.onUnresolve({ threadId }) + filterResolvedComments() + filterResolvedComments = () -> scope.resolvedCommentsPerFile = {} @@ -31,6 +36,7 @@ define [ if entry.type == "comment" and scope.threads[entry.thread_id]?.resolved? scope.resolvedCommentsPerFile[fileId][entryId] = angular.copy scope.threads[entry.thread_id] scope.resolvedCommentsPerFile[fileId][entryId].content = entry.content + scope.resolvedCommentsPerFile[fileId][entryId].threadId = entry.thread_id scope.$watchCollection "entries", filterResolvedComments scope.$watchCollection "threads", filterResolvedComments From 32fb3178206bfb2e8014e6acbdcb0d4ebdc6b9b7 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 10 Jan 2017 10:33:54 +0000 Subject: [PATCH 052/204] Add delete action to the dropdown. --- services/web/app/views/project/editor/review-panel.jade | 8 +++++++- .../review-panel/controllers/ReviewPanelController.coffee | 3 +++ .../review-panel/directives/resolvedCommentEntry.coffee | 6 ++++-- .../directives/resolvedCommentsDropdown.coffee | 8 ++++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 886f99ffe3..4ad558ef90 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -6,6 +6,7 @@ docs="docs" on-open="refreshResolvedCommentsDropdown();" on-unresolve="unresolveComment(threadId);" + on-delete="deleteComment(entryId);" is-loading="reviewPanel.dropdown.loading" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is @@ -207,7 +208,10 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') ng-click="onUnresolve({ 'threadId': threadId });" ) |  Re-open - a.rp-entry-button(href, ng-click="onDelete();") + a.rp-entry-button( + href + ng-click="onDelete({ 'entryId': entryId });" + ) |  Delete @@ -269,9 +273,11 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ) resolved-comment-entry( ng-repeat="thread in resolvedCommentsPerFile[doc.doc.id]" + entry-id="thread.entryId" thread-id="thread.threadId" thread="thread" doc="doc" on-unresolve="handleUnresolve(threadId);" + on-delete="handleDelete(entryId);" ) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index d84c0cb354..a42915e648 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -231,6 +231,9 @@ define [ $scope.$broadcast "review-panel:recalculate-screen-positions" $scope.$broadcast "review-panel:layout" + $scope.$on "comment:removed", (comment) -> + console.log comment + $scope.acceptChange = (entry_id) -> $http.post "/project/#{$scope.project_id}/doc/#{$scope.editor.open_doc_id}/changes/#{entry_id}/accept", {_csrf: window.csrfToken} $scope.$broadcast "change:accept", entry_id diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index 28acad8b99..ad6e9f2099 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -4,8 +4,10 @@ define [ App.directive "resolvedCommentEntry", () -> restrict: "E" templateUrl: "resolvedCommentEntryTemplate" - scope: + scope: + entryId: "=" threadId: "=" thread: "=" doc: "=" - onUnresolve: "&" \ No newline at end of file + onUnresolve: "&" + onDelete: "&" \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index e0144f9d94..df7302d1d1 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -10,6 +10,7 @@ define [ docs : "=" onOpen : "&" onUnresolve : "&" + onDelete : "&" isLoading : "=" link: (scope, element, attrs) -> @@ -19,6 +20,7 @@ define [ scope.toggleOpenState = () -> scope.state.isOpen = !scope.state.isOpen if (scope.state.isOpen) + filterResolvedComments() scope.onOpen() scope.resolvedCommentsPerFile = {} @@ -27,6 +29,11 @@ define [ scope.onUnresolve({ threadId }) filterResolvedComments() + scope.handleDelete = (entryId) -> + scope.onDelete({ entryId }) + filterResolvedComments() + + filterResolvedComments = () -> scope.resolvedCommentsPerFile = {} @@ -37,6 +44,7 @@ define [ scope.resolvedCommentsPerFile[fileId][entryId] = angular.copy scope.threads[entry.thread_id] scope.resolvedCommentsPerFile[fileId][entryId].content = entry.content scope.resolvedCommentsPerFile[fileId][entryId].threadId = entry.thread_id + scope.resolvedCommentsPerFile[fileId][entryId].entryId = entryId scope.$watchCollection "entries", filterResolvedComments scope.$watchCollection "threads", filterResolvedComments From 12e1b2bc3dddb4f56b437931d3796b8768ba3085 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 11:55:59 +0100 Subject: [PATCH 053/204] Don't show resolved comments highlighted in the text --- .../track-changes/TrackChangesManager.coffee | 5 +-- .../ide/review-panel/RangesTracker.coffee | 15 ++++++++- .../controllers/ReviewPanelController.coffee | 32 ++++++++----------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 030aa8c252..836bcf7b9a 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -179,15 +179,12 @@ define [ removeCommentId: (comment_id) -> @rangesTracker.removeCommentId(comment_id) - RESOLVED_THREADS: {} resolveCommentByThreadId: (thread_id) -> - @RESOLVED_THREADS[thread_id] = true for comment in @rangesTracker?.comments or [] if comment.op.t == thread_id @_onCommentRemoved(comment) unresolveCommentByThreadId: (thread_id) -> - @RESOLVED_THREADS[thread_id] = false for comment in @rangesTracker?.comments or [] if comment.op.t == thread_id @_onCommentAdded(comment) @@ -332,7 +329,7 @@ define [ @broadcastChange() _onCommentAdded: (comment) -> - if @RESOLVED_THREADS[comment.op.t] + if @rangesTracker.resolvedThreadIds[comment.op.t] # Comment is resolved so shouldn't be displayed. return if !@changeIdToMarkerIdMap[comment.id]? diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 09d471d476..f2794f2c07 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -35,7 +35,7 @@ load = (EventEmitter) -> # * Inserts by another user will not combine with inserts by the first user. If they are in the # middle of a previous insert by the first user, the original insert will be split into two. constructor: (@changes = [], @comments = []) -> - @setIdSeed("") + @setIdSeed(RangesTracker.generateIdSeed()) getIdSeed: () -> return @id_seed @@ -43,6 +43,19 @@ load = (EventEmitter) -> setIdSeed: (seed) -> @id_seed = seed @id_increment = 0 + + @generateIdSeed: () -> + # Generate a the first 18 characters of Mongo ObjectId, leaving 6 for the increment part + # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js + pid = Math.floor(Math.random() * (32767)).toString(16) + machine = Math.floor(Math.random() * (16777216)).toString(16) + timestamp = Math.floor(new Date().valueOf() / 1000).toString(16) + return '00000000'.substr(0, 8 - timestamp.length) + timestamp + + '000000'.substr(0, 6 - machine.length) + machine + + '0000'.substr(0, 4 - pid.length) + pid + + @generateId: () -> + @generateId() + "000001" newId: () -> @id_increment++ diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index a42915e648..94e5d7809b 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -11,7 +11,7 @@ define [ CUR_FILE : "cur_file" OVERVIEW : "overview" - $scope.reviewPanel = + window.reviewPanel = $scope.reviewPanel = entries: {} hasEntries: false subView: $scope.SubViews.CUR_FILE @@ -53,13 +53,16 @@ define [ _onCommentReopened(thread_id) rangesTrackers = {} + resolvedThreadIds = {} getDocEntries = (doc_id) -> $scope.reviewPanel.entries[doc_id] ?= {} return $scope.reviewPanel.entries[doc_id] getChangeTracker = (doc_id) -> - rangesTrackers[doc_id] ?= new RangesTracker() + if !rangesTrackers[doc_id]? + rangesTrackers[doc_id] = new RangesTracker() + rangesTrackers[doc_id].resolvedThreadIds = resolvedThreadIds return rangesTrackers[doc_id] scrollbar = {} @@ -94,6 +97,7 @@ define [ # The open doc range tracker is kept up to date in real-time so # replace any outdated info with this rangesTrackers[doc.doc_id] = doc.ranges + rangesTrackers[doc.doc_id].resolvedThreadIds = resolvedThreadIds $scope.reviewPanel.rangesTracker = rangesTrackers[doc.doc_id] if old_doc? old_doc.off "flipped_pending_to_inflight" @@ -112,23 +116,10 @@ define [ $timeout () -> $scope.$broadcast "review-panel:toggle" $scope.$broadcast "review-panel:layout" - - generatePartialMongoId = () -> - # Generate a the first 18 characters of Mongo ObjectId, leaving 6 for the increment part - # Reference: https://github.com/dreampulse/ObjectId.js/blob/master/src/main/javascript/Objectid.js - pid = Math.floor(Math.random() * (32767)).toString(16) - machine = Math.floor(Math.random() * (16777216)).toString(16) - timestamp = Math.floor(new Date().valueOf() / 1000).toString(16) - return '00000000'.substr(0, 8 - timestamp.length) + timestamp + - '000000'.substr(0, 6 - machine.length) + machine + - '0000'.substr(0, 4 - pid.length) + pid - - generateFullMongoId = () -> - return generatePartialMongoId() + "000000" - + regenerateTrackChangesId = (doc) -> old_id = getChangeTracker(doc.doc_id).getIdSeed() - new_id = generatePartialMongoId() + new_id = RangesTracker.generateIdSeed() getChangeTracker(doc.doc_id).setIdSeed(new_id) doc.setTrackChangesIdSeeds({pending: new_id, inflight: old_id}) @@ -247,7 +238,7 @@ define [ $scope.$broadcast "review-panel:layout" $scope.submitNewComment = (content) -> - thread_id = generateFullMongoId() + thread_id = RangesTracker.generateId() $scope.$broadcast "comment:add", thread_id $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) .error (error) -> @@ -297,6 +288,7 @@ define [ thread.resolved = true thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() + resolvedThreadIds[thread_id] = true $scope.$broadcast "comment:resolve_thread", thread_id _onCommentReopened = (thread_id) -> @@ -304,6 +296,7 @@ define [ delete thread.resolved delete thread.resolved_by_user delete thread.resolved_at + delete resolvedThreadIds[thread_id] $scope.$broadcast "comment:unresolve_thread", thread_id $scope.deleteComment = (entry_id) -> @@ -351,12 +344,15 @@ define [ refreshThreads = () -> $http.get "/project/#{$scope.project_id}/threads" .success (threads) -> + for thread_id, _ of resolvedThreadIds + delete resolvedThreadIds[thread_id] for thread_id, thread of threads for comment in thread.messages formatComment(comment) if thread.resolved_by_user? $scope.$broadcast "comment:resolve_thread", thread_id thread.resolved_by_user = formatUser(thread.resolved_by_user) + resolvedThreadIds[thread_id] = true $scope.reviewPanel.commentThreads = threads refreshThreads() From 7ae33041b5356f253de9e92d9026bd3806d7ad77 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 11:58:55 +0100 Subject: [PATCH 054/204] Don't enter infinite loop generating id --- .../web/public/coffee/ide/review-panel/RangesTracker.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index f2794f2c07..722eab1aa5 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -55,7 +55,7 @@ load = (EventEmitter) -> '0000'.substr(0, 4 - pid.length) + pid @generateId: () -> - @generateId() + "000001" + @generateIdSeed() + "000001" newId: () -> @id_increment++ From 072044ee90b9c231aa168c1ea75a29d96901d6c0 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 10 Jan 2017 11:23:06 +0000 Subject: [PATCH 055/204] Remove thread from view collection; some clean-up. --- .../views/project/editor/review-panel.jade | 6 ++--- .../controllers/ReviewPanelController.coffee | 23 ++++++------------- .../resolvedCommentsDropdown.coffee | 4 ++-- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 4ad558ef90..91c2b84c41 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -6,7 +6,7 @@ docs="docs" on-open="refreshResolvedCommentsDropdown();" on-unresolve="unresolveComment(threadId);" - on-delete="deleteComment(entryId);" + on-delete="deleteComment(entryId, threadId);" is-loading="reviewPanel.dropdown.loading" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is @@ -210,7 +210,7 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') |  Re-open a.rp-entry-button( href - ng-click="onDelete({ 'entryId': entryId });" + ng-click="onDelete({ 'entryId': entryId, 'threadId': threadId });" ) |  Delete @@ -278,6 +278,6 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') thread="thread" doc="doc" on-unresolve="handleUnresolve(threadId);" - on-delete="handleDelete(entryId);" + on-delete="handleDelete(entryId, threadId);" ) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index a42915e648..52825ba5e8 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -66,7 +66,7 @@ define [ $scope.reviewPanelEventsBridge.on "aceScrollbarVisibilityChanged", (isVisible, scrollbarWidth) -> scrollbar = {isVisible, scrollbarWidth} updateScrollbar() - + updateScrollbar = () -> if scrollbar.isVisible and $scope.reviewPanel.subView == $scope.SubViews.CUR_FILE $reviewPanelEl.css "right", "#{ scrollbar.scrollbarWidth }px" @@ -231,9 +231,6 @@ define [ $scope.$broadcast "review-panel:recalculate-screen-positions" $scope.$broadcast "review-panel:layout" - $scope.$on "comment:removed", (comment) -> - console.log comment - $scope.acceptChange = (entry_id) -> $http.post "/project/#{$scope.project_id}/doc/#{$scope.editor.open_doc_id}/changes/#{entry_id}/accept", {_csrf: window.csrfToken} $scope.$broadcast "change:accept", entry_id @@ -283,7 +280,6 @@ define [ $scope.$broadcast "review-panel:layout" $scope.resolveComment = (entry, entry_id) -> - entry.showWhenResolved = false entry.focused = false $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} _onCommentResolved(entry.thread_id, ide.$scope.user) @@ -305,20 +301,15 @@ define [ delete thread.resolved_by_user delete thread.resolved_at $scope.$broadcast "comment:unresolve_thread", thread_id + + _onCommentDeleted = (thread_id) -> + delete $scope.reviewPanel.commentThreads[thread_id] - $scope.deleteComment = (entry_id) -> + $scope.deleteComment = (entry_id, thread_id) -> + console.log thread_id + _onCommentDeleted(thread_id) $scope.$broadcast "comment:remove", entry_id - $scope.showThread = (entry) -> - entry.showWhenResolved = true - $timeout () -> - $scope.$broadcast "review-panel:layout" - - $scope.hideThread = (entry) -> - entry.showWhenResolved = false - $timeout () -> - $scope.$broadcast "review-panel:layout" - $scope.setSubView = (subView) -> $scope.reviewPanel.subView = subView diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index df7302d1d1..a440be0585 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -29,8 +29,8 @@ define [ scope.onUnresolve({ threadId }) filterResolvedComments() - scope.handleDelete = (entryId) -> - scope.onDelete({ entryId }) + scope.handleDelete = (entryId, threadId) -> + scope.onDelete({ entryId, threadId }) filterResolvedComments() From 5bd49c08f817b4537fdfd56154d986bfe1c02586 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 10 Jan 2017 12:16:58 +0000 Subject: [PATCH 056/204] Simpler resolved comments dropdown data structure. --- .../views/project/editor/review-panel.jade | 14 ++++----- .../directives/resolvedCommentEntry.coffee | 3 -- .../resolvedCommentsDropdown.coffee | 30 ++++++++++++------- .../stylesheets/app/editor/review-panel.less | 5 ++-- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 91c2b84c41..4ec1d24f6e 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -180,7 +180,7 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') div .rp-resolved-comment-context | Quoted text on  - span.rp-resolved-comment-context-file {{ doc.doc.name }} + span.rp-resolved-comment-context-file {{ thread.docName }} p.rp-resolved-comment-context-quote {{ thread.content }} .rp-comment( ng-repeat="comment in thread.messages track by comment.id" @@ -205,12 +205,12 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') .rp-entry-actions a.rp-entry-button( href - ng-click="onUnresolve({ 'threadId': threadId });" + ng-click="onUnresolve({ 'threadId': thread.threadId });" ) |  Re-open a.rp-entry-button( href - ng-click="onDelete({ 'entryId': entryId, 'threadId': threadId });" + ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });" ) |  Delete @@ -269,15 +269,13 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') i.fa.fa-spinner.fa-spin div( ng-if="!isLoading" - ng-repeat="doc in docs" ) resolved-comment-entry( - ng-repeat="thread in resolvedCommentsPerFile[doc.doc.id]" - entry-id="thread.entryId" - thread-id="thread.threadId" + ng-repeat="thread in resolvedComments" thread="thread" - doc="doc" on-unresolve="handleUnresolve(threadId);" on-delete="handleDelete(entryId, threadId);" ) + .rp-loading(ng-if="!resolvedComments.length") + | No resolved threads. diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index ad6e9f2099..76da5b2913 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -5,9 +5,6 @@ define [ restrict: "E" templateUrl: "resolvedCommentEntryTemplate" scope: - entryId: "=" - threadId: "=" thread: "=" - doc: "=" onUnresolve: "&" onDelete: "&" \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index a440be0585..38a440dfa0 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -1,7 +1,7 @@ define [ "base" ], (App) -> - App.directive "resolvedCommentsDropdown", () -> + App.directive "resolvedCommentsDropdown", (_) -> restrict: "E" templateUrl: "resolvedCommentsDropdownTemplate" scope: @@ -23,7 +23,7 @@ define [ filterResolvedComments() scope.onOpen() - scope.resolvedCommentsPerFile = {} + scope.resolvedComments = [] scope.handleUnresolve = (threadId) -> scope.onUnresolve({ threadId }) @@ -33,18 +33,28 @@ define [ scope.onDelete({ entryId, threadId }) filterResolvedComments() + getDocNameById = (docId) -> + doc = _.find(scope.docs, (doc) -> doc.doc.id = docId) + if doc? + return doc.path + else + return null filterResolvedComments = () -> - scope.resolvedCommentsPerFile = {} + scope.resolvedComments = [] - for fileId, fileEntries of scope.entries - scope.resolvedCommentsPerFile[fileId] = {} - for entryId, entry of fileEntries + for docId, docEntries of scope.entries + for entryId, entry of docEntries if entry.type == "comment" and scope.threads[entry.thread_id]?.resolved? - scope.resolvedCommentsPerFile[fileId][entryId] = angular.copy scope.threads[entry.thread_id] - scope.resolvedCommentsPerFile[fileId][entryId].content = entry.content - scope.resolvedCommentsPerFile[fileId][entryId].threadId = entry.thread_id - scope.resolvedCommentsPerFile[fileId][entryId].entryId = entryId + resolvedComment = angular.copy scope.threads[entry.thread_id] + + resolvedComment.content = entry.content + resolvedComment.threadId = entry.thread_id + resolvedComment.entryId = entryId + resolvedComment.docId = docId + resolvedComment.docName = getDocNameById(docId) + + scope.resolvedComments.push(resolvedComment) scope.$watchCollection "entries", filterResolvedComments scope.$watchCollection "threads", filterResolvedComments diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 2d02361b54..aa14e2c2d4 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -498,7 +498,8 @@ text-align: center; } -.rp-loading { +.rp-loading, +.rp-empty { text-align: center; padding: 5px; } @@ -709,7 +710,7 @@ margin-left: 1em; background-color: @rp-bg-blue; text-align: left; - padding: 5px 5px 0; + padding: 5px; border-radius: 3px; box-shadow: 0 0 20px 10px rgba(0, 0, 0, .3); From d03aa7056e8f7147cb487a86b97937dca83823f4 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 13:43:53 +0100 Subject: [PATCH 057/204] Rename /ranges/users end point to /changes/users --- .../{Ranges => TrackChanges}/RangesManager.coffee | 2 +- .../TrackChangesController.coffee} | 7 ++++--- services/web/app/coffee/router.coffee | 8 ++++---- .../review-panel/controllers/ReviewPanelController.coffee | 2 +- .../{Ranges => TrackChanges}/RangesManagerTests.coffee | 8 ++++---- 5 files changed, 14 insertions(+), 13 deletions(-) rename services/web/app/coffee/Features/{Ranges => TrackChanges}/RangesManager.coffee (92%) rename services/web/app/coffee/Features/{Ranges/RangesController.coffee => TrackChanges/TrackChangesController.coffee} (88%) rename services/web/test/UnitTests/coffee/{Ranges => TrackChanges}/RangesManagerTests.coffee (85%) diff --git a/services/web/app/coffee/Features/Ranges/RangesManager.coffee b/services/web/app/coffee/Features/TrackChanges/RangesManager.coffee similarity index 92% rename from services/web/app/coffee/Features/Ranges/RangesManager.coffee rename to services/web/app/coffee/Features/TrackChanges/RangesManager.coffee index b538c1f443..09e6b52ed1 100644 --- a/services/web/app/coffee/Features/Ranges/RangesManager.coffee +++ b/services/web/app/coffee/Features/TrackChanges/RangesManager.coffee @@ -9,7 +9,7 @@ module.exports = RangesManager = return callback(error) if error? DocstoreManager.getAllRanges project_id, callback - getAllRangesUsers: (project_id, callback = (error, users) ->) -> + getAllChangesUsers: (project_id, callback = (error, users) ->) -> user_ids = {} RangesManager.getAllRanges project_id, (error, docs) -> return callback(error) if error? diff --git a/services/web/app/coffee/Features/Ranges/RangesController.coffee b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee similarity index 88% rename from services/web/app/coffee/Features/Ranges/RangesController.coffee rename to services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee index 4b2c1449a3..7fb873a209 100644 --- a/services/web/app/coffee/Features/Ranges/RangesController.coffee +++ b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee @@ -4,7 +4,7 @@ UserInfoController = require "../User/UserInfoController" DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" EditorRealTimeController = require("../Editor/EditorRealTimeController") -module.exports = RangesController = +module.exports = TrackChangesController = getAllRanges: (req, res, next) -> project_id = req.params.project_id logger.log {project_id}, "request for project ranges" @@ -13,10 +13,10 @@ module.exports = RangesController = docs = ({id: d._id, ranges: d.ranges} for d in docs) res.json docs - getAllRangesUsers: (req, res, next) -> + getAllChangesUsers: (req, res, next) -> project_id = req.params.project_id logger.log {project_id}, "request for project range users" - RangesManager.getAllRangesUsers project_id, (error, users) -> + RangesManager.getAllChangesUsers project_id, (error, users) -> return next(error) if error? users = (UserInfoController.formatPersonalInfo(user) for user in users) res.json users @@ -28,3 +28,4 @@ module.exports = RangesController = return next(error) if error? EditorRealTimeController.emitToRoom project_id, "accept-change", doc_id, change_id, (err)-> res.send 204 + diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 1d032c74ac..05c6c7194b 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -40,7 +40,7 @@ AuthorizationMiddlewear = require('./Features/Authorization/AuthorizationMiddlew BetaProgramController = require('./Features/BetaProgram/BetaProgramController') AnalyticsRouter = require('./Features/Analytics/AnalyticsRouter') AnnouncementsController = require("./Features/Announcements/AnnouncementsController") -RangesController = require("./Features/Ranges/RangesController") +TrackChangesController = require("./Features/TrackChanges/TrackChangesController") CommentsController = require "./Features/Comments/CommentsController" logger = require("logger-sharelatex") @@ -177,9 +177,9 @@ module.exports = class Router webRouter.get "/project/:Project_id/doc/:doc_id/diff", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi webRouter.post "/project/:Project_id/doc/:doc_id/version/:version_id/restore", AuthorizationMiddlewear.ensureUserCanReadProject, HistoryController.proxyToHistoryApi - webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRanges - webRouter.get "/project/:project_id/ranges/users", AuthorizationMiddlewear.ensureUserCanReadProject, RangesController.getAllRangesUsers - webRouter.post "/project/:project_id/doc/:doc_id/changes/:change_id/accept", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, RangesController.acceptChange + webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.getAllRanges + webRouter.get "/project/:project_id/changes/users", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.getAllChangesUsers + webRouter.post "/project/:project_id/doc/:doc_id/changes/:change_id/accept", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, TrackChangesController.acceptChange webRouter.get '/Project/:Project_id/download/zip', AuthorizationMiddlewear.ensureUserCanReadProject, ProjectDownloadsController.downloadProject webRouter.get '/project/download/zip', AuthorizationMiddlewear.ensureUserCanReadMultipleProjects, ProjectDownloadsController.downloadMultipleProjects diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 94e5d7809b..e4c6fc3436 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -332,7 +332,7 @@ define [ return _refreshingRangeUsers = true - $http.get "/project/#{$scope.project_id}/ranges/users" + $http.get "/project/#{$scope.project_id}/changes/users" .success (users) -> _refreshingRangeUsers = false $scope.users = {} diff --git a/services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee b/services/web/test/UnitTests/coffee/TrackChanges/RangesManagerTests.coffee similarity index 85% rename from services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee rename to services/web/test/UnitTests/coffee/TrackChanges/RangesManagerTests.coffee index 5f5c09d402..b9c95040c1 100644 --- a/services/web/test/UnitTests/coffee/Ranges/RangesManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/TrackChanges/RangesManagerTests.coffee @@ -3,7 +3,7 @@ SandboxedModule = require('sandboxed-module') assert = require('assert') sinon = require('sinon') path = require "path" -modulePath = path.join __dirname, "../../../../app/js/Features/Ranges/RangesManager" +modulePath = path.join __dirname, "../../../../app/js/Features/TrackChanges/RangesManager" expect = require("chai").expect describe "RangesManager", -> @@ -13,7 +13,7 @@ describe "RangesManager", -> "../Docstore/DocstoreManager": @DocstoreManager = {} "../User/UserInfoManager": @UserInfoManager = {} - describe "getAllRangesUsers", -> + describe "getAllChangesUsers", -> beforeEach -> @project_id = "mock-project-id" @user_id1 = "mock-user-id-1" @@ -45,11 +45,11 @@ describe "RangesManager", -> @RangesManager.getAllRanges = sinon.stub().yields(null, @docs) it "should return an array of unique users", (done) -> - @RangesManager.getAllRangesUsers @project_id, (error, users) => + @RangesManager.getAllChangesUsers @project_id, (error, users) => users.should.deep.equal [{"mock": "user-1"}, {"mock": "user-2"}] done() it "should only call getPersonalInfo once for each user", (done) -> - @RangesManager.getAllRangesUsers @project_id, (error, users) => + @RangesManager.getAllChangesUsers @project_id, (error, users) => @UserInfoManager.getPersonalInfo.calledTwice.should.equal true done() \ No newline at end of file From f3af44fab0b5d59f33e2aebfd75f06a2fd230589 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 10 Jan 2017 14:46:09 +0000 Subject: [PATCH 058/204] add on-success and on-error handlers to async-form. --- services/web/public/coffee/directives/asyncForm.coffee | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/web/public/coffee/directives/asyncForm.coffee b/services/web/public/coffee/directives/asyncForm.coffee index 2c6345d878..b3e13e8d61 100644 --- a/services/web/public/coffee/directives/asyncForm.coffee +++ b/services/web/public/coffee/directives/asyncForm.coffee @@ -33,6 +33,10 @@ define [ response.success = true response.error = false + if onSuccessHandler = scope[attrs.onSuccess] + onSuccessHandler(data, status, headers, config) + return + if data.redir? ga('send', 'event', formName, 'success') window.location = data.redir @@ -50,6 +54,11 @@ define [ scope[attrs.name].inflight = false response.success = false response.error = true + + if onErrorHandler = scope[attrs.onError] + onErrorHandler(data, status, headers, config) + return + if status == 403 # Forbidden response.message = text: "Session error. Please check you have cookies enabled. If the problem persists, try clearing your cache and cookies." From f31fa986790ee46e29e11b49c6221f9accaf6d5d Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 16:11:12 +0100 Subject: [PATCH 059/204] Sync track changes state between sessions and client --- .../coffee/Features/Project/ProjectController.coffee | 3 ++- .../TrackChanges/TrackChangesController.coffee | 9 +++++++++ .../Features/TrackChanges/TrackChangesManager.coffee | 5 +++++ services/web/app/coffee/models/Project.coffee | 1 + services/web/app/coffee/router.coffee | 1 + services/web/app/views/project/editor.jade | 1 + .../web/app/views/project/editor/review-panel.jade | 6 +++--- .../public/coffee/ide/editor/EditorManager.coffee | 2 +- .../controllers/ReviewPanelController.coffee | 9 +++++++++ .../review-panel/directives/reviewPanelToggle.coffee | 12 ++++++++++-- 10 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 1d975ea5b3..9713a1b1e2 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -201,7 +201,7 @@ module.exports = ProjectController = async.parallel { project: (cb)-> - ProjectGetter.getProject project_id, { name: 1, lastUpdated: 1}, cb + ProjectGetter.getProject project_id, { name: 1, lastUpdated: 1, track_changes: 1 }, cb user: (cb)-> if !user_id? cb null, defaultSettingsForAnonymousUser(user_id) @@ -267,6 +267,7 @@ module.exports = ProjectController = pdfViewer : user.ace.pdfViewer syntaxValidation: user.ace.syntaxValidation } + trackChangesEnabled: !!project.track_changes privilegeLevel: privilegeLevel chatUrl: Settings.apis.chat.url anonymous: anonymous diff --git a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee index 7fb873a209..71adadb213 100644 --- a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee +++ b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee @@ -3,6 +3,7 @@ logger = require "logger-sharelatex" UserInfoController = require "../User/UserInfoController" DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" EditorRealTimeController = require("../Editor/EditorRealTimeController") +TrackChangesManager = require "./TrackChangesManager" module.exports = TrackChangesController = getAllRanges: (req, res, next) -> @@ -29,3 +30,11 @@ module.exports = TrackChangesController = EditorRealTimeController.emitToRoom project_id, "accept-change", doc_id, change_id, (err)-> res.send 204 + toggleTrackChanges: (req, res, next) -> + {project_id} = req.params + track_changes_on = !!req.body.on + logger.log {project_id, track_changes_on}, "request to toggle track changes" + TrackChangesManager.toggleTrackChanges project_id, track_changes_on, (error) -> + return next(error) if error? + EditorRealTimeController.emitToRoom project_id, "toggle-track-changes", track_changes_on, (err)-> + res.send 204 diff --git a/services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee b/services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee new file mode 100644 index 0000000000..8eb7c10c29 --- /dev/null +++ b/services/web/app/coffee/Features/TrackChanges/TrackChangesManager.coffee @@ -0,0 +1,5 @@ +Project = require("../../models/Project").Project + +module.exports = TrackChangesManager = + toggleTrackChanges: (project_id, track_changes_on, callback = (error) ->) -> + Project.update {_id: project_id}, {track_changes: track_changes_on}, callback diff --git a/services/web/app/coffee/models/Project.coffee b/services/web/app/coffee/models/Project.coffee index 1d53999bd9..18387bdc0b 100644 --- a/services/web/app/coffee/models/Project.coffee +++ b/services/web/app/coffee/models/Project.coffee @@ -32,6 +32,7 @@ ProjectSchema = new Schema archived : { type: Boolean } deletedDocs : [DeletedDocSchema] imageName : { type: String } + track_changes : { type: Boolean } ProjectSchema.statics.getProject = (project_or_id, fields, callback)-> if project_or_id._id? diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index 05c6c7194b..d98f9579e1 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -180,6 +180,7 @@ module.exports = class Router webRouter.get "/project/:project_id/ranges", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.getAllRanges webRouter.get "/project/:project_id/changes/users", AuthorizationMiddlewear.ensureUserCanReadProject, TrackChangesController.getAllChangesUsers webRouter.post "/project/:project_id/doc/:doc_id/changes/:change_id/accept", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, TrackChangesController.acceptChange + webRouter.post "/project/:project_id/track_changes", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, TrackChangesController.toggleTrackChanges webRouter.get '/Project/:Project_id/download/zip', AuthorizationMiddlewear.ensureUserCanReadProject, ProjectDownloadsController.downloadProject webRouter.get '/project/download/zip', AuthorizationMiddlewear.ensureUserCanReadMultipleProjects, ProjectDownloadsController.downloadMultipleProjects diff --git a/services/web/app/views/project/editor.jade b/services/web/app/views/project/editor.jade index 01e1a8b88f..54c742fd15 100644 --- a/services/web/app/views/project/editor.jade +++ b/services/web/app/views/project/editor.jade @@ -107,6 +107,7 @@ block requirejs window.csrfToken = "!{csrfToken}"; window.anonymous = #{anonymous}; window.maxDocLength = #{maxDocLength}; + window.trackChangesEnabled = #{trackChangesEnabled}; window.wikiEnabled = #{!!(settings.apis.wiki && settings.apis.wiki.url)}; window.requirejs = { "paths" : { diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 4ec1d24f6e..34e49f03f0 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -9,11 +9,11 @@ on-delete="deleteComment(entryId, threadId);" is-loading="reviewPanel.dropdown.loading" ) - span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is + span.review-panel-toolbar-label(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is strong off - span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = false;", ng-if="editor.wantTrackChanges === true") Track Changes is + span.review-panel-toolbar-label(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is strong on - review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges") + review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges") span.review-panel-toolbar-spinner(ng-if="editor.wantTrackChanges != editor.trackChanges") i.fa.fa-spin.fa-spinner diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 629e1a4cb3..22fcef1a69 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -11,7 +11,7 @@ define [ open_doc_name: null opening: true trackChanges: false - wantTrackChanges: false + wantTrackChanges: window.trackChangesEnabled } @$scope.$on "entity:selected", (event, entity) => diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 96cc0fc86f..9a28c4995e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -308,6 +308,15 @@ define [ $scope.gotoEntry = (doc_id, entry) -> ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) + + $scope.toggleTrackChanges = (value) -> + console.log "Toggling track changes", value + $scope.editor.wantTrackChanges = value + $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} + + ide.socket.on "toggle-track-changes", (value) -> + $scope.$apply () -> + $scope.editor.wantTrackChanges = value _refreshingRangeUsers = false _refreshedForUserIds = {} diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee index e3844d1b12..24b7070d07 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee @@ -4,10 +4,18 @@ define [ App.directive "reviewPanelToggle", () -> restrict: "E" scope: - innerModel: '=ngModel' + onToggle: '=' + ngModel: '=' + link: (scope) -> + scope.onChange = (args...) -> + scope.onToggle(scope.localModel) + scope.localModel = scope.ngModel + scope.$watch "ngModel", (value) -> + scope.localModel = value + template: """
- +
""" From f5ced0307479d6f22d9bb98be3b02ba9039dc46b Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 10 Jan 2017 15:42:36 +0000 Subject: [PATCH 060/204] Set redirect when sending user to `login` page. Allows smart redirecting to work when public access is turned off. --- .../Authentication/AuthenticationController.coffee | 1 + .../Authentication/AuthenticationControllerTests.coffee | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee b/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee index e406296730..e8e3db4f93 100644 --- a/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee +++ b/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee @@ -148,6 +148,7 @@ module.exports = AuthenticationController = return next() else logger.log url:req.url, "user trying to access endpoint not in global whitelist" + AuthenticationController._setRedirectInSession(req) return res.redirect "/login" httpAuth: basicAuth (user, pass)-> diff --git a/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee b/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee index 72265eac11..515b888911 100644 --- a/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee @@ -387,6 +387,10 @@ describe "AuthenticationController", -> beforeEach -> @req.headers = {} @AuthenticationController.httpAuth = sinon.stub() + @_setRedirect = sinon.spy(@AuthenticationController, '_setRedirectInSession') + + afterEach -> + @_setRedirect.restore() describe "with white listed url", -> beforeEach -> @@ -431,6 +435,9 @@ describe "AuthenticationController", -> @req.session = {} @AuthenticationController.requireGlobalLogin @req, @res, @next + it 'should have called setRedirectInSession', -> + @_setRedirect.callCount.should.equal 1 + it "should redirect to the /login page", -> @res.redirectedTo.should.equal "/login" From 3668d7dd1fe58f1b2f9d421c69a4a6e7616a39fa Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 16:58:59 +0100 Subject: [PATCH 061/204] Remove global debugging hook --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 9a28c4995e..15ead40e84 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -11,7 +11,7 @@ define [ CUR_FILE : "cur_file" OVERVIEW : "overview" - window.reviewPanel = $scope.reviewPanel = + $scope.reviewPanel = entries: {} hasEntries: false subView: $scope.SubViews.CUR_FILE From f17ce2705c3837810c9a7845c1df7949a1e9533e Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 10 Jan 2017 17:17:07 +0100 Subject: [PATCH 062/204] Don't include wrapper for resolved comments, since it throws the review panel layout off --- services/web/app/views/project/editor/review-panel.jade | 6 ++++-- .../review-panel/controllers/ReviewPanelController.coffee | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 34e49f03f0..0b914a3443 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -24,6 +24,7 @@ .rp-entry-list-inner .rp-entry-wrapper( ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]" + ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( @@ -34,7 +35,7 @@ on-indicator-click="toggleReviewPanel();" ) - div(ng-if="entry.type === 'comment' && !(reviewPanel.commentThreads[entry.thread_id].resolved === true)") + div(ng-if="entry.type === 'comment'") comment-entry( entry="entry" threads="reviewPanel.commentThreads" @@ -66,6 +67,7 @@ | {{ doc.path }} .rp-entry-wrapper( ng-repeat="(entry_id, entry) in reviewPanel.entries[doc.doc.id] | orderOverviewEntries" + ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( @@ -75,7 +77,7 @@ ng-click="gotoEntry(doc_id, entry)" ) - div(ng-if="entry.type === 'comment' && !(reviewPanel.commentThreads[entry.thread_id].resolved === true)") + div(ng-if="entry.type === 'comment'") comment-entry( entry="entry" threads="reviewPanel.commentThreads" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 15ead40e84..d8c307d66e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -38,7 +38,6 @@ define [ $scope.$broadcast "review-panel:layout" ide.socket.on "accept-change", (doc_id, change_id) -> - console.log "Got remote accept change", doc_id, change_id if doc_id != $scope.editor.open_doc_id getChangeTracker(doc_id).removeChangeId(change_id) else From 010612aaccbf8312e459c8cf48a03f711945ed44 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 10 Jan 2017 16:29:27 +0000 Subject: [PATCH 063/204] Keep track of resolved threads in the dropdown. --- .../views/project/editor/review-panel.jade | 3 ++- .../controllers/ReviewPanelController.coffee | 20 ++++++++++--------- .../resolvedCommentsDropdown.coffee | 8 ++------ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 34e49f03f0..753941702c 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -3,6 +3,7 @@ resolved-comments-dropdown( entries="reviewPanel.entries" threads="reviewPanel.commentThreads" + resolved-ids="reviewPanel.resolvedThreadIds" docs="docs" on-open="refreshResolvedCommentsDropdown();" on-unresolve="unresolveComment(threadId);" @@ -271,7 +272,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ng-if="!isLoading" ) resolved-comment-entry( - ng-repeat="thread in resolvedComments" + ng-repeat="thread in resolvedComments | orderBy:'-resolved_at'" thread="thread" on-unresolve="handleUnresolve(threadId);" on-delete="handleDelete(entryId, threadId);" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 15ead40e84..4b45ef3b2d 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -21,6 +21,7 @@ define [ dropdown: loading: false commentThreads: {} + resolvedThreadIds: {} $scope.commentState = adding: false @@ -53,7 +54,6 @@ define [ _onCommentReopened(thread_id) rangesTrackers = {} - resolvedThreadIds = {} getDocEntries = (doc_id) -> $scope.reviewPanel.entries[doc_id] ?= {} @@ -62,7 +62,7 @@ define [ getChangeTracker = (doc_id) -> if !rangesTrackers[doc_id]? rangesTrackers[doc_id] = new RangesTracker() - rangesTrackers[doc_id].resolvedThreadIds = resolvedThreadIds + rangesTrackers[doc_id].resolvedThreadIds = $scope.reviewPanel.resolvedThreadIds return rangesTrackers[doc_id] scrollbar = {} @@ -97,7 +97,7 @@ define [ # The open doc range tracker is kept up to date in real-time so # replace any outdated info with this rangesTrackers[doc.doc_id] = doc.ranges - rangesTrackers[doc.doc_id].resolvedThreadIds = resolvedThreadIds + rangesTrackers[doc.doc_id].resolvedThreadIds = $scope.reviewPanel.resolvedThreadIds $scope.reviewPanel.rangesTracker = rangesTrackers[doc.doc_id] if old_doc? old_doc.off "flipped_pending_to_inflight" @@ -284,7 +284,7 @@ define [ thread.resolved = true thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() - resolvedThreadIds[thread_id] = true + $scope.reviewPanel.resolvedThreadIds[thread_id] = true $scope.$broadcast "comment:resolve_thread", thread_id _onCommentReopened = (thread_id) -> @@ -292,14 +292,16 @@ define [ delete thread.resolved delete thread.resolved_by_user delete thread.resolved_at - delete resolvedThreadIds[thread_id] + delete $scope.reviewPanel.resolvedThreadIds[thread_id] $scope.$broadcast "comment:unresolve_thread", thread_id _onCommentDeleted = (thread_id) -> + if $scope.reviewPanel.resolvedThreadIds[thread_id]? + delete $scope.reviewPanel.resolvedThreadIds[thread_id] + delete $scope.reviewPanel.commentThreads[thread_id] $scope.deleteComment = (entry_id, thread_id) -> - console.log thread_id _onCommentDeleted(thread_id) $scope.$broadcast "comment:remove", entry_id @@ -344,15 +346,15 @@ define [ refreshThreads = () -> $http.get "/project/#{$scope.project_id}/threads" .success (threads) -> - for thread_id, _ of resolvedThreadIds - delete resolvedThreadIds[thread_id] + for thread_id, _ of $scope.reviewPanel.resolvedThreadIds + delete $scope.reviewPanel.resolvedThreadIds[thread_id] for thread_id, thread of threads for comment in thread.messages formatComment(comment) if thread.resolved_by_user? $scope.$broadcast "comment:resolve_thread", thread_id thread.resolved_by_user = formatUser(thread.resolved_by_user) - resolvedThreadIds[thread_id] = true + $scope.reviewPanel.resolvedThreadIds[thread_id] = true $scope.reviewPanel.commentThreads = threads refreshThreads() diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 38a440dfa0..1c798de0e3 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -7,6 +7,7 @@ define [ scope: entries : "=" threads : "=" + resolvedIds : "=" docs : "=" onOpen : "&" onUnresolve : "&" @@ -27,11 +28,9 @@ define [ scope.handleUnresolve = (threadId) -> scope.onUnresolve({ threadId }) - filterResolvedComments() scope.handleDelete = (entryId, threadId) -> scope.onDelete({ entryId, threadId }) - filterResolvedComments() getDocNameById = (docId) -> doc = _.find(scope.docs, (doc) -> doc.doc.id = docId) @@ -56,7 +55,4 @@ define [ scope.resolvedComments.push(resolvedComment) - scope.$watchCollection "entries", filterResolvedComments - scope.$watchCollection "threads", filterResolvedComments - - + scope.$watchCollection "resolvedIds", filterResolvedComments From 731f280e2e6902eb2462b5b3c83b0fc848e4c1df Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 11 Jan 2017 10:27:38 +0000 Subject: [PATCH 064/204] Move auth parts of top menu out of config and into web templates. Move the remaining configuration into a new config var: `nav.header_extras`. Add a `nav.showSubscriptionLink` var to control visibility of subscription link in the Account menu. This will allow admins to more easily configure extra links in the top navigation bar, without the danger of overwriting the important auth menus. --- .../infrastructure/ExpressLocals.coffee | 13 +----- services/web/app/views/layout/navbar.jade | 42 +++++++++++++++---- services/web/config/settings.defaults.coffee | 34 +++------------ 3 files changed, 42 insertions(+), 47 deletions(-) diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index d976a1d23a..867583468b 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -244,17 +244,8 @@ module.exports = (app, webRouter, apiRouter)-> for key, value of Settings.nav res.locals.nav[key] = _.clone(Settings.nav[key]) res.locals.templates = Settings.templateLinks - try - externalAuth = res.locals.externalAuthenticationSystemUsed() - if externalAuth and res.locals.nav.header? - # filter out '/register' link - res.locals.nav.header = _.filter( - res.locals.nav.header, - (h) -> - h.url != '/register' - ) - catch error - logger.error {error}, "error while trying to filter out '/register' links from header" + if res.locals.nav.header + console.error {}, "The `nav.header` setting is no longer supported, use `nav.header_extras` instead" next() webRouter.use (req, res, next) -> diff --git a/services/web/app/views/layout/navbar.jade b/services/web/app/views/layout/navbar.jade index 3cd6587592..8ec5b5dbf3 100644 --- a/services/web/app/views/layout/navbar.jade +++ b/services/web/app/views/layout/navbar.jade @@ -24,7 +24,10 @@ nav.navbar.navbar-default li a(href="/admin/user") Manage Users - each item in nav.header + + // loop over header_extras + each item in nav.header_extras + if ((item.only_when_logged_in && getSessionUser()) || (item.only_when_logged_out && (!getSessionUser())) || (!item.only_when_logged_out && !item.only_when_logged_in)) if item.dropdown li.dropdown(class=item.class, dropdown) @@ -35,9 +38,6 @@ nav.navbar.navbar-default each child in item.dropdown if child.divider li.divider - else if child.user_email - li - div.subdued #{getUserEmail()} else li if child.url @@ -50,7 +50,35 @@ nav.navbar.navbar-default a(href=item.url, class=item.class) !{translate(item.text)} else | !{translate(item.text)} - - - + // logged out + if !getSessionUser() + // register link + if !externalAuthenticationSystemUsed() + li + a(href="/register") #{translate('register')} + + // login link + li + a(href="/login") #{translate('log_in')} + + // projects link and account menu + if getSessionUser() + li + a(href="/projects") #{translate('Projects')} + li.dropdown(dropdown) + a.dropbodw-toggle(href, dropdown-toggle) + | #{translate('Account')} + b.caret + ul.dropdown-menu + li + div.subdued #{getUserEmail()} + li.divider + li + a(href="/user/settings") #{translate('Account Settings')} + if nav.showSubscriptionLink + li + a(href="/user/subscription") #{translate('subscription')} + li.divider + li + a(href="/logout") #{translate('log_out')} diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index 708892e2fa..44e4a75867 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -335,35 +335,11 @@ module.exports = settings = url: "https://github.com/sharelatex/sharelatex" }] - header: [{ - text: "register" - url: "/register" - only_when_logged_out: true - }, { - text: "log_in" - url: "/login" - only_when_logged_out: true - }, { - text: "Projects" - url: "/project" - only_when_logged_in: true - }, { - text: "Account" - only_when_logged_in: true - dropdown: [{ - user_email: true - },{ - divider: true - }, { - text: "Account Settings" - url: "/user/settings" - }, { - divider: true - }, { - text: "Log out" - url: "/logout" - }] - }] + showSubscriptionLink: false + + header_extras: [] + # Example: + # header_extras: [{text: "Some Page", url: "http://example.com/some/page", class: "subdued"}] customisation: {} From 411cb4330c788065669b1a20187841828a77463e Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 11 Jan 2017 10:39:34 +0000 Subject: [PATCH 065/204] Fix typo in hyperlink --- services/web/app/views/layout/navbar.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/layout/navbar.jade b/services/web/app/views/layout/navbar.jade index 8ec5b5dbf3..4d78d02fba 100644 --- a/services/web/app/views/layout/navbar.jade +++ b/services/web/app/views/layout/navbar.jade @@ -65,7 +65,7 @@ nav.navbar.navbar-default // projects link and account menu if getSessionUser() li - a(href="/projects") #{translate('Projects')} + a(href="/project") #{translate('Projects')} li.dropdown(dropdown) a.dropbodw-toggle(href, dropdown-toggle) | #{translate('Account')} From 931187bd8b2b5c41b35be01179f91134411709bf Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 11 Jan 2017 10:53:46 +0000 Subject: [PATCH 066/204] Add a backdrop to the dropdown (to close when clicked outside). --- .../views/project/editor/review-panel.jade | 8 +++--- .../controllers/ReviewPanelController.coffee | 3 +-- .../stylesheets/app/editor/review-panel.less | 26 +++++++++---------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 633c6ccdcb..5da0fe5eaf 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -256,10 +256,10 @@ script(type='text/ng-template', id='addCommentEntryTemplate') script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') .resolved-comments - //- .resolved-comments-backdrop( - //- ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }" - //- ng-click="state.isOpen = !state.isOpen" - //- ) + .resolved-comments-backdrop( + ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }" + ng-click="state.isOpen = false" + ) a.resolved-comments-toggle( href ng-click="toggleOpenState();" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index fb521ed9f8..cbdfd62ef3 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -251,8 +251,7 @@ define [ $timeout () -> $scope.$broadcast "review-panel:layout" - $scope.submitReply = (entry, entry_id) -> - $scope.unresolveComment(entry, entry_id) + $scope.submitReply = (entry, entry_id) -> thread_id = entry.thread_id content = entry.replyContent $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index aa14e2c2d4..1092fc2eb2 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -93,6 +93,7 @@ border-left: solid 1px @rp-border-grey; font-size: @rp-base-font-size; color: @rp-type-blue; + z-index: 4; // 3 is Ace's gutter z-index value. } .review-panel-toolbar { @@ -112,7 +113,7 @@ border-bottom: 1px solid @rp-border-grey; background-color: @rp-bg-dim-blue; text-align: center; - z-index: 2; + z-index: 3; flex-basis: 32px; flex-shrink: 0; } @@ -687,19 +688,18 @@ } } -// .resolved-comments-backdrop { -// display: none; -// position: fixed; -// top: 0; -// right: 0; -// bottom: 0; -// left: 0; -// background-color: rgba(0, 0, 0, .5); +.resolved-comments-backdrop { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; -// &-visible { -// display: block; -// } -// } + &-visible { + display: block; + } +} .resolved-comments-dropdown { display: none; From d701c1ef5ec26a5242ebefe74a884c44037865dc Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 11 Jan 2017 11:25:18 +0000 Subject: [PATCH 067/204] Make the dropdown scrollable. --- .../views/project/editor/review-panel.jade | 2 +- .../stylesheets/app/editor/review-panel.less | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 5da0fe5eaf..8d92ede03f 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -270,7 +270,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ) .rp-loading(ng-if="isLoading") i.fa.fa-spinner.fa-spin - div( + .resolved-comments-scroller( ng-if="!isLoading" ) resolved-comment-entry( diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 1092fc2eb2..47784df152 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -103,12 +103,12 @@ align-items: center; padding: 0 5px; } - .rp-state-current-file & { - position: absolute; - top: 0; - left: 0; - right: 0; - } + // .rp-state-current-file & { + // position: absolute; + // top: 0; + // left: 0; + // right: 0; + // } height: @rp-toolbar-height; border-bottom: 1px solid @rp-border-grey; background-color: @rp-bg-dim-blue; @@ -706,11 +706,13 @@ position: absolute; width: 300px; left: -150px; + max-height: 90%; margin-top: @rp-entry-arrow-width * 1.5; margin-left: 1em; background-color: @rp-bg-blue; text-align: left; - padding: 5px; + align-items: stretch; + justify-content: center; border-radius: 3px; box-shadow: 0 0 20px 10px rgba(0, 0, 0, .3); @@ -723,6 +725,11 @@ } &-open { - display: block; + display: flex; } } + .resolved-comments-scroller { + flex: 0 0 100%; + padding: 5px; + overflow-y: auto; + } From 2e5c6d4570ae7fab1111ac5dda558b5a4faf0ac9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 11 Jan 2017 13:41:07 +0100 Subject: [PATCH 068/204] Don't remove add comment marker when updating entries --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 4 +++- .../coffee/ide/review-panel/directives/addCommentEntry.coffee | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index d8c307d66e..67bc813da4 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -154,7 +154,9 @@ define [ # Assume we'll delete everything until we see it, then we'll remove it from this object delete_changes = {} - delete_changes[change_id] = true for change_id, change of entries + for change_id, change of entries + if change_id != "add-comment" + delete_changes[change_id] = true for change in rangesTracker.changes delete delete_changes[change.id] diff --git a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee index fd3edd09ca..de10524b70 100644 --- a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee @@ -29,7 +29,6 @@ define [ scope.submitNewComment() scope.submitNewComment = () -> - console.log scope.state.content scope.onSubmit { content: scope.state.content } scope.state.isAdding = false scope.state.content = "" \ No newline at end of file From a081ae7307e0ab80494fdf37070b90dde0867552 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 11 Jan 2017 14:13:49 +0100 Subject: [PATCH 069/204] Properly sync resolved comments dropdown to entries --- .../controllers/ReviewPanelController.coffee | 10 +++++++++- .../directives/resolvedCommentsDropdown.coffee | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index a3dcc1e2d8..27ab2ea7d4 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -130,7 +130,7 @@ define [ rangesTracker = getChangeTracker(doc.id) rangesTracker.comments = doc.ranges?.comments or [] rangesTracker.changes = doc.ranges?.changes or [] - updateEntries(doc.id) + updateEntries(doc.id) refreshOverviewPanel = () -> $scope.reviewPanel.overview.loading = true @@ -152,6 +152,8 @@ define [ rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) + changed = false + # Assume we'll delete everything until we see it, then we'll remove it from this object delete_changes = {} for change_id, change of entries @@ -159,6 +161,7 @@ define [ delete_changes[change_id] = true for change in rangesTracker.changes + changed = true delete delete_changes[change.id] entries[change.id] ?= {} @@ -178,6 +181,7 @@ define [ refreshChangeUsers(change.metadata.user_id) for comment in rangesTracker.comments + changed = true delete delete_changes[comment.id] entries[comment.id] ?= {} new_entry = { @@ -190,7 +194,11 @@ define [ entries[comment.id][key] = value for change_id, _ of delete_changes + changed = true delete entries[change_id] + + if changed + $scope.$broadcast "entries:changed" $scope.$on "editor:track-changes:changed", () -> doc_id = $scope.editor.open_doc_id diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 1c798de0e3..c7d1813f34 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -21,7 +21,6 @@ define [ scope.toggleOpenState = () -> scope.state.isOpen = !scope.state.isOpen if (scope.state.isOpen) - filterResolvedComments() scope.onOpen() scope.resolvedComments = [] @@ -55,4 +54,4 @@ define [ scope.resolvedComments.push(resolvedComment) - scope.$watchCollection "resolvedIds", filterResolvedComments + scope.$on "entries:changed", filterResolvedComments \ No newline at end of file From 0264efccaed6e1054c6c9dd6a56270e97488cb3f Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 11 Jan 2017 14:57:00 +0100 Subject: [PATCH 070/204] Don't let review panel entries go off the top of the screen --- .../directives/reviewPanelSorted.coffee | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee index 82435faf44..5aa8e53295 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -43,15 +43,36 @@ define [ previous_focused_entry_index = focused_entry_index sl_console.log "focused_entry_index", focused_entry_index - + + # As we go backwards, we run the risk of pushing things off the top of the editor. + # If we go through the entries before and assume they are as pushed together as they + # could be, we can work out the 'ceiling' that each one can't go through. I.e. the first + # on can't go beyond the toolbar height, the next one can't go beyond the bottom of the first + # one at this minimum height, etc. + heights = (entry.$layout_el.height() for entry in entries_before) + previousMinTop = TOOLBAR_HEIGHT + min_tops = [] + for height in heights + min_tops.push previousMinTop + previousMinTop += PADDING + height + min_tops.reverse() + line_height = 15 - # Put the focused entry exactly where it wants to be - focused_entry_top = Math.max(TOOLBAR_HEIGHT, focused_entry.scope.entry.screenPos.y) + # Put the focused entry as close to where it wants to be as possible + focused_entry_top = Math.max(previousMinTop, focused_entry.scope.entry.screenPos.y) focused_entry.$box_el.css(top: focused_entry_top) focused_entry.$indicator_el.css(top: focused_entry_top) focused_entry.$callout_el.css(top: focused_entry_top + line_height, height: 0) + positionLayoutEl = ($callout_el, original_top, top) -> + if original_top <= top + entry.$callout_el.removeClass("rp-entry-callout-inverted") + entry.$callout_el.css(top: original_top + line_height, height: top - original_top) + else + entry.$callout_el.addClass("rp-entry-callout-inverted") + entry.$callout_el.css(top: top + line_height + 1, height: original_top - top) + previousBottom = focused_entry_top + focused_entry.$layout_el.height() for entry in entries_after original_top = entry.scope.entry.screenPos.y @@ -60,23 +81,21 @@ define [ previousBottom = top + height entry.$box_el.css(top: top) entry.$indicator_el.css(top: top) - entry.$callout_el.removeClass("rp-entry-callout-inverted") - entry.$callout_el.css(top: original_top + line_height, height: top - original_top) + positionLayoutEl(entry.$callout_el, original_top, top) sl_console.log "ENTRY", {entry: entry.scope.entry, top} - + previousTop = focused_entry_top entries_before.reverse() # Work through backwards, starting with the one just above - for entry in entries_before + for entry, i in entries_before original_top = entry.scope.entry.screenPos.y height = entry.$layout_el.height() original_bottom = original_top + height bottom = Math.min(original_bottom, previousTop - PADDING) - top = bottom - height + top = Math.max(bottom - height, min_tops[i]) previousTop = top entry.$box_el.css(top: top) entry.$indicator_el.css(top: top) - entry.$callout_el.addClass("rp-entry-callout-inverted") - entry.$callout_el.css(top: top + line_height + 1, height: original_top - top) + positionLayoutEl(entry.$callout_el, original_top, top) sl_console.log "ENTRY", {entry: entry.scope.entry, top} scope.$applyAsync () -> From 5c25d15a182ffb0810f150bfe28e04fd6bf7af85 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 12 Jan 2017 09:25:18 +0000 Subject: [PATCH 071/204] WIP: try switch to rolling rate limiter --- .../coffee/infrastructure/RateLimiter.coffee | 36 ++++++++++--------- services/web/package.json | 3 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index dd9c270794..7262890c4f 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -1,27 +1,29 @@ settings = require("settings-sharelatex") RedisWrapper = require('./RedisWrapper') rclient = RedisWrapper.client('ratelimiter') +RollingRateLimiter = require('rolling-rate-limiter') module.exports = RateLimiter = - _buildKey: (endpoint, subject) -> - return "RateLimiter:#{endpoint}:{#{subject}}" - addCount: (opts, callback = (err, shouldProcess)->)-> - k = RateLimiter._buildKey(opts.endpointName, opts.subjectName) - multi = rclient.multi() - multi.incr(k) - multi.get(k) - multi.expire(k, opts.timeInterval) - multi.exec (err, results)-> - count = results[1] - # account for the different results from `multi` when using cluster - if count instanceof Object - count = count[1] - allow = count < opts.throttle - callback err, allow + console.log ">> opts", opts + namespace = "RateLimit:#{opts.endpointName}:" + k = "{#{opts.subjectName}}" + limiter = RollingRateLimiter({ + redis: rclient, + namespace: namespace, + interval: opts.timeInterval * 1000, + maxInInterval: opts.throttle + }) + limiter k, (err, timeLeft, actionsLeft) -> + if err? + return callback(err) + allowed = timeLeft == 0 + console.log ">> limit", namespace, k, timeLeft, actionsLeft, ", allowed", allowed + callback(null, allowed) clearRateLimit: (endpointName, subject, callback) -> - k = RateLimiter._buildKey(endpointName, subject) - rclient.del k, callback + # same as the key which will be built by RollingRateLimiter (namespace+k) + keyName = "RateLimit:#{endpointName}:{#{subject}}" + rclient.del keyName, callback diff --git a/services/web/package.json b/services/web/package.json index 38ec9aebf2..27948d1645 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -63,7 +63,8 @@ "underscore": "1.6.0", "v8-profiler": "^5.2.3", "xml2js": "0.2.0", - "passport-saml": "^0.15.0" + "passport-saml": "^0.15.0", + "rolling-rate-limiter": "^0.1.4" }, "devDependencies": { "bunyan": "0.22.1", From 953371ad2dfbb8ce7791346bf14b5f974a982ddd Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 10:59:16 +0100 Subject: [PATCH 072/204] Don't double track a reject --- .../aceEditor/track-changes/TrackChangesManager.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 836bcf7b9a..20c7fb0731 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -159,8 +159,6 @@ define [ rejectChangeId: (change_id) -> change = @rangesTracker.getChange(change_id) return if !change? - @rangesTracker.removeChangeId(change_id) - @dont_track_next_update = true session = @editor.getSession() if change.op.d? content = change.op.d From e7ab92b7c99c7a3a687616af3770ee3f9d853a53 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 11:52:39 +0100 Subject: [PATCH 073/204] Only show users controls they have permission to use --- services/web/app/coffee/router.coffee | 3 +- .../views/project/editor/review-panel.jade | 34 +++++++++++++------ .../ide/permissions/PermissionsManager.coffee | 7 ++++ .../directives/changeEntry.coffee | 1 + .../directives/commentEntry.coffee | 1 + .../directives/resolvedCommentEntry.coffee | 1 + .../resolvedCommentsDropdown.coffee | 1 + .../stylesheets/app/editor/review-panel.less | 6 +++- 8 files changed, 41 insertions(+), 13 deletions(-) diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index d98f9579e1..a9105a1d46 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -233,7 +233,8 @@ module.exports = class Router webRouter.get "/project/:project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.getMessages webRouter.post "/project/:project_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, ChatController.sendMessage - webRouter.post "/project/:project_id/thread/:thread_id/messages", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.sendComment + # Note: Read only users can still comment + webRouter.post "/project/:project_id/thread/:thread_id/messages", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.sendComment webRouter.get "/project/:project_id/threads", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.getThreads webRouter.post "/project/:project_id/thread/:thread_id/resolve", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.resolveThread webRouter.post "/project/:project_id/thread/:thread_id/reopen", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.reopenThread diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 8d92ede03f..98d9dd1e3e 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -9,12 +9,19 @@ on-unresolve="unresolveComment(threadId);" on-delete="deleteComment(entryId, threadId);" is-loading="reviewPanel.dropdown.loading" + permissions="permissions" ) - span.review-panel-toolbar-label(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is - strong off - span.review-panel-toolbar-label(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is - strong on - review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges") + span.review-panel-toolbar-label(ng-if="permissions.write") + span(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is + strong off + span(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is + strong on + review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges") + span.review-panel-toolbar-label.review-panel-toolbar-label-disabled(ng-if="!permissions.write") + span(ng-if="editor.wantTrackChanges === false") Track Changes is + strong off + span(ng-if="editor.wantTrackChanges === true") Track Changes is + strong on span.review-panel-toolbar-spinner(ng-if="editor.wantTrackChanges != editor.trackChanges") i.fa.fa-spin.fa-spinner @@ -34,6 +41,7 @@ on-reject="rejectChange(entry_id);" on-accept="acceptChange(entry_id);" on-indicator-click="toggleReviewPanel();" + permissions="permissions" ) div(ng-if="entry.type === 'comment'") @@ -43,9 +51,10 @@ on-resolve="resolveComment(entry, entry_id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" + permissions="permissions" ) - div(ng-if="entry.type === 'add-comment'") + div(ng-if="entry.type === 'add-comment' && permissions.comment") add-comment-entry( on-start-new="startNewComment();" on-submit="submitNewComment(content);" @@ -76,6 +85,7 @@ user="users[entry.metadata.user_id]" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc_id, entry)" + permissions="permissions" ) div(ng-if="entry.type === 'comment'") @@ -85,6 +95,7 @@ on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc_id, entry)" + permissions="permissions" ) .rp-nav @@ -132,7 +143,7 @@ script(type='text/ng-template', id='changeEntryTemplate') .rp-entry-metadata | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} - .rp-entry-actions + .rp-entry-actions(ng-if="permissions.write") a.rp-entry-button(href, ng-click="onReject();") i.fa.fa-times |  Reject @@ -163,7 +174,7 @@ script(type='text/ng-template', id='commentEntryTemplate') | {{ comment.content }} .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} - .rp-comment-reply + .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( ng-model="entry.replyContent" ng-keypress="handleCommentReplyKeyPress($event);" @@ -171,10 +182,10 @@ script(type='text/ng-template', id='commentEntryTemplate') placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) .rp-entry-actions - a.rp-entry-button(href, ng-click="onResolve();") + a.rp-entry-button(href, ng-click="onResolve();", ng-if="permissions.comment && permissions.write") i.fa.fa-inbox |  Resolve - a.rp-entry-button(href, ng-click="onReply();") + a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment") i.fa.fa-reply |  Reply @@ -205,7 +216,7 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') .rp-entry-metadata | {{ thread.resolved_at | date : 'MMM d, y h:mm a' }} - .rp-entry-actions + .rp-entry-actions(ng-if="permissions.comment && permissions.write") a.rp-entry-button( href ng-click="onUnresolve({ 'threadId': thread.threadId });" @@ -278,6 +289,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') thread="thread" on-unresolve="handleUnresolve(threadId);" on-delete="handleDelete(entryId, threadId);" + permissions="permissions" ) .rp-loading(ng-if="!resolvedComments.length") | No resolved threads. diff --git a/services/web/public/coffee/ide/permissions/PermissionsManager.coffee b/services/web/public/coffee/ide/permissions/PermissionsManager.coffee index 096f15babe..88dea13084 100644 --- a/services/web/public/coffee/ide/permissions/PermissionsManager.coffee +++ b/services/web/public/coffee/ide/permissions/PermissionsManager.coffee @@ -5,15 +5,22 @@ define [], () -> read: false write: false admin: false + comment: false @$scope.$watch "permissionsLevel", (permissionsLevel) => if permissionsLevel? if permissionsLevel == "readOnly" @$scope.permissions.read = true + @$scope.permissions.comment = true else if permissionsLevel == "readAndWrite" @$scope.permissions.read = true @$scope.permissions.write = true + @$scope.permissions.comment = true else if permissionsLevel == "owner" @$scope.permissions.read = true @$scope.permissions.write = true @$scope.permissions.admin = true + @$scope.permissions.comment = true + + if @$scope.anonymous + @$scope.permissions.comment = false diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index d436a34b2c..0ff205a7ec 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -7,6 +7,7 @@ define [ scope: entry: "=" user: "=" + permissions: "=" onAccept: "&" onReject: "&" onIndicatorClick: "&" diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 2ee7862379..b74180b719 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -7,6 +7,7 @@ define [ scope: entry: "=" threads: "=" + permissions: "=" onResolve: "&" onReply: "&" onIndicatorClick: "&" diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index 76da5b2913..fedf17bb94 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -6,5 +6,6 @@ define [ templateUrl: "resolvedCommentEntryTemplate" scope: thread: "=" + permissions: "=" onUnresolve: "&" onDelete: "&" \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index c7d1813f34..251db60df1 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -9,6 +9,7 @@ define [ threads : "=" resolvedIds : "=" docs : "=" + permissions: "=" onOpen : "&" onUnresolve : "&" onDelete : "&" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 47784df152..849c6736d3 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -119,10 +119,13 @@ } .review-panel-toolbar-label { cursor: pointer; - margin-right: 5px; text-align: right; flex-grow: 1; } + .review-panel-toolbar-label-disabled { + cursor: auto; + margin-right: 5px; + } .rp-entry-list { .rp-size-expanded & { @@ -574,6 +577,7 @@ .rp-toggle { display: inline-block; vertical-align: middle; + margin-left: 5px; } .rp-toggle-hidden-input { display: none; From 6cd8e2a9351d4615a87efaaea6a30bd1ab7da167 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 12:05:35 +0100 Subject: [PATCH 074/204] Add user data to comments correctly --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 27ab2ea7d4..f68e6518c2 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -368,7 +368,7 @@ define [ refreshThreads() formatComment = (comment) -> - comment.user = formatUser(user) + comment.user = formatUser(comment.user) comment.timestamp = new Date(comment.timestamp) return comment From ea7f1abb6b69334228af1b3821f883ab349c0ed3 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 12:05:50 +0100 Subject: [PATCH 075/204] Darken comment reply text area --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 849c6736d3..ebafa888cc 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -394,6 +394,7 @@ border-radius: 3px; border: solid 1px @rp-border-grey; resize: vertical; + color: @rp-type-darkgrey; } .rp-icon-delete { From 9a867438b21a98482951438f551d2b28c9b4f163 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 12:06:02 +0100 Subject: [PATCH 076/204] Always show user name next to comment --- services/web/app/views/project/editor/review-panel.jade | 1 - 1 file changed, 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 98d9dd1e3e..df4051b1d9 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -169,7 +169,6 @@ script(type='text/ng-template', id='commentEntryTemplate') p.rp-comment-content span.rp-entry-user( style="color: hsl({{ comment.user.hue }}, 70%, 40%);" - ng-if="$first || comment.user.id !== threads[entry.thread_id].messages[$index - 1].user.id" ) {{ comment.user.name }}:  | {{ comment.content }} .rp-entry-metadata From 88b694f8940ff33ee0a434a754ce4a37ccc9e829 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 11:25:36 +0000 Subject: [PATCH 077/204] Animate comment resolving. --- .../views/project/editor/review-panel.jade | 10 ++++++++-- .../directives/commentEntry.coffee | 12 +++++++++-- .../stylesheets/app/editor/review-panel.less | 20 +++++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index df4051b1d9..b695f5f3cd 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -152,7 +152,9 @@ script(type='text/ng-template', id='changeEntryTemplate') |  Accept script(type='text/ng-template', id='commentEntryTemplate') - div + .rp-comment-wrapper( + ng-class="{ 'rp-comment-wrapper-resolving': state.animating }" + ) .rp-entry-callout.rp-entry-callout-comment .rp-entry-indicator( ng-class="{ 'rp-entry-indicator-focused': entry.focused }" @@ -160,7 +162,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ) i.fa.fa-comment .rp-entry.rp-entry-comment( - ng-class="{ 'rp-entry-focused': entry.focused }" + ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }" ) div .rp-comment( @@ -181,7 +183,11 @@ script(type='text/ng-template', id='commentEntryTemplate') placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) .rp-entry-actions +<<<<<<< Updated upstream a.rp-entry-button(href, ng-click="onResolve();", ng-if="permissions.comment && permissions.write") +======= + a.rp-entry-button(href, ng-click="animateAndCallOnResolve();") +>>>>>>> Stashed changes i.fa.fa-inbox |  Resolve a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment") diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index b74180b719..7ceed51bbe 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -1,7 +1,7 @@ define [ "base" ], (App) -> - App.directive "commentEntry", () -> + App.directive "commentEntry", ($timeout) -> restrict: "E" templateUrl: "commentEntryTemplate" scope: @@ -12,9 +12,17 @@ define [ onReply: "&" onIndicatorClick: "&" link: (scope, element, attrs) -> + scope.state = + animating: false + scope.handleCommentReplyKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey ev.preventDefault() ev.target.blur() scope.onReply() - \ No newline at end of file + + scope.animateAndCallOnResolve = () -> + scope.state.animating = true + element.find(".rp-entry").css("top", 0) + $timeout((() -> scope.onResolve()), 200) + return true \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index ebafa888cc..c9c7b21359 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -27,6 +27,8 @@ @rp-toolbar-height : 32px; + + .rp-button() { background-color: @rp-highlight-blue; color: #FFF; @@ -254,6 +256,16 @@ border-color: @rp-yellow; } + &-comment-resolving { + top: 4px; + left: 6px; + opacity: 0; + z-index: 3; + transform: scale(.1); + transform-origin: 0 0; + transition: top .2s ease-out, left .2s ease-out, transform .2s ease-out, opacity .2s ease-out .1s; + } + &-comment-resolved { border-color: @rp-grey; background-color: #efefef; @@ -503,6 +515,14 @@ text-align: center; } +.rp-comment-wrapper { + transition: .2s opacity ease-out; + + &-resolving { + opacity: 0; + } +} + .rp-loading, .rp-empty { text-align: center; From 64b9fe52dd44ac2b5768e6aa952ce3a949da77d3 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 12:31:01 +0100 Subject: [PATCH 078/204] Handle deleted users in comments gracefully --- .../app/coffee/Features/User/UserInfoController.coffee | 2 ++ .../controllers/ReviewPanelController.coffee | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/User/UserInfoController.coffee b/services/web/app/coffee/Features/User/UserInfoController.coffee index a77f575a48..8054f48afe 100644 --- a/services/web/app/coffee/Features/User/UserInfoController.coffee +++ b/services/web/app/coffee/Features/User/UserInfoController.coffee @@ -30,6 +30,8 @@ module.exports = UserController = res.send JSON.stringify(info) formatPersonalInfo: (user, callback = (error, info) ->) -> + if !user? + return {} formatted_user = { id: user._id.toString() } for key in ["first_name", "last_name", "email", "signUpDate", "role", "institution"] if user[key]? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index f68e6518c2..3b9990564e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -373,7 +373,9 @@ define [ return comment formatUser = (user) -> - if !user? + id = user?._id or user?.id + + if !id? return { email: null name: "Anonymous" @@ -381,13 +383,13 @@ define [ hue: ColorManager.ANONYMOUS_HUE avatar_text: "A" } - - id = user._id or user.id if id == window.user_id name = "You" isSelf = true else - name = "#{user.first_name} #{user.last_name}" + name = [user.first_name, user.last_name].filter((n) -> n?).join(" ") + if name == "" + name = "Unknown" isSelf = false return { id: id From 0b57cc650b1ccabeef92d2a53b2db3a5b95279b6 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 11:56:04 +0000 Subject: [PATCH 079/204] Fix merge mistake; adjust animation timings. --- services/web/app/views/project/editor/review-panel.jade | 6 +----- .../coffee/ide/review-panel/directives/commentEntry.coffee | 2 +- .../web/public/stylesheets/app/editor/review-panel.less | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index b695f5f3cd..ce1f7aa48e 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -183,11 +183,7 @@ script(type='text/ng-template', id='commentEntryTemplate') placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) .rp-entry-actions -<<<<<<< Updated upstream - a.rp-entry-button(href, ng-click="onResolve();", ng-if="permissions.comment && permissions.write") -======= - a.rp-entry-button(href, ng-click="animateAndCallOnResolve();") ->>>>>>> Stashed changes + a.rp-entry-button(href, ng-click="animateAndCallOnResolve();", ng-if="permissions.comment && permissions.write") i.fa.fa-inbox |  Resolve a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment") diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 7ceed51bbe..2d32f7f20e 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -24,5 +24,5 @@ define [ scope.animateAndCallOnResolve = () -> scope.state.animating = true element.find(".rp-entry").css("top", 0) - $timeout((() -> scope.onResolve()), 200) + $timeout((() -> scope.onResolve()), 350) return true \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index c9c7b21359..96ed8377ad 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -263,7 +263,7 @@ z-index: 3; transform: scale(.1); transform-origin: 0 0; - transition: top .2s ease-out, left .2s ease-out, transform .2s ease-out, opacity .2s ease-out .1s; + transition: top .35s ease-out, left .35s ease-out, transform .35s ease-out, opacity .35s ease-out .2s; } &-comment-resolved { @@ -516,7 +516,7 @@ } .rp-comment-wrapper { - transition: .2s opacity ease-out; + transition: .35s opacity ease-out .2s; &-resolving { opacity: 0; From f9b8ada2153f22a8e7b0e4bcf2940905788e9413 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 13:29:57 +0100 Subject: [PATCH 080/204] track changes for anonymous users --- .../Features/TrackChanges/TrackChangesController.coffee | 2 ++ .../aceEditor/track-changes/TrackChangesManager.coffee | 6 +----- .../review-panel/controllers/ReviewPanelController.coffee | 7 ++++++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee index 71adadb213..d71481a7fd 100644 --- a/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee +++ b/services/web/app/coffee/Features/TrackChanges/TrackChangesController.coffee @@ -20,6 +20,8 @@ module.exports = TrackChangesController = RangesManager.getAllChangesUsers project_id, (error, users) -> return next(error) if error? users = (UserInfoController.formatPersonalInfo(user) for user in users) + # Get rid of any anonymous/deleted user objects + users = users.filter (u) -> u?.id? res.json users acceptChange: (req, res, next) -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 20c7fb0731..279542475d 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -93,7 +93,7 @@ define [ setTrackChanges: (value) -> if value - @$scope.sharejsDoc?.track_changes_as = window.user.id + @$scope.sharejsDoc?.track_changes_as = window.user.id or "anonymous" else @$scope.sharejsDoc?.track_changes_as = null @@ -230,10 +230,6 @@ define [ if marker.clazz.match("track-changes") console.error "Orphaned ace marker", marker - applyChange: (delta, metadata) -> - op = @_aceChangeToShareJs(delta) - @rangesTracker.applyOp(op, metadata) - updateFocus: () -> selection = @editor.getSelectionRange() cursor_offset = @_aceRangeToShareJs(selection.start) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 3b9990564e..b5cc4d580c 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -346,8 +346,13 @@ define [ .success (users) -> _refreshingRangeUsers = false $scope.users = {} + # Always include ourself, since if we submit an op, we might need to display info + # about it locally before it has been flushed through the server + if ide.$scope.user?.id? + $scope.users[ide.$scope.user.id] = formatUser(ide.$scope.user) for user in users - $scope.users[user.id] = formatUser(user) + if user.id? + $scope.users[user.id] = formatUser(user) .error () -> _refreshingRangeUsers = false From 8e0c2ff0b3b558803241f9ef45e4e7f037946524 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 13:37:44 +0100 Subject: [PATCH 081/204] Adjust resolved comments buttons and add tooltip --- services/web/app/views/project/editor/review-panel.jade | 5 ++++- .../web/public/stylesheets/app/editor/review-panel.less | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index ce1f7aa48e..fca2022bfa 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -275,7 +275,10 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') a.resolved-comments-toggle( href ng-click="toggleOpenState();" - ) + tooltip="Resolved Comments" + tooltip-placement="bottom" + tooltip-append-to-body="true" + ) i.fa.fa-inbox .resolved-comments-dropdown( ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 96ed8377ad..206446a7f7 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -700,11 +700,15 @@ } .resolved-comments-toggle { - font-size: @rp-icon-large-size; + font-size: 14px; color: lighten(@rp-type-blue, 25%); border: solid 1px @rp-border-grey; border-radius: 3px; padding: 0 4px; + display: block; + height: 22px; + width: 22px; + line-height: 1.4; &:hover, &:focus { From a42cc48be8f959faef34be71f138511beafd6db1 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 13:44:54 +0100 Subject: [PATCH 082/204] Fix doc names and sort order in resolved comments dropdown --- services/web/app/views/project/editor/review-panel.jade | 2 +- .../ide/review-panel/directives/resolvedCommentsDropdown.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index fca2022bfa..f3e9457558 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -289,7 +289,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ng-if="!isLoading" ) resolved-comment-entry( - ng-repeat="thread in resolvedComments | orderBy:'-resolved_at'" + ng-repeat="thread in resolvedComments | orderBy:'resolved_at':true" thread="thread" on-unresolve="handleUnresolve(threadId);" on-delete="handleDelete(entryId, threadId);" diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 251db60df1..f161338324 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -33,7 +33,7 @@ define [ scope.onDelete({ entryId, threadId }) getDocNameById = (docId) -> - doc = _.find(scope.docs, (doc) -> doc.doc.id = docId) + doc = _.find(scope.docs, (doc) -> doc.doc.id == docId) if doc? return doc.path else From df4b5c1b3777764c5404978bb2a1b035e9e8b382 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Thu, 12 Jan 2017 13:25:19 +0000 Subject: [PATCH 083/204] math mode syntax checking improvements for beta users from our ace commit 442a1c522c58b1e511d2fd2c6f03909488d41e60 --- .../public/js/ace-1.2.5/worker-latex_beta.js | 221 +++++++++++++++--- 1 file changed, 188 insertions(+), 33 deletions(-) diff --git a/services/web/public/js/ace-1.2.5/worker-latex_beta.js b/services/web/public/js/ace-1.2.5/worker-latex_beta.js index b47d8f0a46..720c3e5009 100644 --- a/services/web/public/js/ace-1.2.5/worker-latex_beta.js +++ b/services/web/public/js/ace-1.2.5/worker-latex_beta.js @@ -1554,6 +1554,25 @@ var read1arg = function (TokeniseResult, k, options) { } }; +var readLetDefinition = function (TokeniseResult, k) { + + var Tokens = TokeniseResult.tokens; + var text = TokeniseResult.text; + + var first = Tokens[k+1]; + var second = Tokens[k+2]; + var third = Tokens[k+3]; + + if(first && first[1] === "\\" && second && second[1] === "\\") { + return k + 2; + } else if(first && first[1] === "\\" && + second && second[1] === "Text" && text.substring(second[2], second[3]) === "=" && + third && third[1] === "\\") { + return k + 3; + } else { + return null; + } +}; var read1name = function (TokeniseResult, k) { var Tokens = TokeniseResult.tokens; @@ -1624,9 +1643,56 @@ var readOptionalParams = function(TokeniseResult, k) { return k + 1; // got it }; }; + var count = 0; + var nextToken = Tokens[k+1]; + var pos = nextToken[2]; + + for (var i = pos, end = text.length; i < end; i++) { + var char = text[i]; + if (nextToken && i >= nextToken[2]) { k++; nextToken = Tokens[k+1];}; + if (char === "[") { count++; } + if (char === "]") { count--; } + if (count === 0 && char === "{") { return k - 1; } + if (count > 0 && (char === '\r' || char === '\n')) { return null; } + }; return null; }; +var readOptionalGeneric = function(TokeniseResult, k) { + var Tokens = TokeniseResult.tokens; + var text = TokeniseResult.text; + + var params = Tokens[k+1]; + + if(params && params[1] === "Text") { + var paramNum = text.substring(params[2], params[3]); + if (paramNum.match(/^(\[[^\]]*\])+\s*$/)) { + return k + 1; // got it + }; + }; + return null; +}; + +var readOptionalDef = function (TokeniseResult, k) { + var Tokens = TokeniseResult.tokens; + var text = TokeniseResult.text; + + var defToken = Tokens[k]; + var pos = defToken[3]; + + var openBrace = "{"; + var nextToken = Tokens[k+1]; + for (var i = pos, end = text.length; i < end; i++) { + var char = text[i]; + if (nextToken && i >= nextToken[2]) { k++; nextToken = Tokens[k+1];}; + if (char === openBrace) { return k - 1; }; // move back to the last token of the optional arguments + if (char === '\r' || char === '\n') { return null; } + }; + + return null; + +}; + var readDefinition = function(TokeniseResult, k) { var Tokens = TokeniseResult.tokens; var text = TokeniseResult.text; @@ -1726,10 +1792,27 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { var Environments = new EnvHandler(ErrorReporter); var nextGroupMathMode = null; // if the next group should have math mode on or off (for \hbox) + var nextGroupMathModeStack = [] ; // tracking all nextGroupMathModes + var seenUserDefinedBeginEquation = false; // if we have seen macros like \beq + var seenUserDefinedEndEquation = false; // if we have seen macros like \eeq for (var i = 0, len = Tokens.length; i < len; i++) { var token = Tokens[i]; var line = token[0], type = token[1], start = token[2], end = token[3], seq = token[4]; + + if (type === "{") { + Environments.push({command:"{", token:token, mathMode: nextGroupMathMode}); + nextGroupMathModeStack.push(nextGroupMathMode); + nextGroupMathMode = null; + continue; + } else if (type === "}") { + Environments.push({command:"}", token:token}); + nextGroupMathMode = nextGroupMathModeStack.pop(); + continue; + } else { + nextGroupMathMode = null; + }; + if (type === "\\") { if (seq === "begin" || seq === "end") { var open = Tokens[i+1]; @@ -1778,15 +1861,31 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { } else { TokenError(token, "invalid environment command"); }; - } - } else if (seq === "newcommand" || seq === "renewcommand" || seq === "def" || seq === "DeclareRobustCommand") { - var newPos = read1arg(TokeniseResult, i, {allowStar: (seq != "def")}); + } + } else if (typeof seq === "string" && seq.match(/^(be|beq|beqa|bea)$/i)) { + seenUserDefinedBeginEquation = true; + } else if (typeof seq === "string" && seq.match(/^(ee|eeq|eeqn|eeqa|eeqan|eea)$/i)) { + seenUserDefinedEndEquation = true; + } else if (seq === "newcommand" || seq === "renewcommand" || seq === "DeclareRobustCommand") { + var newPos = read1arg(TokeniseResult, i, {allowStar: true}); if (newPos === null) { continue; } else {i = newPos;}; newPos = readOptionalParams(TokeniseResult, i); if (newPos === null) { /* do nothing */ } else {i = newPos;}; newPos = readDefinition(TokeniseResult, i); if (newPos === null) { /* do nothing */ } else {i = newPos;}; + } else if (seq === "def") { + newPos = read1arg(TokeniseResult, i); + if (newPos === null) { continue; } else {i = newPos;}; + newPos = readOptionalDef(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + + } else if (seq === "let") { + newPos = readLetDefinition(TokeniseResult, i); + if (newPos === null) { continue; } else {i = newPos;}; + } else if (seq === "newcolumntype") { newPos = read1name(TokeniseResult, i); if (newPos === null) { continue; } else {i = newPos;}; @@ -1820,7 +1919,7 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { } else if (nextToken && nextToken[1] === "\\") { char = "unknown"; } - if (char === "" || (char !== "unknown" && "(){}[]<>|.".indexOf(char) === -1)) { + if (char === "" || (char !== "unknown" && "(){}[]<>/|\\.".indexOf(char) === -1)) { TokenError(token, "invalid bracket command"); } else { i = i + 1; @@ -1831,25 +1930,50 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { } else if (seq === "input") { newPos = read1filename(TokeniseResult, i); if (newPos === null) { continue; } else {i = newPos;}; - } else if (seq === "hbox" || seq === "text" || seq === "mbox") { + } else if (seq === "hbox" || seq === "text" || seq === "mbox" || seq === "footnote" || seq === "intertext" || seq === "shortintertext" || seq === "textnormal" || seq === "tag" || seq === "reflectbox" || seq === "textrm") { nextGroupMathMode = false; + } else if (seq === "rotatebox" || seq === "scalebox") { + newPos = readOptionalGeneric(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + nextGroupMathMode = false; + } else if (seq === "resizebox") { + newPos = readOptionalGeneric(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + + nextGroupMathMode = false; + } else if (seq === "DeclareMathOperator") { + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + } else if (seq === "DeclarePairedDelimiter") { + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; } else if (typeof seq === "string" && seq.match(/^(alpha|beta|gamma|delta|epsilon|varepsilon|zeta|eta|theta|vartheta|iota|kappa|lambda|mu|nu|xi|pi|varpi|rho|varrho|sigma|varsigma|tau|upsilon|phi|varphi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)$/)) { var currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) - if (currentMathMode === null && !insideGroup) { - TokenError(token, type + seq + " must be inside math mode"); + if (currentMathMode === null) { + TokenError(token, type + seq + " must be inside math mode", {mathMode:true}); }; - } else if (typeof seq === "string" && seq.match(/^(chapter|section|subsection|subsubsection|cite|ref)/)) { + } else if (typeof seq === "string" && seq.match(/^(chapter|section|subsection|subsubsection)$/)) { currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) - if (currentMathMode && !insideGroup) { - TokenError(token, type + seq + " used inside math mode"); + if (currentMathMode) { + TokenError(token, type + seq + " used inside math mode", {mathMode:true}); Environments.resetMathMode(); }; + } else if (typeof seq === "string" && seq.match(/^[a-z]+$/)) { + nextGroupMathMode = undefined; }; - } else if (type === "{") { - Environments.push({command:"{", token:token, mathMode: nextGroupMathMode}); - nextGroupMathMode = null; - } else if (type === "}") { - Environments.push({command:"}", token:token}); + } else if (type === "$") { var lookAhead = Tokens[i+1]; var nextIsDollar = lookAhead && lookAhead[1] === "$"; @@ -1864,12 +1988,15 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) var insideGroup = Environments.insideGroup(); // true if inside {....} if (currentMathMode === null && !insideGroup) { - TokenError(token, type + " must be inside math mode"); + TokenError(token, type + " must be inside math mode", {mathMode:true}); }; - } else { - nextGroupMathMode = null; } }; + + if (seenUserDefinedBeginEquation && seenUserDefinedEndEquation) { + ErrorReporter.filterMath = true; + }; + return Environments; }; @@ -1920,7 +2047,7 @@ var EnvHandler = function (ErrorReporter) { if (documentClosed) { ErrorFromTo(documentClosed, thisEnv, "\\end{" + documentClosed.name + "} is followed by unexpected content",{errorAtStart: true, type: "info"}); } else { - ErrorTo(thisEnv, "unexpected \\end{" + thisEnv.name + "}"); + ErrorTo(thisEnv, "unexpected " + getName(thisEnv)); } } else if (invalidEnvs.length > 0 && (i = indexOfClosingEnvInArray(invalidEnvs, thisEnv) > -1)) { invalidEnvs.splice(i, 1); @@ -2054,7 +2181,7 @@ var EnvHandler = function (ErrorReporter) { var currentMathMode = this.getMathMode(); // undefined, null, $, $$, name of mathmode env if (currentMathMode) { ErrorFrom(thisEnv, thisEnv.name + " used inside existing math mode " + getName(currentMathMode), - {suppressIfEditing:true, errorAtStart: true}); + {suppressIfEditing:true, errorAtStart: true, mathMode:true}); }; thisEnv.mathMode = thisEnv; state.push(thisEnv); @@ -2118,28 +2245,28 @@ var EnvHandler = function (ErrorReporter) { } } else if (thisEnv.command === "left") { if (currentMathMode === null) { - ErrorFrom(thisEnv, "\\left can only be used in math mode"); + ErrorFrom(thisEnv, "\\left can only be used in math mode", {mathMode: true}); }; newMathMode = currentMathMode; } else if (thisEnv.command === "begin") { var name = thisEnv.name; if (name) { - if (name.match(/^(document|figure|center|tabular|enumerate|itemize|table|abstract|proof|lemma|theorem|definition|proposition|corollary|remark|notation|thebibliography)$/)) { + if (name.match(/^(document|figure|center|enumerate|itemize|table|abstract|proof|lemma|theorem|definition|proposition|corollary|remark|notation|thebibliography)$/)) { if (currentMathMode) { ErrorFromTo(currentMathMode, thisEnv, thisEnv.name + " used inside " + getName(currentMathMode), - {suppressIfEditing:true, errorAtStart: true}); + {suppressIfEditing:true, errorAtStart: true, mathMode: true}); resetMathMode(); }; newMathMode = null; - } else if (name.match(/^(array|gathered|split|aligned|alignedat)/)) { - if (!currentMathMode) { - ErrorFrom(thisEnv, thisEnv.name + " not inside math mode"); + } else if (name.match(/^(array|gathered|split|aligned|alignedat)\*?$/)) { + if (currentMathMode === null) { + ErrorFrom(thisEnv, thisEnv.name + " not inside math mode", {mathMode: true}); }; newMathMode = currentMathMode; } else if (name.match(/^(math|displaymath|equation|eqnarray|multline|align|gather|flalign|alignat)\*?$/)) { if (currentMathMode) { ErrorFromTo(currentMathMode, thisEnv, thisEnv.name + " used inside " + getName(currentMathMode), - {suppressIfEditing:true, errorAtStart: true}); + {suppressIfEditing:true, errorAtStart: true, mathMode: true}); resetMathMode(); }; newMathMode = thisEnv; @@ -2220,13 +2347,36 @@ var ErrorReporter = function (TokeniseResult) { var errors = [], tokenErrors = []; this.errors = errors; this.tokenErrors = tokenErrors; + this.filterMath = false; this.getErrors = function () { var returnedErrors = []; for (var i = 0, len = tokenErrors.length; i < len; i++) { if (!tokenErrors[i].ignore) { returnedErrors.push(tokenErrors[i]); } } - return returnedErrors.concat(errors); + var allErrors = returnedErrors.concat(errors); + var result = []; + + var mathErrorCount = 0; + for (i = 0, len = allErrors.length; i < len; i++) { + if (allErrors[i].mathMode) { + mathErrorCount++; + } + if (mathErrorCount > 10) { + return []; + } + } + + if (this.filterMath && mathErrorCount > 0) { + for (i = 0, len = allErrors.length; i < len; i++) { + if (!allErrors[i].mathMode) { + result.push(allErrors[i]); + } + } + return result; + } else { + return allErrors; + } }; this.TokenError = function (token, message, options) { @@ -2245,7 +2395,8 @@ var ErrorReporter = function (TokeniseResult) { text:message, startPos: start, endPos: end, - suppressIfEditing:options.suppressIfEditing}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; this.TokenErrorFromTo = function (fromToken, toToken, message, options) { @@ -2266,7 +2417,8 @@ var ErrorReporter = function (TokeniseResult) { text:message, startPos: fromStart, endPos: toEnd, - suppressIfEditing:options.suppressIfEditing}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; @@ -2287,7 +2439,8 @@ var ErrorReporter = function (TokeniseResult) { end_col: end_col, type: options.type ? options.type : "error", text:message, - suppressIfEditing:options.suppressIfEditing}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; this.EnvErrorTo = function (toEnv, message, options) { @@ -2303,7 +2456,8 @@ var ErrorReporter = function (TokeniseResult) { end_row: line, end_col: end_col, type: options.type ? options.type : "error", - text:message}; + text:message, + mathMode: options.mathMode}; errors.push(err); }; @@ -2320,7 +2474,8 @@ var ErrorReporter = function (TokeniseResult) { end_row: lineNumber, end_col: end_col, type: options.type ? options.type : "error", - text:message}); + text:message, + mathMode: options.mathMode}); }; }; From b97ce52c6f4bce2312fd87421e511b44834cd48d Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 14:20:41 +0000 Subject: [PATCH 084/204] Handle z-index issues with mini review panel. --- .../stylesheets/app/editor/review-panel.less | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 206446a7f7..5aff5ed322 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -85,6 +85,7 @@ .rp-size-mini & { display: block; width: @review-off-width; + z-index: 6; } position: absolute; @@ -157,7 +158,6 @@ display: none; .rp-size-mini & { display: block; - z-index: 12; } position: absolute; left: 2px; @@ -193,21 +193,22 @@ display: none; left: @review-off-width + @rp-entry-arrow-width; box-shadow: 0 0 10px 5px rgba(0, 0, 0, .2); - z-index: 11; + z-index: 1; &::before { - .triangle(left, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); - top: (@review-off-width / 2) - @rp-entry-arrow-width; - left: -(@rp-entry-ribbon-width + @rp-entry-arrow-width); - content: ''; - } - &::after { content: ''; position: absolute; top: -(@review-off-width + @rp-entry-arrow-width); right: -(@review-off-width + @rp-entry-arrow-width); bottom: -(@review-off-width + @rp-entry-arrow-width); left: -(@review-off-width + @rp-entry-arrow-width); + z-index: -1; + } + &::after { + .triangle(left, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); + top: (@review-off-width / 2) - @rp-entry-arrow-width; + left: -(@rp-entry-ribbon-width + @rp-entry-arrow-width); + content: ''; } } .rp-state-current-file-expanded & { From 2052ee63a35b528a71dec0c54618a7473046bf4c Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 12 Jan 2017 17:19:19 +0100 Subject: [PATCH 085/204] Recover tracked changes after a disconnect --- .../public/coffee/ide/editor/Document.coffee | 22 ++++++++++++++++--- .../track-changes/TrackChangesManager.coffee | 13 +++++++++++ .../controllers/ReviewPanelController.coffee | 1 - 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index d037aeb165..fbef95e67b 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -252,9 +252,7 @@ define [ return callback(error) if error? @joined = true @doc.catchUp( updates ) - # TODO: Worry about whether these ranges are consistent with the doc still - @ranges?.changes = ranges?.changes - @ranges?.comments = ranges?.comments + @_catchUpRanges( ranges?.changes, ranges?.comments ) callback() else @ide.socket.emit 'joinDoc', @doc_id, (error, docLines, version, updates, ranges) => @@ -341,6 +339,7 @@ define [ track_changes_as = null remote_op = msg? if msg?.meta?.tc? + old_id_seed = @ranges.getIdSeed() @ranges.setIdSeed(msg.meta.tc) if remote_op and msg.meta?.tc track_changes_as = msg.meta.user_id @@ -349,3 +348,20 @@ define [ @ranges.track_changes = track_changes_as? for op in ops @ranges.applyOp op, { user_id: track_changes_as } + if old_id_seed? + @ranges.setIdSeed(old_id_seed) + + _catchUpRanges: (changes = [], comments = []) -> + # We've just been given the current server's ranges, but need to apply any local ops we have. + # Reset to the server state then apply our local ops again. + @ranges.emit "clear" + @ranges.changes = changes + @ranges.comments = comments + @ranges.track_changes = @doc.track_changes + for op in @doc.getInflightOp() or [] + @ranges.setIdSeed(@doc.track_changes_id_seeds.inflight) + @ranges.applyOp(op) + for op in @doc.getPendingOp() or [] + @ranges.setIdSeed(@doc.track_changes_id_seeds.pending) + @ranges.applyOp(op) + @ranges.emit "redraw" diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 279542475d..422e1978a6 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -59,6 +59,7 @@ define [ @recalculateReviewEntriesScreenPositions() onChangeSession = (e) => + @clearAnnotations() @redrawAnnotations() bindToAce = () => @@ -128,6 +129,18 @@ define [ sl_console.log "[comment:removed]", comment setTimeout () => @_onCommentRemoved(comment) + @rangesTracker.on "clear", () => + @clearAnnotations() + @rangesTracker.on "redraw", () => + @redrawAnnotations() + + clearAnnotations: () -> + session = @editor.getSession() + for change_id, markers of @changeIdToMarkerIdMap + for marker_name, marker_id of markers + session.removeMarker marker_id + @changeIdToMarkerIdMap = {} + redrawAnnotations: () -> for change in @rangesTracker.changes if change.op.i? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index b5cc4d580c..942178cf8b 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -320,7 +320,6 @@ define [ ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) $scope.toggleTrackChanges = (value) -> - console.log "Toggling track changes", value $scope.editor.wantTrackChanges = value $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} From 9f008318cc0b779768f03a53f02dca7db26253e0 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 16:49:29 +0000 Subject: [PATCH 086/204] Emit event after linking the layout directive. --- services/web/public/coffee/ide/directives/layout.coffee | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/web/public/coffee/ide/directives/layout.coffee b/services/web/public/coffee/ide/directives/layout.coffee index 7fc459a539..f20a37b342 100644 --- a/services/web/public/coffee/ide/directives/layout.coffee +++ b/services/web/public/coffee/ide/directives/layout.coffee @@ -117,5 +117,10 @@ define [ element.layout().hide("east") else element.layout().show("east") + + post: (scope, element, attrs) -> + name = attrs.layout + state = element.layout().readState() + scope.$broadcast "layout:#{name}:linked", state } ] From e3e8541a6302bcdbe1f488bc1571ad093a96ae2d Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 16:49:47 +0000 Subject: [PATCH 087/204] Add class when review panel should layout to the left. --- services/web/app/views/project/editor/editor.jade | 1 + .../controllers/ReviewPanelController.coffee | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 8d58e35f2e..bd7d26616f 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -18,6 +18,7 @@ div.full-size( 'rp-state-overview': (reviewPanel.subView === SubViews.OVERVIEW),\ 'rp-size-mini': (!ui.reviewPanelOpen && reviewPanel.hasEntries),\ 'rp-size-expanded': ui.reviewPanelOpen\ + 'rp-layout-left': reviewPanel.layoutToLeft }" ) .loading-panel(ng-show="!editor.sharejs_doc || editor.opening") diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index b5cc4d580c..bbabd6c2c5 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -22,6 +22,16 @@ define [ loading: false commentThreads: {} resolvedThreadIds: {} + layoutToLeft: false + + $scope.$on "layout:pdf:linked", (event, state) -> + $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) + + $scope.$on "layout:pdf:resize", (event, state) -> + $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) + + $scope.$watch "ui.pdfLayout", (layout) -> + $scope.reviewPanel.layoutToLeft = (layout == "flat") $scope.commentState = adding: false From 823c2c854af1494bb4d8fcd4e8eddc073e9a4f04 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 12 Jan 2017 17:06:08 +0000 Subject: [PATCH 088/204] Add styling to have left-based layout when there is no space on the right. --- .../web/app/views/project/editor/editor.jade | 4 ++-- .../stylesheets/app/editor/review-panel.less | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index bd7d26616f..4988e56dc4 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -17,8 +17,8 @@ div.full-size( 'rp-state-current-file-mini': (reviewPanel.subView === SubViews.CUR_FILE && !ui.reviewPanelOpen),\ 'rp-state-overview': (reviewPanel.subView === SubViews.OVERVIEW),\ 'rp-size-mini': (!ui.reviewPanelOpen && reviewPanel.hasEntries),\ - 'rp-size-expanded': ui.reviewPanelOpen\ - 'rp-layout-left': reviewPanel.layoutToLeft + 'rp-size-expanded': ui.reviewPanelOpen,\ + 'rp-layout-left': reviewPanel.layoutToLeft\ }" ) .loading-panel(ng-show="!editor.sharejs_doc || editor.opening") diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 5aff5ed322..652bf55e5b 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -211,6 +211,19 @@ content: ''; } } + .rp-state-current-file-mini.rp-layout-left & { + left: auto; + right: @review-off-width + @rp-entry-arrow-width; + border-left-width: 0; + border-right-width: @rp-entry-ribbon-width; + border-right-style: solid; + + &::after { + .triangle(right, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); + right: -(@rp-entry-ribbon-width + @rp-entry-arrow-width); + left: auto; + } + } .rp-state-current-file-expanded & { left: 5px; right: 5px; @@ -344,6 +357,15 @@ border-bottom-right-radius: 3px; border-right-width: 0; } + + .rp-layout-left & { + &:first-child { + border-bottom-left-radius: 3px; + } + &:last-child { + border-bottom-right-radius: 0; + } + } } .rp-comment { From 6c49b955386ced925a5a2843e3415a0177c1a5b5 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 13 Jan 2017 14:17:47 +0100 Subject: [PATCH 089/204] Don't allow overlapping comments Note that this is only a 'soft' don't allow. You could resolve a comment, comment in the same area, and get them to overlap. It's not a problem if they overlap, just a bit ugly UI wise --- .../track-changes/TrackChangesManager.coffee | 7 +++-- .../controllers/ReviewPanelController.coffee | 30 +++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 422e1978a6..5de7e3be2d 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -245,10 +245,11 @@ define [ updateFocus: () -> selection = @editor.getSelectionRange() - cursor_offset = @_aceRangeToShareJs(selection.start) + selection_start = @_aceRangeToShareJs(selection.start) + selection_end = @_aceRangeToShareJs(selection.end) entries = @_getCurrentDocEntries() - selection = !(selection.start.column == selection.end.column and selection.start.row == selection.end.row) - @$scope.$emit "editor:focus:changed", cursor_offset, selection + is_selection = (selection_start != selection_end) + @$scope.$emit "editor:focus:changed", selection_start, selection_end, is_selection broadcastChange: () -> @$scope.$emit "editor:track-changes:changed", @$scope.docId diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index ddedda525b..6dae528436 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -216,25 +216,31 @@ define [ $scope.$broadcast "review-panel:recalculate-screen-positions" $scope.$broadcast "review-panel:layout" - $scope.$on "editor:focus:changed", (e, cursor_offset, selection) -> + $scope.$on "editor:focus:changed", (e, selection_offset_start, selection_offset_end, selection) -> doc_id = $scope.editor.open_doc_id entries = getDocEntries(doc_id) - if !selection - delete entries["add-comment"] - else - entries["add-comment"] = { - type: "add-comment" - offset: cursor_offset - } + delete entries["add-comment"] + if selection + # Only show add comment if we're not already overlapping one + overlapping_comment = false + for id, entry of entries + if entry.type == "comment" and not $scope.reviewPanel.resolvedThreadIds[entry.thread_id] + unless entry.offset >= selection_offset_end or entry.offset + entry.content.length <= selection_offset_start + overlapping_comment = true + if !overlapping_comment + entries["add-comment"] = { + type: "add-comment" + offset: selection_offset_start + } for id, entry of entries - if entry.type == "comment" and not entry.resolved - entry.focused = (entry.offset <= cursor_offset <= entry.offset + entry.content.length) + if entry.type == "comment" and not $scope.reviewPanel.resolvedThreadIds[entry.thread_id] + entry.focused = (entry.offset <= selection_offset_start <= entry.offset + entry.content.length) else if entry.type == "insert" - entry.focused = (entry.offset <= cursor_offset <= entry.offset + entry.content.length) + entry.focused = (entry.offset <= selection_offset_start <= entry.offset + entry.content.length) else if entry.type == "delete" - entry.focused = (entry.offset == cursor_offset) + entry.focused = (entry.offset == selection_offset_start) else if entry.type == "add-comment" and selection entry.focused = true From 718f3dc3888380e8cb097cdabd488b424b125074 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 13 Jan 2017 14:30:04 +0100 Subject: [PATCH 090/204] Fix slightly broken callout positioning behaviour --- .../directives/reviewPanelSorted.coffee | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee index 5aa8e53295..72fd0f1a58 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -59,19 +59,19 @@ define [ line_height = 15 + positionLayoutEl = ($callout_el, original_top, top) -> + if original_top <= top + $callout_el.removeClass("rp-entry-callout-inverted") + $callout_el.css(top: original_top + line_height, height: top - original_top) + else + $callout_el.addClass("rp-entry-callout-inverted") + $callout_el.css(top: top + line_height + 1, height: original_top - top) + # Put the focused entry as close to where it wants to be as possible focused_entry_top = Math.max(previousMinTop, focused_entry.scope.entry.screenPos.y) focused_entry.$box_el.css(top: focused_entry_top) focused_entry.$indicator_el.css(top: focused_entry_top) - focused_entry.$callout_el.css(top: focused_entry_top + line_height, height: 0) - - positionLayoutEl = ($callout_el, original_top, top) -> - if original_top <= top - entry.$callout_el.removeClass("rp-entry-callout-inverted") - entry.$callout_el.css(top: original_top + line_height, height: top - original_top) - else - entry.$callout_el.addClass("rp-entry-callout-inverted") - entry.$callout_el.css(top: top + line_height + 1, height: original_top - top) + positionLayoutEl(focused_entry.$callout_el, focused_entry.scope.entry.screenPos.y, focused_entry_top) previousBottom = focused_entry_top + focused_entry.$layout_el.height() for entry in entries_after From bf7038f5061b13779fed80a7ccbd9a4c791fd122 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 13 Jan 2017 14:52:08 +0100 Subject: [PATCH 091/204] Adapt review panel line height to editor --- services/web/app/views/project/editor/editor.jade | 1 + .../coffee/ide/editor/directives/aceEditor.coffee | 9 +++++++++ .../controllers/ReviewPanelController.coffee | 1 + .../review-panel/directives/reviewPanelSorted.coffee | 11 +++++++---- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 4988e56dc4..d31be444af 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -55,6 +55,7 @@ div.full-size( track-changes-enabled="trackChangesFeatureFlag", track-changes= "editor.trackChanges", doc-id="editor.open_doc_id" + renderer-data="reviewPanel.rendererData" ) include ./review-panel diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 8a3b00a61e..41c70b4dee 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -57,6 +57,7 @@ define [ trackChanges: "=" trackChangesEnabled: "=" docId: "=" + rendererData: "=" } link: (scope, element, attrs) -> # Don't freak out if we're already in an apply callback @@ -317,6 +318,14 @@ define [ doc = session.getDocument() doc.off "change", onChange + + editor.renderer.on "changeCharacterSize", () -> + scope.$apply () -> + scope.rendererData.lineHeight = editor.renderer.lineHeight + + scope.$watch "rendererData", (rendererData) -> + if rendererData? + rendererData.lineHeight = editor.renderer.lineHeight template: """
diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 6dae528436..1db13c291e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -23,6 +23,7 @@ define [ commentThreads: {} resolvedThreadIds: {} layoutToLeft: false + rendererData: {} $scope.$on "layout:pdf:linked", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee index 72fd0f1a58..2bd66c723e 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -32,6 +32,8 @@ define [ return if entries.length == 0 + line_height = scope.reviewPanel.rendererData.lineHeight + focused_entry_index = Math.min(previous_focused_entry_index, entries.length - 1) for entry, i in entries if entry.scope.entry.focused @@ -57,15 +59,13 @@ define [ previousMinTop += PADDING + height min_tops.reverse() - line_height = 15 - positionLayoutEl = ($callout_el, original_top, top) -> if original_top <= top $callout_el.removeClass("rp-entry-callout-inverted") - $callout_el.css(top: original_top + line_height, height: top - original_top) + $callout_el.css(top: original_top + line_height - 1, height: top - original_top) else $callout_el.addClass("rp-entry-callout-inverted") - $callout_el.css(top: top + line_height + 1, height: original_top - top) + $callout_el.css(top: top + line_height, height: original_top - top) # Put the focused entry as close to where it wants to be as possible focused_entry_top = Math.max(previousMinTop, focused_entry.scope.entry.screenPos.y) @@ -104,6 +104,9 @@ define [ scope.$on "review-panel:layout", () -> scope.$applyAsync () -> layout() + + scope.$watch "reviewPanel.rendererData.lineHeight", () -> + layout() ## Scroll lock with Ace scroller = element From b6ea338ff84ee92da1b41eb05960f5e08c62325f Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 13 Jan 2017 15:27:45 +0100 Subject: [PATCH 092/204] Separate resolved comments so they don't affect review panel --- .../app/views/project/editor/review-panel.jade | 2 +- .../controllers/ReviewPanelController.coffee | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index f3e9457558..a994a87de2 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,7 +1,7 @@ #review-panel .review-panel-toolbar resolved-comments-dropdown( - entries="reviewPanel.entries" + entries="reviewPanel.resolvedComments" threads="reviewPanel.commentThreads" resolved-ids="reviewPanel.resolvedThreadIds" docs="docs" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 1db13c291e..cdb66c52b9 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -13,6 +13,7 @@ define [ $scope.reviewPanel = entries: {} + resolvedComments: {} hasEntries: false subView: $scope.SubViews.CUR_FILE openSubView: $scope.SubViews.CUR_FILE @@ -69,6 +70,10 @@ define [ $scope.reviewPanel.entries[doc_id] ?= {} return $scope.reviewPanel.entries[doc_id] + getDocResolvedComments = (doc_id) -> + $scope.reviewPanel.resolvedComments[doc_id] ?= {} + return $scope.reviewPanel.resolvedComments[doc_id] + getChangeTracker = (doc_id) -> if !rangesTrackers[doc_id]? rangesTrackers[doc_id] = new RangesTracker() @@ -162,6 +167,7 @@ define [ updateEntries = (doc_id) -> rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) + resolvedComments = getDocResolvedComments(doc_id) changed = false @@ -170,6 +176,8 @@ define [ for change_id, change of entries if change_id != "add-comment" delete_changes[change_id] = true + for change_id, change of resolvedComments + delete_changes[change_id] = true for change in rangesTracker.changes changed = true @@ -194,7 +202,10 @@ define [ for comment in rangesTracker.comments changed = true delete delete_changes[comment.id] - entries[comment.id] ?= {} + if $scope.reviewPanel.resolvedThreadIds[comment.op.t] + new_comment = resolvedComments[comment.id] ?= {} + else + new_comment = entries[comment.id] ?= {} new_entry = { type: "comment" thread_id: comment.op.t @@ -202,11 +213,12 @@ define [ offset: comment.op.p } for key, value of new_entry - entries[comment.id][key] = value + new_comment[key] = value for change_id, _ of delete_changes changed = true delete entries[change_id] + delete resolvedComments[change_id] if changed $scope.$broadcast "entries:changed" From 1ef1912cf85d8ded611f8dbdf82725c1213dab02 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 13 Jan 2017 15:21:05 +0000 Subject: [PATCH 093/204] Point to fork of `rolling-rate-limiter` that supports ioredis --- services/web/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/package.json b/services/web/package.json index 27948d1645..b658525760 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -64,7 +64,7 @@ "v8-profiler": "^5.2.3", "xml2js": "0.2.0", "passport-saml": "^0.15.0", - "rolling-rate-limiter": "^0.1.4" + "rolling-rate-limiter": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master" }, "devDependencies": { "bunyan": "0.22.1", From 5eece9f5d9ede5a58ba3e9737f06cf4a814975e1 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 13 Jan 2017 15:30:31 +0000 Subject: [PATCH 094/204] Add collapsing behaviour to long entries. --- .../web/app/views/project/editor/review-panel.jade | 14 ++++++++++++-- .../ide/review-panel/directives/changeEntry.coffee | 12 ++++++++++-- .../stylesheets/app/editor/review-panel.less | 11 +++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index a994a87de2..a664c02e23 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -137,9 +137,19 @@ script(type='text/ng-template', id='changeEntryTemplate') .rp-entry-details .rp-entry-description(ng-switch="entry.type") span(ng-switch-when="insert") Added  - ins.rp-content-highlight {{ entry.content }} + ins.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} + a.rp-collapse-toggle( + href + ng-if="needsCollapsing" + ng-click="toggleCollapse();" + )  {{ isCollapsed ? '(more)' : '(less)' }} span(ng-switch-when="delete") Deleted  - del.rp-content-highlight {{ entry.content }} + del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} + a.rp-collapse-toggle( + href + ng-if="needsCollapsing" + ng-click="toggleCollapse();" + )  {{ isCollapsed ? '(more)' : '(less)' }} .rp-entry-metadata | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index 0ff205a7ec..d21cdc10b2 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -1,7 +1,7 @@ define [ "base" ], (App) -> - App.directive "changeEntry", () -> + App.directive "changeEntry", ($timeout) -> restrict: "E" templateUrl: "changeEntryTemplate" scope: @@ -11,4 +11,12 @@ define [ onAccept: "&" onReject: "&" onIndicatorClick: "&" - \ No newline at end of file + link: (scope, element, attrs) -> + scope.contentLimit = 40 + scope.needsCollapsing = scope.entry.content.length > scope.contentLimit + scope.isCollapsed = true + + scope.toggleCollapse = () -> + scope.isCollapsed = !scope.isCollapsed + $timeout () -> + scope.$emit "review-panel:layout" \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 652bf55e5b..79006446ab 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -785,3 +785,14 @@ padding: 5px; overflow-y: auto; } + +.rp-collapse-toggle { + color: @rp-type-blue; + font-weight: @rp-semibold-weight; + + &:hover, + &:focus { + color: darken(@rp-type-blue, 5%); + text-decoration: none; + } +} \ No newline at end of file From 3968761ac805ea8e75e5b998f7c449cadcc00618 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 13 Jan 2017 15:37:24 +0000 Subject: [PATCH 095/204] Add collapsing behaviour to resolved comments. --- .../web/app/views/project/editor/review-panel.jade | 8 +++++++- .../directives/resolvedCommentEntry.coffee | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index a664c02e23..d7c6bc9e52 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -206,7 +206,13 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') .rp-resolved-comment-context | Quoted text on  span.rp-resolved-comment-context-file {{ thread.docName }} - p.rp-resolved-comment-context-quote {{ thread.content }} + p.rp-resolved-comment-context-quote + span {{ thread.content | limitTo:(isCollapsed ? contentLimit : thread.content.length)}} + a.rp-collapse-toggle( + href + ng-if="needsCollapsing" + ng-click="toggleCollapse();" + )  {{ isCollapsed ? '(more)' : '(less)' }} .rp-comment( ng-repeat="comment in thread.messages track by comment.id" ) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index fedf17bb94..8b933e05f2 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -8,4 +8,13 @@ define [ thread: "=" permissions: "=" onUnresolve: "&" - onDelete: "&" \ No newline at end of file + onDelete: "&" + link: (scope, element, attrs) -> + scope.contentLimit = 40 + scope.needsCollapsing = scope.thread.content.length > scope.contentLimit + scope.isCollapsed = true + + scope.toggleCollapse = () -> + scope.isCollapsed = !scope.isCollapsed + $timeout () -> + scope.$emit "review-panel:layout" \ No newline at end of file From 25956d4c62cda77ff0ffa3d30a52780164e36933 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 13 Jan 2017 16:04:26 +0000 Subject: [PATCH 096/204] Fix up tests --- .../coffee/infrastructure/RateLimiter.coffee | 1 - .../infrastructure/RateLimterTests.coffee | 76 ++++++++++--------- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 7262890c4f..69050939fd 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -7,7 +7,6 @@ RollingRateLimiter = require('rolling-rate-limiter') module.exports = RateLimiter = addCount: (opts, callback = (err, shouldProcess)->)-> - console.log ">> opts", opts namespace = "RateLimit:#{opts.endpointName}:" k = "{#{opts.subjectName}}" limiter = RollingRateLimiter({ diff --git a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee index cb0bb5de09..06efac5d8b 100644 --- a/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee +++ b/services/web/test/UnitTests/coffee/infrastructure/RateLimterTests.coffee @@ -24,7 +24,12 @@ describe "RateLimiter", -> @RedisWrapper = client: sinon.stub().returns(@rclient) + @limiterFn = sinon.stub() + @RollingRateLimiter = (opts) => + return @limiterFn + @limiter = SandboxedModule.require modulePath, requires: + "rolling-rate-limiter": @RollingRateLimiter "settings-sharelatex":@settings "logger-sharelatex" : @logger = {log:sinon.stub(), err:sinon.stub()} "./RedisWrapper": @RedisWrapper @@ -41,45 +46,46 @@ describe "RateLimiter", -> timeInterval: @timeInterval @key = "RateLimiter:#{@endpointName}:{#{@subject}}" - for redisType, resultSet of { - normal:[10, '10', 10], - cluster:[[null,10], [null,'10'], [null,10]] - } - do (redisType, resultSet) -> - describe "addCount with #{redisType} redis", -> - beforeEach -> - @results = resultSet - @rclient.incr = sinon.stub() - @rclient.get = sinon.stub() - @rclient.expire = sinon.stub() - @rclient.exec = sinon.stub().callsArgWith(0, null, @results) - it "should use correct key", (done)-> - @limiter.addCount @details, => - @rclient.incr.calledWith(@key).should.equal true - done() + describe 'when action is permitted', -> - it "should only call it once", (done)-> - @limiter.addCount @details, => - @rclient.exec.callCount.should.equal 1 - done() + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, null, 0, 22) - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 100 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal true - done() + it 'should not produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.equal null + done() - it "should return true if the count is less than throttle", (done)-> - @details.throttle = 1 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + it 'should callback with true', (done) -> + @limiter.addCount {}, (err, should) -> + expect(should).to.equal true + done() - it "should return false if the limit is matched", (done)-> - @details.throttle = 10 - @limiter.addCount @details, (err, canProcess)=> - canProcess.should.equal false - done() + describe 'when action is not permitted', -> + + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, null, 4000, 0) + + it 'should not produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.equal null + done() + + it 'should callback with false', (done) -> + @limiter.addCount {}, (err, should) -> + expect(should).to.equal false + done() + + describe 'when limiter produces an error', -> + + beforeEach -> + @limiterFn = sinon.stub().callsArgWith(1, new Error('woops')) + + it 'should produce and error', (done) -> + @limiter.addCount {}, (err, should) -> + expect(err).to.not.equal null + expect(err).to.be.instanceof Error + done() From 1ed0ccf85464f31f46c60159aaa601d1bf0c1d4b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Fri, 13 Jan 2017 16:07:08 +0000 Subject: [PATCH 097/204] Improve hovering behaviour for entries in mini mode. --- .../web/public/stylesheets/app/editor/review-panel.less | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 79006446ab..646de2fc3a 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -201,7 +201,7 @@ top: -(@review-off-width + @rp-entry-arrow-width); right: -(@review-off-width + @rp-entry-arrow-width); bottom: -(@review-off-width + @rp-entry-arrow-width); - left: -(@review-off-width + @rp-entry-arrow-width); + left: -(2 * @rp-entry-arrow-width + 2); z-index: -1; } &::after { @@ -218,6 +218,10 @@ border-right-width: @rp-entry-ribbon-width; border-right-style: solid; + &::before { + left: -(@review-off-width + @rp-entry-arrow-width); + right: -(2 * @rp-entry-arrow-width + 2); + } &::after { .triangle(right, @rp-entry-arrow-width, @rp-entry-arrow-width * 1.5, inherit); right: -(@rp-entry-ribbon-width + @rp-entry-arrow-width); @@ -789,7 +793,7 @@ .rp-collapse-toggle { color: @rp-type-blue; font-weight: @rp-semibold-weight; - + &:hover, &:focus { color: darken(@rp-type-blue, 5%); From fed88504f8f95f509b1e45447b69540f1143e219 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sat, 14 Jan 2017 14:52:32 +0000 Subject: [PATCH 098/204] rate limit emails sent sharing projects by users --- .../CollaboratorsEmailHandler.coffee | 3 +- .../CollaboratorsInviteHandler.coffee | 2 +- .../coffee/Features/Email/EmailSender.coffee | 49 ++++++++++++------- .../CollaboratorsInviteHandlerTests.coffee | 4 +- .../coffee/Email/EmailSenderTests.coffee | 30 ++++++++++++ 5 files changed, 67 insertions(+), 21 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsEmailHandler.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsEmailHandler.coffee index bc7eb90c3f..913562f417 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsEmailHandler.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsEmailHandler.coffee @@ -11,7 +11,7 @@ module.exports = CollaboratorsEmailHandler = "user_first_name=#{encodeURIComponent(project.owner_ref.first_name)}" ].join("&") - notifyUserOfProjectInvite: (project_id, email, invite, callback)-> + notifyUserOfProjectInvite: (project_id, email, invite, sendingUser, callback)-> Project .findOne(_id: project_id ) .select("name owner_ref") @@ -24,4 +24,5 @@ module.exports = CollaboratorsEmailHandler = name: project.name inviteUrl: CollaboratorsEmailHandler._buildInviteUrl(project, invite) owner: project.owner_ref + sendingUser_id: sendingUser._id EmailHandler.sendEmail "projectInvite", emailOptions, callback diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee index 5ed6570c3a..0e6cd8876c 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee @@ -53,7 +53,7 @@ module.exports = CollaboratorsInviteHandler = _sendMessages: (projectId, sendingUser, invite, callback=(err)->) -> logger.log {projectId, inviteId: invite._id}, "sending notification and email for invite" - CollaboratorsEmailHandler.notifyUserOfProjectInvite projectId, invite.email, invite, (err)-> + CollaboratorsEmailHandler.notifyUserOfProjectInvite projectId, invite.email, invite, sendingUser, (err)-> return callback(err) if err? CollaboratorsInviteHandler._trySendInviteNotification projectId, sendingUser, invite, (err)-> return callback(err) if err? diff --git a/services/web/app/coffee/Features/Email/EmailSender.coffee b/services/web/app/coffee/Features/Email/EmailSender.coffee index a7bcc82ed7..7a909e083e 100644 --- a/services/web/app/coffee/Features/Email/EmailSender.coffee +++ b/services/web/app/coffee/Features/Email/EmailSender.coffee @@ -4,7 +4,7 @@ Settings = require('settings-sharelatex') nodemailer = require("nodemailer") sesTransport = require('nodemailer-ses-transport') sgTransport = require('nodemailer-sendgrid-transport') - +rateLimiter = require('../../infrastructure/RateLimiter') _ = require("underscore") if Settings.email? and Settings.email.fromAddress? @@ -39,24 +39,39 @@ if nm_client? else logger.warn "Failed to create email transport. Please check your settings. No email will be sent." +checkCanSendEmail = (options, callback)-> + if !options.sendingUser_id? #email not sent from user, not rate limited + callback(null, true) + opts = + endpointName: "send_email" + timeInterval: 60 * 60 * 3 + subjectName: options.sendingUser_id + throttle: 100 + rateLimiter.addCount opts, callback module.exports = sendEmail : (options, callback = (error) ->)-> logger.log receiver:options.to, subject:options.subject, "sending email" - metrics.inc "email" - options = - to: options.to - from: defaultFromAddress - subject: options.subject - html: options.html - text: options.text - replyTo: options.replyTo || Settings.email.replyToAddress - socketTimeout: 30 * 1000 - if Settings.email.textEncoding? - opts.textEncoding = textEncoding - client.sendMail options, (err, res)-> + checkCanSendEmail options, (err, canContinue)-> if err? - logger.err err:err, "error sending message" - else - logger.log "Message sent to #{options.to}" - callback(err) + return callback(err) + if !canContinue + logger.log sendingUser_id:options.sendingUser_id, to:options.to, subject:options.subject, canContinue:canContinue, "rate limit hit for sending email, not sending" + return callback("rate limit hit sending email") + metrics.inc "email" + options = + to: options.to + from: defaultFromAddress + subject: options.subject + html: options.html + text: options.text + replyTo: options.replyTo || Settings.email.replyToAddress + socketTimeout: 30 * 1000 + if Settings.email.textEncoding? + opts.textEncoding = textEncoding + client.sendMail options, (err, res)-> + if err? + logger.err err:err, "error sending message" + else + logger.log "Message sent to #{options.to}" + callback(err) diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee index ac94fcf10d..177c42d4ba 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteHandlerTests.coffee @@ -185,7 +185,7 @@ describe "CollaboratorsInviteHandler", -> describe '_sendMessages', -> beforeEach -> - @CollaboratorsEmailHandler.notifyUserOfProjectInvite = sinon.stub().callsArgWith(3, null) + @CollaboratorsEmailHandler.notifyUserOfProjectInvite = sinon.stub().callsArgWith(4, null) @CollaboratorsInviteHandler._trySendInviteNotification = sinon.stub().callsArgWith(3, null) @call = (callback) => @CollaboratorsInviteHandler._sendMessages @projectId, @sendingUser, @fakeInvite, callback @@ -213,7 +213,7 @@ describe "CollaboratorsInviteHandler", -> describe 'when CollaboratorsEmailHandler.notifyUserOfProjectInvite produces an error', -> beforeEach -> - @CollaboratorsEmailHandler.notifyUserOfProjectInvite = sinon.stub().callsArgWith(3, new Error('woops')) + @CollaboratorsEmailHandler.notifyUserOfProjectInvite = sinon.stub().callsArgWith(4, new Error('woops')) it 'should produce an error', (done) -> @call (err, invite) => diff --git a/services/web/test/UnitTests/coffee/Email/EmailSenderTests.coffee b/services/web/test/UnitTests/coffee/Email/EmailSenderTests.coffee index 4f08dd6790..beba91fcb3 100644 --- a/services/web/test/UnitTests/coffee/Email/EmailSenderTests.coffee +++ b/services/web/test/UnitTests/coffee/Email/EmailSenderTests.coffee @@ -10,6 +10,9 @@ describe "EmailSender", -> beforeEach -> + @RateLimiter = + addCount:sinon.stub() + @settings = email: transport: "ses" @@ -21,11 +24,15 @@ describe "EmailSender", -> @sesClient = sendMail: sinon.stub() + @ses = createTransport: => @sesClient + + @sender = SandboxedModule.require modulePath, requires: 'nodemailer': @ses "settings-sharelatex":@settings + '../../infrastructure/RateLimiter':@RateLimiter "logger-sharelatex": log:-> warn:-> @@ -84,6 +91,29 @@ describe "EmailSender", -> args.replyTo.should.equal @opts.replyTo done() + + it "should not send an email when the rate limiter says no", (done)-> + @opts.sendingUser_id = "12321312321" + @RateLimiter.addCount.callsArgWith(1, null, false) + @sender.sendEmail @opts, => + @sesClient.sendMail.called.should.equal false + done() + + it "should send the email when the rate limtier says continue", (done)-> + @sesClient.sendMail.callsArgWith(1) + @opts.sendingUser_id = "12321312321" + @RateLimiter.addCount.callsArgWith(1, null, true) + @sender.sendEmail @opts, => + @sesClient.sendMail.called.should.equal true + done() + + it "should not check the rate limiter when there is no sendingUser_id", (done)-> + @sesClient.sendMail.callsArgWith(1) + @sender.sendEmail @opts, => + @sesClient.sendMail.called.should.equal true + @RateLimiter.addCount.called.should.equal false + done() + describe 'with plain-text email content', () -> beforeEach -> From 962a4d50398dace36ea6473cdc030f3028974f99 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 16 Jan 2017 09:17:38 +0000 Subject: [PATCH 099/204] roll out math mode linter for all users from our ace commit 953ff92c3283f03da94559d50a933fe685b05631 --- .../web/public/js/ace-1.2.5/mode-latex.js | 14 +- .../web/public/js/ace-1.2.5/worker-latex.js | 681 +++++++++++++++--- 2 files changed, 577 insertions(+), 118 deletions(-) diff --git a/services/web/public/js/ace-1.2.5/mode-latex.js b/services/web/public/js/ace-1.2.5/mode-latex.js index f183d7c263..8e7bbe4802 100644 --- a/services/web/public/js/ace-1.2.5/mode-latex.js +++ b/services/web/public/js/ace-1.2.5/mode-latex.js @@ -242,6 +242,10 @@ var createLatexWorker = function (session) { var annotations = []; var newRange = {}; var cursor = selection.getCursor(); + var maxRow = session.getLength() - 1; + var maxCol = (maxRow > 0) ? session.getLine(maxRow).length : 0; + var cursorAtEndOfDocument = (cursor.row == maxRow) && (cursor.column === maxCol); + suppressions = []; for (var i = 0, len = hints.length; i 0) { + return j; // advance past these tokens + } else { + return null; + } +}; + var readOptionalParams = function(TokeniseResult, k) { var Tokens = TokeniseResult.tokens; var text = TokeniseResult.text; + var params = Tokens[k+1]; + if(params && params[1] === "Text") { + var paramNum = text.substring(params[2], params[3]); + if (paramNum.match(/^\[\d+\](\[[^\]]*\])*\s*$/)) { + return k + 1; // got it + }; + }; + var count = 0; + var nextToken = Tokens[k+1]; + var pos = nextToken[2]; + + for (var i = pos, end = text.length; i < end; i++) { + var char = text[i]; + if (nextToken && i >= nextToken[2]) { k++; nextToken = Tokens[k+1];}; + if (char === "[") { count++; } + if (char === "]") { count--; } + if (count === 0 && char === "{") { return k - 1; } + if (count > 0 && (char === '\r' || char === '\n')) { return null; } + }; + return null; +}; + +var readOptionalGeneric = function(TokeniseResult, k) { + var Tokens = TokeniseResult.tokens; + var text = TokeniseResult.text; + var params = Tokens[k+1]; if(params && params[1] === "Text") { var paramNum = text.substring(params[2], params[3]); - if (paramNum.match(/^\[\d+\](\[[^\]]*\])*\s*$/)) { + if (paramNum.match(/^(\[[^\]]*\])+\s*$/)) { return k + 1; // got it }; }; return null; }; +var readOptionalDef = function (TokeniseResult, k) { + var Tokens = TokeniseResult.tokens; + var text = TokeniseResult.text; + + var defToken = Tokens[k]; + var pos = defToken[3]; + + var openBrace = "{"; + var nextToken = Tokens[k+1]; + for (var i = pos, end = text.length; i < end; i++) { + var char = text[i]; + if (nextToken && i >= nextToken[2]) { k++; nextToken = Tokens[k+1];}; + if (char === openBrace) { return k - 1; }; // move back to the last token of the optional arguments + if (char === '\r' || char === '\n') { return null; } + }; + + return null; + +}; + var readDefinition = function(TokeniseResult, k) { var Tokens = TokeniseResult.tokens; var text = TokeniseResult.text; @@ -1697,7 +1780,6 @@ var readUrl = function(TokeniseResult, k) { return null; }; - var InterpretTokens = function (TokeniseResult, ErrorReporter) { var Tokens = TokeniseResult.tokens; var linePosition = TokeniseResult.linePosition; @@ -1706,11 +1788,30 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { var TokenErrorFromTo = ErrorReporter.TokenErrorFromTo; var TokenError = ErrorReporter.TokenError; - var Environments = []; + var Environments = new EnvHandler(ErrorReporter); + + var nextGroupMathMode = null; // if the next group should have + var nextGroupMathModeStack = [] ; // tracking all nextGroupMathModes + var seenUserDefinedBeginEquation = false; // if we have seen macros like \beq + var seenUserDefinedEndEquation = false; // if we have seen macros like \eeq for (var i = 0, len = Tokens.length; i < len; i++) { var token = Tokens[i]; var line = token[0], type = token[1], start = token[2], end = token[3], seq = token[4]; + + if (type === "{") { + Environments.push({command:"{", token:token, mathMode: nextGroupMathMode}); + nextGroupMathModeStack.push(nextGroupMathMode); + nextGroupMathMode = null; + continue; + } else if (type === "}") { + Environments.push({command:"}", token:token}); + nextGroupMathMode = nextGroupMathModeStack.pop(); + continue; + } else { + nextGroupMathMode = null; + }; + if (type === "\\") { if (seq === "begin" || seq === "end") { var open = Tokens[i+1]; @@ -1759,15 +1860,31 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { } else { TokenError(token, "invalid environment command"); }; - } - } else if (seq === "newcommand" || seq === "renewcommand" || seq === "def" || seq === "DeclareRobustCommand") { - var newPos = read1arg(TokeniseResult, i, {allowStar: (seq != "def")}); + } + } else if (typeof seq === "string" && seq.match(/^(be|beq|beqa|bea)$/i)) { + seenUserDefinedBeginEquation = true; + } else if (typeof seq === "string" && seq.match(/^(ee|eeq|eeqn|eeqa|eeqan|eea)$/i)) { + seenUserDefinedEndEquation = true; + } else if (seq === "newcommand" || seq === "renewcommand" || seq === "DeclareRobustCommand") { + var newPos = read1arg(TokeniseResult, i, {allowStar: true}); if (newPos === null) { continue; } else {i = newPos;}; newPos = readOptionalParams(TokeniseResult, i); if (newPos === null) { /* do nothing */ } else {i = newPos;}; newPos = readDefinition(TokeniseResult, i); if (newPos === null) { /* do nothing */ } else {i = newPos;}; + } else if (seq === "def") { + newPos = read1arg(TokeniseResult, i); + if (newPos === null) { continue; } else {i = newPos;}; + newPos = readOptionalDef(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + + } else if (seq === "let") { + newPos = readLetDefinition(TokeniseResult, i); + if (newPos === null) { continue; } else {i = newPos;}; + } else if (seq === "newcolumntype") { newPos = read1name(TokeniseResult, i); if (newPos === null) { continue; } else {i = newPos;}; @@ -1791,128 +1908,435 @@ var InterpretTokens = function (TokeniseResult, ErrorReporter) { } else if (seq === "url") { newPos = readUrl(TokeniseResult, i); if (newPos === null) { TokenError(token, "invalid url command"); } else {i = newPos;}; + } else if (seq === "left" || seq === "right") { + var nextToken = Tokens[i+1]; + char = ""; + if (nextToken && nextToken[1] === "Text") { + char = text.substring(nextToken[2], nextToken[2] + 1); + } else if (nextToken && nextToken[1] === "\\" && nextToken[5] == "control-symbol") { + char = nextToken[4]; + } else if (nextToken && nextToken[1] === "\\") { + char = "unknown"; + } + if (char === "" || (char !== "unknown" && "(){}[]<>/|\\.".indexOf(char) === -1)) { + TokenError(token, "invalid bracket command"); + } else { + i = i + 1; + Environments.push({command:seq, token:token}); + }; + } else if (seq === "(" || seq === ")" || seq === "[" || seq === "]") { + Environments.push({command:seq, token:token}); + } else if (seq === "input") { + newPos = read1filename(TokeniseResult, i); + if (newPos === null) { continue; } else {i = newPos;}; + } else if (seq === "hbox" || seq === "text" || seq === "mbox" || seq === "footnote" || seq === "intertext" || seq === "shortintertext" || seq === "textnormal" || seq === "tag" || seq === "reflectbox" || seq === "textrm") { + nextGroupMathMode = false; + } else if (seq === "rotatebox" || seq === "scalebox") { + newPos = readOptionalGeneric(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + nextGroupMathMode = false; + } else if (seq === "resizebox") { + newPos = readOptionalGeneric(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + + nextGroupMathMode = false; + } else if (seq === "DeclareMathOperator") { + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + } else if (seq === "DeclarePairedDelimiter") { + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + newPos = readDefinition(TokeniseResult, i); + if (newPos === null) { /* do nothing */ } else {i = newPos;}; + } else if (typeof seq === "string" && seq.match(/^(alpha|beta|gamma|delta|epsilon|varepsilon|zeta|eta|theta|vartheta|iota|kappa|lambda|mu|nu|xi|pi|varpi|rho|varrho|sigma|varsigma|tau|upsilon|phi|varphi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)$/)) { + var currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) + if (currentMathMode === null) { + TokenError(token, type + seq + " must be inside math mode", {mathMode:true}); + }; + } else if (typeof seq === "string" && seq.match(/^(chapter|section|subsection|subsubsection)$/)) { + currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) + if (currentMathMode) { + TokenError(token, type + seq + " used inside math mode", {mathMode:true}); + Environments.resetMathMode(); + }; + } else if (typeof seq === "string" && seq.match(/^[a-z]+$/)) { + nextGroupMathMode = undefined; + }; + + } else if (type === "$") { + var lookAhead = Tokens[i+1]; + var nextIsDollar = lookAhead && lookAhead[1] === "$"; + currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) + if (nextIsDollar && (!currentMathMode || currentMathMode.command == "$$")) { + Environments.push({command:"$$", token:token}); + i = i + 1; + } else { + Environments.push({command:"$", token:token}); } - } else if (type === "{") { - Environments.push({command:"{", token:token}); - } else if (type === "}") { - Environments.push({command:"}", token:token}); - }; + } else if (type === "^" || type === "_") { + currentMathMode = Environments.getMathMode() ; // returns null / $(inline) / $$(display) + var insideGroup = Environments.insideGroup(); // true if inside {....} + if (currentMathMode === null && !insideGroup) { + TokenError(token, type + " must be inside math mode", {mathMode:true}); + }; + } }; + + if (seenUserDefinedBeginEquation && seenUserDefinedEndEquation) { + ErrorReporter.filterMath = true; + }; + return Environments; }; - -var CheckEnvironments = function (Environments, ErrorReporter) { +var EnvHandler = function (ErrorReporter) { var ErrorTo = ErrorReporter.EnvErrorTo; var ErrorFromTo = ErrorReporter.EnvErrorFromTo; var ErrorFrom = ErrorReporter.EnvErrorFrom; + var envs = []; + var state = []; var documentClosed = null; var inVerbatim = false; var verbatimRanges = []; - for (var i = 0, len = Environments.length; i < len; i++) { - var name = Environments[i].name ; - if (name && name.match(/^(verbatim|boxedverbatim|lstlisting|minted)$/)) { - Environments[i].verbatim = true; + + this.Environments = envs; + + this.push = function (newEnv) { + this.setEnvProps(newEnv); + this.checkAndUpdateState(newEnv); + envs.push(newEnv); + }; + + this._endVerbatim = function (thisEnv) { + var lastEnv = state.pop(); + if (lastEnv && lastEnv.name === thisEnv.name) { + inVerbatim = false; + verbatimRanges.push({start: lastEnv.token[2], end: thisEnv.token[2]}); + } else { + if(lastEnv) { state.push(lastEnv); } ; } - } - for (i = 0, len = Environments.length; i < len; i++) { - var thisEnv = Environments[i]; - if(thisEnv.command === "begin" || thisEnv.command === "{") { - if (inVerbatim) { continue; } // ignore anything in verbatim environments - if (thisEnv.verbatim) {inVerbatim = true;}; - state.push(thisEnv); - } else if (thisEnv.command === "end" || thisEnv.command === "}") { + }; + + var invalidEnvs = []; + + this._end = function (thisEnv) { + do { var lastEnv = state.pop(); + var retry = false; + var i; - if (inVerbatim) { - if (lastEnv && lastEnv.name === thisEnv.name) { - inVerbatim = false; - verbatimRanges.push({start: lastEnv.token[2], end: thisEnv.token[2]}); - continue; - } else { - if(lastEnv) { state.push(lastEnv); } ; - continue; // ignore all other commands - } - }; - - if (lastEnv && lastEnv.command === "{" && thisEnv.command === "}") { - continue; - } else if (lastEnv && lastEnv.name === thisEnv.name) { - if (thisEnv.name === "document" && !documentClosed) { + if (closedBy(lastEnv, thisEnv)) { + if (thisEnv.command === "end" && thisEnv.name === "document" && !documentClosed) { documentClosed = thisEnv; }; - continue; + return; } else if (!lastEnv) { - if (thisEnv.command === "}") { - if (documentClosed) { - ErrorFromTo(documentClosed, thisEnv, "\\end{" + documentClosed.name + "} is followed by unexpected end group }",{errorAtStart: true, type: "info"}); - } else { - ErrorTo(thisEnv, "unexpected end group }"); - }; - } else if (thisEnv.command === "end") { - if (documentClosed) { - ErrorFromTo(documentClosed, thisEnv, "\\end{" + documentClosed.name + "} is followed by unexpected content",{errorAtStart: true, type: "info"}); - } else { - ErrorTo(thisEnv, "unexpected \\end{" + thisEnv.name + "}"); - } + if (documentClosed) { + ErrorFromTo(documentClosed, thisEnv, "\\end{" + documentClosed.name + "} is followed by unexpected content",{errorAtStart: true, type: "info"}); + } else { + ErrorTo(thisEnv, "unexpected " + getName(thisEnv)); } - } else if (lastEnv.command === "begin" && thisEnv.command === "}") { - ErrorFromTo(lastEnv, thisEnv, "unexpected end group } after \\begin{" + lastEnv.name +"}"); - state.push(lastEnv); - } else if (lastEnv.command === "{" && thisEnv.command === "end") { - ErrorFromTo(lastEnv, thisEnv, - "unclosed group { found at \\end{" + thisEnv.name + "}", - {suppressIfEditing:true, errorAtStart: true, type:"warning"}); - i--; - } else if (lastEnv.command === "begin" && thisEnv.command === "end") { - ErrorFromTo(lastEnv, thisEnv, - "unclosed \\begin{" + lastEnv.name + "} found at \\end{" + thisEnv.name + "} " , - {errorAtStart: true}); - for (var j = i + 1; j < len; j++) { - var futureEnv = Environments[j]; - if (futureEnv.command === "end" && futureEnv.name === lastEnv.name) { - state.push(lastEnv); - continue; - } - } - lastEnv = state.pop(); - if(lastEnv) { - if (thisEnv.name === lastEnv.name) { - continue; - } else { - state.push(lastEnv); + } else if (invalidEnvs.length > 0 && (i = indexOfClosingEnvInArray(invalidEnvs, thisEnv) > -1)) { + invalidEnvs.splice(i, 1); + if (lastEnv) { state.push(lastEnv); } ; + return; + } else { + var status = reportError(lastEnv, thisEnv); + if (envPrecedence(lastEnv) < envPrecedence(thisEnv)) { + invalidEnvs.push(lastEnv); + retry = true; + } else { + var prevLastEnv = state.pop(); + if(prevLastEnv) { + if (thisEnv.name === prevLastEnv.name) { + return; + } else { + state.push(prevLastEnv); + } } + invalidEnvs.push(lastEnv); } } + } while (retry === true); + }; + + var CLOSING_DELIMITER = { + "{" : "}", + "left" : "right", + "[" : "]", + "(" : ")", + "$" : "$", + "$$": "$$" + }; + + var closedBy = function (lastEnv, thisEnv) { + if (!lastEnv) { + return false ; + } else if (thisEnv.command === "end") { + return lastEnv.command === "begin" && lastEnv.name === thisEnv.name; + } else if (thisEnv.command === CLOSING_DELIMITER[lastEnv.command]) { + return true; + } else { + return false; } - } - while (state.length > 0) { - thisEnv = state.pop(); - if (thisEnv.command === "{") { - ErrorFrom(thisEnv, "unclosed group {", {type:"warning"}); - } else if (thisEnv.command === "begin") { - ErrorFrom(thisEnv, "unclosed environment \\begin{" + thisEnv.name + "}"); + }; + + var indexOfClosingEnvInArray = function (envs, thisEnv) { + for (var i = 0, n = envs.length; i < n ; i++) { + if (closedBy(envs[i], thisEnv)) { + return i; + } + } + return -1; + }; + + var envPrecedence = function (env) { + var openScore = { + "{" : 1, + "left" : 2, + "$" : 3, + "$$" : 4, + "begin": 4 }; - } - var vlen = verbatimRanges.length; - len = ErrorReporter.tokenErrors.length; - if (vlen >0 && len > 0) { - for (i = 0; i < len; i++) { - var tokenError = ErrorReporter.tokenErrors[i]; - var startPos = tokenError.startPos; - var endPos = tokenError.endPos; - for (j = 0; j < vlen; j++) { - if (startPos > verbatimRanges[j].start && startPos < verbatimRanges[j].end) { - tokenError.ignore = true; - break; + var closeScore = { + "}" : 1, + "right" : 2, + "$" : 3, + "$$" : 5, + "end": 4 + }; + if (env.command) { + return openScore[env.command] || closeScore[env.command]; + } else { + return 0; + } + }; + + var getName = function(env) { + var description = { + "{" : "open group {", + "}" : "close group }", + "[" : "open display math \\[", + "]" : "close display math \\]", + "(" : "open inline math \\(", + ")" : "close inline math \\)", + "$" : "$", + "$$" : "$$", + "left" : "\\left", + "right" : "\\right" + }; + if (env.command === "begin" || env.command === "end") { + return "\\" + env.command + "{" + env.name + "}"; + } else if (env.command in description) { + return description[env.command]; + } else { + return env.command; + } + }; + + var EXTRA_CLOSE = 1; + var UNCLOSED_GROUP = 2; + var UNCLOSED_ENV = 3; + + var reportError = function(lastEnv, thisEnv) { + if (!lastEnv) { // unexpected close, nothing was open! + if (documentClosed) { + ErrorFromTo(documentClosed, thisEnv, "\\end{" + documentClosed.name + "} is followed by unexpected end group }",{errorAtStart: true, type: "info"}); + } else { + ErrorTo(thisEnv, "unexpected " + getName(thisEnv)); + }; + return EXTRA_CLOSE; + } else if (lastEnv.command === "{" && thisEnv.command === "end") { + ErrorFromTo(lastEnv, thisEnv, "unclosed " + getName(lastEnv) + " found at " + getName(thisEnv), + {suppressIfEditing:true, errorAtStart: true, type:"warning"}); + return UNCLOSED_GROUP; + } else { + var pLast = envPrecedence(lastEnv); + var pThis = envPrecedence(thisEnv); + if (pThis > pLast) { + ErrorFromTo(lastEnv, thisEnv, "unclosed " + getName(lastEnv) + " found at " + getName(thisEnv), + {suppressIfEditing:true, errorAtStart: true}); + } else { + ErrorFromTo(lastEnv, thisEnv, "unexpected " + getName(thisEnv) + " after " + getName(lastEnv)); + } + return UNCLOSED_ENV; + }; + }; + + this._beginMathMode = function (thisEnv) { + var currentMathMode = this.getMathMode(); // undefined, null, $, $$, name of mathmode env + if (currentMathMode) { + ErrorFrom(thisEnv, thisEnv.name + " used inside existing math mode " + getName(currentMathMode), + {suppressIfEditing:true, errorAtStart: true, mathMode:true}); + }; + thisEnv.mathMode = thisEnv; + state.push(thisEnv); + }; + + this._toggleMathMode = function (thisEnv) { + var lastEnv = state.pop(); + if (closedBy(lastEnv, thisEnv)) { + return; + } else { + if (lastEnv) {state.push(lastEnv);} + if (lastEnv && lastEnv.mathMode) { + this._end(thisEnv); + } else { + thisEnv.mathMode = thisEnv; + state.push(thisEnv); + } + }; + }; + + this.getMathMode = function () { + var n = state.length; + if (n > 0) { + return state[n-1].mathMode; + } else { + return null; + } + }; + + this.insideGroup = function () { + var n = state.length; + if (n > 0) { + return (state[n-1].command === "{"); + } else { + return null; + } + }; + + var resetMathMode = function () { + var n = state.length; + if (n > 0) { + var lastMathMode = state[n-1].mathMode; + do { + var lastEnv = state.pop(); + } while (lastEnv && lastEnv !== lastMathMode); + } else { + return; + } + }; + + this.resetMathMode = resetMathMode; + + var getNewMathMode = function (currentMathMode, thisEnv) { + var newMathMode = null; + + if (thisEnv.command === "{") { + if (thisEnv.mathMode !== null) { + newMathMode = thisEnv.mathMode; + } else { + newMathMode = currentMathMode; + } + } else if (thisEnv.command === "left") { + if (currentMathMode === null) { + ErrorFrom(thisEnv, "\\left can only be used in math mode", {mathMode: true}); + }; + newMathMode = currentMathMode; + } else if (thisEnv.command === "begin") { + var name = thisEnv.name; + if (name) { + if (name.match(/^(document|figure|center|enumerate|itemize|table|abstract|proof|lemma|theorem|definition|proposition|corollary|remark|notation|thebibliography)$/)) { + if (currentMathMode) { + ErrorFromTo(currentMathMode, thisEnv, thisEnv.name + " used inside " + getName(currentMathMode), + {suppressIfEditing:true, errorAtStart: true, mathMode: true}); + resetMathMode(); + }; + newMathMode = null; + } else if (name.match(/^(array|gathered|split|aligned|alignedat)\*?$/)) { + if (currentMathMode === null) { + ErrorFrom(thisEnv, thisEnv.name + " not inside math mode", {mathMode: true}); + }; + newMathMode = currentMathMode; + } else if (name.match(/^(math|displaymath|equation|eqnarray|multline|align|gather|flalign|alignat)\*?$/)) { + if (currentMathMode) { + ErrorFromTo(currentMathMode, thisEnv, thisEnv.name + " used inside " + getName(currentMathMode), + {suppressIfEditing:true, errorAtStart: true, mathMode: true}); + resetMathMode(); + }; + newMathMode = thisEnv; + } else { + newMathMode = undefined; // undefined means we don't know if we are in math mode or not + } + } + }; + return newMathMode; + }; + + this.checkAndUpdateState = function (thisEnv) { + if (inVerbatim) { + if (thisEnv.command === "end") { + this._endVerbatim(thisEnv); + } else { + return; // ignore anything in verbatim environments + } + } else if(thisEnv.command === "begin" || thisEnv.command === "{" || thisEnv.command === "left") { + if (thisEnv.verbatim) {inVerbatim = true;}; + var currentMathMode = this.getMathMode(); // undefined, null, $, $$, name of mathmode env + var newMathMode = getNewMathMode(currentMathMode, thisEnv); + thisEnv.mathMode = newMathMode; + state.push(thisEnv); + } else if (thisEnv.command === "end") { + this._end(thisEnv); + } else if (thisEnv.command === "(" || thisEnv.command === "[") { + this._beginMathMode(thisEnv); + } else if (thisEnv.command === ")" || thisEnv.command === "]") { + this._end(thisEnv); + } else if (thisEnv.command === "}") { + this._end(thisEnv); + } else if (thisEnv.command === "right") { + this._end(thisEnv); + } else if (thisEnv.command === "$" || thisEnv.command === "$$") { + this._toggleMathMode(thisEnv); + } + }; + + this.close = function () { + while (state.length > 0) { + var thisEnv = state.pop(); + if (thisEnv.command === "{") { + ErrorFrom(thisEnv, "unclosed group {", {type:"warning"}); + } else { + ErrorFrom(thisEnv, "unclosed " + getName(thisEnv)); + } + } + var vlen = verbatimRanges.length; + var len = ErrorReporter.tokenErrors.length; + if (vlen >0 && len > 0) { + for (var i = 0; i < len; i++) { + var tokenError = ErrorReporter.tokenErrors[i]; + var startPos = tokenError.startPos; + var endPos = tokenError.endPos; + for (var j = 0; j < vlen; j++) { + if (startPos > verbatimRanges[j].start && startPos < verbatimRanges[j].end) { + tokenError.ignore = true; + break; + } } } } - } + }; + this.setEnvProps = function (env) { + var name = env.name ; + if (name && name.match(/^(verbatim|boxedverbatim|lstlisting|minted|Verbatim)$/)) { + env.verbatim = true; + } + }; }; var ErrorReporter = function (TokeniseResult) { var text = TokeniseResult.text; @@ -1922,18 +2346,41 @@ var ErrorReporter = function (TokeniseResult) { var errors = [], tokenErrors = []; this.errors = errors; this.tokenErrors = tokenErrors; + this.filterMath = false; this.getErrors = function () { var returnedErrors = []; for (var i = 0, len = tokenErrors.length; i < len; i++) { if (!tokenErrors[i].ignore) { returnedErrors.push(tokenErrors[i]); } } - return returnedErrors.concat(errors); + var allErrors = returnedErrors.concat(errors); + var result = []; + var mathErrorCount = 0; + for (i = 0, len = allErrors.length; i < len; i++) { + if (allErrors[i].mathMode) { + mathErrorCount++; + } + if (mathErrorCount > 10) { + return []; + } + } + if (this.filterMath && mathErrorCount > 0) { + for (i = 0, len = allErrors.length; i < len; i++) { + if (!allErrors[i].mathMode) { + result.push(allErrors[i]); + } + } + return result; + } else { + return allErrors; + } }; - this.TokenError = function (token, message) { + this.TokenError = function (token, message, options) { + if(!options) { options = { suppressIfEditing:true } ; }; var line = token[0], type = token[1], start = token[2], end = token[3]; var start_col = start - linePosition[line]; + if (!end) { end = start + 1; } ; var end_col = end - linePosition[line]; tokenErrors.push({row: line, column: start_col, @@ -1945,10 +2392,12 @@ var ErrorReporter = function (TokeniseResult) { text:message, startPos: start, endPos: end, - suppressIfEditing:true}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; - this.TokenErrorFromTo = function (fromToken, toToken, message) { + this.TokenErrorFromTo = function (fromToken, toToken, message, options) { + if(!options) { options = {suppressIfEditing:true } ; }; var fromLine = fromToken[0], fromStart = fromToken[2], fromEnd = fromToken[3]; var toLine = toToken[0], toStart = toToken[2], toEnd = toToken[3]; if (!toEnd) { toEnd = toStart + 1;}; @@ -1965,7 +2414,8 @@ var ErrorReporter = function (TokeniseResult) { text:message, startPos: fromStart, endPos: toEnd, - suppressIfEditing:true}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; @@ -1986,7 +2436,8 @@ var ErrorReporter = function (TokeniseResult) { end_col: end_col, type: options.type ? options.type : "error", text:message, - suppressIfEditing:options.suppressIfEditing}); + suppressIfEditing:options.suppressIfEditing, + mathMode: options.mathMode}); }; this.EnvErrorTo = function (toEnv, message, options) { @@ -2002,7 +2453,8 @@ var ErrorReporter = function (TokeniseResult) { end_row: line, end_col: end_col, type: options.type ? options.type : "error", - text:message}; + text:message, + mathMode: options.mathMode}; errors.push(err); }; @@ -2019,7 +2471,8 @@ var ErrorReporter = function (TokeniseResult) { end_row: lineNumber, end_col: end_col, type: options.type ? options.type : "error", - text:message}); + text:message, + mathMode: options.mathMode}); }; }; @@ -2027,7 +2480,7 @@ var Parse = function (text) { var TokeniseResult = Tokenise(text); var Reporter = new ErrorReporter(TokeniseResult); var Environments = InterpretTokens(TokeniseResult, Reporter); - CheckEnvironments(Environments, Reporter); + Environments.close(); return Reporter.getErrors(); }; From 635b935acc7e7e3bbbf5abff6dbc99bfe9cf5d98 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 16 Jan 2017 11:46:59 +0000 Subject: [PATCH 100/204] Add an acceptance test for login rate limits, cleanup --- .../coffee/infrastructure/RateLimiter.coffee | 1 - .../coffee/RegistrationTests.coffee | 37 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/infrastructure/RateLimiter.coffee b/services/web/app/coffee/infrastructure/RateLimiter.coffee index 69050939fd..c749fa7e83 100644 --- a/services/web/app/coffee/infrastructure/RateLimiter.coffee +++ b/services/web/app/coffee/infrastructure/RateLimiter.coffee @@ -19,7 +19,6 @@ module.exports = RateLimiter = if err? return callback(err) allowed = timeLeft == 0 - console.log ">> limit", namespace, k, timeLeft, actionsLeft, ", allowed", allowed callback(null, allowed) clearRateLimit: (endpointName, subject, callback) -> diff --git a/services/web/test/acceptance/coffee/RegistrationTests.coffee b/services/web/test/acceptance/coffee/RegistrationTests.coffee index 2bf96f86de..20ea0a31b1 100644 --- a/services/web/test/acceptance/coffee/RegistrationTests.coffee +++ b/services/web/test/acceptance/coffee/RegistrationTests.coffee @@ -1,9 +1,11 @@ expect = require("chai").expect +assert = require("chai").assert async = require("async") User = require "./helpers/User" request = require "./helpers/request" settings = require "settings-sharelatex" redis = require "./helpers/redis" +_ = require 'lodash' @@ -32,6 +34,41 @@ tryLoginThroughRegistrationForm = (user, email, password, callback=(err, respons }, callback +describe "LoginRateLimit", -> + + before -> + @user = new User() + @badEmail = 'bademail@example.com' + @badPassword = 'badpassword' + + it 'should rate limit login attempts after 10 within two minutes', (done) -> + @user.request.get '/login', (err, res, body) => + async.timesSeries( + 15 + , (n, cb) => + @user.getCsrfToken (error) => + return cb(error) if error? + @user.request.post { + url: "/login" + json: + email: @badEmail + password: @badPassword + }, (err, response, body) => + cb(null, body?.message?.text) + , (err, results) => + # ten incorrect-credentials messages, then five rate-limit messages + expect(results.length).to.equal 15 + assert.deepEqual( + results, + _.concat( + _.fill([1..10], 'Your email or password is incorrect. Please try again'), + _.fill([1..5], 'This account has had too many login requests. Please wait 2 minutes before trying to log in again') + ) + ) + done() + ) + + describe "LoginViaRegistration", -> before (done) -> From 82ddeab2bd20ff2dccd8daaf2efed3ae1bee8f29 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 16 Jan 2017 13:45:01 +0000 Subject: [PATCH 101/204] If user tries to invite themselves to project, don't. --- .../CollaboratorsInviteController.coffee | 3 ++ .../web/app/views/project/editor/share.jade | 2 ++ .../CollaboratorsInviteControllerTests.coffee | 31 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index 9d9f4d2a5e..460b62da1d 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -37,6 +37,9 @@ module.exports = CollaboratorsInviteController = email = req.body.email sendingUser = AuthenticationController.getSessionUser(req) sendingUserId = sendingUser._id + if email == sendingUser.email + logger.log {projectId, email, sendingUserId}, "cannot invite yourself to project" + return res.json {invite: null, error: 'cannot_invite_self'} logger.log {projectId, email, sendingUserId}, "inviting to project" LimitationsManager.canAddXCollaborators projectId, 1, (error, allowed) => return next(error) if error? diff --git a/services/web/app/views/project/editor/share.jade b/services/web/app/views/project/editor/share.jade index 62de414064..78fb69c333 100644 --- a/services/web/app/views/project/editor/share.jade +++ b/services/web/app/views/project/editor/share.jade @@ -144,6 +144,8 @@ script(type='text/ng-template', id='shareProjectModalTemplate') span(ng-switch="state.errorReason") span(ng-switch-when="cannot_invite_non_user") | #{translate("cannot_invite_non_user")} + span(ng-switch-when="cannot_invite_self") + | #{translate("cannot_invite_self")} span(ng-switch-default) | #{translate("generic_something_went_wrong")} button.btn.btn-default( diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee index 28bf1ab6a2..cf398e69da 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee @@ -255,6 +255,37 @@ describe "CollaboratorsInviteController", -> it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 + describe 'when the user invites themselves to the project', -> + + beforeEach -> + @req.session.user = {_id: 'abc', email: 'me@example.com'} + @req.body.email = 'me@example.com' + @_checkShouldInviteEmail = sinon.stub( + @CollaboratorsInviteController, '_checkShouldInviteEmail' + ).callsArgWith(1, null, true) + @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController.inviteToProject @req, @res, @next + + afterEach -> + @_checkShouldInviteEmail.restore() + + it 'should reject action, return json response with error code', -> + @res.json.callCount.should.equal 1 + ({invite: null, error: 'cannot_invite_self'}).should.deep.equal(@res.json.firstCall.args[0]) + + it 'should not have called canAddXCollaborators', -> + @LimitationsManager.canAddXCollaborators.callCount.should.equal 0 + + it 'should not have called _checkShouldInviteEmail', -> + @_checkShouldInviteEmail.callCount.should.equal 0 + + it 'should not have called inviteToProject', -> + @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 + + it 'should not have called emitToRoom', -> + @EditorRealTimeController.emitToRoom.callCount.should.equal 0 + + describe "viewInvite", -> beforeEach -> From 278bfc1f503afa27093e576b6add9fb59077487a Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 15:06:47 +0100 Subject: [PATCH 102/204] Use 'show all' instead of 'more' --- services/web/app/views/project/editor/review-panel.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index d7c6bc9e52..499f01a3a7 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -142,14 +142,14 @@ script(type='text/ng-template', id='changeEntryTemplate') href ng-if="needsCollapsing" ng-click="toggleCollapse();" - )  {{ isCollapsed ? '(more)' : '(less)' }} + ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} span(ng-switch-when="delete") Deleted  del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} a.rp-collapse-toggle( href ng-if="needsCollapsing" ng-click="toggleCollapse();" - )  {{ isCollapsed ? '(more)' : '(less)' }} + ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} .rp-entry-metadata | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} From e5c96eb6190806ccddfa125c7a9a74506603ee4c Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 15:17:56 +0100 Subject: [PATCH 103/204] Focus on text area when adding a comment --- services/web/app/views/project/editor/review-panel.jade | 1 + .../coffee/ide/review-panel/directives/addCommentEntry.coffee | 2 ++ 2 files changed, 3 insertions(+) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 499f01a3a7..7fe12a4c2b 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -273,6 +273,7 @@ script(type='text/ng-template', id='addCommentEntryTemplate') ng-model="state.content" ng-keypress="handleCommentKeyPress($event);" placeholder="Add your comment here" + focus-on="comment:new:open" ) .rp-entry-actions a.rp-entry-button(href, ng-click="cancelNewComment();") diff --git a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee index de10524b70..7f41f00fa5 100644 --- a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee @@ -17,6 +17,8 @@ define [ scope.startNewComment = () -> scope.state.isAdding = true scope.onStartNew() + setTimeout () -> + scope.$broadcast "comment:new:open" scope.cancelNewComment = () -> scope.state.isAdding = false From d4f60977fd4f56149a895c597fbae6f539c89bd4 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 15:25:10 +0100 Subject: [PATCH 104/204] Add loading indicator while submitting new comments --- .../web/app/views/project/editor/review-panel.jade | 2 ++ .../controllers/ReviewPanelController.coffee | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 7fe12a4c2b..0efd5add10 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -185,6 +185,8 @@ script(type='text/ng-template', id='commentEntryTemplate') | {{ comment.content }} .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} + .rp-loading(ng-if="threads[entry.thread_id].submitting") + i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( ng-model="entry.replyContent" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index cdb66c52b9..4c65208ad9 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -44,8 +44,9 @@ define [ $scope.reviewPanelEventsBridge = new EventEmitter() ide.socket.on "new-comment", (thread_id, comment) -> - $scope.reviewPanel.commentThreads[thread_id] ?= { messages: [] } - $scope.reviewPanel.commentThreads[thread_id].messages.push(formatComment(comment)) + thread = getThread(thread_id) + delete thread.submitting + thread.messages.push(formatComment(comment)) $scope.$apply() $timeout () -> $scope.$broadcast "review-panel:layout" @@ -73,6 +74,10 @@ define [ getDocResolvedComments = (doc_id) -> $scope.reviewPanel.resolvedComments[doc_id] ?= {} return $scope.reviewPanel.resolvedComments[doc_id] + + getThread = (thread_id) -> + $scope.reviewPanel.commentThreads[thread_id] ?= { messages: [] } + return $scope.reviewPanel.commentThreads[thread_id] getChangeTracker = (doc_id) -> if !rangesTrackers[doc_id]? @@ -274,6 +279,8 @@ define [ $scope.submitNewComment = (content) -> thread_id = RangesTracker.generateId() + thread = getThread(thread_id) + thread.submitting = true $scope.$broadcast "comment:add", thread_id $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) .error (error) -> @@ -297,6 +304,8 @@ define [ .error (error) -> ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") + thread = getThread(thread_id) + thread.submitting = true entry.replyContent = "" entry.replying = false $timeout () -> From bf56952f88b6cfb4f32ffe4f1fd789b046b63120 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 15:31:51 +0100 Subject: [PATCH 105/204] Make overview panel entries jump to place in doc again --- services/web/app/views/project/editor/review-panel.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 0efd5add10..f0296a1d23 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -84,7 +84,7 @@ entry="entry" user="users[entry.metadata.user_id]" on-indicator-click="toggleReviewPanel();" - ng-click="gotoEntry(doc_id, entry)" + ng-click="gotoEntry(doc.doc.id, entry)" permissions="permissions" ) @@ -94,7 +94,7 @@ threads="reviewPanel.commentThreads" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" - ng-click="gotoEntry(doc_id, entry)" + ng-click="gotoEntry(doc.doc.id, entry)" permissions="permissions" ) From 5fb54d8447d59783e93f54313e2c59558055ada5 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 16:55:14 +0100 Subject: [PATCH 106/204] Don't refresh resolved comments every times an entry changes --- .../controllers/ReviewPanelController.coffee | 11 ++++++----- .../directives/resolvedCommentsDropdown.coffee | 3 +-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 4c65208ad9..656cb6c9f0 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -163,11 +163,12 @@ define [ $scope.refreshResolvedCommentsDropdown = () -> $scope.reviewPanel.dropdown.loading = true - refreshRanges() - .then () -> - $scope.reviewPanel.dropdown.loading = false - .catch () -> - $scope.reviewPanel.dropdown.loading = false + q = refreshRanges() + q.then () -> + $scope.reviewPanel.dropdown.loading = false + q.catch () -> + $scope.reviewPanel.dropdown.loading = false + return q updateEntries = (doc_id) -> rangesTracker = getChangeTracker(doc_id) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index f161338324..e70dcaf1ec 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -23,6 +23,7 @@ define [ scope.state.isOpen = !scope.state.isOpen if (scope.state.isOpen) scope.onOpen() + .then () -> filterResolvedComments() scope.resolvedComments = [] @@ -54,5 +55,3 @@ define [ resolvedComment.docName = getDocNameById(docId) scope.resolvedComments.push(resolvedComment) - - scope.$on "entries:changed", filterResolvedComments \ No newline at end of file From f12aeedb35a05535076a03d1bbe4218c8ccb349d Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 16 Jan 2017 16:57:20 +0100 Subject: [PATCH 107/204] Tweak padding around track changes toggle loading indicator --- services/web/public/stylesheets/app/editor/review-panel.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 646de2fc3a..707ac62b15 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -129,6 +129,9 @@ cursor: auto; margin-right: 5px; } + .review-panel-toolbar-spinner { + margin-left: 5px; + } .rp-entry-list { .rp-size-expanded & { From 65e257ca37157f4f645e200f0bef2c718e7bc789 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 16 Jan 2017 16:25:38 +0000 Subject: [PATCH 108/204] Change text marker colors on Ace dark themes. --- .../public/stylesheets/app/editor/review-panel.less | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 646de2fc3a..e7277e6be8 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -10,9 +10,11 @@ @rp-green : #2c8e30; @rp-dim-green : #cae3cb; +@rp-green-on-dark : rgba(37, 107, 41, 0.5); @rp-red : #c5060b; @rp-dim-red : #f3cdce; @rp-yellow : #f3b111; +@rp-yellow-on-dark : rgba(194, 93, 11, 0.5); @rp-dim-yellow : #ffe9b2; @rp-grey : #aaaaaa; @@ -703,6 +705,15 @@ border-left: 2px dotted @rp-red; margin-left: -1px; } + + .ace_dark { + .track-changes-comment-marker { + background-color: @rp-yellow-on-dark + } + .track-changes-added-marker { + background-color: @rp-green-on-dark; + } + } } .review-icon { From 121629426e971c71fc1d8a46b1896ddf341e3c0b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 16 Jan 2017 17:06:57 +0000 Subject: [PATCH 109/204] Avoid empty comment replies. --- .../web/app/views/project/editor/review-panel.jade | 12 +++++++++--- .../ide/review-panel/directives/commentEntry.coffee | 5 +++-- .../public/stylesheets/app/editor/review-panel.less | 13 +++++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index f0296a1d23..2646932ad2 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -195,10 +195,16 @@ script(type='text/ng-template', id='commentEntryTemplate') placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}" ) .rp-entry-actions - a.rp-entry-button(href, ng-click="animateAndCallOnResolve();", ng-if="permissions.comment && permissions.write") + button.rp-entry-button( + ng-click="animateAndCallOnResolve();" + ng-if="permissions.comment && permissions.write" + ) i.fa.fa-inbox |  Resolve - a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment") + button.rp-entry-button( + ng-click="onReply();" + ng-if="permissions.comment" + ng-disabled="!entry.replyContent.length") i.fa.fa-reply |  Reply @@ -214,7 +220,7 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') href ng-if="needsCollapsing" ng-click="toggleCollapse();" - )  {{ isCollapsed ? '(more)' : '(less)' }} + )  {{ isCollapsed ? '... (show all)' : ' (show less)' }} .rp-comment( ng-repeat="comment in thread.messages track by comment.id" ) diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 2d32f7f20e..63a20c2243 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -18,8 +18,9 @@ define [ scope.handleCommentReplyKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey ev.preventDefault() - ev.target.blur() - scope.onReply() + if scope.entry.length > 0 + ev.target.blur() + scope.onReply() scope.animateAndCallOnResolve = () -> scope.state.animating = true diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 3c3d4dc250..36e420633b 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -36,12 +36,25 @@ color: #FFF; text-align: center; line-height: 1.3; + user-select: none; + border: 0; + &:hover, &:focus { + outline: 0; background-color: darken(@rp-highlight-blue, 5%); text-decoration: none; color: #FFF; } + + &[disabled] { + opacity: 0.5; + + &:hover, + &:focus { + background-color: @rp-highlight-blue; + } + } } .triangle(@_, @width, @height, @color) { From 36f15ff56ec70b846796456242c593d7c4d29818 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 16 Jan 2017 17:14:06 +0000 Subject: [PATCH 110/204] Avoid empty comment submission. --- .../web/app/views/project/editor/review-panel.jade | 12 +++++++++--- .../review-panel/directives/addCommentEntry.coffee | 5 +++-- .../ide/review-panel/directives/commentEntry.coffee | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 2646932ad2..03454b92a8 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -204,7 +204,8 @@ script(type='text/ng-template', id='commentEntryTemplate') button.rp-entry-button( ng-click="onReply();" ng-if="permissions.comment" - ng-disabled="!entry.replyContent.length") + ng-disabled="!entry.replyContent.length" + ) i.fa.fa-reply |  Reply @@ -284,10 +285,15 @@ script(type='text/ng-template', id='addCommentEntryTemplate') focus-on="comment:new:open" ) .rp-entry-actions - a.rp-entry-button(href, ng-click="cancelNewComment();") + button.rp-entry-button( + ng-click="cancelNewComment();" + ) i.fa.fa-times |  Cancel - a.rp-entry-button(href, ng-click="submitNewComment()") + button.rp-entry-button( + ng-click="submitNewComment()" + ng-disabled="!state.content.length" + ) i.fa.fa-comment |  Comment diff --git a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee index 7f41f00fa5..124794e7b8 100644 --- a/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/addCommentEntry.coffee @@ -27,8 +27,9 @@ define [ scope.handleCommentKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey ev.preventDefault() - ev.target.blur() - scope.submitNewComment() + if scope.state.content.length > 0 + ev.target.blur() + scope.submitNewComment() scope.submitNewComment = () -> scope.onSubmit { content: scope.state.content } diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 63a20c2243..db54574d27 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -18,7 +18,7 @@ define [ scope.handleCommentReplyKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey ev.preventDefault() - if scope.entry.length > 0 + if scope.entry.replyContent.length > 0 ev.target.blur() scope.onReply() From d66f2033bbdd5f0ef9db9e1359fea0da67e0793c Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 17 Jan 2017 10:16:10 +0000 Subject: [PATCH 111/204] Ensure that review panel elements are above, z-index-wise, Ace elements. --- services/web/public/stylesheets/app/editor/review-panel.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 36e420633b..c65e0e8240 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -111,7 +111,7 @@ border-left: solid 1px @rp-border-grey; font-size: @rp-base-font-size; color: @rp-type-blue; - z-index: 4; // 3 is Ace's gutter z-index value. + z-index: 6; } .review-panel-toolbar { From 1b63db91d053823682809b0397d044879d42eabd Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 11:51:02 +0100 Subject: [PATCH 112/204] Add in a null check --- .../aceEditor/track-changes/TrackChangesManager.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 5de7e3be2d..2d57100cc5 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -399,11 +399,11 @@ define [ session = @editor.getSession() markers = session.getMarkers() {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change_id] - if background_marker_id? + if background_marker_id? and markers[background_marker_id]? background_marker = markers[background_marker_id] background_marker.range.start = start background_marker.range.end = end - if callout_marker_id? + if callout_marker_id? and markers[callout_marker_id]? callout_marker = markers[callout_marker_id] callout_marker.range.start = start callout_marker.range.end = start From 70c7e32e589e4f5f567a04fb2b5e2ff8351ef3f9 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 17 Jan 2017 10:52:04 +0000 Subject: [PATCH 113/204] Add a 'testEmail' email type --- .../coffee/Features/Email/EmailBuilder.coffee | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 306aad3d2a..1aa6f2e413 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -123,8 +123,6 @@ Thank you description: "Join #{ opts.project.name } at ShareLaTeX" }) - - templates.completeJoinGroupAccount = subject: _.template "Verify Email to join <%= group_name %> group" layout: BaseWithHeaderEmailLayout @@ -149,6 +147,21 @@ Thank You gmailGoToAction: null }) +templates.testEmail = + subject: _.template "Test Email from ShareLaTeX" + layout: PersonalEmailLayout + type: 'notification' + plainTextTemplate: _.template """ +Hi, + +This is a test email, from ShareLaTeX. + +#{settings.appName} - <%= siteUrl %> +""" + compiledTemplate: _.template """ +

This is a test email, from ShareLaTeX.

+ """ + module.exports = templates: templates @@ -163,4 +176,4 @@ module.exports = html: template.layout(opts) text: template?.plainTextTemplate?(opts) type:template.type - } \ No newline at end of file + } From 4a47d135c7159053681daf5e2c7af9a400df8fdb Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 14:54:22 +0100 Subject: [PATCH 114/204] Reapply ops to track changes as current user when reconnecting --- services/web/public/coffee/ide/editor/Document.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index fbef95e67b..9d7eca813a 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -360,8 +360,8 @@ define [ @ranges.track_changes = @doc.track_changes for op in @doc.getInflightOp() or [] @ranges.setIdSeed(@doc.track_changes_id_seeds.inflight) - @ranges.applyOp(op) + @ranges.applyOp(op, { user_id: @track_changes_as }) for op in @doc.getPendingOp() or [] @ranges.setIdSeed(@doc.track_changes_id_seeds.pending) - @ranges.applyOp(op) + @ranges.applyOp(op, { user_id: @track_changes_as }) @ranges.emit "redraw" From 960d1e8b2fe83d0af30d973560fc84066883159a Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 15:04:49 +0100 Subject: [PATCH 115/204] Only call /project/.../threads if we need the threads --- .../web/app/views/project/editor/review-panel.jade | 2 +- .../controllers/ReviewPanelController.coffee | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 03454b92a8..7982a5f991 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -185,7 +185,7 @@ script(type='text/ng-template', id='commentEntryTemplate') | {{ comment.content }} .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} - .rp-loading(ng-if="threads[entry.thread_id].submitting") + .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].submitting") i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 656cb6c9f0..675c8644ec 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -205,6 +205,9 @@ define [ if !$scope.users[change.metadata.user_id]? refreshChangeUsers(change.metadata.user_id) + if rangesTracker.comments.length > 0 + ensureThreadsAreLoaded() + for comment in rangesTracker.comments changed = true delete delete_changes[comment.id] @@ -394,7 +397,12 @@ define [ .error () -> _refreshingRangeUsers = false - refreshThreads = () -> + _threadsLoaded = false + ensureThreadsAreLoaded = () -> + if _threadsLoaded + # We get any updates in real time so only need to load them once. + return + _threadsLoaded = true $http.get "/project/#{$scope.project_id}/threads" .success (threads) -> for thread_id, _ of $scope.reviewPanel.resolvedThreadIds @@ -408,8 +416,6 @@ define [ $scope.reviewPanel.resolvedThreadIds[thread_id] = true $scope.reviewPanel.commentThreads = threads - refreshThreads() - formatComment = (comment) -> comment.user = formatUser(comment.user) comment.timestamp = new Date(comment.timestamp) From dec9b5bf1e5828d505e3092989ab1ae05e4dd5fc Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 15:10:44 +0100 Subject: [PATCH 116/204] Use email if name is blank --- .../review-panel/controllers/ReviewPanelController.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 675c8644ec..91792255de 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -415,6 +415,8 @@ define [ thread.resolved_by_user = formatUser(thread.resolved_by_user) $scope.reviewPanel.resolvedThreadIds[thread_id] = true $scope.reviewPanel.commentThreads = threads + $timeout () -> + $scope.$broadcast "review-panel:layout" formatComment = (comment) -> comment.user = formatUser(comment.user) @@ -436,9 +438,9 @@ define [ name = "You" isSelf = true else - name = [user.first_name, user.last_name].filter((n) -> n?).join(" ") + name = [user.first_name, user.last_name].filter((n) -> n? and n != "").join(" ") if name == "" - name = "Unknown" + name = user.email?.split("@")[0] or "Unknown" isSelf = false return { id: id From e15d01874d35dbd3efc0dfa8b4a19eff3e3a37ef Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 15:13:50 +0100 Subject: [PATCH 117/204] Remove comment from dropdown when it is reopened --- .../ide/review-panel/directives/resolvedCommentsDropdown.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index e70dcaf1ec..fa556e2939 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -29,6 +29,7 @@ define [ scope.handleUnresolve = (threadId) -> scope.onUnresolve({ threadId }) + scope.resolvedComments = scope.resolvedComments.filter (c) -> c.threadId != threadId scope.handleDelete = (entryId, threadId) -> scope.onDelete({ entryId, threadId }) From 1137ab0715e4b1c0ad7c41061fa056f3b05ee3a3 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 17 Jan 2017 14:35:37 +0000 Subject: [PATCH 118/204] Don't record redirect to static asset paths --- .../Authentication/AuthenticationController.coffee | 4 ++-- .../Authentication/AuthenticationControllerTests.coffee | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee b/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee index e8e3db4f93..485b046a85 100644 --- a/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee +++ b/services/web/app/coffee/Features/Authentication/AuthenticationController.coffee @@ -194,8 +194,8 @@ module.exports = AuthenticationController = _setRedirectInSession: (req, value) -> if !value? - value = if Object.keys(req.query).length > 0 then "#{req.path}?#{querystring.stringify(req.query)}" else req.path - if req.session? + value = if Object.keys(req.query).length > 0 then "#{req.path}?#{querystring.stringify(req.query)}" else "#{req.path}" + if req.session? && !value.match(new RegExp('^\/(socket.io|js|stylesheets|img)\/.*$')) req.session.postLoginRedirect = value _getRedirectFromSession: (req) -> diff --git a/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee b/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee index 515b888911..94e930c7b1 100644 --- a/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Authentication/AuthenticationControllerTests.coffee @@ -550,6 +550,15 @@ describe "AuthenticationController", -> @AuthenticationController._setRedirectInSession(@req, '/somewhere/specific') expect(@req.session.postLoginRedirect).to.equal "/somewhere/specific" + describe 'with a js path', -> + + beforeEach -> + @req = {session: {}} + + it 'should not set the redirect', -> + @AuthenticationController._setRedirectInSession(@req, '/js/something.js') + expect(@req.session.postLoginRedirect).to.equal undefined + describe '_getRedirectFromSession', -> beforeEach -> @req = {session: {postLoginRedirect: "/a?b=c"}} From 2f119e5787e0778f63e341df0e6b24ec93f17e7b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 17 Jan 2017 14:39:31 +0000 Subject: [PATCH 119/204] Track review features usage. --- services/web/public/coffee/ide.coffee | 1 + .../controllers/ReviewPanelController.coffee | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index 370f144ee1..b4a1d7b689 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -86,6 +86,7 @@ define [ ide.toggleReviewPanel = $scope.toggleReviewPanel = () -> $scope.ui.reviewPanelOpen = !$scope.ui.reviewPanelOpen + event_tracking.sendMB "rp-toggle-panel", { value : $scope.ui.reviewPanelOpen } $scope.$watch "ui.reviewPanelOpen", (value) -> if value? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 91792255de..f3ade87b14 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -4,7 +4,7 @@ define [ "ide/colors/ColorManager" "ide/review-panel/RangesTracker" ], (App, EventEmitter, ColorManager, RangesTracker) -> - App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http) -> + App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http, event_tracking) -> $reviewPanelEl = $element.find "#review-panel" $scope.SubViews = @@ -272,9 +272,11 @@ define [ $scope.acceptChange = (entry_id) -> $http.post "/project/#{$scope.project_id}/doc/#{$scope.editor.open_doc_id}/changes/#{entry_id}/accept", {_csrf: window.csrfToken} $scope.$broadcast "change:accept", entry_id + event_tracking.sendMB "rp-change-accepted", { view: if $scope.ui.reviewPanelOpen then $scope.reviewPanel.subView else 'mini' } $scope.rejectChange = (entry_id) -> $scope.$broadcast "change:reject", entry_id + event_tracking.sendMB "rp-change-rejected", { view: if $scope.ui.reviewPanelOpen then $scope.reviewPanel.subView else 'mini' } $scope.startNewComment = () -> $scope.$broadcast "comment:select_line" @@ -291,7 +293,8 @@ define [ ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") $timeout () -> $scope.$broadcast "review-panel:layout" - + event_tracking.sendMB "rp-new-comment", { size: content.length } + $scope.cancelNewComment = (entry) -> $timeout () -> $scope.$broadcast "review-panel:layout" @@ -307,6 +310,11 @@ define [ $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) .error (error) -> ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") + + trackingMetadata = + view: if $scope.ui.reviewPanelOpen then $scope.reviewPanel.subView else 'mini' + size: entry.replyContent.length + thread: thread_id thread = getThread(thread_id) thread.submitting = true @@ -314,6 +322,7 @@ define [ entry.replying = false $timeout () -> $scope.$broadcast "review-panel:layout" + event_tracking.sendMB "rp-comment-reply", trackingMetadata $scope.cancelReply = (entry) -> entry.replying = false @@ -324,10 +333,12 @@ define [ entry.focused = false $http.post "/project/#{$scope.project_id}/thread/#{entry.thread_id}/resolve", {_csrf: window.csrfToken} _onCommentResolved(entry.thread_id, ide.$scope.user) + event_tracking.sendMB "rp-comment-resolve", { view: if $scope.ui.reviewPanelOpen then $scope.reviewPanel.subView else 'mini' } $scope.unresolveComment = (thread_id) -> _onCommentReopened(thread_id) $http.post "/project/#{$scope.project_id}/thread/#{thread_id}/reopen", {_csrf: window.csrfToken} + event_tracking.sendMB "rp-comment-reopen" _onCommentResolved = (thread_id, user) -> thread = $scope.reviewPanel.commentThreads[thread_id] @@ -354,9 +365,11 @@ define [ $scope.deleteComment = (entry_id, thread_id) -> _onCommentDeleted(thread_id) $scope.$broadcast "comment:remove", entry_id + event_tracking.sendMB "rp-comment-delete" $scope.setSubView = (subView) -> $scope.reviewPanel.subView = subView + event_tracking.sendMB "rp-subview-change", { subView } $scope.gotoEntry = (doc_id, entry) -> ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) @@ -364,6 +377,7 @@ define [ $scope.toggleTrackChanges = (value) -> $scope.editor.wantTrackChanges = value $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} + event_tracking.sendMB "rp-trackchanges-toggle", { value } ide.socket.on "toggle-track-changes", (value) -> $scope.$apply () -> From 5a34d17947341419f2d77f89db48ce49eae91fc9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 15:59:18 +0100 Subject: [PATCH 120/204] Toggle track changes in a project based on the owner's feature switch --- .../app/coffee/Features/Project/ProjectEditorHandler.coffee | 6 ++++++ services/web/app/coffee/models/User.coffee | 2 +- services/web/app/views/project/editor/editor.jade | 2 +- services/web/app/views/project/editor/header.jade | 2 +- services/web/public/coffee/ide.coffee | 5 +---- .../review-panel/controllers/ReviewPanelController.coffee | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee index 1a10321544..e25ff29b28 100644 --- a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee @@ -19,6 +19,11 @@ module.exports = ProjectEditorHandler = if !result.invites? result.invites = [] + + hasTrackChanges = false + for member in members + if member.privilegeLevel == "owner" and member.user?.featureSwitches?.track_changes + hasTrackChanges = true {owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members) result.owner = owner @@ -32,6 +37,7 @@ module.exports = ProjectEditorHandler = compileGroup:"standard" templates: false references: false + trackChanges: hasTrackChanges }) return result diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index f120422128..c6e469a1f4 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -39,7 +39,7 @@ UserSchema = new Schema references: { type:Boolean, default: Settings.defaultFeatures.references } } featureSwitches : { - pdfng: { type: Boolean } + track_changes: { type: Boolean } } referal_id : {type:String, default:() -> uuid.v4().split("-")[0]} refered_users: [ type:ObjectId, ref:'User' ] diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index d31be444af..f57eb4dd2a 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -52,7 +52,7 @@ div.full-size( syntax-validation="settings.syntaxValidation", review-panel="reviewPanel", events-bridge="reviewPanelEventsBridge" - track-changes-enabled="trackChangesFeatureFlag", + track-changes-enabled="project.features.trackChanges", track-changes= "editor.trackChanges", doc-id="editor.open_doc_id" renderer-data="reviewPanel.rendererData" diff --git a/services/web/app/views/project/editor/header.jade b/services/web/app/views/project/editor/header.jade index d1305d28b9..601b18e9cf 100644 --- a/services/web/app/views/project/editor/header.jade +++ b/services/web/app/views/project/editor/header.jade @@ -87,7 +87,7 @@ header.toolbar.toolbar-header.toolbar-with-labels( a.btn.btn-full-height( href, - ng-if="trackChangesFeatureFlag", + ng-if="project.features.trackChanges", ng-class="{ active: ui.reviewPanelOpen }" ng-click="toggleReviewPanel()" ) diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index 370f144ee1..9baaf1c66f 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -57,9 +57,6 @@ define [ else this.$originalApply(fn); - if window.location.search.match /tcon=true/ # track changes on - $scope.trackChangesFeatureFlag = true - $scope.state = { loading: true load_progress: 40 @@ -70,7 +67,7 @@ define [ view: "editor" chatOpen: false pdfLayout: 'sideBySide' - reviewPanelOpen: localStorage("ui.reviewPanelOpen.#{window.project_id}") and $scope.trackChangesFeatureFlag + reviewPanelOpen: localStorage("ui.reviewPanelOpen.#{window.project_id}") and $scope.project.features.trackChanges showCodeCheckerOnboarding: !window.userSettings.syntaxValidation? } $scope.user = window.user diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 91792255de..717513e884 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -129,7 +129,7 @@ define [ entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] or {} Object.keys(entries).length ), (nEntries) -> - $scope.reviewPanel.hasEntries = nEntries > 0 and $scope.trackChangesFeatureFlag + $scope.reviewPanel.hasEntries = nEntries > 0 and $scope.project.features.trackChanges $scope.$watch "ui.reviewPanelOpen", (reviewPanelOpen) -> return if !reviewPanelOpen? From 4d15fc30baa744c979cfec2db729d677bcfba26c Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 16:55:18 +0100 Subject: [PATCH 121/204] Don't flash resolved comments when editor is loading --- services/web/app/views/project/editor/editor.jade | 3 ++- services/web/app/views/project/editor/review-panel.jade | 1 + services/web/public/coffee/ide.coffee | 2 +- .../review-panel/controllers/ReviewPanelController.coffee | 3 +++ services/web/public/stylesheets/app/editor/review-panel.less | 5 ++++- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index f57eb4dd2a..935ce8bb28 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -18,7 +18,8 @@ div.full-size( 'rp-state-overview': (reviewPanel.subView === SubViews.OVERVIEW),\ 'rp-size-mini': (!ui.reviewPanelOpen && reviewPanel.hasEntries),\ 'rp-size-expanded': ui.reviewPanelOpen,\ - 'rp-layout-left': reviewPanel.layoutToLeft\ + 'rp-layout-left': reviewPanel.layoutToLeft,\ + 'rp-loading-threads': reviewPanel.loadingThreads\ }" ) .loading-panel(ng-show="!editor.sharejs_doc || editor.opening") diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 7982a5f991..95e54368c9 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -52,6 +52,7 @@ on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" permissions="permissions" + ng-if="!reviewPanel.loadingThreads" ) div(ng-if="entry.type === 'add-comment' && permissions.comment") diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index 9baaf1c66f..b17b9b05f4 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -67,7 +67,7 @@ define [ view: "editor" chatOpen: false pdfLayout: 'sideBySide' - reviewPanelOpen: localStorage("ui.reviewPanelOpen.#{window.project_id}") and $scope.project.features.trackChanges + reviewPanelOpen: localStorage("ui.reviewPanelOpen.#{window.project_id}") showCodeCheckerOnboarding: !window.userSettings.syntaxValidation? } $scope.user = window.user diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 717513e884..d00e7078aa 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -25,6 +25,7 @@ define [ resolvedThreadIds: {} layoutToLeft: false rendererData: {} + loadingThreads: false $scope.$on "layout:pdf:linked", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) @@ -403,8 +404,10 @@ define [ # We get any updates in real time so only need to load them once. return _threadsLoaded = true + $scope.reviewPanel.loadingThreads = true $http.get "/project/#{$scope.project_id}/threads" .success (threads) -> + $scope.reviewPanel.loadingThreads = false for thread_id, _ of $scope.reviewPanel.resolvedThreadIds delete $scope.reviewPanel.resolvedThreadIds[thread_id] for thread_id, thread of threads diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index c65e0e8240..511c9b25b1 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -692,7 +692,7 @@ .track-changes-marker-callout { border-radius: 0; position: absolute; - .rp-state-overview & { + .rp-state-overview &, .rp-loading-threads & { display: none; } } @@ -709,6 +709,9 @@ .track-changes-marker { border-radius: 0; position: absolute; + .rp-loading-threads & { + display: none; + } } .track-changes-comment-marker { From f27118084ca895f0fb826e8ba7e2e86f5b7fd070 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 17 Jan 2017 16:03:41 +0000 Subject: [PATCH 122/204] Make review header icon behave like font-awesome icons. --- .../public/stylesheets/app/editor/review-panel.less | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 511c9b25b1..759c7705a6 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -736,10 +736,13 @@ } .review-icon { - position: absolute; + display: inline-block; background: url('/img/review-icon-sprite.png') top/30px no-repeat; width: 30px; - height: 30px; + + &::before { + content: '\00a0'; // Non-breakable space. A non-breakable character here makes this icon work like font-awesome. + } .toolbar .btn-full-height:hover & { background-position-y: -30px; @@ -749,11 +752,6 @@ .toolbar .btn-full-height:active & { background-position-y: -60px; } - - & + .toolbar-label { - margin-left: 34px; - } - } .resolved-comments-toggle { From 59ab66fca28af34a54a35b2111d7abb7a0823651 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 17 Jan 2017 16:25:18 +0000 Subject: [PATCH 123/204] Fix double-callback --- services/web/app/coffee/Features/Email/EmailSender.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Email/EmailSender.coffee b/services/web/app/coffee/Features/Email/EmailSender.coffee index 7a909e083e..69574c8276 100644 --- a/services/web/app/coffee/Features/Email/EmailSender.coffee +++ b/services/web/app/coffee/Features/Email/EmailSender.coffee @@ -41,7 +41,7 @@ else checkCanSendEmail = (options, callback)-> if !options.sendingUser_id? #email not sent from user, not rate limited - callback(null, true) + return callback(null, true) opts = endpointName: "send_email" timeInterval: 60 * 60 * 3 From 786c92b2fcd5e2d62b9e79291953a99d682a1a50 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 17 Jan 2017 17:34:11 +0100 Subject: [PATCH 124/204] Don't show delete comment button (until it works) --- .../web/app/views/project/editor/review-panel.jade | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 95e54368c9..0419884502 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -249,11 +249,11 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') ng-click="onUnresolve({ 'threadId': thread.threadId });" ) |  Re-open - a.rp-entry-button( - href - ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });" - ) - |  Delete + //- a.rp-entry-button( + //- href + //- ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });" + //- ) + //- |  Delete script(type='text/ng-template', id='addCommentEntryTemplate') From 329c6af1682924c1467f916026ff95da856b0127 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 17 Jan 2017 17:20:51 +0000 Subject: [PATCH 125/204] Add a track-changes indicator in the editor, for when the review panel is closed. --- .../web/app/views/project/editor/editor.jade | 9 +++++ .../stylesheets/app/editor/review-panel.less | 39 ++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index 935ce8bb28..e02b9ec3d0 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -58,6 +58,15 @@ div.full-size( doc-id="editor.open_doc_id" renderer-data="reviewPanel.rendererData" ) + + a.rp-track-changes-indicator( + href + ng-if="editor.wantTrackChanges" + ng-click="toggleReviewPanel();" + ng-class="{ 'rp-track-changes-indicator-on-dark' : darkTheme }" + ) Track changes is + strong on + include ./review-panel diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 759c7705a6..54142f2dcc 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -827,4 +827,41 @@ color: darken(@rp-type-blue, 5%); text-decoration: none; } -} \ No newline at end of file +} + +.rp-track-changes-indicator { + display: none; + position: absolute; + top: 0; + right: @review-off-width; + padding: 5px 10px; + background-color: rgba(240, 240, 240, 0.9); + color: @rp-type-blue; + text-align: center; + border-bottom-left-radius: 3px; + font-size: 10px; + z-index: 2; + + &.rp-track-changes-indicator-on-dark { + background-color: rgba(88, 88, 88, .8); + color: #FFF; + + &:hover, + &:focus { + background-color: rgba(88, 88, 88, 1); + color: #FFF; + } + } + + &:hover, + &:focus { + outline: 0; + text-decoration: none; + background-color: rgba(240, 240, 240, 1); + color: @rp-type-blue; + } + + .rp-size-mini & { + display: block; + } +} From 49fe8ef3a3bdf1d6afb280a41bb0d3eb4cfd044c Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 10:53:59 +0000 Subject: [PATCH 126/204] Update entry truncating logic while typing. --- .../coffee/ide/review-panel/directives/changeEntry.coffee | 7 +++++-- .../review-panel/directives/resolvedCommentEntry.coffee | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index d21cdc10b2..96f5e50016 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -13,10 +13,13 @@ define [ onIndicatorClick: "&" link: (scope, element, attrs) -> scope.contentLimit = 40 - scope.needsCollapsing = scope.entry.content.length > scope.contentLimit scope.isCollapsed = true + scope.needsCollapsing = false scope.toggleCollapse = () -> scope.isCollapsed = !scope.isCollapsed $timeout () -> - scope.$emit "review-panel:layout" \ No newline at end of file + scope.$emit "review-panel:layout" + + scope.$watch "entry.content.length", (contentLength) -> + scope.needsCollapsing = contentLength > scope.contentLimit \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index 8b933e05f2..ac945a927b 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -11,10 +11,13 @@ define [ onDelete: "&" link: (scope, element, attrs) -> scope.contentLimit = 40 - scope.needsCollapsing = scope.thread.content.length > scope.contentLimit + scope.needsCollapsing = false scope.isCollapsed = true scope.toggleCollapse = () -> scope.isCollapsed = !scope.isCollapsed $timeout () -> - scope.$emit "review-panel:layout" \ No newline at end of file + scope.$emit "review-panel:layout" + + scope.$watch "thread.content.length", (contentLength) -> + scope.needsCollapsing = contentLength > scope.contentLimit \ No newline at end of file From 2589ac7d58f41a5e437cd3992dcdebb50c87c297 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 10:55:51 +0000 Subject: [PATCH 127/204] Remove unneeded review panel layout event. --- .../ide/review-panel/directives/resolvedCommentEntry.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee index ac945a927b..8a1d42990b 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentEntry.coffee @@ -16,8 +16,6 @@ define [ scope.toggleCollapse = () -> scope.isCollapsed = !scope.isCollapsed - $timeout () -> - scope.$emit "review-panel:layout" scope.$watch "thread.content.length", (contentLength) -> scope.needsCollapsing = contentLength > scope.contentLimit \ No newline at end of file From 8922c9dbf57d8fbe55650d467457a3706c041ae0 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 18 Jan 2017 15:28:51 +0000 Subject: [PATCH 128/204] New email layout for "testEmail" --- .../coffee/Features/Email/EmailBuilder.coffee | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 1aa6f2e413..0a06a2a175 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -147,20 +147,29 @@ Thank You gmailGoToAction: null }) + templates.testEmail = - subject: _.template "Test Email from ShareLaTeX" - layout: PersonalEmailLayout - type: 'notification' + subject: _.template "A Test Email from ShareLaTeX" + layout: BaseWithHeaderEmailLayout + type:"notification" plainTextTemplate: _.template """ Hi, -This is a test email, from ShareLaTeX. +This is a test email sent from ShareLaTeX. #{settings.appName} - <%= siteUrl %> """ - compiledTemplate: _.template """ -

This is a test email, from ShareLaTeX.

- """ + compiledTemplate: (opts) -> + SingleCTAEmailBody({ + title: "A Test Email from ShareLaTeX" + greeting: "Hi," + message: "This is a test email sent from ShareLaTeX" + secondaryMessage: null + ctaText: "Open ShareLaTeX" + ctaURL: "/" + gmailGoToAction: null + }) + module.exports = templates: templates From e0f3593bffc3d6d51bece67b6a9c07ed0b6d1acd Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 15:38:18 +0000 Subject: [PATCH 129/204] Add autoprefixer to Grunt tasks. --- services/web/Gruntfile.coffee | 14 +++++++++++--- services/web/package.json | 9 ++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index 2444c8cb0d..7ae6cba36c 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -1,5 +1,6 @@ fs = require "fs" PackageVersions = require "./app/coffee/infrastructure/PackageVersions" +require('es6-promise').polyfill() module.exports = (grunt) -> grunt.loadNpmTasks 'grunt-contrib-coffee' @@ -18,6 +19,7 @@ module.exports = (grunt) -> grunt.loadNpmTasks 'grunt-contrib-watch' grunt.loadNpmTasks 'grunt-parallel' grunt.loadNpmTasks 'grunt-exec' + grunt.loadNpmTasks 'grunt-postcss' # grunt.loadNpmTasks 'grunt-contrib-imagemin' # grunt.loadNpmTasks 'grunt-sprity' @@ -136,8 +138,14 @@ module.exports = (grunt) -> files: "public/stylesheets/style.css": "public/stylesheets/style.less" - - + postcss: + options: + map: true, + processors: [ + require('autoprefixer')({browsers: [ 'last 2 versions', 'ie >= 10' ]}) + ] + dist: + src: 'public/stylesheets/style.css' env: run: @@ -366,7 +374,7 @@ module.exports = (grunt) -> grunt.registerTask 'compile:server', 'Compile the server side coffee script', ['clean:app', 'coffee:app', 'coffee:app_dir', 'compile:modules:server'] grunt.registerTask 'compile:client', 'Compile the client side coffee script', ['coffee:client', 'coffee:sharejs', 'wrap_sharejs', "compile:modules:client", 'compile:modules:inject_clientside_includes'] - grunt.registerTask 'compile:css', 'Compile the less files to css', ['less'] + grunt.registerTask 'compile:css', 'Compile the less files to css', ['less', 'postcss:dist'] grunt.registerTask 'compile:minify', 'Concat and minify the client side js', ['requirejs', "file_append", "exec:cssmin",] grunt.registerTask 'compile:unit_tests', 'Compile the unit tests', ['clean:unit_tests', 'coffee:unit_tests'] grunt.registerTask 'compile:acceptance_tests', 'Compile the acceptance tests', ['clean:acceptance_tests', 'coffee:acceptance_tests'] diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..cd1d43c455 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -67,10 +67,12 @@ "passport-saml": "^0.15.0" }, "devDependencies": { + "autoprefixer": "^6.6.1", "bunyan": "0.22.1", - "translations-sharelatex": "git+https://github.com/sharelatex/translations-sharelatex.git#master", "chai": "", "chai-spies": "", + "clean-css": "^3.4.18", + "es6-promise": "^4.0.5", "grunt-available-tasks": "0.4.1", "grunt-bunyan": "0.5.0", "grunt-contrib-clean": "0.5.0", @@ -79,7 +81,6 @@ "grunt-contrib-requirejs": "0.4.1", "grunt-contrib-watch": "^1.0.0", "grunt-env": "0.4.4", - "clean-css": "^3.4.18", "grunt-exec": "^0.4.7", "grunt-execute": "^0.2.2", "grunt-file-append": "0.0.6", @@ -87,9 +88,11 @@ "grunt-mocha-test": "0.9.0", "grunt-newer": "^1.2.0", "grunt-parallel": "^0.5.1", + "grunt-postcss": "^0.8.0", "grunt-sed": "^0.1.1", "sandboxed-module": "0.2.0", "sinon": "", - "timekeeper": "" + "timekeeper": "", + "translations-sharelatex": "git+https://github.com/sharelatex/translations-sharelatex.git#master" } } From 5489514d7a7ae410229550c179fc6bc1f1dfd3ed Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 18 Jan 2017 15:38:34 +0000 Subject: [PATCH 130/204] Add some compatibility style rules for IE10. --- .../web/app/views/project/editor/review-panel.jade | 1 + .../public/stylesheets/app/editor/review-panel.less | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 0419884502..ccb5cb035f 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,6 +1,7 @@ #review-panel .review-panel-toolbar resolved-comments-dropdown( + class="rp-flex-block" entries="reviewPanel.resolvedComments" threads="reviewPanel.commentThreads" resolved-ids="reviewPanel.resolvedThreadIds" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 54142f2dcc..5de21f913a 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -32,6 +32,7 @@ .rp-button() { + display: block; // IE doesn't do flex with inline items. background-color: @rp-highlight-blue; color: #FFF; text-align: center; @@ -119,6 +120,7 @@ .rp-size-expanded & { display: flex; align-items: center; + justify-content: space-around; padding: 0 5px; } // .rp-state-current-file & { @@ -592,6 +594,7 @@ z-index: 2; } .rp-nav-item { + display: block; color: lighten(@rp-type-blue, 25%); flex: 0 0 50%; border-top: solid 3px transparent; @@ -813,7 +816,8 @@ } } .resolved-comments-scroller { - flex: 0 0 100%; + flex: 0 0 auto; // Can't use 100% in the flex-basis key here, IE won't account for padding. + width: 100%; // We need to set the width explicitly, as flex-basis won't work. padding: 5px; overflow-y: auto; } @@ -865,3 +869,10 @@ display: block; } } + +// Helper class for elements which aren't treated as flex-items by IE10, e.g: +// * inline items; +// * unknown elements (elements which aren't standard DOM elements, such as custom element directives) +.rp-flex-block { + display: block; +} From 3b9a599276ed5adf00e63ee5a4935be772c9eed3 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 11:57:49 +0000 Subject: [PATCH 131/204] Fix entries z-index issues on IE10. --- .../public/stylesheets/app/editor/review-panel.less | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 5de21f913a..0d167a1b3e 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -123,12 +123,8 @@ justify-content: space-around; padding: 0 5px; } - // .rp-state-current-file & { - // position: absolute; - // top: 0; - // left: 0; - // right: 0; - // } + + position: relative; height: @rp-toolbar-height; border-bottom: 1px solid @rp-border-grey; background-color: @rp-bg-dim-blue; @@ -793,7 +789,7 @@ position: absolute; width: 300px; left: -150px; - max-height: 90%; + max-height: ~"calc(100vh - 100px)"; margin-top: @rp-entry-arrow-width * 1.5; margin-left: 1em; background-color: @rp-bg-blue; From 76ea469970c068147da6ec7579a58b93c1d28009 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 12:12:34 +0000 Subject: [PATCH 132/204] Reposition the track-changes indicator element to avoid issues with IE positioning. --- services/web/app/views/project/editor/editor.jade | 9 --------- services/web/app/views/project/editor/review-panel.jade | 8 ++++++++ .../web/public/stylesheets/app/editor/review-panel.less | 1 + 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index e02b9ec3d0..bcb778fda4 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -59,15 +59,6 @@ div.full-size( renderer-data="reviewPanel.rendererData" ) - a.rp-track-changes-indicator( - href - ng-if="editor.wantTrackChanges" - ng-click="toggleReviewPanel();" - ng-class="{ 'rp-track-changes-indicator-on-dark' : darkTheme }" - ) Track changes is - strong on - - include ./review-panel .ui-layout-east diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index ccb5cb035f..cdd99612da 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -1,4 +1,12 @@ #review-panel + a.rp-track-changes-indicator( + href + ng-if="editor.wantTrackChanges" + ng-click="toggleReviewPanel();" + ng-class="{ 'rp-track-changes-indicator-on-dark' : darkTheme }" + ) Track changes is + strong on + .review-panel-toolbar resolved-comments-dropdown( class="rp-flex-block" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 0d167a1b3e..d66c7b8f7c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -841,6 +841,7 @@ border-bottom-left-radius: 3px; font-size: 10px; z-index: 2; + white-space: nowrap; &.rp-track-changes-indicator-on-dark { background-color: rgba(88, 88, 88, .8); From cd975c6190859d56df7bb588dd0d9a6c703f9153 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 15:43:26 +0000 Subject: [PATCH 133/204] Make resolved comments dropdown scrollable in IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index d66c7b8f7c..97d93e8b9f 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -814,6 +814,7 @@ .resolved-comments-scroller { flex: 0 0 auto; // Can't use 100% in the flex-basis key here, IE won't account for padding. width: 100%; // We need to set the width explicitly, as flex-basis won't work. + max-height: ~"calc(100vh - 100px)"; // We also need to explicitly set the max-height, IE won't compute the flex-determined height. padding: 5px; overflow-y: auto; } From a4ca7e2ca99149c358e8db27fce9982a332aea6b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:54:34 +0000 Subject: [PATCH 134/204] Fix padding in the review panel toolbar for IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 97d93e8b9f..2b933afdbe 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -120,7 +120,7 @@ .rp-size-expanded & { display: flex; align-items: center; - justify-content: space-around; + justify-content: space-between; padding: 0 5px; } From 1970ab4e63fd9c9431d77135f487461d22fcf0c1 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:55:21 +0000 Subject: [PATCH 135/204] Ensure that the change text fits the entry UI in IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 2b933afdbe..0696a8640c 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -336,6 +336,9 @@ .rp-entry-details { line-height: 1.4; margin-left: 5px; + // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0). + // This is needed to ensure that IE makes the element fill the available space. + flex: 1 0 0px; .rp-state-overview & { margin-left: 0; From 73c1016f4a89d8304af1fbb91a4a8b5ebd5aacd7 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 19 Jan 2017 16:58:16 +0000 Subject: [PATCH 136/204] Avoid using 0px, because minifiers might convert the value to 0, which will still cause issues on IE. --- services/web/public/stylesheets/app/editor/review-panel.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 0696a8640c..5fba75c032 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -338,7 +338,7 @@ margin-left: 5px; // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0). // This is needed to ensure that IE makes the element fill the available space. - flex: 1 0 0px; + flex: 1 0 1px; .rp-state-overview & { margin-left: 0; From 57cd54bf559dde79709b9542aa65ac2238f061be Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 20 Jan 2017 12:03:02 +0000 Subject: [PATCH 137/204] WIP: migrate from jade to pug --- services/web/Gruntfile.coffee | 6 +- .../StaticPages/HomeController.coffee | 6 +- .../app/coffee/infrastructure/Modules.coffee | 4 +- .../app/coffee/infrastructure/Server.coffee | 2 +- .../app/views/admin/{index.jade => index.pug} | 0 .../admin/{register.jade => register.pug} | 0 .../beta_program/{opt_in.jade => opt_in.pug} | 0 .../{blog_holder.jade => blog_holder.pug} | 0 ...act-us-modal.jade => contact-us-modal.pug} | 0 .../app/views/general/{404.jade => 404.pug} | 0 .../app/views/general/{500.jade => 500.pug} | 0 .../views/general/{closed.jade => closed.pug} | 0 .../web/app/views/{layout.jade => layout.pug} | 0 .../views/layout/{footer.jade => footer.pug} | 0 .../views/layout/{navbar.jade => navbar.pug} | 0 .../views/project/{editor.jade => editor.pug} | 0 .../{binary-file.jade => binary-file.pug} | 0 .../project/editor/{chat.jade => chat.pug} | 0 .../editor/{editor.jade => editor.pug} | 0 ...onboarding.jade => feature-onboarding.pug} | 0 .../editor/{file-tree.jade => file-tree.pug} | 0 .../editor/{header.jade => header.pug} | 0 .../editor/{history.jade => history.pug} | 0 .../editor/{hotkeys.jade => hotkeys.pug} | 0 .../editor/{left-menu.jade => left-menu.pug} | 0 .../project/editor/{pdf.jade => pdf.pug} | 0 ...ish-template.jade => publish-template.pug} | 0 .../{review-panel.jade => review-panel.pug} | 0 .../project/editor/{share.jade => share.pug} | 0 .../invite/{not-valid.jade => not-valid.pug} | 0 .../project/invite/{show.jade => show.pug} | 0 .../app/views/project/{list.jade => list.pug} | 0 ...oject-list.jade => empty-project-list.pug} | 0 .../project/list/{modals.jade => modals.pug} | 0 .../{notifications.jade => notifications.pug} | 0 .../{project-list.jade => project-list.pug} | 0 .../list/{side-bar.jade => side-bar.pug} | 0 .../views/referal/{bonus.jade => bonus.pug} | 0 .../app/views/{restore.jade => restore.pug} | 0 ...scribtex-modal.jade => scribtex-modal.pug} | 0 .../web/app/views/{sentry.jade => sentry.pug} | 0 ...custom_account.jade => custom_account.pug} | 0 .../{dashboard.jade => dashboard.pug} | 0 ...-details.jade => edit-billing-details.pug} | 0 .../group/{invite.jade => invite.pug} | 0 ...ccessful_join.jade => successful_join.pug} | 0 .../{group_admin.jade => group_admin.pug} | 0 .../views/subscriptions/{new.jade => new.pug} | 0 .../subscriptions/{plans.jade => plans.pug} | 0 ...ption.jade => successful_subscription.pug} | 0 ...gradeToAnnual.jade => upgradeToAnnual.pug} | 0 .../web/app/views/{tests.jade => tests.pug} | 0 ...n_message.jade => translation_message.pug} | 0 .../{case_study.jade => case_study.pug} | 0 ...sity_holder.jade => university_holder.pug} | 0 .../user/{activate.jade => activate.pug} | 0 .../app/views/user/{login.jade => login.pug} | 0 .../{passwordReset.jade => passwordReset.pug} | 0 .../user/{register.jade => register.pug} | 0 .../user/{restricted.jade => restricted.pug} | 0 .../user/{sessions.jade => sessions.pug} | 0 .../{setPassword.jade => setPassword.pug} | 0 .../user/{settings.jade => settings.pug} | 0 ...nus_templates.jade => bonus_templates.pug} | 0 services/web/npm-shrinkwrap.json | 3195 ++++++++--------- services/web/package.json | 3 +- .../ide/editor/directives/aceEditor.coffee | 2 +- 67 files changed, 1469 insertions(+), 1749 deletions(-) rename services/web/app/views/admin/{index.jade => index.pug} (100%) rename services/web/app/views/admin/{register.jade => register.pug} (100%) rename services/web/app/views/beta_program/{opt_in.jade => opt_in.pug} (100%) rename services/web/app/views/blog/{blog_holder.jade => blog_holder.pug} (100%) rename services/web/app/views/{contact-us-modal.jade => contact-us-modal.pug} (100%) rename services/web/app/views/general/{404.jade => 404.pug} (100%) rename services/web/app/views/general/{500.jade => 500.pug} (100%) rename services/web/app/views/general/{closed.jade => closed.pug} (100%) rename services/web/app/views/{layout.jade => layout.pug} (100%) rename services/web/app/views/layout/{footer.jade => footer.pug} (100%) rename services/web/app/views/layout/{navbar.jade => navbar.pug} (100%) rename services/web/app/views/project/{editor.jade => editor.pug} (100%) rename services/web/app/views/project/editor/{binary-file.jade => binary-file.pug} (100%) rename services/web/app/views/project/editor/{chat.jade => chat.pug} (100%) rename services/web/app/views/project/editor/{editor.jade => editor.pug} (100%) rename services/web/app/views/project/editor/{feature-onboarding.jade => feature-onboarding.pug} (100%) rename services/web/app/views/project/editor/{file-tree.jade => file-tree.pug} (100%) rename services/web/app/views/project/editor/{header.jade => header.pug} (100%) rename services/web/app/views/project/editor/{history.jade => history.pug} (100%) rename services/web/app/views/project/editor/{hotkeys.jade => hotkeys.pug} (100%) rename services/web/app/views/project/editor/{left-menu.jade => left-menu.pug} (100%) rename services/web/app/views/project/editor/{pdf.jade => pdf.pug} (100%) rename services/web/app/views/project/editor/{publish-template.jade => publish-template.pug} (100%) rename services/web/app/views/project/editor/{review-panel.jade => review-panel.pug} (100%) rename services/web/app/views/project/editor/{share.jade => share.pug} (100%) rename services/web/app/views/project/invite/{not-valid.jade => not-valid.pug} (100%) rename services/web/app/views/project/invite/{show.jade => show.pug} (100%) rename services/web/app/views/project/{list.jade => list.pug} (100%) rename services/web/app/views/project/list/{empty-project-list.jade => empty-project-list.pug} (100%) rename services/web/app/views/project/list/{modals.jade => modals.pug} (100%) rename services/web/app/views/project/list/{notifications.jade => notifications.pug} (100%) rename services/web/app/views/project/list/{project-list.jade => project-list.pug} (100%) rename services/web/app/views/project/list/{side-bar.jade => side-bar.pug} (100%) rename services/web/app/views/referal/{bonus.jade => bonus.pug} (100%) rename services/web/app/views/{restore.jade => restore.pug} (100%) rename services/web/app/views/{scribtex-modal.jade => scribtex-modal.pug} (100%) rename services/web/app/views/{sentry.jade => sentry.pug} (100%) rename services/web/app/views/subscriptions/{custom_account.jade => custom_account.pug} (100%) rename services/web/app/views/subscriptions/{dashboard.jade => dashboard.pug} (100%) rename services/web/app/views/subscriptions/{edit-billing-details.jade => edit-billing-details.pug} (100%) rename services/web/app/views/subscriptions/group/{invite.jade => invite.pug} (100%) rename services/web/app/views/subscriptions/group/{successful_join.jade => successful_join.pug} (100%) rename services/web/app/views/subscriptions/{group_admin.jade => group_admin.pug} (100%) rename services/web/app/views/subscriptions/{new.jade => new.pug} (100%) rename services/web/app/views/subscriptions/{plans.jade => plans.pug} (100%) rename services/web/app/views/subscriptions/{successful_subscription.jade => successful_subscription.pug} (100%) rename services/web/app/views/subscriptions/{upgradeToAnnual.jade => upgradeToAnnual.pug} (100%) rename services/web/app/views/{tests.jade => tests.pug} (100%) rename services/web/app/views/translations/{translation_message.jade => translation_message.pug} (100%) rename services/web/app/views/university/{case_study.jade => case_study.pug} (100%) rename services/web/app/views/university/{university_holder.jade => university_holder.pug} (100%) rename services/web/app/views/user/{activate.jade => activate.pug} (100%) rename services/web/app/views/user/{login.jade => login.pug} (100%) rename services/web/app/views/user/{passwordReset.jade => passwordReset.pug} (100%) rename services/web/app/views/user/{register.jade => register.pug} (100%) rename services/web/app/views/user/{restricted.jade => restricted.pug} (100%) rename services/web/app/views/user/{sessions.jade => sessions.pug} (100%) rename services/web/app/views/user/{setPassword.jade => setPassword.pug} (100%) rename services/web/app/views/user/{settings.jade => settings.pug} (100%) rename services/web/app/views/view_templates/{bonus_templates.jade => bonus_templates.pug} (100%) diff --git a/services/web/Gruntfile.coffee b/services/web/Gruntfile.coffee index 2444c8cb0d..6c9bb0ede0 100644 --- a/services/web/Gruntfile.coffee +++ b/services/web/Gruntfile.coffee @@ -222,11 +222,11 @@ module.exports = (grunt) -> sed: version: - path: "app/views/sentry.jade" + path: "app/views/sentry.pug" pattern: '@@COMMIT@@', replacement: '<%= commit %>', release: - path: "app/views/sentry.jade" + path: "app/views/sentry.pug" pattern: "@@RELEASE@@" replacement: process.env.BUILD_NUMBER || "(unknown build)" @@ -389,5 +389,5 @@ module.exports = (grunt) -> grunt.registerTask 'default', 'run' - grunt.registerTask 'version', "Write the version number into sentry.jade", ['git-rev-parse', 'sed'] + grunt.registerTask 'version', "Write the version number into sentry.pug", ['git-rev-parse', 'sed'] diff --git a/services/web/app/coffee/Features/StaticPages/HomeController.coffee b/services/web/app/coffee/Features/StaticPages/HomeController.coffee index 6675d55333..c1a8c46323 100755 --- a/services/web/app/coffee/Features/StaticPages/HomeController.coffee +++ b/services/web/app/coffee/Features/StaticPages/HomeController.coffee @@ -7,7 +7,7 @@ fs = require "fs" ErrorController = require "../Errors/ErrorController" AuthenticationController = require('../Authentication/AuthenticationController') -homepageExists = fs.existsSync Path.resolve(__dirname + "/../../../views/external/home.jade") +homepageExists = fs.existsSync Path.resolve(__dirname + "/../../../views/external/home.pug") module.exports = HomeController = index : (req,res)-> @@ -28,10 +28,10 @@ module.exports = HomeController = externalPage: (page, title) -> return (req, res, next = (error) ->) -> - path = Path.resolve(__dirname + "/../../../views/external/#{page}.jade") + path = Path.resolve(__dirname + "/../../../views/external/#{page}.pug") fs.exists path, (exists) -> # No error in this callback - old method in Node.js! if exists - res.render "external/#{page}.jade", + res.render "external/#{page}.pug", title: title else ErrorController.notFound(req, res, next) diff --git a/services/web/app/coffee/infrastructure/Modules.coffee b/services/web/app/coffee/infrastructure/Modules.coffee index 1b3c2ea9a5..e7d521fa56 100644 --- a/services/web/app/coffee/infrastructure/Modules.coffee +++ b/services/web/app/coffee/infrastructure/Modules.coffee @@ -1,6 +1,6 @@ fs = require "fs" Path = require "path" -jade = require "jade" +pug = require "pug" async = require "async" MODULE_BASE_PATH = Path.resolve(__dirname + "/../../../modules") @@ -29,7 +29,7 @@ module.exports = Modules = for module in @modules for view, partial of module.viewIncludes or {} @viewIncludes[view] ||= [] - @viewIncludes[view].push jade.compile(fs.readFileSync(Path.join(MODULE_BASE_PATH, module.name, "app/views", partial + ".jade")), doctype: "html") + @viewIncludes[view].push pug.compile(fs.readFileSync(Path.join(MODULE_BASE_PATH, module.name, "app/views", partial + ".pug")), doctype: "html") moduleIncludes: (view, locals) -> compiledPartials = Modules.viewIncludes[view] or [] diff --git a/services/web/app/coffee/infrastructure/Server.coffee b/services/web/app/coffee/infrastructure/Server.coffee index 43683bdd4e..3a152b045d 100644 --- a/services/web/app/coffee/infrastructure/Server.coffee +++ b/services/web/app/coffee/infrastructure/Server.coffee @@ -62,7 +62,7 @@ if Settings.behindProxy webRouter.use express.static(__dirname + '/../../../public', {maxAge: staticCacheAge }) app.set 'views', __dirname + '/../../views' -app.set 'view engine', 'jade' +app.set 'view engine', 'pug' Modules.loadViewIncludes app diff --git a/services/web/app/views/admin/index.jade b/services/web/app/views/admin/index.pug similarity index 100% rename from services/web/app/views/admin/index.jade rename to services/web/app/views/admin/index.pug diff --git a/services/web/app/views/admin/register.jade b/services/web/app/views/admin/register.pug similarity index 100% rename from services/web/app/views/admin/register.jade rename to services/web/app/views/admin/register.pug diff --git a/services/web/app/views/beta_program/opt_in.jade b/services/web/app/views/beta_program/opt_in.pug similarity index 100% rename from services/web/app/views/beta_program/opt_in.jade rename to services/web/app/views/beta_program/opt_in.pug diff --git a/services/web/app/views/blog/blog_holder.jade b/services/web/app/views/blog/blog_holder.pug similarity index 100% rename from services/web/app/views/blog/blog_holder.jade rename to services/web/app/views/blog/blog_holder.pug diff --git a/services/web/app/views/contact-us-modal.jade b/services/web/app/views/contact-us-modal.pug similarity index 100% rename from services/web/app/views/contact-us-modal.jade rename to services/web/app/views/contact-us-modal.pug diff --git a/services/web/app/views/general/404.jade b/services/web/app/views/general/404.pug similarity index 100% rename from services/web/app/views/general/404.jade rename to services/web/app/views/general/404.pug diff --git a/services/web/app/views/general/500.jade b/services/web/app/views/general/500.pug similarity index 100% rename from services/web/app/views/general/500.jade rename to services/web/app/views/general/500.pug diff --git a/services/web/app/views/general/closed.jade b/services/web/app/views/general/closed.pug similarity index 100% rename from services/web/app/views/general/closed.jade rename to services/web/app/views/general/closed.pug diff --git a/services/web/app/views/layout.jade b/services/web/app/views/layout.pug similarity index 100% rename from services/web/app/views/layout.jade rename to services/web/app/views/layout.pug diff --git a/services/web/app/views/layout/footer.jade b/services/web/app/views/layout/footer.pug similarity index 100% rename from services/web/app/views/layout/footer.jade rename to services/web/app/views/layout/footer.pug diff --git a/services/web/app/views/layout/navbar.jade b/services/web/app/views/layout/navbar.pug similarity index 100% rename from services/web/app/views/layout/navbar.jade rename to services/web/app/views/layout/navbar.pug diff --git a/services/web/app/views/project/editor.jade b/services/web/app/views/project/editor.pug similarity index 100% rename from services/web/app/views/project/editor.jade rename to services/web/app/views/project/editor.pug diff --git a/services/web/app/views/project/editor/binary-file.jade b/services/web/app/views/project/editor/binary-file.pug similarity index 100% rename from services/web/app/views/project/editor/binary-file.jade rename to services/web/app/views/project/editor/binary-file.pug diff --git a/services/web/app/views/project/editor/chat.jade b/services/web/app/views/project/editor/chat.pug similarity index 100% rename from services/web/app/views/project/editor/chat.jade rename to services/web/app/views/project/editor/chat.pug diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.pug similarity index 100% rename from services/web/app/views/project/editor/editor.jade rename to services/web/app/views/project/editor/editor.pug diff --git a/services/web/app/views/project/editor/feature-onboarding.jade b/services/web/app/views/project/editor/feature-onboarding.pug similarity index 100% rename from services/web/app/views/project/editor/feature-onboarding.jade rename to services/web/app/views/project/editor/feature-onboarding.pug diff --git a/services/web/app/views/project/editor/file-tree.jade b/services/web/app/views/project/editor/file-tree.pug similarity index 100% rename from services/web/app/views/project/editor/file-tree.jade rename to services/web/app/views/project/editor/file-tree.pug diff --git a/services/web/app/views/project/editor/header.jade b/services/web/app/views/project/editor/header.pug similarity index 100% rename from services/web/app/views/project/editor/header.jade rename to services/web/app/views/project/editor/header.pug diff --git a/services/web/app/views/project/editor/history.jade b/services/web/app/views/project/editor/history.pug similarity index 100% rename from services/web/app/views/project/editor/history.jade rename to services/web/app/views/project/editor/history.pug diff --git a/services/web/app/views/project/editor/hotkeys.jade b/services/web/app/views/project/editor/hotkeys.pug similarity index 100% rename from services/web/app/views/project/editor/hotkeys.jade rename to services/web/app/views/project/editor/hotkeys.pug diff --git a/services/web/app/views/project/editor/left-menu.jade b/services/web/app/views/project/editor/left-menu.pug similarity index 100% rename from services/web/app/views/project/editor/left-menu.jade rename to services/web/app/views/project/editor/left-menu.pug diff --git a/services/web/app/views/project/editor/pdf.jade b/services/web/app/views/project/editor/pdf.pug similarity index 100% rename from services/web/app/views/project/editor/pdf.jade rename to services/web/app/views/project/editor/pdf.pug diff --git a/services/web/app/views/project/editor/publish-template.jade b/services/web/app/views/project/editor/publish-template.pug similarity index 100% rename from services/web/app/views/project/editor/publish-template.jade rename to services/web/app/views/project/editor/publish-template.pug diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.pug similarity index 100% rename from services/web/app/views/project/editor/review-panel.jade rename to services/web/app/views/project/editor/review-panel.pug diff --git a/services/web/app/views/project/editor/share.jade b/services/web/app/views/project/editor/share.pug similarity index 100% rename from services/web/app/views/project/editor/share.jade rename to services/web/app/views/project/editor/share.pug diff --git a/services/web/app/views/project/invite/not-valid.jade b/services/web/app/views/project/invite/not-valid.pug similarity index 100% rename from services/web/app/views/project/invite/not-valid.jade rename to services/web/app/views/project/invite/not-valid.pug diff --git a/services/web/app/views/project/invite/show.jade b/services/web/app/views/project/invite/show.pug similarity index 100% rename from services/web/app/views/project/invite/show.jade rename to services/web/app/views/project/invite/show.pug diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.pug similarity index 100% rename from services/web/app/views/project/list.jade rename to services/web/app/views/project/list.pug diff --git a/services/web/app/views/project/list/empty-project-list.jade b/services/web/app/views/project/list/empty-project-list.pug similarity index 100% rename from services/web/app/views/project/list/empty-project-list.jade rename to services/web/app/views/project/list/empty-project-list.pug diff --git a/services/web/app/views/project/list/modals.jade b/services/web/app/views/project/list/modals.pug similarity index 100% rename from services/web/app/views/project/list/modals.jade rename to services/web/app/views/project/list/modals.pug diff --git a/services/web/app/views/project/list/notifications.jade b/services/web/app/views/project/list/notifications.pug similarity index 100% rename from services/web/app/views/project/list/notifications.jade rename to services/web/app/views/project/list/notifications.pug diff --git a/services/web/app/views/project/list/project-list.jade b/services/web/app/views/project/list/project-list.pug similarity index 100% rename from services/web/app/views/project/list/project-list.jade rename to services/web/app/views/project/list/project-list.pug diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.pug similarity index 100% rename from services/web/app/views/project/list/side-bar.jade rename to services/web/app/views/project/list/side-bar.pug diff --git a/services/web/app/views/referal/bonus.jade b/services/web/app/views/referal/bonus.pug similarity index 100% rename from services/web/app/views/referal/bonus.jade rename to services/web/app/views/referal/bonus.pug diff --git a/services/web/app/views/restore.jade b/services/web/app/views/restore.pug similarity index 100% rename from services/web/app/views/restore.jade rename to services/web/app/views/restore.pug diff --git a/services/web/app/views/scribtex-modal.jade b/services/web/app/views/scribtex-modal.pug similarity index 100% rename from services/web/app/views/scribtex-modal.jade rename to services/web/app/views/scribtex-modal.pug diff --git a/services/web/app/views/sentry.jade b/services/web/app/views/sentry.pug similarity index 100% rename from services/web/app/views/sentry.jade rename to services/web/app/views/sentry.pug diff --git a/services/web/app/views/subscriptions/custom_account.jade b/services/web/app/views/subscriptions/custom_account.pug similarity index 100% rename from services/web/app/views/subscriptions/custom_account.jade rename to services/web/app/views/subscriptions/custom_account.pug diff --git a/services/web/app/views/subscriptions/dashboard.jade b/services/web/app/views/subscriptions/dashboard.pug similarity index 100% rename from services/web/app/views/subscriptions/dashboard.jade rename to services/web/app/views/subscriptions/dashboard.pug diff --git a/services/web/app/views/subscriptions/edit-billing-details.jade b/services/web/app/views/subscriptions/edit-billing-details.pug similarity index 100% rename from services/web/app/views/subscriptions/edit-billing-details.jade rename to services/web/app/views/subscriptions/edit-billing-details.pug diff --git a/services/web/app/views/subscriptions/group/invite.jade b/services/web/app/views/subscriptions/group/invite.pug similarity index 100% rename from services/web/app/views/subscriptions/group/invite.jade rename to services/web/app/views/subscriptions/group/invite.pug diff --git a/services/web/app/views/subscriptions/group/successful_join.jade b/services/web/app/views/subscriptions/group/successful_join.pug similarity index 100% rename from services/web/app/views/subscriptions/group/successful_join.jade rename to services/web/app/views/subscriptions/group/successful_join.pug diff --git a/services/web/app/views/subscriptions/group_admin.jade b/services/web/app/views/subscriptions/group_admin.pug similarity index 100% rename from services/web/app/views/subscriptions/group_admin.jade rename to services/web/app/views/subscriptions/group_admin.pug diff --git a/services/web/app/views/subscriptions/new.jade b/services/web/app/views/subscriptions/new.pug similarity index 100% rename from services/web/app/views/subscriptions/new.jade rename to services/web/app/views/subscriptions/new.pug diff --git a/services/web/app/views/subscriptions/plans.jade b/services/web/app/views/subscriptions/plans.pug similarity index 100% rename from services/web/app/views/subscriptions/plans.jade rename to services/web/app/views/subscriptions/plans.pug diff --git a/services/web/app/views/subscriptions/successful_subscription.jade b/services/web/app/views/subscriptions/successful_subscription.pug similarity index 100% rename from services/web/app/views/subscriptions/successful_subscription.jade rename to services/web/app/views/subscriptions/successful_subscription.pug diff --git a/services/web/app/views/subscriptions/upgradeToAnnual.jade b/services/web/app/views/subscriptions/upgradeToAnnual.pug similarity index 100% rename from services/web/app/views/subscriptions/upgradeToAnnual.jade rename to services/web/app/views/subscriptions/upgradeToAnnual.pug diff --git a/services/web/app/views/tests.jade b/services/web/app/views/tests.pug similarity index 100% rename from services/web/app/views/tests.jade rename to services/web/app/views/tests.pug diff --git a/services/web/app/views/translations/translation_message.jade b/services/web/app/views/translations/translation_message.pug similarity index 100% rename from services/web/app/views/translations/translation_message.jade rename to services/web/app/views/translations/translation_message.pug diff --git a/services/web/app/views/university/case_study.jade b/services/web/app/views/university/case_study.pug similarity index 100% rename from services/web/app/views/university/case_study.jade rename to services/web/app/views/university/case_study.pug diff --git a/services/web/app/views/university/university_holder.jade b/services/web/app/views/university/university_holder.pug similarity index 100% rename from services/web/app/views/university/university_holder.jade rename to services/web/app/views/university/university_holder.pug diff --git a/services/web/app/views/user/activate.jade b/services/web/app/views/user/activate.pug similarity index 100% rename from services/web/app/views/user/activate.jade rename to services/web/app/views/user/activate.pug diff --git a/services/web/app/views/user/login.jade b/services/web/app/views/user/login.pug similarity index 100% rename from services/web/app/views/user/login.jade rename to services/web/app/views/user/login.pug diff --git a/services/web/app/views/user/passwordReset.jade b/services/web/app/views/user/passwordReset.pug similarity index 100% rename from services/web/app/views/user/passwordReset.jade rename to services/web/app/views/user/passwordReset.pug diff --git a/services/web/app/views/user/register.jade b/services/web/app/views/user/register.pug similarity index 100% rename from services/web/app/views/user/register.jade rename to services/web/app/views/user/register.pug diff --git a/services/web/app/views/user/restricted.jade b/services/web/app/views/user/restricted.pug similarity index 100% rename from services/web/app/views/user/restricted.jade rename to services/web/app/views/user/restricted.pug diff --git a/services/web/app/views/user/sessions.jade b/services/web/app/views/user/sessions.pug similarity index 100% rename from services/web/app/views/user/sessions.jade rename to services/web/app/views/user/sessions.pug diff --git a/services/web/app/views/user/setPassword.jade b/services/web/app/views/user/setPassword.pug similarity index 100% rename from services/web/app/views/user/setPassword.jade rename to services/web/app/views/user/setPassword.pug diff --git a/services/web/app/views/user/settings.jade b/services/web/app/views/user/settings.pug similarity index 100% rename from services/web/app/views/user/settings.jade rename to services/web/app/views/user/settings.pug diff --git a/services/web/app/views/view_templates/bonus_templates.jade b/services/web/app/views/view_templates/bonus_templates.pug similarity index 100% rename from services/web/app/views/view_templates/bonus_templates.jade rename to services/web/app/views/view_templates/bonus_templates.pug diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 04fdfc0142..c9616495f9 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -4,65 +4,54 @@ "dependencies": { "archiver": { "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "from": "archiver@0.9.0", "dependencies": { "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + "version": "0.2.13", + "from": "buffer-crc32@~0.2.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" }, "readable-stream": { "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "from": "readable-stream@~1.0.24", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "tar-stream": { "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "from": "tar-stream@~0.3.0", "dependencies": { "bl": { "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + "from": "bl@~0.6.0" }, "end-of-stream": { "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "from": "end-of-stream@~0.1.3", "dependencies": { "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } } @@ -72,77 +61,63 @@ }, "zip-stream": { "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "from": "zip-stream@~0.3.0", "dependencies": { "crc32-stream": { "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + "from": "crc32-stream@~0.2.0" }, "debug": { "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "from": "debug@~1.0.2", "dependencies": { "ms": { "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + "from": "ms@0.6.2" } } }, "deflate-crc32-stream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + "from": "deflate-crc32-stream@~0.1.0" } } }, "lazystream": { "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + "from": "lazystream@~0.1.0" }, "file-utils": { "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "from": "file-utils@~0.1.5", "dependencies": { "lodash": { "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + "from": "lodash@~2.1.0" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.6", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -150,96 +125,80 @@ }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "isbinaryfile": { "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + "from": "isbinaryfile@~0.1.9" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.0" } } }, "async": { "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" + "from": "async@0.6.2" }, "base64-stream": { "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "from": "base64-stream@^0.1.2", "dependencies": { "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -247,133 +206,112 @@ }, "basic-auth-connect": { "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + "from": "basic-auth-connect@^1.0.0" }, "bcrypt": { "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "from": "bcrypt@0.8.3", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@1.2.1" }, "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@1.8.4" } } }, "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "version": "1.16.0", + "from": "body-parser@^1.13.1", "dependencies": { "bytes": { "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + "from": "bytes@2.4.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.2" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" } } }, "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@0.4.15" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + "version": "6.2.1", + "from": "qs@6.2.1" }, "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "version": "2.2.0", + "from": "raw-body@~2.2.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@1.0.0" } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.14", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -383,18 +321,15 @@ }, "bufferedstream": { "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + "from": "bufferedstream@1.6.0" }, "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "version": "3.2.0", + "from": "connect-redis@^3.1.0", "dependencies": { "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -403,184 +338,163 @@ } }, "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "version": "2.6.5", + "from": "redis@^2.1.0", "dependencies": { "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + "version": "2.3.0", + "from": "redis-parser@^2.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.3.0.tgz" } } } } }, "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "version": "3.8.0", + "from": "contentful@^3.3.14", + "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.8.0.tgz", "dependencies": { "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "version": "6.3.19", + "from": "babel-runtime@~6.3.19", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.3.19.tgz", "dependencies": { "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + "version": "1.2.7", + "from": "core-js@^1.2.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz" } } }, "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "version": "2.5.0", + "from": "contentful-sdk-core@~2.5.0", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.5.0.tgz", "dependencies": { "follow-redirects": { "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "from": "follow-redirects@0.0.7", "dependencies": { "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "stream-consume": { "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + "from": "stream-consume@^0.1.0" } } }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@^6.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz" } } }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" + }, + "lodash": { + "version": "4.2.1", + "from": "lodash@~4.2.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.2.1.tgz" } } }, "cookie": { "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + "from": "cookie@^0.2.3" }, "cookie-parser": { "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "from": "cookie-parser@1.3.5", "dependencies": { "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" } } }, "csurf": { "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "from": "csurf@^1.8.3", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "version": "3.0.4", + "from": "csrf@~3.0.3", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.4.tgz", "dependencies": { "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + "version": "1.3.3", + "from": "base64-url@1.3.3", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.3.3.tgz" }, "rndm": { "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + "from": "rndm@1.2.0" }, "tsscmp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + "from": "tsscmp@1.0.5" }, "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "version": "2.1.3", + "from": "uid-safe@2.1.3", "dependencies": { "random-bytes": { "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + "from": "random-bytes@~1.0.0" } } } } }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" } } } @@ -588,280 +502,230 @@ }, "dateformat": { "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + "from": "dateformat@1.0.4-1.2.3" }, "express": { "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "from": "express@4.13.0", "dependencies": { "accepts": { "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "from": "accepts@~1.2.9", "dependencies": { "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, "negotiator": { "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "from": "negotiator@0.5.3" } } }, "array-flatten": { "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + "from": "array-flatten@1.1.0" }, "content-disposition": { "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + "from": "content-disposition@0.5.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.1" }, "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "debug": { "version": "2.2.0", "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "depd": { "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + "from": "depd@~1.0.1" }, "escape-html": { "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + "from": "escape-html@1.0.2" }, "etag": { "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + "from": "etag@~1.7.0" }, "finalhandler": { "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "from": "finalhandler@0.4.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@~1.0.0" } } }, "fresh": { "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + "from": "fresh@0.3.0" }, "merge-descriptors": { "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + "from": "merge-descriptors@1.0.0" }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.1" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.0" }, "path-to-regexp": { "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + "from": "path-to-regexp@0.1.6" }, "proxy-addr": { "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "from": "proxy-addr@~1.0.8", "dependencies": { "forwarded": { "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + "from": "forwarded@~0.1.0" }, "ipaddr.js": { "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + "from": "ipaddr.js@1.0.5" } } }, "qs": { "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + "from": "qs@2.4.2" }, "range-parser": { "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + "from": "range-parser@~1.0.2" }, "send": { "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "from": "send@0.13.0", "dependencies": { "destroy": { "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + "from": "destroy@1.0.3" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } }, "serve-static": { "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "from": "serve-static@~1.10.0", "dependencies": { "escape-html": { "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "from": "escape-html@~1.0.3" }, "send": { "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "from": "send@0.13.2", "dependencies": { "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "destroy": { "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "from": "destroy@~1.0.4" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.3", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -869,25 +733,21 @@ }, "vary": { "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + "from": "vary@~1.0.0" }, "utils-merge": { "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + "from": "utils-merge@1.0.0" } } }, "express-session": { "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "from": "express-session@^1.14.2", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", @@ -895,45 +755,43 @@ }, "crc": { "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + "from": "crc@3.4.1" }, "debug": { "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@~2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "depd": { "version": "1.1.0", - "from": "depd@1.1.0" + "from": "depd@~1.1.0" }, "on-headers": { "version": "1.0.1", - "from": "on-headers@1.0.1" + "from": "on-headers@~1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz" }, "parseurl": { "version": "1.3.1", - "from": "parseurl@1.3.1" + "from": "parseurl@~1.3.1" }, "uid-safe": { "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "from": "uid-safe@~2.1.3", "dependencies": { "base64-url": { "version": "1.3.3", - "from": "base64-url@1.3.3" + "from": "base64-url@1.3.3", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.3.3.tgz" }, "random-bytes": { "version": "1.0.0", - "from": "random-bytes@1.0.0" + "from": "random-bytes@~1.0.0" } } }, @@ -945,63 +803,51 @@ }, "grunt": { "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "from": "grunt@^0.4.5", "dependencies": { "async": { "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + "from": "async@~0.1.22" }, "coffee-script": { "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + "from": "coffee-script@~1.3.3" }, "colors": { "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "from": "colors@~0.6.2" }, "dateformat": { "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + "from": "dateformat@1.0.2-1.2.3" }, "eventemitter2": { "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + "from": "eventemitter2@~0.4.13" }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.9", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -1009,150 +855,123 @@ }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "glob": { "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "from": "glob@~3.1.21", "dependencies": { "graceful-fs": { "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + "from": "graceful-fs@~1.2.0" }, "inherits": { "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + "from": "inherits@1" } } }, "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "nopt": { "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "from": "nopt@~1.0.10", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "rimraf": { "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + "from": "rimraf@~2.2.8" }, "lodash": { "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + "from": "lodash@~0.9.2" }, "underscore.string": { "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + "from": "underscore.string@~2.2.1" }, "which": { "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + "from": "which@~1.0.5" }, "js-yaml": { "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "from": "js-yaml@~2.0.5", "dependencies": { "argparse": { "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "from": "argparse@~ 0.1.11", "dependencies": { "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@~1.7.0" }, "underscore.string": { "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + "from": "underscore.string@~2.4.0" } } }, "esprima": { "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + "from": "esprima@~ 1.0.2" } } }, "exit": { "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "from": "exit@~0.1.1" }, "getobject": { "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + "from": "getobject@~0.1.0" }, "grunt-legacy-util": { "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + "from": "grunt-legacy-util@~0.2.0" }, "grunt-legacy-log": { "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "from": "grunt-legacy-log@~0.1.0", "dependencies": { "grunt-legacy-log-utils": { "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + "from": "grunt-legacy-log-utils@~0.1.1" }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" }, "underscore.string": { "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + "from": "underscore.string@~2.3.3" } } } @@ -1160,45 +979,39 @@ }, "heapdump": { "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + "from": "heapdump@^0.3.7" }, "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "version": "1.16.2", + "from": "http-proxy@^1.8.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "dependencies": { "eventemitter3": { "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + "from": "eventemitter3@1.x.x" }, "requires-port": { "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "from": "requires-port@1.x.x" } } }, "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "version": "2.5.0", + "from": "ioredis@^2.4.0", "dependencies": { "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" }, "cluster-key-slot": { "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + "from": "cluster-key-slot@^1.0.6" }, "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -1208,100 +1021,85 @@ }, "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "flexbuffer": { "version": "0.0.6", - "from": "flexbuffer@0.0.6" + "from": "flexbuffer@0.0.6", + "resolved": "https://registry.npmjs.org/flexbuffer/-/flexbuffer-0.0.6.tgz" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + "from": "redis-parser@^1.3.0" } } }, "jade": { "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "from": "jade@~1.3.1", "dependencies": { "commander": { "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + "from": "commander@2.1.0" }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "transformers": { "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "from": "transformers@2.1.0", "dependencies": { "promise": { "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "from": "promise@~2.0", "dependencies": { "is-promise": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + "from": "is-promise@~1" } } }, "css": { "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "from": "css@~1.0.8", "dependencies": { "css-parse": { "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + "from": "css-parse@1.0.4" }, "css-stringify": { "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + "from": "css-stringify@1.0.5" } } }, "uglify-js": { "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "from": "uglify-js@~2.2.5", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@~0.1.7", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "optimist": { "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "from": "optimist@~0.3.5", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" } } } @@ -1311,38 +1109,31 @@ }, "character-parser": { "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + "from": "character-parser@1.2.0" }, "monocle": { "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "from": "monocle@1.1.51", "dependencies": { "readdirp": { "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "from": "readdirp@~0.2.3", "dependencies": { "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@>=0.2.4", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -1354,60 +1145,50 @@ }, "with": { "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "from": "with@~3.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.12", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1417,60 +1198,50 @@ }, "constantinople": { "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "from": "constantinople@~2.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.0", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1481,102 +1252,100 @@ } }, "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "version": "1.0.1", + "from": "ldapjs@^1.0.0", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.1.tgz", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@0.2.3" }, "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + "version": "1.0.0", + "from": "assert-plus@^1.0.0" }, "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "version": "1.8.5", + "from": "bunyan@^1.8.3", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.5.tgz", "dependencies": { + "dtrace-provider": { + "version": "0.8.0", + "from": "dtrace-provider@~0.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.0.tgz", + "dependencies": { + "nan": { + "version": "2.5.0", + "from": "nan@^2.3.3", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" + } + } + }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -1586,192 +1355,199 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" + }, + "moment": { + "version": "2.17.1", + "from": "moment@^2.10.6", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.1.tgz" } } }, "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + "version": "1.14.1", + "from": "dashdash@^1.14.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" }, "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "version": "2.5.0", + "from": "backoff@^2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", "dependencies": { "precond": { "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + "from": "precond@0.2" } } }, "ldap-filter": { "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + "from": "ldap-filter@0.2.2", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@0.1.5" + } + } }, "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "version": "1.4.0", + "from": "once@^1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + "version": "1.6.4", + "from": "vasync@^1.6.4", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "dependencies": { + "verror": { + "version": "1.6.0", + "from": "verror@1.6.0", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "extsprintf@1.2.0" + } + } + } + } }, "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "version": "1.9.0", + "from": "verror@^1.8.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.9.0.tgz", "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@1.0.2" + }, "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + "version": "1.3.0", + "from": "extsprintf@^1.2.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" } } }, "dtrace-provider": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "version": "0.7.1", + "from": "dtrace-provider@^0.7.0", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.7.1.tgz", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.0", + "from": "nan@^2.3.3", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" } } } } }, "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + "version": "4.17.4", + "from": "lodash@^4.13.1" }, "logger-sharelatex": { "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#v1.3.1", "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", "dependencies": { "bunyan": { "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "from": "bunyan@1.5.1", "dependencies": { "dtrace-provider": { "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "from": "dtrace-provider@~0.6", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.0", + "from": "nan@^2.0.8", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" } } }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -1781,35 +1557,29 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" } } }, "coffee-script": { "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + "from": "coffee-script@1.4.0" }, "raven": { "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "from": "raven@^0.8.0", "dependencies": { "cookie": { "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + "from": "cookie@0.1.0" }, "lsmod": { "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + "from": "lsmod@~0.0.3" }, "stack-trace": { "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + "from": "stack-trace@0.0.7" } } } @@ -1817,181 +1587,153 @@ }, "lynx": { "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "from": "lynx@0.1.1", "dependencies": { "mersenne": { "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + "from": "mersenne@~0.0.3" }, "statsd-parser": { "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + "from": "statsd-parser@~0.0.4" } } }, "marked": { "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + "from": "marked@^0.3.5" }, "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "version": "2.3.7", + "from": "method-override@^2.3.3", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.7.tgz", "dependencies": { "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.3.3", + "from": "debug@2.3.3", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.2" }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.1" }, "vary": { "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + "from": "vary@~1.1.0" } } }, "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "version": "1.6.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#v1.6.0", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#718f1144407ab2c867b869ebb38e07de2be1933b", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "mimelib": { "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "from": "mimelib@0.2.14", "dependencies": { "encoding": { "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "from": "encoding@~0.1", "dependencies": { "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@~0.4.13" } } }, "addressparser": { "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + "from": "addressparser@~0.2.0" } } }, "mocha": { "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "from": "mocha@1.17.1", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + "from": "growl@1.7.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "from": "commander@0.6.1", "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "from": "mkdirp@0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -1999,109 +1741,90 @@ }, "mongojs": { "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "from": "mongojs@0.18.2", "dependencies": { "thunky": { "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + "from": "thunky@~0.1.0" }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@~1.1.9", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mongodb": { "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "from": "mongodb@1.4.32", "dependencies": { "bson": { "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "from": "bson@~0.2", "dependencies": { "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@~1.8" } } }, "kerberos": { "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "from": "kerberos@0.0.9", "dependencies": { "nan": { "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" + "from": "nan@1.6.2" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@latest", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -2111,33 +1834,27 @@ }, "mongoose": { "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "from": "mongoose@4.1.0", "dependencies": { "async": { "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + "from": "async@0.9.0" }, "bson": { "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "from": "bson@~0.3", "dependencies": { "bson-ext": { "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "from": "bson-ext@~0.1", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@^1.2.1" }, "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "from": "nan@~2.0.9" } } } @@ -2145,38 +1862,32 @@ }, "hooks-fixed": { "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + "from": "hooks-fixed@1.1.0" }, "kareem": { "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + "from": "kareem@1.0.1" }, "mongodb": { "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "from": "mongodb@2.0.34", "dependencies": { "mongodb-core": { "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "from": "mongodb-core@1.2.0", "dependencies": { "bson": { "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + "from": "bson@~0.4" }, "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "version": "0.0.22", + "from": "kerberos@~0.0", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.22.tgz", "dependencies": { "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + "version": "2.4.0", + "from": "nan@~2.4" } } } @@ -2184,28 +1895,24 @@ }, "readable-stream": { "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "from": "readable-stream@1.0.31", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2213,33 +1920,28 @@ }, "mpath": { "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + "from": "mpath@0.1.1" }, "mpromise": { "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + "from": "mpromise@0.5.4" }, "mquery": { "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "from": "mquery@1.6.1", "dependencies": { "bluebird": { "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", + "from": "bluebird@2.9.26", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } } @@ -2247,72 +1949,59 @@ }, "ms": { "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + "from": "ms@0.1.0" }, "muri": { "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + "from": "muri@1.0.0" }, "regexp-clone": { "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + "from": "regexp-clone@0.0.1" }, "sliced": { "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + "from": "sliced@0.0.5" } } }, "multer": { "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "from": "multer@^0.1.8", "dependencies": { "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "version": "0.2.14", + "from": "busboy@~0.2.9", "dependencies": { "dicer": { "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "from": "dicer@0.2.5", "dependencies": { "streamsearch": { "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + "from": "streamsearch@0.1.2" } } }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@1.1.x", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2320,33 +2009,27 @@ }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "qs": { "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + "from": "qs@~1.2.2" }, "type-is": { "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "from": "type-is@~1.5.2", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "from": "mime-types@~2.0.9", "dependencies": { "mime-db": { "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + "from": "mime-db@~1.12.0" } } } @@ -2356,65 +2039,53 @@ }, "node-uuid": { "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" + "from": "node-uuid@1.4.1" }, "nodemailer": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "from": "nodemailer@2.1.0", "dependencies": { "libmime": { "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "from": "libmime@2.0.0", "dependencies": { "iconv-lite": { "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "from": "iconv-lite@0.4.13" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" } } }, "mailcomposer": { "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "from": "mailcomposer@3.3.2", "dependencies": { "buildmail": { "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "from": "buildmail@3.3.2", "dependencies": { "addressparser": { "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + "from": "addressparser@1.0.0" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" }, "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } } @@ -2422,69 +2093,57 @@ }, "nodemailer-direct-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "from": "nodemailer-direct-transport@2.0.1", "dependencies": { "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-shared": { "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "from": "nodemailer-shared@1.0.3", "dependencies": { "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } }, "nodemailer-smtp-pool": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "from": "nodemailer-smtp-pool@2.1.0", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-smtp-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "from": "nodemailer-smtp-transport@2.0.1", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } } @@ -2492,69 +2151,104 @@ }, "nodemailer-sendgrid-transport": { "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "from": "nodemailer-sendgrid-transport@^0.2.0", "dependencies": { "sendgrid": { "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "from": "sendgrid@^1.8.0", "dependencies": { "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@^1.2.9" }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "from": "lodash@^3.0.1 || ^2.0.0" }, "smtpapi": { "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + "from": "smtpapi@^1.2.0" } } } } }, "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "version": "1.5.0", + "from": "nodemailer-ses-transport@^1.3.0", + "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.5.0.tgz", "dependencies": { "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "version": "2.7.26", + "from": "aws-sdk@^2.6.12", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.7.26.tgz", "dependencies": { + "buffer": { + "version": "4.9.1", + "from": "buffer@4.9.1", + "dependencies": { + "base64-js": { + "version": "1.2.0", + "from": "base64-js@^1.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz" + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@^1.1.4", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@^1.0.0" + } + } + }, + "crypto-browserify": { + "version": "1.0.9", + "from": "crypto-browserify@1.0.9" + }, + "jmespath": { + "version": "0.15.0", + "from": "jmespath@0.15.0" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + }, "sax": { "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" + "from": "sax@1.1.5" + }, + "url": { + "version": "0.10.3", + "from": "url@0.10.3", + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2" + } + } + }, + "uuid": { + "version": "3.0.0", + "from": "uuid@3.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz" }, "xml2js": { "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", + "from": "xml2js@0.4.15", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" }, "xmlbuilder": { "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "from": "xmlbuilder@2.6.2", "dependencies": { "lodash": { "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + "from": "lodash@~3.5.0" } } - }, - "jmespath": { - "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" } } } @@ -2562,67 +2256,55 @@ }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@0.6.1", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "from": "minimist@~0.0.1" } } }, "passport": { "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "from": "passport@^0.3.2", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "pause": { "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + "from": "pause@0.0.1" } } }, "passport-ldapauth": { "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "from": "passport-ldapauth@^0.6.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "version": "2.5.5", + "from": "ldapauth-fork@~2.5.0", "dependencies": { "bcryptjs": { "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" + "from": "bcryptjs@2.3.0" }, "lru-cache": { "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "from": "lru-cache@3.2.0", "dependencies": { "pseudomap": { "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "from": "pseudomap@^1.0.1" } } } @@ -2632,20 +2314,17 @@ }, "passport-local": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "from": "passport-local@^1.0.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" } } }, "passport-saml": { "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "from": "passport-saml@^0.15.0", "dependencies": { "passport-strategy": { "version": "1.0.0", @@ -2658,7 +2337,6 @@ "xml2js": { "version": "0.4.17", "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "dependencies": { "sax": { "version": "1.2.1", @@ -2666,32 +2344,35 @@ }, "xmlbuilder": { "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + "from": "xmlbuilder@^4.1.0" } } }, "xml-crypto": { - "version": "0.8.4", + "version": "0.8.5", "from": "xml-crypto@0.8.x", + "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", "dependencies": { "xmldom": { "version": "0.1.19", "from": "xmldom@=0.1.19" }, "xpath.js": { - "version": "1.0.6", - "from": "xpath.js@>=0.0.3" + "version": "1.0.7", + "from": "xpath.js@>=0.0.3", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.7.tgz" } } }, "xmldom": { - "version": "0.1.22", - "from": "xmldom@0.1.x" + "version": "0.1.27", + "from": "xmldom@0.1.x", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" }, "xmlbuilder": { "version": "2.5.2", "from": "xmlbuilder@2.5.x", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.5.2.tgz", "dependencies": { "lodash": { "version": "3.2.0", @@ -2702,6 +2383,7 @@ "xml-encryption": { "version": "0.7.4", "from": "xml-encryption@~0.7", + "resolved": "https://registry.npmjs.org/xml-encryption/-/xml-encryption-0.7.4.tgz", "dependencies": { "ejs": { "version": "0.8.8", @@ -2713,166 +2395,393 @@ }, "xpath": { "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + "from": "xpath@0.0.5" }, "node-forge": { "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + "from": "node-forge@0.2.24" } } } } }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", + "pug": { + "version": "2.0.0-beta6", + "from": "pug@^2.0.0-beta6", "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", + "pug-code-gen": { + "version": "1.1.0", + "from": "pug-code-gen@^1.1.0", "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + "constantinople": { + "version": "3.1.0", + "from": "constantinople@^3.0.1", + "dependencies": { + "acorn": { + "version": "3.3.0", + "from": "acorn@^3.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + }, + "is-expression": { + "version": "2.1.0", + "from": "is-expression@^2.0.1", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "from": "object-assign@^4.0.1" + } + } + } + } }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" + "doctypes": { + "version": "1.1.0", + "from": "doctypes@^1.1.0" }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { + "js-stringify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", + "from": "js-stringify@^1.0.1" + }, + "pug-attrs": { + "version": "2.0.1", + "from": "pug-attrs@^2.0.1" + }, + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.3.0" + }, + "void-elements": { + "version": "2.0.1", + "from": "void-elements@^2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" + }, + "with": { + "version": "5.1.1", + "from": "with@^5.0.0", "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "acorn": { + "version": "3.3.0", + "from": "acorn@^3.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + }, + "acorn-globals": { + "version": "3.0.0", + "from": "acorn-globals@^3.0.0" } } } } }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", + "pug-filters": { + "version": "1.2.4", + "from": "pug-filters@^1.2.4", "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "constantinople": { + "version": "3.1.0", + "from": "constantinople@^3.0.1", "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "acorn": { + "version": "3.3.0", + "from": "acorn@^3.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + }, + "is-expression": { + "version": "2.1.0", + "from": "is-expression@^2.0.1", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "from": "object-assign@^4.0.1" + } + } + } + } + }, + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.3.0" + }, + "pug-walk": { + "version": "1.0.0", + "from": "pug-walk@^1.0.0" + }, + "jstransformer": { + "version": "1.0.0", + "from": "jstransformer@1.0.0", + "dependencies": { + "is-promise": { + "version": "2.1.0", + "from": "is-promise@^2.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" + }, + "promise": { + "version": "7.1.1", + "from": "promise@^7.0.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", + "dependencies": { + "asap": { + "version": "2.0.5", + "from": "asap@~2.0.3", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" + } + } + } + } + }, + "resolve": { + "version": "1.2.0", + "from": "resolve@^1.1.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz" + }, + "uglify-js": { + "version": "2.7.5", + "from": "uglify-js@^2.6.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "async@~0.2.6" + }, + "source-map": { + "version": "0.5.6", + "from": "source-map@~0.5.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@~1.0.0" + }, + "yargs": { + "version": "3.10.0", + "from": "yargs@~3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "camelcase@^1.0.2" + }, + "cliui": { + "version": "2.1.0", + "from": "cliui@^2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "dependencies": { + "center-align": { + "version": "0.1.3", + "from": "center-align@^0.1.1", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "dependencies": { + "align-text": { + "version": "0.1.4", + "from": "align-text@^0.1.1", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "dependencies": { + "kind-of": { + "version": "3.1.0", + "from": "kind-of@^3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz", + "dependencies": { + "is-buffer": { + "version": "1.1.4", + "from": "is-buffer@^1.0.2", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" + } + } + }, + "longest": { + "version": "1.0.1", + "from": "longest@^1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + }, + "repeat-string": { + "version": "1.6.1", + "from": "repeat-string@^1.5.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "from": "lazy-cache@^1.0.3", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + } + } + }, + "right-align": { + "version": "0.1.3", + "from": "right-align@^0.1.1", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "dependencies": { + "align-text": { + "version": "0.1.4", + "from": "align-text@^0.1.1", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "dependencies": { + "kind-of": { + "version": "3.1.0", + "from": "kind-of@^3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz", + "dependencies": { + "is-buffer": { + "version": "1.1.4", + "from": "is-buffer@^1.0.2", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" + } + } + }, + "longest": { + "version": "1.0.1", + "from": "longest@^1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + }, + "repeat-string": { + "version": "1.6.1", + "from": "repeat-string@^1.5.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + } + } + } + } + }, + "wordwrap": { + "version": "0.0.2", + "from": "wordwrap@0.0.2" + } + } + }, + "decamelize": { + "version": "1.2.0", + "from": "decamelize@^1.0.0" + }, + "window-size": { + "version": "0.1.0", + "from": "window-size@0.1.0" + } + } } } } } }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + "pug-lexer": { + "version": "2.3.0", + "from": "pug-lexer@^2.2.0", + "dependencies": { + "character-parser": { + "version": "2.2.0", + "from": "character-parser@^2.1.1", + "dependencies": { + "is-regex": { + "version": "1.0.3", + "from": "is-regex@^1.0.3" + } + } + }, + "is-expression": { + "version": "3.0.0", + "from": "is-expression@^3.0.0", + "dependencies": { + "acorn": { + "version": "4.0.4", + "from": "acorn@~4.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz" + }, + "object-assign": { + "version": "4.1.1", + "from": "object-assign@^4.0.1" + } + } + }, + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.3.0" + } + } + }, + "pug-linker": { + "version": "1.0.1", + "from": "pug-linker@^1.0.1", + "dependencies": { + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.3.0" + }, + "pug-walk": { + "version": "1.0.0", + "from": "pug-walk@^1.0.0" + } + } + }, + "pug-load": { + "version": "2.0.3", + "from": "pug-load@^2.0.3", + "dependencies": { + "object-assign": { + "version": "4.1.1", + "from": "object-assign@^4.1.0" + }, + "pug-walk": { + "version": "1.0.0", + "from": "pug-walk@^1.0.0" + } + } + }, + "pug-parser": { + "version": "2.0.1", + "from": "pug-parser@^2.0.1", + "dependencies": { + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.3.0" + }, + "token-stream": { + "version": "0.0.1", + "from": "token-stream@0.0.1" + } + } + }, + "pug-runtime": { + "version": "2.0.2", + "from": "pug-runtime@^2.0.2" + }, + "pug-strip-comments": { + "version": "1.0.1", + "from": "pug-strip-comments@^1.0.1", + "dependencies": { + "pug-error": { + "version": "1.3.1", + "from": "pug-error@^1.0.0" + } + } } } }, "redback": { "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" + "from": "redback@0.4.0" }, "redis": { "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + "from": "redis@0.10.1" }, "redis-sharelatex": { "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "from": "redis-sharelatex@0.0.9", "dependencies": { "chai": { "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "from": "chai@1.9.1", "dependencies": { "assertion-error": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + "from": "assertion-error@1.0.0" }, "deep-eql": { "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "from": "deep-eql@^0.1.3", "dependencies": { "type-detect": { "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + "from": "type-detect@0.1.1" } } } @@ -2880,195 +2789,173 @@ }, "coffee-script": { "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "from": "coffee-script@1.8.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "grunt-contrib-coffee": { "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "from": "grunt-contrib-coffee@0.11.1", "dependencies": { "coffee-script": { "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "from": "coffee-script@~1.7.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "chalk": { "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "from": "chalk@~0.5.0", "dependencies": { "ansi-styles": { "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + "from": "ansi-styles@^1.1.0" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.0" }, "has-ansi": { "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "from": "has-ansi@^0.1.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.0" } } }, "strip-ansi": { "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "from": "strip-ansi@^0.3.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.0" } } }, "supports-color": { "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + "from": "supports-color@^0.2.0" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "grunt-mocha-test": { "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "from": "grunt-mocha-test@0.12.0", "dependencies": { "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "fs-extra": { "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "from": "fs-extra@~0.11.1", "dependencies": { "ncp": { "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + "from": "ncp@^0.6.0" }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@^0.5.0", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + "version": "2.4.0", + "from": "jsonfile@^2.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@^4.1.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@^2.2.8", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -3080,89 +2967,75 @@ }, "mocha": { "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "from": "mocha@1.21.4", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + "from": "growl@1.8.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "from": "commander@0.6.1", "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "from": "mkdirp@0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -3170,69 +3043,57 @@ }, "redis": { "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + "from": "redis@0.12.1" }, "redis-sentinel": { "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "from": "redis-sentinel@0.1.1", "dependencies": { "redis": { "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + "from": "redis@0.11.x" }, "q": { "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + "from": "q@0.9.2" } } }, "sandboxed-module": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "from": "sandboxed-module@1.0.1", "dependencies": { "require-like": { "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + "from": "require-like@0.1.2" }, "stack-trace": { "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + "from": "stack-trace@0.0.9" } } }, "sinon": { "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "from": "sinon@1.10.3", "dependencies": { "formatio": { "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "from": "formatio@~1.0", "dependencies": { "samsam": { "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + "from": "samsam@~1.1" } } }, "util": { "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "from": "util@>=0.10.3 <1", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "inherits@2.0.1" } } } @@ -3240,215 +3101,147 @@ }, "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@1.7.0" } } }, "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "version": "2.79.0", + "from": "request@^2.69.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "dependencies": { "aws-sign2": { "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + "from": "aws-sign2@~0.6.0" }, "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } + "version": "1.5.0", + "from": "aws4@^1.2.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz" }, "caseless": { "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + "from": "caseless@~0.11.0" }, "combined-stream": { "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "from": "combined-stream@~1.0.5", "dependencies": { "delayed-stream": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "from": "delayed-stream@~1.0.0" } } }, "extend": { "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + "from": "extend@~3.0.0" }, "forever-agent": { "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "from": "forever-agent@~0.6.1" }, "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "version": "2.1.2", + "from": "form-data@~2.1.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "asynckit": { + "version": "0.4.0", + "from": "asynckit@^0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" } } }, "har-validator": { "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "from": "har-validator@~2.0.6", "dependencies": { "chalk": { "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "from": "chalk@^1.1.1", "dependencies": { "ansi-styles": { "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "from": "ansi-styles@^2.2.1" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.2" }, "has-ansi": { "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "from": "has-ansi@^2.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "supports-color": { "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "from": "supports-color@^2.0.0" } } }, "commander": { "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "from": "commander@^2.9.0", "dependencies": { "graceful-readlink": { "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "from": "graceful-readlink@>= 1.0.0" } } }, "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "version": "2.15.0", + "from": "is-my-json-valid@^2.12.4", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", "dependencies": { "generate-function": { "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + "from": "generate-function@^2.0.0" }, "generate-object-property": { "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "from": "generate-object-property@^1.1.0", "dependencies": { "is-property": { "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + "from": "is-property@^1.0.0" } } }, "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + "version": "4.0.1", + "from": "jsonpointer@^4.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "from": "xtend@^4.0.0" } } }, "pinkie-promise": { "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "from": "pinkie-promise@^2.0.0", "dependencies": { "pinkie": { "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "from": "pinkie@^2.0.0" } } } @@ -3456,107 +3249,95 @@ }, "hawk": { "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "from": "hawk@~3.1.3", "dependencies": { "hoek": { "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "from": "hoek@2.x.x" }, "boom": { "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "from": "boom@2.x.x" }, "cryptiles": { "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + "from": "cryptiles@2.x.x" }, "sntp": { "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "from": "sntp@1.x.x" } } }, "http-signature": { "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "from": "http-signature@~1.1.0", "dependencies": { "assert-plus": { "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + "from": "assert-plus@^0.2.0" }, "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "version": "1.3.1", + "from": "jsprim@^1.2.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", "dependencies": { "extsprintf": { "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "from": "extsprintf@1.0.2" }, "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + "version": "0.2.3", + "from": "json-schema@0.2.3" }, "verror": { "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "from": "verror@1.3.6" } } }, "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "version": "1.10.2", + "from": "sshpk@^1.7.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@~0.2.3" }, "assert-plus": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "from": "assert-plus@^1.0.0" }, "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + "version": "1.14.1", + "from": "dashdash@^1.12.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" }, "getpass": { "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + "from": "getpass@^0.1.1" }, "jsbn": { "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + "from": "jsbn@~0.1.0" }, "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + "version": "0.14.5", + "from": "tweetnacl@~0.14.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" }, "jodid25519": { "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + "from": "jodid25519@^1.0.0" }, "ecc-jsbn": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + "from": "ecc-jsbn@~0.1.1" + }, + "bcrypt-pbkdf": { + "version": "1.0.0", + "from": "bcrypt-pbkdf@^1.0.0", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz" } } } @@ -3564,196 +3345,214 @@ }, "is-typedarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "from": "is-typedarray@~1.0.0" }, "isstream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "from": "isstream@~0.1.2" }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.7", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, "oauth-sign": { "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + "from": "oauth-sign@~0.8.1" }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@~6.3.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz" }, "stringstream": { "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + "from": "stringstream@~0.0.4" }, "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + "version": "2.3.2", + "from": "tough-cookie@~2.3.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "dependencies": { + "punycode": { + "version": "1.4.1", + "from": "punycode@^1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + } }, "tunnel-agent": { "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + "from": "tunnel-agent@~0.4.1" + }, + "uuid": { + "version": "3.0.1", + "from": "uuid@^3.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" } } }, "requests": { "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "from": "requests@^0.1.7", "dependencies": { "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + "version": "0.0.2", + "from": "axo@0.0.x", + "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.2.tgz" }, "eventemitter3": { "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + "from": "eventemitter3@1.1.x" }, "extendible": { "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + "from": "extendible@0.1.x" }, "hang": { "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + "from": "hang@1.0.x" }, "loads": { "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "from": "loads@0.0.x", "dependencies": { "failure": { "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + "from": "failure@1.1.x" }, "one-time": { "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + "from": "one-time@0.0.x" }, "xhr-response": { "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + "from": "xhr-response@1.0.x" }, "xhr-status": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + "from": "xhr-status@1.0.x" } } }, "xhr-send": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + "from": "xhr-send@1.0.x" } } }, "rimraf": { "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" + "from": "rimraf@2.2.6" }, "sanitizer": { "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + "from": "sanitizer@0.1.1" }, "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "version": "3.29.0", + "from": "sequelize@^3.2.0", "dependencies": { "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" }, "depd": { "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@^1.1.0" }, "dottie": { "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + "from": "dottie@^1.0.0" }, "generic-pool": { "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + "from": "generic-pool@2.4.2" }, "inflection": { "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + "from": "inflection@^1.6.0" }, "lodash": { "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" + "from": "lodash@4.12.0" }, "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + "version": "2.17.1", + "from": "moment@^2.13.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.1.tgz" }, "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + "version": "0.5.11", + "from": "moment-timezone@^0.5.4" }, "node-uuid": { "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + "from": "node-uuid@~1.4.4" }, "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "version": "2.2.0", + "from": "retry-as-promised@^2.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.2.0.tgz", "dependencies": { + "cross-env": { + "version": "3.1.4", + "from": "cross-env@^3.1.2", + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "from": "cross-spawn@^3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "from": "lru-cache@^4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "pseudomap@^1.0.1" + }, + "yallist": { + "version": "2.0.0", + "from": "yallist@^2.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz" + } + } + }, + "which": { + "version": "1.2.12", + "from": "which@^1.2.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", + "dependencies": { + "isexe": { + "version": "1.1.2", + "from": "isexe@^1.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" + } + } + } + } + } + } + }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } } @@ -3761,170 +3560,148 @@ }, "semver": { "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "from": "semver@^5.0.1" }, "shimmer": { "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + "from": "shimmer@1.1.0" }, "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "version": "1.1.2", + "from": "terraformer-wkt-parser@^1.1.0", + "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz", "dependencies": { "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + "version": "1.0.7", + "from": "terraformer@~1.0.5", + "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.7.tgz" } } }, "toposort-class": { "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "from": "toposort-class@^1.0.1" }, "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + "version": "5.7.0", + "from": "validator@^5.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-5.7.0.tgz" }, "wkx": { "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + "from": "wkx@0.2.0" } } }, "settings-sharelatex": { "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0", "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "sixpack-client": { "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + "from": "sixpack-client@^1.0.0" }, "temp": { "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "from": "temp@^0.8.3", "dependencies": { "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + "version": "1.0.2", + "from": "os-tmpdir@^1.0.0", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" } } }, "underscore": { "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + "from": "underscore@1.6.0" }, "v8-profiler": { "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "from": "v8-profiler@^5.2.3", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.0", + "from": "nan@^2.3.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.0.tgz" }, "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "version": "0.6.32", + "from": "node-pre-gyp@^0.6.5", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "nopt": { "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "from": "nopt@~3.0.6", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "version": "4.0.2", + "from": "npmlog@^4.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", "dependencies": { "are-we-there-yet": { "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "from": "are-we-there-yet@~1.1.2", "dependencies": { "delegates": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "from": "delegates@^1.0.0" }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.0 || ^1.1.13", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -3932,65 +3709,52 @@ }, "console-control-strings": { "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "from": "console-control-strings@~1.1.0" }, "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "version": "2.7.2", + "from": "gauge@~2.7.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.2.tgz", "dependencies": { "aproba": { "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + "from": "aproba@^1.0.3" }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + "supports-color": { + "version": "0.2.0", + "from": "supports-color@^0.2.0" }, "has-unicode": { "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "from": "has-unicode@^2.0.0" }, "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + "version": "4.1.1", + "from": "object-assign@^4.1.0" }, "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + "version": "3.0.2", + "from": "signal-exit@^3.0.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" }, "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "version": "1.0.2", + "from": "string-width@^1.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "dependencies": { "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } + "version": "1.1.0", + "from": "code-point-at@^1.0.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" }, "is-fullwidth-code-point": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "from": "is-fullwidth-code-point@^1.0.0", "dependencies": { "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + "version": "1.0.1", + "from": "number-is-nan@^1.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" } } } @@ -3998,231 +3762,198 @@ }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.1", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "wide-align": { "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + "from": "wide-align@^1.1.0" } } }, "set-blocking": { "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "from": "set-blocking@~2.0.0" } } }, "rc": { "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "from": "rc@~1.1.6", "dependencies": { "deep-extend": { "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + "from": "deep-extend@~0.4.0" }, "ini": { "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + "from": "ini@~1.3.0" }, "minimist": { "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + "from": "minimist@^1.2.0" }, "strip-json-comments": { "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + "from": "strip-json-comments@~1.0.4" } } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@~2.5.4", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } } }, "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + "version": "5.3.0", + "from": "semver@~5.3.0" }, "tar": { "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "from": "tar@~2.2.1", "dependencies": { "block-stream": { "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + "from": "block-stream@*" }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@^1.0.2", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.0" } } }, "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "version": "3.3.0", + "from": "tar-pack@~3.3.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", "dependencies": { "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@~2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@~1.0.10", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.0" } } }, "fstream-ignore": { "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "from": "fstream-ignore@~1.0.5", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.0", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -4232,62 +3963,52 @@ }, "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.3", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.1.5", + "from": "readable-stream@~2.1.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } }, "uid-number": { "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "from": "uid-number@~0.0.6" } } } @@ -4297,13 +4018,11 @@ }, "xml2js": { "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "from": "xml2js@0.2.0", "dependencies": { "sax": { "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "from": "sax@>=0.1.1" } } } diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..55dd7b0a18 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -64,7 +64,8 @@ "underscore": "1.6.0", "v8-profiler": "^5.2.3", "xml2js": "0.2.0", - "passport-saml": "^0.15.0" + "passport-saml": "^0.15.0", + "pug": "^2.0.0-beta6" }, "devDependencies": { "bunyan": "0.22.1", diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 41c70b4dee..9ceae66dbc 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -13,7 +13,7 @@ define [ EditSession = ace.require('ace/edit_session').EditSession ModeList = ace.require('ace/ext/modelist') - # set the path for ace workers if using a CDN (from editor.jade) + # set the path for ace workers if using a CDN (from editor.pug) if window.aceWorkerPath != "" syntaxValidationEnabled = true ace.config.set('workerPath', "#{window.aceWorkerPath}") From 36eb453aed4b3cc7fd407429116f94926cdca2ad Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 20 Jan 2017 13:52:31 +0000 Subject: [PATCH 138/204] Clarify logic of asyncform onsuccess and onerror handlers --- services/web/public/coffee/directives/asyncForm.coffee | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/directives/asyncForm.coffee b/services/web/public/coffee/directives/asyncForm.coffee index b3e13e8d61..d9ca11231b 100644 --- a/services/web/public/coffee/directives/asyncForm.coffee +++ b/services/web/public/coffee/directives/asyncForm.coffee @@ -33,7 +33,8 @@ define [ response.success = true response.error = false - if onSuccessHandler = scope[attrs.onSuccess] + onSuccessHandler = scope[attrs.onSuccess] + if onSuccessHandler onSuccessHandler(data, status, headers, config) return @@ -55,7 +56,8 @@ define [ response.success = false response.error = true - if onErrorHandler = scope[attrs.onError] + onErrorHandler = scope[attrs.onError] + if onErrorHandler onErrorHandler(data, status, headers, config) return From 03555f0339091fe22c159bbb1f6e400332ee82df Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Fri, 20 Jan 2017 14:50:38 +0000 Subject: [PATCH 139/204] added chris and removed geri from pics --- services/web/public/img/about/chris.jpg | Bin 0 -> 7021 bytes services/web/public/img/about/geri.jpg | Bin 5579 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/web/public/img/about/chris.jpg delete mode 100644 services/web/public/img/about/geri.jpg diff --git a/services/web/public/img/about/chris.jpg b/services/web/public/img/about/chris.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d317be783a48c772b7e76b51f4f930ae855d535f GIT binary patch literal 7021 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 literal 0 HcmV?d00001 diff --git a/services/web/public/img/about/geri.jpg b/services/web/public/img/about/geri.jpg deleted file mode 100644 index 0de2f9a20e76f60d7993b467832d8c3ad98a368b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5579 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 DbA9q* From 6d35585847929930422b1d30c04d3d81e1b119cc Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sat, 21 Jan 2017 12:43:06 +0000 Subject: [PATCH 140/204] limit number of invites each user can do done with the number of collaborators a user can add prevents notifications getting filled up as well --- .../CollaboratorsInviteController.coffee | 19 ++- .../CollaboratorsInviteControllerTests.coffee | 137 +++++++++--------- 2 files changed, 87 insertions(+), 69 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index 460b62da1d..1fde81f5c9 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -10,6 +10,7 @@ EditorRealTimeController = require("../Editor/EditorRealTimeController") NotificationsBuilder = require("../Notifications/NotificationsBuilder") AnalyticsManger = require("../Analytics/AnalyticsManager") AuthenticationController = require("../Authentication/AuthenticationController") +rateLimiter = require("../../infrastructure/RateLimiter") module.exports = CollaboratorsInviteController = @@ -22,7 +23,7 @@ module.exports = CollaboratorsInviteController = return next(err) res.json({invites: invites}) - _checkShouldInviteEmail: (email, callback=(err, shouldAllowInvite)->) -> + _checkShouldInviteEmail: (sendingUser, email, callback=(err, shouldAllowInvite)->) -> if Settings.restrictInvitesToExistingAccounts == true logger.log {email}, "checking if user exists with this email" UserGetter.getUser {email: email}, {_id: 1}, (err, user) -> @@ -30,7 +31,19 @@ module.exports = CollaboratorsInviteController = userExists = user? and user?._id? callback(null, userExists) else - callback(null, true) + UserGetter.getUser sendingUser._id, {features:1, _id:1}, (err, user)-> + if err? + return callback(err) + collabLimit = user?.features?.collaborators || 1 + if collabLimit == -1 + collabLimit = 20 + collabLimit = collabLimit * 10 + opts = + endpointName: "invite_to_project" + timeInterval: 60 * 30 + subjectName: sendingUser._id + throttle: collabLimit + rateLimiter.addCount opts, callback inviteToProject: (req, res, next) -> projectId = req.params.Project_id @@ -51,7 +64,7 @@ module.exports = CollaboratorsInviteController = if !email? or email == "" logger.log {projectId, email, sendingUserId}, "invalid email address" return res.sendStatus(400) - CollaboratorsInviteController._checkShouldInviteEmail email, (err, shouldAllowInvite)-> + CollaboratorsInviteController._checkShouldInviteEmail sendingUser, email, (err, shouldAllowInvite)-> if err? logger.err {err, email, projectId, sendingUserId}, "error checking if we can invite this email address" return next(err) diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee index cf398e69da..bc1cb2e3b4 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee @@ -14,11 +14,20 @@ describe "CollaboratorsInviteController", -> @user = _id: 'id' @AnalyticsManger = recordEvent: sinon.stub() + @sendingUser = null @AuthenticationController = - getSessionUser: (req) => req.session.user + getSessionUser: (req) => + @sendingUser = req.session.user + return @sendingUser + + @RateLimiter = + addCount: sinon.stub + + @LimitationsManager = {} + @CollaboratorsInviteController = SandboxedModule.require modulePath, requires: "../Project/ProjectGetter": @ProjectGetter = {} - '../Subscription/LimitationsManager' : @LimitationsManager = {} + '../Subscription/LimitationsManager' : @LimitationsManager '../User/UserGetter': @UserGetter = {getUser: sinon.stub()} "./CollaboratorsHandler": @CollaboratorsHandler = {} "./CollaboratorsInviteHandler": @CollaboratorsInviteHandler = {} @@ -28,6 +37,7 @@ describe "CollaboratorsInviteController", -> "../Analytics/AnalyticsManager": @AnalyticsManger '../Authentication/AuthenticationController': @AuthenticationController 'settings-sharelatex': @settings = {} + "../../infrastructure/RateLimiter":@RateLimiter @res = new MockResponse() @req = new MockRequest() @@ -104,15 +114,10 @@ describe "CollaboratorsInviteController", -> describe 'when all goes well', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should produce json response', -> @res.json.callCount.should.equal 1 ({invite: @invite}).should.deep.equal(@res.json.firstCall.args[0]) @@ -122,8 +127,8 @@ describe "CollaboratorsInviteController", -> @LimitationsManager.canAddXCollaborators.calledWith(@project_id).should.equal true it 'should have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 1 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true it 'should have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1 @@ -136,22 +141,17 @@ describe "CollaboratorsInviteController", -> describe 'when the user is not allowed to add more collaborators', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, false) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should produce json response without an invite', -> @res.json.callCount.should.equal 1 ({invite: null}).should.deep.equal(@res.json.firstCall.args[0]) it 'should not have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 0 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal false + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 0 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal false it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -159,23 +159,18 @@ describe "CollaboratorsInviteController", -> describe 'when canAddXCollaborators produces an error', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) @err = new Error('woops') @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, @err) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should call next with an error', -> @next.callCount.should.equal 1 @next.calledWith(@err).should.equal true it 'should not have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 0 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal false + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 0 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal false it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -183,16 +178,11 @@ describe "CollaboratorsInviteController", -> describe 'when inviteToProject produces an error', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) @err = new Error('woops') @CollaboratorsInviteHandler.inviteToProject = sinon.stub().callsArgWith(4, @err) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should call next with an error', -> @next.callCount.should.equal 1 @next.calledWith(@err).should.equal true @@ -202,8 +192,8 @@ describe "CollaboratorsInviteController", -> @LimitationsManager.canAddXCollaborators.calledWith(@project_id).should.equal true it 'should have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 1 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true it 'should have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1 @@ -212,22 +202,17 @@ describe "CollaboratorsInviteController", -> describe 'when _checkShouldInviteEmail disallows the invite', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, false) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, false) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should produce json response with no invite, and an error property', -> @res.json.callCount.should.equal 1 ({invite: null, error: 'cannot_invite_non_user'}).should.deep.equal(@res.json.firstCall.args[0]) it 'should have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 1 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -235,22 +220,17 @@ describe "CollaboratorsInviteController", -> describe 'when _checkShouldInviteEmail produces an error', -> beforeEach -> - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, new Error('woops')) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, new Error('woops')) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() - it 'should call next with an error', -> @next.callCount.should.equal 1 @next.calledWith(@err).should.equal true it 'should have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 1 - @_checkShouldInviteEmail.calledWith(@targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -260,14 +240,10 @@ describe "CollaboratorsInviteController", -> beforeEach -> @req.session.user = {_id: 'abc', email: 'me@example.com'} @req.body.email = 'me@example.com' - @_checkShouldInviteEmail = sinon.stub( - @CollaboratorsInviteController, '_checkShouldInviteEmail' - ).callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next - afterEach -> - @_checkShouldInviteEmail.restore() it 'should reject action, return json response with error code', -> @res.json.callCount.should.equal 1 @@ -277,7 +253,7 @@ describe "CollaboratorsInviteController", -> @LimitationsManager.canAddXCollaborators.callCount.should.equal 0 it 'should not have called _checkShouldInviteEmail', -> - @_checkShouldInviteEmail.callCount.should.equal 0 + @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 0 it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -702,13 +678,14 @@ describe "CollaboratorsInviteController", -> beforeEach -> @email = 'user@example.com' - @call = (callback) => - @CollaboratorsInviteController._checkShouldInviteEmail @email, callback + describe 'when we should be restricting to existing accounts', -> beforeEach -> @settings.restrictInvitesToExistingAccounts = true + @call = (callback) => + @CollaboratorsInviteController._checkShouldInviteEmail {}, @email, callback describe 'when user account is present', -> @@ -753,18 +730,46 @@ describe "CollaboratorsInviteController", -> expect(shouldAllow).to.equal undefined done() - describe 'when we should not be restricting', -> + describe 'when we should not be restricting on only registered users but do rate limit', -> beforeEach -> @settings.restrictInvitesToExistingAccounts = false + @sendingUser = + _id:"32312313" + features: + collaborators:17.8 + @UserGetter.getUser = sinon.stub().callsArgWith(2, null, @sendingUser) - it 'should callback with `true`', (done) -> - @call (err, shouldAllow) => - expect(err).to.equal null - expect(shouldAllow).to.equal true + it 'should callback with `true` when rate limit under', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> + @RateLimiter.addCount.called.should.equal true + result.should.equal true done() - it 'should not have called getUser', (done) -> - @call (err, shouldAllow) => - @UserGetter.getUser.callCount.should.equal 0 + it 'should callback with `false` when rate limit hit', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, false) + @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> + @RateLimiter.addCount.called.should.equal true + result.should.equal false done() + + it 'should call rate limiter with 10x the collaborators', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(178) + done() + + it 'should call rate limiter with 200 when collaborators is -1', (done) -> + @sendingUser.features.collaborators = -1 + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(200) + done() + + it 'should call rate limiter with 10 when user has no collaborators set', (done) -> + delete @sendingUser.features + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(10) + done() \ No newline at end of file From 74240e28c78cf6059fa2ce48db100c322c9adead Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sat, 21 Jan 2017 12:44:09 +0000 Subject: [PATCH 141/204] rate limit via ip the number of invite to project requests --- .../Features/Collaborators/CollaboratorsRouter.coffee | 8 +++++++- .../coffee/Features/Security/RateLimiterMiddlewear.coffee | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee index 4c7cc8c76a..8b130d27db 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee @@ -24,7 +24,13 @@ module.exports = RateLimiterMiddlewear.rateLimit({ endpointName: "invite-to-project" params: ["Project_id"] - maxRequests: 200 + maxRequests: 100 + timeInterval: 60 * 10 + }), + RateLimiterMiddlewear.rateLimit({ + endpointName: "invite-to-project-ip" + ipOnly:true + maxRequests: 100 timeInterval: 60 * 10 }), AuthenticationController.requireLogin(), diff --git a/services/web/app/coffee/Features/Security/RateLimiterMiddlewear.coffee b/services/web/app/coffee/Features/Security/RateLimiterMiddlewear.coffee index f486e94493..04b81581bf 100644 --- a/services/web/app/coffee/Features/Security/RateLimiterMiddlewear.coffee +++ b/services/web/app/coffee/Features/Security/RateLimiterMiddlewear.coffee @@ -19,12 +19,15 @@ module.exports = RateLimiterMiddlewear = user_id = AuthenticationController.getLoggedInUserId(req) || req.ip params = (opts.params or []).map (p) -> req.params[p] params.push user_id + subjectName = params.join(":") + if opts.ipOnly + subjectName = req.ip if !opts.endpointName? throw new Error("no endpointName provided") options = { endpointName: opts.endpointName timeInterval: opts.timeInterval or 60 - subjectName: params.join(":") + subjectName: subjectName throttle: opts.maxRequests or 6 } RateLimiter.addCount options, (error, canContinue)-> From 9153ffac41f240a901992ccb918843d393963014 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Sat, 21 Jan 2017 12:58:16 +0000 Subject: [PATCH 142/204] limit project name in email to 40 chars --- .../web/app/coffee/Features/Email/EmailBuilder.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 0a06a2a175..5360adb7a8 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -97,7 +97,7 @@ Thank you templates.projectInvite = - subject: _.template "<%= project.name %> - shared by <%= owner.email %>" + subject: _.template "<%= project.name.slice(0, 40) %> - shared by <%= owner.email %>" layout: BaseWithHeaderEmailLayout type:"notification" plainTextTemplate: _.template """ @@ -111,16 +111,16 @@ Thank you """ compiledTemplate: (opts) -> SingleCTAEmailBody({ - title: "#{ opts.project.name } – shared by #{ opts.owner.email }" + title: "#{ opts.project.name.slice(0, 40) } – shared by #{ opts.owner.email }" greeting: "Hi," - message: "#{ opts.owner.email } wants to share “#{ opts.project.name }” with you." + message: "#{ opts.owner.email } wants to share “#{ opts.project.name.slice(0, 40) }” with you." secondaryMessage: null ctaText: "View project" ctaURL: opts.inviteUrl gmailGoToAction: target: opts.inviteUrl name: "View project" - description: "Join #{ opts.project.name } at ShareLaTeX" + description: "Join #{ opts.project.name.slice(0, 40) } at ShareLaTeX" }) templates.completeJoinGroupAccount = From 2813b16ebfe7da9272b7c1fb979ca6cfa1a1a8e3 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 23 Jan 2017 09:45:37 +0100 Subject: [PATCH 143/204] Use thread id for comment id --- .../web/public/coffee/ide/review-panel/RangesTracker.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 722eab1aa5..7a679bb6e3 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -107,7 +107,7 @@ load = (EventEmitter) -> addComment: (op, metadata) -> # TODO: Don't allow overlapping comments? @comments.push comment = { - id: @newId() + id: op.t or @newId() op: # Copy because we'll modify in place c: op.c p: op.p From abbffb8e4b3f1e059291ef254700fe4c1dc74759 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 23 Jan 2017 10:03:16 +0000 Subject: [PATCH 144/204] Remove deprecated `node-uuid` package, replace with `uuid`. --- .../ThirdPartyDataStore/UpdateMerger.coffee | 2 +- services/web/app/coffee/models/User.coffee | 2 +- services/web/npm-shrinkwrap.json | 2879 +++++++---------- services/web/package.json | 4 +- 4 files changed, 1150 insertions(+), 1737 deletions(-) diff --git a/services/web/app/coffee/Features/ThirdPartyDataStore/UpdateMerger.coffee b/services/web/app/coffee/Features/ThirdPartyDataStore/UpdateMerger.coffee index 5e20c2b515..bce0befe22 100644 --- a/services/web/app/coffee/Features/ThirdPartyDataStore/UpdateMerger.coffee +++ b/services/web/app/coffee/Features/ThirdPartyDataStore/UpdateMerger.coffee @@ -4,7 +4,7 @@ editorController = require('../Editor/EditorController') logger = require('logger-sharelatex') Settings = require('settings-sharelatex') FileTypeManager = require('../Uploads/FileTypeManager') -uuid = require('node-uuid') +uuid = require('uuid') fs = require('fs') module.exports = diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index c6e469a1f4..44cea29a70 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -2,7 +2,7 @@ Project = require('./Project').Project Settings = require 'settings-sharelatex' _ = require('underscore') mongoose = require('mongoose') -uuid = require('node-uuid') +uuid = require('uuid') Schema = mongoose.Schema ObjectId = Schema.ObjectId diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 04fdfc0142..6fbb560b79 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -4,65 +4,54 @@ "dependencies": { "archiver": { "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "from": "archiver@0.9.0", "dependencies": { "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + "version": "0.2.13", + "from": "buffer-crc32@~0.2.1", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" }, "readable-stream": { "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "from": "readable-stream@~1.0.24", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "tar-stream": { "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "from": "tar-stream@~0.3.0", "dependencies": { "bl": { "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + "from": "bl@~0.6.0" }, "end-of-stream": { "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "from": "end-of-stream@~0.1.3", "dependencies": { "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } } @@ -72,77 +61,63 @@ }, "zip-stream": { "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "from": "zip-stream@~0.3.0", "dependencies": { "crc32-stream": { "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + "from": "crc32-stream@~0.2.0" }, "debug": { "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "from": "debug@~1.0.2", "dependencies": { "ms": { "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + "from": "ms@0.6.2" } } }, "deflate-crc32-stream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + "from": "deflate-crc32-stream@~0.1.0" } } }, "lazystream": { "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + "from": "lazystream@~0.1.0" }, "file-utils": { "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "from": "file-utils@~0.1.5", "dependencies": { "lodash": { "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + "from": "lodash@~2.1.0" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.6", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -150,96 +125,81 @@ }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "isbinaryfile": { "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + "from": "isbinaryfile@~0.1.9" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.0" } } }, "async": { "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", + "from": "async@0.6.2", "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" }, "base64-stream": { "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "from": "base64-stream@^0.1.2", "dependencies": { "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -247,133 +207,116 @@ }, "basic-auth-connect": { "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + "from": "basic-auth-connect@^1.0.0" }, "bcrypt": { "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "from": "bcrypt@0.8.3", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@1.2.1" }, "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "from": "nan@1.8.4", "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" } } }, "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "version": "1.16.0", + "from": "body-parser@^1.13.1", "dependencies": { "bytes": { "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + "from": "bytes@2.4.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.1" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@^1.1.0" }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" } } }, "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@~0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + "version": "6.2.1", + "from": "qs@6.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" }, "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "version": "2.2.0", + "from": "raw-body@~2.2.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@1.0.0" } } }, "type-is": { - "version": "1.6.13", + "version": "1.6.14", "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -383,18 +326,15 @@ }, "bufferedstream": { "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + "from": "bufferedstream@1.6.0" }, "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "version": "3.2.0", + "from": "connect-redis@^3.1.0", "dependencies": { "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -403,184 +343,165 @@ } }, "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "version": "2.6.5", + "from": "redis@^2.1.0", "dependencies": { "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + "version": "2.3.0", + "from": "redis-parser@^2.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.3.0.tgz" } } } } }, "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "version": "3.8.0", + "from": "contentful@^3.3.14", + "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.8.0.tgz", "dependencies": { "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "version": "6.3.19", + "from": "babel-runtime@~6.3.19", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.3.19.tgz", "dependencies": { "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + "version": "1.2.7", + "from": "core-js@^1.2.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz" } } }, "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "version": "2.5.0", + "from": "contentful-sdk-core@~2.5.0", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.5.0.tgz", "dependencies": { "follow-redirects": { "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "from": "follow-redirects@0.0.7", "dependencies": { "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "stream-consume": { "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + "from": "stream-consume@^0.1.0" } } }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@^6.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz" } } }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" + }, + "lodash": { + "version": "4.2.1", + "from": "lodash@~4.2.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.2.1.tgz" } } }, "cookie": { "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + "from": "cookie@^0.2.3" }, "cookie-parser": { "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "from": "cookie-parser@1.3.5", "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", "dependencies": { "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" } } }, "csurf": { "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "from": "csurf@^1.8.3", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "version": "3.0.4", + "from": "csrf@~3.0.3", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.4.tgz", "dependencies": { "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + "version": "1.3.3", + "from": "base64-url@1.3.3", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.3.3.tgz" }, "rndm": { "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + "from": "rndm@1.2.0" }, "tsscmp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + "from": "tsscmp@1.0.5" }, "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "version": "2.1.3", + "from": "uid-safe@~2.1.3", "dependencies": { "random-bytes": { "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + "from": "random-bytes@~1.0.0" } } } } }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" } } } @@ -588,280 +509,232 @@ }, "dateformat": { "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + "from": "dateformat@1.0.4-1.2.3" }, "express": { "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "from": "express@4.13.0", "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", "dependencies": { "accepts": { "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "from": "accepts@~1.2.9", "dependencies": { "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, "negotiator": { "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "from": "negotiator@0.5.3" } } }, "array-flatten": { "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + "from": "array-flatten@1.1.0" }, "content-disposition": { "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + "from": "content-disposition@0.5.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.1" }, "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "debug": { "version": "2.2.0", "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "depd": { "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + "from": "depd@~1.0.1" }, "escape-html": { "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + "from": "escape-html@1.0.2" }, "etag": { "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + "from": "etag@~1.7.0" }, "finalhandler": { "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "from": "finalhandler@0.4.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@~1.0.0" } } }, "fresh": { "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + "from": "fresh@0.3.0" }, "merge-descriptors": { "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + "from": "merge-descriptors@1.0.0" }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.1" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.0" }, "path-to-regexp": { "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + "from": "path-to-regexp@0.1.6" }, "proxy-addr": { "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "from": "proxy-addr@~1.0.8", "dependencies": { "forwarded": { "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + "from": "forwarded@~0.1.0" }, "ipaddr.js": { "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + "from": "ipaddr.js@1.0.5" } } }, "qs": { "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "from": "qs@2.4.2", "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" }, "range-parser": { "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + "from": "range-parser@~1.0.2" }, "send": { "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "from": "send@0.13.0", "dependencies": { "destroy": { "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + "from": "destroy@1.0.3" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } }, "serve-static": { "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "from": "serve-static@~1.10.0", "dependencies": { "escape-html": { "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "from": "escape-html@~1.0.3" }, "send": { "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "from": "send@0.13.2", "dependencies": { "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "destroy": { "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "from": "destroy@~1.0.4" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } } } }, "type-is": { - "version": "1.6.13", + "version": "1.6.14", "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -869,71 +742,67 @@ }, "vary": { "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + "from": "vary@~1.0.0" }, "utils-merge": { "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + "from": "utils-merge@1.0.0" } } }, "express-session": { - "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "version": "1.15.0", + "from": "express-session@^1.14.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.0.tgz", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", "from": "cookie-signature@1.0.6" }, "crc": { - "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + "version": "3.4.4", + "from": "crc@3.4.4", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz" }, "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "depd@1.1.0" + "from": "depd@~1.1.0" }, "on-headers": { "version": "1.0.1", - "from": "on-headers@1.0.1" + "from": "on-headers@~1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz" }, "parseurl": { "version": "1.3.1", - "from": "parseurl@1.3.1" + "from": "parseurl@~1.3.0" }, "uid-safe": { "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "from": "uid-safe@~2.1.3", "dependencies": { "base64-url": { "version": "1.3.3", - "from": "base64-url@1.3.3" + "from": "base64-url@1.3.3", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.3.3.tgz" }, "random-bytes": { "version": "1.0.0", - "from": "random-bytes@1.0.0" + "from": "random-bytes@~1.0.0" } } }, @@ -945,63 +814,51 @@ }, "grunt": { "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "from": "grunt@^0.4.5", "dependencies": { "async": { "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + "from": "async@~0.1.22" }, "coffee-script": { "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + "from": "coffee-script@~1.3.3" }, "colors": { "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "from": "colors@~0.6.2" }, "dateformat": { "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + "from": "dateformat@1.0.2-1.2.3" }, "eventemitter2": { "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + "from": "eventemitter2@~0.4.13" }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.9", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -1009,150 +866,124 @@ }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "glob": { "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "from": "glob@~3.1.21", "dependencies": { "graceful-fs": { "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + "from": "graceful-fs@~1.2.0" }, "inherits": { "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + "from": "inherits@1" } } }, "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "nopt": { "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "from": "nopt@~1.0.10", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "rimraf": { "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + "from": "rimraf@~2.2.8" }, "lodash": { "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + "from": "lodash@~0.9.2" }, "underscore.string": { "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + "from": "underscore.string@~2.2.1" }, "which": { "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + "from": "which@~1.0.5" }, "js-yaml": { "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "from": "js-yaml@~2.0.5", "dependencies": { "argparse": { "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "from": "argparse@~ 0.1.11", "dependencies": { "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "from": "underscore@~1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" }, "underscore.string": { "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + "from": "underscore.string@~2.4.0" } } }, "esprima": { "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + "from": "esprima@~ 1.0.2" } } }, "exit": { "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "from": "exit@~0.1.1" }, "getobject": { "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + "from": "getobject@~0.1.0" }, "grunt-legacy-util": { "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + "from": "grunt-legacy-util@~0.2.0" }, "grunt-legacy-log": { "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "from": "grunt-legacy-log@~0.1.0", "dependencies": { "grunt-legacy-log-utils": { "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + "from": "grunt-legacy-log-utils@~0.1.1" }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" }, "underscore.string": { "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + "from": "underscore.string@~2.3.3" } } } @@ -1160,45 +991,39 @@ }, "heapdump": { "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + "from": "heapdump@^0.3.7" }, "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "version": "1.16.2", + "from": "http-proxy@^1.8.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", "dependencies": { "eventemitter3": { "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + "from": "eventemitter3@1.x.x" }, "requires-port": { "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "from": "requires-port@1.x.x" } } }, "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "version": "2.5.0", + "from": "ioredis@^2.4.0", "dependencies": { "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" }, "cluster-key-slot": { "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + "from": "cluster-key-slot@^1.0.6" }, "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -1208,100 +1033,87 @@ }, "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "flexbuffer": { "version": "0.0.6", - "from": "flexbuffer@0.0.6" + "from": "flexbuffer@0.0.6", + "resolved": "https://registry.npmjs.org/flexbuffer/-/flexbuffer-0.0.6.tgz" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + "from": "redis-parser@^1.3.0" } } }, "jade": { "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "from": "jade@~1.3.1", "dependencies": { "commander": { "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "from": "commander@2.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "from": "mkdirp@~0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" }, "transformers": { "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "from": "transformers@2.1.0", "dependencies": { "promise": { "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "from": "promise@~2.0", "dependencies": { "is-promise": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + "from": "is-promise@~1" } } }, "css": { "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "from": "css@~1.0.8", "dependencies": { "css-parse": { "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + "from": "css-parse@1.0.4" }, "css-stringify": { "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + "from": "css-stringify@1.0.5" } } }, "uglify-js": { "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "from": "uglify-js@~2.2.5", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@~0.1.7", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "optimist": { "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "from": "optimist@~0.3.5", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" } } } @@ -1311,38 +1123,31 @@ }, "character-parser": { "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + "from": "character-parser@1.2.0" }, "monocle": { "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "from": "monocle@1.1.51", "dependencies": { "readdirp": { "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "from": "readdirp@~0.2.3", "dependencies": { "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@>=0.2.4", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -1354,60 +1159,50 @@ }, "with": { "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "from": "with@~3.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.12", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1417,60 +1212,50 @@ }, "constantinople": { "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "from": "constantinople@~2.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.12", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1481,102 +1266,101 @@ } }, "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "version": "1.0.1", + "from": "ldapjs@^1.0.0", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.1.tgz", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@0.2.3" }, "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + "version": "1.0.0", + "from": "assert-plus@^1.0.0" }, "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "version": "1.8.5", + "from": "bunyan@^1.8.3", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.5.tgz", "dependencies": { + "dtrace-provider": { + "version": "0.8.0", + "from": "dtrace-provider@~0.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.0.tgz", + "dependencies": { + "nan": { + "version": "2.5.1", + "from": "nan@^2.0.8", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" + } + } + }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -1586,192 +1370,200 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" + }, + "moment": { + "version": "2.17.1", + "from": "moment@^2.10.6", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.1.tgz" } } }, "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + "version": "1.14.1", + "from": "dashdash@^1.14.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" }, "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "version": "2.5.0", + "from": "backoff@^2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", "dependencies": { "precond": { "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + "from": "precond@0.2" } } }, "ldap-filter": { "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + "from": "ldap-filter@0.2.2", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@0.1.5" + } + } }, "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "version": "1.4.0", + "from": "once@^1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + "version": "1.6.4", + "from": "vasync@^1.6.4", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "dependencies": { + "verror": { + "version": "1.6.0", + "from": "verror@1.6.0", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "extsprintf@1.2.0" + } + } + } + } }, "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "version": "1.9.0", + "from": "verror@^1.8.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.9.0.tgz", "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@1.0.2" + }, "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + "version": "1.3.0", + "from": "extsprintf@^1.2.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" } } }, "dtrace-provider": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "version": "0.7.1", + "from": "dtrace-provider@^0.7.0", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.7.1.tgz", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.0.8", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" } } } } }, "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + "version": "4.17.4", + "from": "lodash@^4.13.1" }, "logger-sharelatex": { "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#v1.3.1", "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", "dependencies": { "bunyan": { "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "from": "bunyan@1.5.1", "dependencies": { "dtrace-provider": { "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "from": "dtrace-provider@~0.6", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.0.8", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" } } }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -1781,35 +1573,33 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" } } }, "coffee-script": { "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + "from": "coffee-script@1.4.0" }, "raven": { "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "from": "raven@^0.8.0", "dependencies": { "cookie": { "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + "from": "cookie@0.1.0" }, "lsmod": { "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + "from": "lsmod@~0.0.3" + }, + "node-uuid": { + "version": "1.4.7", + "from": "node-uuid@~1.4.1" }, "stack-trace": { "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + "from": "stack-trace@0.0.7" } } } @@ -1817,181 +1607,159 @@ }, "lynx": { "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "from": "lynx@0.1.1", "dependencies": { "mersenne": { "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + "from": "mersenne@~0.0.3" }, "statsd-parser": { "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + "from": "statsd-parser@~0.0.4" } } }, "marked": { "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + "from": "marked@^0.3.5" }, "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "version": "2.3.7", + "from": "method-override@^2.3.3", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.7.tgz", "dependencies": { "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.3.3", + "from": "debug@2.3.3", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.2" }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.1" }, "vary": { "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + "from": "vary@~1.1.0" } } }, "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "version": "1.6.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#v1.6.0", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#718f1144407ab2c867b869ebb38e07de2be1933b", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "mimelib": { "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "from": "mimelib@0.2.14", "dependencies": { "encoding": { "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "from": "encoding@~0.1", "dependencies": { "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@~0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz" } } }, "addressparser": { "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + "from": "addressparser@~0.2.0" } } }, "mocha": { "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "from": "mocha@1.17.1", "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "from": "commander@2.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" }, "growl": { "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + "from": "growl@1.7.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "from": "commander@0.6.1", "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "from": "mkdirp@0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "from": "mkdirp@~0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -1999,109 +1767,93 @@ }, "mongojs": { "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "from": "mongojs@0.18.2", "dependencies": { "thunky": { "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + "from": "thunky@~0.1.0" }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@1.1.x", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mongodb": { "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "from": "mongodb@1.4.32", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", "dependencies": { "bson": { "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "from": "bson@~0.2", "dependencies": { "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "from": "nan@~1.8", "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" } } }, "kerberos": { "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "from": "kerberos@0.0.9", "dependencies": { "nan": { "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", + "from": "nan@1.6.2", "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@latest", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -2111,33 +1863,29 @@ }, "mongoose": { "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "from": "mongoose@4.1.0", "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", "dependencies": { "async": { "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", + "from": "async@0.9.0", "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" }, "bson": { "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "from": "bson@~0.3", "dependencies": { "bson-ext": { "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "from": "bson-ext@~0.1", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@^1.2.1" }, "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "from": "nan@~2.0.9" } } } @@ -2145,38 +1893,33 @@ }, "hooks-fixed": { "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + "from": "hooks-fixed@1.1.0" }, "kareem": { "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + "from": "kareem@1.0.1" }, "mongodb": { "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "from": "mongodb@2.0.34", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", "dependencies": { "mongodb-core": { "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "from": "mongodb-core@1.2.0", "dependencies": { "bson": { "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + "from": "bson@~0.4" }, "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "version": "0.0.22", + "from": "kerberos@~0.0", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.22.tgz", "dependencies": { "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + "version": "2.4.0", + "from": "nan@~2.4" } } } @@ -2184,28 +1927,24 @@ }, "readable-stream": { "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "from": "readable-stream@1.0.31", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2213,33 +1952,27 @@ }, "mpath": { "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + "from": "mpath@0.1.1" }, "mpromise": { "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + "from": "mpromise@0.5.4" }, "mquery": { "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "from": "mquery@1.6.1", "dependencies": { "bluebird": { "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" + "from": "bluebird@2.9.26" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } } @@ -2247,72 +1980,59 @@ }, "ms": { "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + "from": "ms@0.1.0" }, "muri": { "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + "from": "muri@1.0.0" }, "regexp-clone": { "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + "from": "regexp-clone@0.0.1" }, "sliced": { "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + "from": "sliced@0.0.5" } } }, "multer": { "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "from": "multer@^0.1.8", "dependencies": { "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "version": "0.2.14", + "from": "busboy@~0.2.9", "dependencies": { "dicer": { "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "from": "dicer@0.2.5", "dependencies": { "streamsearch": { "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + "from": "streamsearch@0.1.2" } } }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@1.1.x", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2320,33 +2040,27 @@ }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "qs": { "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + "from": "qs@~1.2.2" }, "type-is": { "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "from": "type-is@~1.5.2", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "from": "mime-types@~2.0.9", "dependencies": { "mime-db": { "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + "from": "mime-db@~1.12.0" } } } @@ -2354,67 +2068,53 @@ } } }, - "node-uuid": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" - }, "nodemailer": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "from": "nodemailer@2.1.0", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", "dependencies": { "libmime": { "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "from": "libmime@2.0.0", "dependencies": { "iconv-lite": { "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "from": "iconv-lite@0.4.13", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" } } }, "mailcomposer": { "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "from": "mailcomposer@3.3.2", "dependencies": { "buildmail": { "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "from": "buildmail@3.3.2", "dependencies": { "addressparser": { "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + "from": "addressparser@1.0.0" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" }, "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } } @@ -2422,69 +2122,57 @@ }, "nodemailer-direct-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "from": "nodemailer-direct-transport@2.0.1", "dependencies": { "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-shared": { "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "from": "nodemailer-shared@1.0.3", "dependencies": { "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } }, "nodemailer-smtp-pool": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "from": "nodemailer-smtp-pool@2.1.0", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-smtp-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "from": "nodemailer-smtp-transport@2.0.1", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } } @@ -2492,69 +2180,102 @@ }, "nodemailer-sendgrid-transport": { "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "from": "nodemailer-sendgrid-transport@^0.2.0", "dependencies": { "sendgrid": { "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "from": "sendgrid@^1.8.0", "dependencies": { "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@^1.2.9" }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "from": "lodash@^3.0.1 || ^2.0.0" }, "smtpapi": { "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + "from": "smtpapi@^1.2.0" } } } } }, "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "version": "1.5.0", + "from": "nodemailer-ses-transport@^1.3.0", + "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.5.0.tgz", "dependencies": { "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "version": "2.7.27", + "from": "aws-sdk@^2.6.12", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.7.27.tgz", "dependencies": { - "sax": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" - }, - "xml2js": { - "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "buffer": { + "version": "4.9.1", + "from": "buffer@4.9.1", "dependencies": { - "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + "base64-js": { + "version": "1.2.0", + "from": "base64-js@^1.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz" + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@^1.1.4", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@^1.0.0" } } }, + "crypto-browserify": { + "version": "1.0.9", + "from": "crypto-browserify@1.0.9" + }, "jmespath": { "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + "from": "jmespath@0.15.0" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0" + }, + "sax": { + "version": "1.1.5", + "from": "sax@1.1.5" + }, + "url": { + "version": "0.10.3", + "from": "url@0.10.3", + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2" + } + } + }, + "uuid": { + "version": "3.0.0", + "from": "uuid@3.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz" + }, + "xml2js": { + "version": "0.4.15", + "from": "xml2js@0.4.15" + }, + "xmlbuilder": { + "version": "2.6.2", + "from": "xmlbuilder@2.6.2", + "dependencies": { + "lodash": { + "version": "3.5.0", + "from": "lodash@~3.5.0" + } + } } } } @@ -2562,67 +2283,56 @@ }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@0.6.1", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "from": "minimist@~0.0.1" } } }, "passport": { "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "from": "passport@^0.3.2", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "pause": { "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + "from": "pause@0.0.1" } } }, "passport-ldapauth": { "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "from": "passport-ldapauth@^0.6.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "version": "2.5.5", + "from": "ldapauth-fork@~2.5.0", "dependencies": { "bcryptjs": { "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", + "from": "bcryptjs@2.3.0", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" }, "lru-cache": { "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "from": "lru-cache@3.2.0", "dependencies": { "pseudomap": { "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "from": "pseudomap@^1.0.1" } } } @@ -2632,20 +2342,17 @@ }, "passport-local": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "from": "passport-local@^1.0.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" } } }, "passport-saml": { "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "from": "passport-saml@^0.15.0", "dependencies": { "passport-strategy": { "version": "1.0.0", @@ -2658,7 +2365,6 @@ "xml2js": { "version": "0.4.17", "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "dependencies": { "sax": { "version": "1.2.1", @@ -2666,32 +2372,35 @@ }, "xmlbuilder": { "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + "from": "xmlbuilder@^4.1.0" } } }, "xml-crypto": { - "version": "0.8.4", + "version": "0.8.5", "from": "xml-crypto@0.8.x", + "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", "dependencies": { "xmldom": { "version": "0.1.19", "from": "xmldom@=0.1.19" }, "xpath.js": { - "version": "1.0.6", - "from": "xpath.js@>=0.0.3" + "version": "1.0.7", + "from": "xpath.js@>=0.0.3", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.0.7.tgz" } } }, "xmldom": { - "version": "0.1.22", - "from": "xmldom@0.1.x" + "version": "0.1.27", + "from": "xmldom@0.1.x", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" }, "xmlbuilder": { "version": "2.5.2", "from": "xmlbuilder@2.5.x", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.5.2.tgz", "dependencies": { "lodash": { "version": "3.2.0", @@ -2702,6 +2411,7 @@ "xml-encryption": { "version": "0.7.4", "from": "xml-encryption@~0.7", + "resolved": "https://registry.npmjs.org/xml-encryption/-/xml-encryption-0.7.4.tgz", "dependencies": { "ejs": { "version": "0.8.8", @@ -2713,165 +2423,44 @@ }, "xpath": { "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + "from": "xpath@0.0.5" }, "node-forge": { "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + "from": "node-forge@0.2.24" } } } } }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" - }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - } - } - }, "redback": { "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" + "from": "redback@0.4.0" }, "redis": { "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + "from": "redis@0.10.1" }, "redis-sharelatex": { "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "from": "redis-sharelatex@0.0.9", "dependencies": { "chai": { "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "from": "chai@1.9.1", "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", "dependencies": { "assertion-error": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + "from": "assertion-error@1.0.0" }, "deep-eql": { "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "from": "deep-eql@0.1.3", "dependencies": { "type-detect": { "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "from": "type-detect@0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" } } @@ -2880,195 +2469,176 @@ }, "coffee-script": { "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "from": "coffee-script@1.8.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "from": "mkdirp@~0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" } } }, "grunt-contrib-coffee": { "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "from": "grunt-contrib-coffee@0.11.1", "dependencies": { "coffee-script": { "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "from": "coffee-script@~1.7.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "from": "mkdirp@~0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" } } }, "chalk": { "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "from": "chalk@~0.5.0", "dependencies": { "ansi-styles": { "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + "from": "ansi-styles@^1.1.0" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.0" }, "has-ansi": { "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "from": "has-ansi@^0.1.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.0" } } }, "strip-ansi": { "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "from": "strip-ansi@^0.3.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.0" } } }, "supports-color": { "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + "from": "supports-color@^0.2.0" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "grunt-mocha-test": { "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "from": "grunt-mocha-test@0.12.0", "dependencies": { "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "fs-extra": { "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "from": "fs-extra@~0.11.1", "dependencies": { "ncp": { "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + "from": "ncp@^0.6.0" }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@^0.5.0", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + "version": "2.4.0", + "from": "jsonfile@^2.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@^4.1.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@^2.2.8", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } @@ -3080,89 +2650,80 @@ }, "mocha": { "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "from": "mocha@1.21.4", "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "from": "commander@2.0.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" }, "growl": { "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + "from": "growl@1.8.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "from": "commander@0.6.1", "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "from": "mkdirp@0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "from": "mkdirp@~0.3.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -3170,69 +2731,57 @@ }, "redis": { "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + "from": "redis@0.12.1" }, "redis-sentinel": { "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "from": "redis-sentinel@0.1.1", "dependencies": { "redis": { "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + "from": "redis@0.11.x" }, "q": { "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + "from": "q@0.9.2" } } }, "sandboxed-module": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "from": "sandboxed-module@1.0.1", "dependencies": { "require-like": { "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + "from": "require-like@0.1.2" }, "stack-trace": { "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + "from": "stack-trace@0.0.9" } } }, "sinon": { "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "from": "sinon@1.10.3", "dependencies": { "formatio": { "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "from": "formatio@~1.0", "dependencies": { "samsam": { "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + "from": "samsam@~1.1" } } }, "util": { "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "from": "util@>=0.10.3 <1", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "inherits@2.0.1" } } } @@ -3240,215 +2789,148 @@ }, "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "from": "underscore@~1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" } } }, "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "version": "2.79.0", + "from": "request@^2.69.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "dependencies": { "aws-sign2": { "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + "from": "aws-sign2@~0.6.0" }, "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } + "version": "1.5.0", + "from": "aws4@^1.2.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz" }, "caseless": { "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + "from": "caseless@~0.11.0" }, "combined-stream": { "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "from": "combined-stream@~1.0.5", "dependencies": { "delayed-stream": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "from": "delayed-stream@~1.0.0" } } }, "extend": { "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + "from": "extend@~3.0.0" }, "forever-agent": { "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "from": "forever-agent@~0.6.1" }, "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "version": "2.1.2", + "from": "form-data@~2.1.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "asynckit": { + "version": "0.4.0", + "from": "asynckit@^0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" } } }, "har-validator": { "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "from": "har-validator@~2.0.6", "dependencies": { "chalk": { "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "from": "chalk@^1.1.1", "dependencies": { "ansi-styles": { "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "from": "ansi-styles@^2.2.1" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.2" }, "has-ansi": { "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "from": "has-ansi@^2.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "supports-color": { "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "from": "supports-color@^2.0.0" } } }, "commander": { "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "from": "commander@^2.9.0", "dependencies": { "graceful-readlink": { "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "from": "graceful-readlink@>= 1.0.0" } } }, "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "version": "2.15.0", + "from": "is-my-json-valid@^2.12.4", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", "dependencies": { "generate-function": { "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + "from": "generate-function@^2.0.0" }, "generate-object-property": { "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "from": "generate-object-property@^1.1.0", "dependencies": { "is-property": { "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + "from": "is-property@^1.0.0" } } }, "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + "version": "4.0.1", + "from": "jsonpointer@^4.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz" }, "xtend": { "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "from": "xtend@^4.0.0" } } }, "pinkie-promise": { "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "from": "pinkie-promise@^2.0.0", "dependencies": { "pinkie": { "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "from": "pinkie@^2.0.0" } } } @@ -3456,107 +2938,95 @@ }, "hawk": { "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "from": "hawk@~3.1.3", "dependencies": { "hoek": { "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "from": "hoek@2.x.x" }, "boom": { "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "from": "boom@2.x.x" }, "cryptiles": { "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + "from": "cryptiles@2.x.x" }, "sntp": { "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "from": "sntp@1.x.x" } } }, "http-signature": { "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "from": "http-signature@~1.1.0", "dependencies": { "assert-plus": { "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + "from": "assert-plus@^0.2.0" }, "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "version": "1.3.1", + "from": "jsprim@^1.2.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", "dependencies": { "extsprintf": { "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "from": "extsprintf@1.0.2" }, "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + "version": "0.2.3", + "from": "json-schema@0.2.3" }, "verror": { "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "from": "verror@1.3.6" } } }, "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "version": "1.10.2", + "from": "sshpk@^1.7.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@~0.2.3" }, "assert-plus": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "from": "assert-plus@^1.0.0" }, "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + "version": "1.14.1", + "from": "dashdash@^1.12.0", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" }, "getpass": { "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + "from": "getpass@^0.1.1" }, "jsbn": { "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + "from": "jsbn@~0.1.0" }, "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + "version": "0.14.5", + "from": "tweetnacl@~0.14.0", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" }, "jodid25519": { "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + "from": "jodid25519@^1.0.0" }, "ecc-jsbn": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + "from": "ecc-jsbn@~0.1.1" + }, + "bcrypt-pbkdf": { + "version": "1.0.0", + "from": "bcrypt-pbkdf@^1.0.0", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz" } } } @@ -3564,196 +3034,212 @@ }, "is-typedarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "from": "is-typedarray@~1.0.0" }, "isstream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "from": "isstream@~0.1.2" }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.7", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, "oauth-sign": { "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + "from": "oauth-sign@~0.8.1" }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@~6.3.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz" }, "stringstream": { "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + "from": "stringstream@~0.0.4" }, "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + "version": "2.3.2", + "from": "tough-cookie@~2.3.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "dependencies": { + "punycode": { + "version": "1.4.1", + "from": "punycode@^1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + } }, "tunnel-agent": { "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + "from": "tunnel-agent@~0.4.1" } } }, "requests": { "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "from": "requests@^0.1.7", "dependencies": { "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + "version": "0.0.2", + "from": "axo@0.0.x", + "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.2.tgz" }, "eventemitter3": { "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + "from": "eventemitter3@1.1.x" }, "extendible": { "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + "from": "extendible@0.1.x" }, "hang": { "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + "from": "hang@1.0.x" }, "loads": { "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "from": "loads@0.0.x", "dependencies": { "failure": { "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + "from": "failure@1.1.x" }, "one-time": { "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + "from": "one-time@0.0.x" }, "xhr-response": { "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + "from": "xhr-response@1.0.x" }, "xhr-status": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + "from": "xhr-status@1.0.x" } } }, "xhr-send": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + "from": "xhr-send@1.0.x" } } }, "rimraf": { "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "from": "rimraf@2.2.6", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" }, "sanitizer": { "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + "from": "sanitizer@0.1.1" }, "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "version": "3.29.0", + "from": "sequelize@^3.2.0", "dependencies": { "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" }, "depd": { "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "dottie": { "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + "from": "dottie@^1.0.0" }, "generic-pool": { "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", + "from": "generic-pool@2.4.2", "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" }, "inflection": { "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + "from": "inflection@^1.6.0" }, "lodash": { "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", + "from": "lodash@4.12.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" }, "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + "version": "2.17.1", + "from": "moment@^2.13.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.17.1.tgz" }, "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + "version": "0.5.11", + "from": "moment-timezone@^0.5.4" }, "node-uuid": { "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + "from": "node-uuid@~1.4.0" }, "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "version": "2.2.0", + "from": "retry-as-promised@^2.0.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.2.0.tgz", "dependencies": { + "cross-env": { + "version": "3.1.4", + "from": "cross-env@^3.1.2", + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "from": "cross-spawn@^3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "from": "lru-cache@^4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "pseudomap@^1.0.1" + }, + "yallist": { + "version": "2.0.0", + "from": "yallist@^2.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz" + } + } + }, + "which": { + "version": "1.2.12", + "from": "which@^1.2.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", + "dependencies": { + "isexe": { + "version": "1.1.2", + "from": "isexe@^1.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" + } + } + } + } + } + } + }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } } @@ -3761,170 +3247,155 @@ }, "semver": { "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "from": "semver@~5.3.0" }, "shimmer": { "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + "from": "shimmer@1.1.0" }, "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "version": "1.1.2", + "from": "terraformer-wkt-parser@^1.1.0", + "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz", "dependencies": { "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + "version": "1.0.7", + "from": "terraformer@~1.0.5", + "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.7.tgz" } } }, "toposort-class": { "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "from": "toposort-class@^1.0.1" }, "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + "version": "5.7.0", + "from": "validator@^5.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-5.7.0.tgz" }, "wkx": { "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + "from": "wkx@0.2.0" } } }, "settings-sharelatex": { "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0", "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "sixpack-client": { "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + "from": "sixpack-client@^1.0.0" }, "temp": { "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "from": "temp@^0.8.3", "dependencies": { "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + "version": "1.0.2", + "from": "os-tmpdir@^1.0.0", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" } } }, "underscore": { "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "from": "underscore@1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" }, + "uuid": { + "version": "3.0.1", + "from": "uuid@^3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz" + }, "v8-profiler": { "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "from": "v8-profiler@^5.2.3", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.3.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz" }, "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "version": "0.6.32", + "from": "node-pre-gyp@^0.6.5", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "nopt": { "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "from": "nopt@~3.0.6", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "version": "4.0.2", + "from": "npmlog@^4.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", "dependencies": { "are-we-there-yet": { "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "from": "are-we-there-yet@~1.1.2", "dependencies": { "delegates": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "from": "delegates@^1.0.0" }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.0 || ^1.1.13", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -3932,65 +3403,52 @@ }, "console-control-strings": { "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "from": "console-control-strings@~1.1.0" }, "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "version": "2.7.2", + "from": "gauge@~2.7.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.2.tgz", "dependencies": { "aproba": { "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + "from": "aproba@^1.0.3" }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + "supports-color": { + "version": "0.2.0", + "from": "supports-color@^0.2.0" }, "has-unicode": { "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "from": "has-unicode@^2.0.0" }, "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + "version": "4.1.1", + "from": "object-assign@^4.1.0" }, "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + "version": "3.0.2", + "from": "signal-exit@^3.0.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" }, "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "version": "1.0.2", + "from": "string-width@^1.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "dependencies": { "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } + "version": "1.1.0", + "from": "code-point-at@^1.0.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" }, "is-fullwidth-code-point": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "from": "is-fullwidth-code-point@^1.0.0", "dependencies": { "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + "version": "1.0.1", + "from": "number-is-nan@^1.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" } } } @@ -3998,231 +3456,198 @@ }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.1", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "wide-align": { "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + "from": "wide-align@^1.1.0" } } }, "set-blocking": { "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "from": "set-blocking@~2.0.0" } } }, "rc": { "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "from": "rc@~1.1.6", "dependencies": { "deep-extend": { "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + "from": "deep-extend@~0.4.0" }, "ini": { "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + "from": "ini@~1.3.0" }, "minimist": { "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + "from": "minimist@^1.2.0" }, "strip-json-comments": { "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + "from": "strip-json-comments@~1.0.4" } } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@~2.5.4", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.0", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } } } } }, "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + "version": "5.3.0", + "from": "semver@~5.3.0" }, "tar": { "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "from": "tar@~2.2.1", "dependencies": { "block-stream": { "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + "from": "block-stream@*" }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@^1.0.2", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } }, "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "version": "3.3.0", + "from": "tar-pack@~3.3.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", "dependencies": { "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@~2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@~1.0.10", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } }, "fstream-ignore": { "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "from": "fstream-ignore@~1.0.5", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.0", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -4232,62 +3657,52 @@ }, "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.3", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.1.5", + "from": "readable-stream@~2.1.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } }, "uid-number": { "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "from": "uid-number@~0.0.6" } } } @@ -4297,13 +3712,11 @@ }, "xml2js": { "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "from": "xml2js@0.2.0", "dependencies": { "sax": { "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "from": "sax@>=0.1.1" } } } diff --git a/services/web/package.json b/services/web/package.json index cfd2379f73..0e3c444a75 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -42,7 +42,6 @@ "mongojs": "0.18.2", "mongoose": "4.1.0", "multer": "^0.1.8", - "node-uuid": "1.4.1", "nodemailer": "2.1.0", "nodemailer-sendgrid-transport": "^0.2.0", "nodemailer-ses-transport": "^1.3.0", @@ -64,7 +63,8 @@ "underscore": "1.6.0", "v8-profiler": "^5.2.3", "xml2js": "0.2.0", - "passport-saml": "^0.15.0" + "passport-saml": "^0.15.0", + "uuid": "^3.0.1" }, "devDependencies": { "bunyan": "0.22.1", From 1de8b3bce7886f3904239de1212a4de4090e9631 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Tue, 24 Jan 2017 15:19:48 +0000 Subject: [PATCH 145/204] Disable text selection with right click on file tree. --- services/web/public/stylesheets/app/editor/file-tree.less | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/web/public/stylesheets/app/editor/file-tree.less b/services/web/public/stylesheets/app/editor/file-tree.less index 5a4d7feed1..7847822bf9 100644 --- a/services/web/public/stylesheets/app/editor/file-tree.less +++ b/services/web/public/stylesheets/app/editor/file-tree.less @@ -35,6 +35,10 @@ aside#file-tree { line-height: 2.6; position: relative; + .entity { + user-select: none; + } + .entity-name { color: @gray-darker; cursor: pointer; From f9ba7392e9e1fe8809d85f6c5c4894145432113b Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 16:18:49 +0100 Subject: [PATCH 146/204] Allow editing/deleting of comments and threads --- .../Features/Chat/ChatApiHandler.coffee | 23 +++++- .../Comments/CommentsController.coffee | 28 +++++++ .../DocumentUpdaterHandler.coffee | 16 ++++ services/web/app/coffee/router.coffee | 3 + .../views/project/editor/review-panel.jade | 58 ++++++++++---- .../ide/review-panel/RangesTracker.coffee | 1 - .../controllers/ReviewPanelController.coffee | 65 ++++++++++++++-- .../directives/commentEntry.coffee | 33 +++++++- .../resolvedCommentsDropdown.coffee | 5 +- .../stylesheets/app/editor/review-panel.less | 10 +-- .../Comments/CommentsControllerTests.coffee | 75 +++++++++++++++++++ .../DocumentUpdaterHandlerTests.coffee | 35 +++++++++ 12 files changed, 318 insertions(+), 34 deletions(-) diff --git a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee index aa4b75ce11..3cae19b7f3 100644 --- a/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee +++ b/services/web/app/coffee/Features/Chat/ChatApiHandler.coffee @@ -58,4 +58,25 @@ module.exports = ChatApiHandler = ChatApiHandler._apiRequest { url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/reopen" method: "POST" - }, callback \ No newline at end of file + }, callback + + deleteThread: (project_id, thread_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}" + method: "DELETE" + }, callback + + editMessage: (project_id, thread_id, message_id, content, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}/edit" + method: "POST" + json: + content: content + }, callback + + deleteMessage: (project_id, thread_id, message_id, callback = (error) ->) -> + ChatApiHandler._apiRequest { + url: "#{settings.apis.chat.internal_url}/project/#{project_id}/thread/#{thread_id}/messages/#{message_id}" + method: "DELETE" + }, callback + \ No newline at end of file diff --git a/services/web/app/coffee/Features/Comments/CommentsController.coffee b/services/web/app/coffee/Features/Comments/CommentsController.coffee index ee9b8b9f84..bda006eb8f 100644 --- a/services/web/app/coffee/Features/Comments/CommentsController.coffee +++ b/services/web/app/coffee/Features/Comments/CommentsController.coffee @@ -4,6 +4,7 @@ logger = require("logger-sharelatex") AuthenticationController = require('../Authentication/AuthenticationController') UserInfoManager = require('../User/UserInfoManager') UserInfoController = require('../User/UserInfoController') +DocumentUpdaterHandler = require "../DocumentUpdater/DocumentUpdaterHandler" async = require "async" module.exports = CommentsController = @@ -50,6 +51,33 @@ module.exports = CommentsController = return next(err) if err? EditorRealTimeController.emitToRoom project_id, "reopen-thread", thread_id, (err)-> res.send 204 + + deleteThread: (req, res, next) -> + {project_id, doc_id, thread_id} = req.params + logger.log {project_id, doc_id, thread_id}, "deleting comment thread" + DocumentUpdaterHandler.deleteThread project_id, doc_id, thread_id, (err) -> + return next(err) if err? + ChatApiHandler.deleteThread project_id, thread_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "delete-thread", thread_id, (err)-> + res.send 204 + + editMessage: (req, res, next) -> + {project_id, thread_id, message_id} = req.params + {content} = req.body + logger.log {project_id, thread_id, message_id}, "editing message thread" + ChatApiHandler.editMessage project_id, thread_id, message_id, content, (err) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "edit-message", thread_id, message_id, content, (err)-> + res.send 204 + + deleteMessage: (req, res, next) -> + {project_id, thread_id, message_id} = req.params + logger.log {project_id, thread_id, message_id}, "deleting message" + ChatApiHandler.deleteMessage project_id, thread_id, message_id, (err, threads) -> + return next(err) if err? + EditorRealTimeController.emitToRoom project_id, "delete-message", thread_id, message_id, (err)-> + res.send 204 _injectUserInfoIntoThreads: (threads, callback = (error, threads) ->) -> userCache = {} diff --git a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee index bb4922704f..5c15735410 100644 --- a/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee +++ b/services/web/app/coffee/Features/DocumentUpdater/DocumentUpdaterHandler.coffee @@ -153,6 +153,22 @@ module.exports = DocumentUpdaterHandler = logger.error {project_id, doc_id, change_id}, "doc updater returned a non-success status code: #{res.statusCode}" callback new Error("doc updater returned a non-success status code: #{res.statusCode}") + deleteThread: (project_id, doc_id, thread_id, callback = (error) ->) -> + timer = new metrics.Timer("delete-thread") + url = "#{settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}/comment/#{thread_id}" + logger.log {project_id, doc_id, thread_id}, "deleting comment range in document updater" + request.del url, (error, res, body)-> + timer.done() + if error? + logger.error {err:error, project_id, doc_id, thread_id}, "error deleting comment range in doc updater" + return callback(error) + if res.statusCode >= 200 and res.statusCode < 300 + logger.log {project_id, doc_id, thread_id}, "deleted comment rangee in document updater" + return callback(null) + else + logger.error {project_id, doc_id, thread_id}, "doc updater returned a non-success status code: #{res.statusCode}" + callback new Error("doc updater returned a non-success status code: #{res.statusCode}") + PENDINGUPDATESKEY = "PendingUpdates" DOCLINESKEY = "doclines" DOCIDSWITHPENDINGUPDATES = "DocsWithPendingUpdates" diff --git a/services/web/app/coffee/router.coffee b/services/web/app/coffee/router.coffee index a9105a1d46..62d5ec0865 100644 --- a/services/web/app/coffee/router.coffee +++ b/services/web/app/coffee/router.coffee @@ -238,6 +238,9 @@ module.exports = class Router webRouter.get "/project/:project_id/threads", AuthorizationMiddlewear.ensureUserCanReadProject, CommentsController.getThreads webRouter.post "/project/:project_id/thread/:thread_id/resolve", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.resolveThread webRouter.post "/project/:project_id/thread/:thread_id/reopen", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.reopenThread + webRouter.delete "/project/:project_id/doc/:doc_id/thread/:thread_id", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.deleteThread + webRouter.post "/project/:project_id/thread/:thread_id/messages/:message_id/edit", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.editMessage + webRouter.delete "/project/:project_id/thread/:thread_id/messages/:message_id", AuthorizationMiddlewear.ensureUserCanWriteProjectContent, CommentsController.deleteMessage webRouter.post "/project/:Project_id/references/index", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.index webRouter.post "/project/:Project_id/references/indexAll", AuthorizationMiddlewear.ensureUserCanReadProject, ReferencesController.indexAll diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 0419884502..98aeefee97 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -7,7 +7,7 @@ docs="docs" on-open="refreshResolvedCommentsDropdown();" on-unresolve="unresolveComment(threadId);" - on-delete="deleteComment(entryId, threadId);" + on-delete="deleteThread(entryId, docId, threadId);" is-loading="reviewPanel.dropdown.loading" permissions="permissions" ) @@ -51,6 +51,8 @@ on-resolve="resolveComment(entry, entry_id)" on-reply="submitReply(entry, entry_id);" on-indicator-click="toggleReviewPanel();" + on-save-edit="saveEdit(entry.thread_id, comment)" + on-delete="deleteComment(entry.thread_id, comment)" permissions="permissions" ng-if="!reviewPanel.loadingThreads" ) @@ -94,6 +96,8 @@ entry="entry" threads="reviewPanel.commentThreads" on-reply="submitReply(entry, entry_id);" + on-save-edit="saveEdit(entry.thread_id, comment)" + on-delete="deleteComment(entry.thread_id, comment)" on-indicator-click="toggleReviewPanel();" ng-click="gotoEntry(doc.doc.id, entry)" permissions="permissions" @@ -175,18 +179,42 @@ script(type='text/ng-template', id='commentEntryTemplate') .rp-entry.rp-entry-comment( ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }" ) + + .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0") + | No comments div .rp-comment( ng-repeat="comment in threads[entry.thread_id].messages track by comment.id" ) - p.rp-comment-content - span.rp-entry-user( - style="color: hsl({{ comment.user.hue }}, 70%, 40%);" - ) {{ comment.user.name }}:  - | {{ comment.content }} - .rp-entry-metadata - | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} - .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].submitting") + p.rp-comment-content + span(ng-if="!comment.editing") + span.rp-entry-user( + style="color: hsl({{ comment.user.hue }}, 70%, 40%);", + ) {{ comment.user.name }}:  + | {{ comment.content }} + textarea.rp-comment-input( + ng-if="comment.editing" + ng-model="comment.content" + ng-keypress="saveEditOnEnter($event, comment);" + ng-blur="saveEdit(comment)" + autofocus + stop-propagation="click" + ) + .rp-entry-metadata(ng-if="!comment.editing") + span(ng-if="!comment.deleting") {{ comment.timestamp | date : 'MMM d, y h:mm a' }} + span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") + |  •  + a(href, ng-click="startEditing(comment)") Edit + |  •  + a(href, ng-click="confirmDelete(comment)") Delete + span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") + | Are you sure? + | •  + a(href, ng-click="doDelete(comment)") Delete + |  •  + a(href, ng-click="cancelDelete(comment)") Cancel + + .rp-loading(ng-if="threads[entry.thread_id].submitting") i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( @@ -249,11 +277,11 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') ng-click="onUnresolve({ 'threadId': thread.threadId });" ) |  Re-open - //- a.rp-entry-button( - //- href - //- ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });" - //- ) - //- |  Delete + a.rp-entry-button( + href + ng-click="onDelete({ 'entryId': thread.entryId, 'docId': thread.docId, 'threadId': thread.threadId });" + ) + |  Delete script(type='text/ng-template', id='addCommentEntryTemplate') @@ -324,7 +352,7 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') ng-repeat="thread in resolvedComments | orderBy:'resolved_at':true" thread="thread" on-unresolve="handleUnresolve(threadId);" - on-delete="handleDelete(entryId, threadId);" + on-delete="handleDelete(entryId, docId, threadId);" permissions="permissions" ) .rp-loading(ng-if="!resolvedComments.length") diff --git a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee index 7a679bb6e3..e31b84f051 100644 --- a/services/web/public/coffee/ide/review-panel/RangesTracker.coffee +++ b/services/web/public/coffee/ide/review-panel/RangesTracker.coffee @@ -105,7 +105,6 @@ load = (EventEmitter) -> throw new Error("unknown op type") addComment: (op, metadata) -> - # TODO: Don't allow overlapping comments? @comments.push comment = { id: op.t or @newId() op: # Copy because we'll modify in place diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 723afdc648..5dc2cd3715 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -65,6 +65,14 @@ define [ ide.socket.on "reopen-thread", (thread_id) -> _onCommentReopened(thread_id) + + ide.socket.on "edit-message", (thread_id, message_id, content) -> + _onCommentEdited(thread_id, message_id, content) + $scope.$apply () -> + + ide.socket.on "delete-message", (thread_id, message_id) -> + _onCommentDeleted(thread_id, message_id) + $scope.$apply () -> rangesTrackers = {} @@ -342,7 +350,8 @@ define [ event_tracking.sendMB "rp-comment-reopen" _onCommentResolved = (thread_id, user) -> - thread = $scope.reviewPanel.commentThreads[thread_id] + thread = getThread(thread_id) + return if !thread? thread.resolved = true thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() @@ -350,23 +359,63 @@ define [ $scope.$broadcast "comment:resolve_thread", thread_id _onCommentReopened = (thread_id) -> - thread = $scope.reviewPanel.commentThreads[thread_id] + thread = getThread(thread_id) + return if !thread? delete thread.resolved delete thread.resolved_by_user delete thread.resolved_at delete $scope.reviewPanel.resolvedThreadIds[thread_id] $scope.$broadcast "comment:unresolve_thread", thread_id - _onCommentDeleted = (thread_id) -> - if $scope.reviewPanel.resolvedThreadIds[thread_id]? - delete $scope.reviewPanel.resolvedThreadIds[thread_id] - + _onThreadDeleted = (thread_id) -> + delete $scope.reviewPanel.resolvedThreadIds[thread_id] delete $scope.reviewPanel.commentThreads[thread_id] - $scope.deleteComment = (entry_id, thread_id) -> - _onCommentDeleted(thread_id) + _onCommentEdited = (thread_id, comment_id, content) -> + thread = getThread(thread_id) + return if !thread? + for message in thread.messages + if message.id == comment_id + message.content = content + updateEntries() + + _onCommentDeleted = (thread_id, comment_id) -> + thread = getThread(thread_id) + return if !thread? + thread.messages = thread.messages.filter (m) -> m.id != comment_id + updateEntries() + + $scope.deleteThread = (entry_id, doc_id, thread_id) -> + _onThreadDeleted(thread_id) + $http({ + method: "DELETE" + url: "/project/#{$scope.project_id}/doc/#{doc_id}/thread/#{thread_id}", + headers: { + 'X-CSRF-Token': window.csrfToken + } + }) $scope.$broadcast "comment:remove", entry_id event_tracking.sendMB "rp-comment-delete" + + $scope.saveEdit = (thread_id, comment) -> + $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages/#{comment.id}/edit", { + content: comment.content + _csrf: window.csrfToken + }) + $timeout () -> + $scope.$broadcast "review-panel:layout" + + $scope.deleteComment = (thread_id, comment) -> + _onCommentDeleted(thread_id, comment.id) + $http({ + method: "DELETE" + url: "/project/#{$scope.project_id}/thread/#{thread_id}/messages/#{comment.id}", + headers: { + 'X-CSRF-Token': window.csrfToken + } + }) + $timeout () -> + $scope.$broadcast "review-panel:layout" $scope.setSubView = (subView) -> $scope.reviewPanel.subView = subView diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index db54574d27..7c7811d553 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -11,6 +11,8 @@ define [ onResolve: "&" onReply: "&" onIndicatorClick: "&" + onSaveEdit: "&" + onDelete: "&" link: (scope, element, attrs) -> scope.state = animating: false @@ -26,4 +28,33 @@ define [ scope.state.animating = true element.find(".rp-entry").css("top", 0) $timeout((() -> scope.onResolve()), 350) - return true \ No newline at end of file + return true + + scope.startEditing = (comment) -> + comment.editing = true + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.saveEdit = (comment) -> + comment.editing = false + scope.onSaveEdit({comment:comment}) + + scope.confirmDelete = (comment) -> + comment.deleting = true + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.cancelDelete = (comment) -> + comment.deleting = false + setTimeout () -> + scope.$emit "review-panel:layout" + + scope.doDelete = (comment) -> + comment.deleting = false + scope.onDelete({comment: comment}) + + scope.saveEditOnEnter = (ev, comment) -> + if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey + ev.preventDefault() + scope.saveEdit(comment) + \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index fa556e2939..d500d24db8 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -31,8 +31,9 @@ define [ scope.onUnresolve({ threadId }) scope.resolvedComments = scope.resolvedComments.filter (c) -> c.threadId != threadId - scope.handleDelete = (entryId, threadId) -> - scope.onDelete({ entryId, threadId }) + scope.handleDelete = (entryId, docId, threadId) -> + scope.onDelete({ entryId, docId, threadId }) + scope.resolvedComments = scope.resolvedComments.filter (c) -> c.threadId != threadId getDocNameById = (docId) -> doc = _.find(scope.docs, (doc) -> doc.doc.id == docId) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 54142f2dcc..bba679eb17 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -351,6 +351,9 @@ font-weight: @rp-semibold-weight; font-style: normal; } + .rp-comment-actions { + a { color: @rp-type-blue; } + } .rp-content-highlight { color: @rp-type-darkgrey; @@ -414,12 +417,6 @@ margin: 0; color: @rp-type-darkgrey; } - - .rp-comment-metadata { - color: @rp-type-blue; - font-size: @rp-small-font-size; - margin: 0; - } .rp-comment-resolver { color: @rp-type-blue; @@ -452,6 +449,7 @@ border: solid 1px @rp-border-grey; resize: vertical; color: @rp-type-darkgrey; + margin-top: 3px; } .rp-icon-delete { diff --git a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee index cbc24bca1f..e55f0d04da 100644 --- a/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Comments/CommentsControllerTests.coffee @@ -23,6 +23,7 @@ describe "CommentsController", -> '../Authentication/AuthenticationController': @AuthenticationController '../User/UserInfoManager': @UserInfoManager = {} '../User/UserInfoController': @UserInfoController = {} + "../DocumentUpdater/DocumentUpdaterHandler": @DocumentUpdaterHandler = {} @req = {} @res = json: sinon.stub() @@ -134,6 +135,80 @@ describe "CommentsController", -> it "should return a success code", -> @res.send.calledWith(204).should.equal + describe "deleteThread", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + doc_id: @doc_id = "mock-doc-id" + thread_id: @thread_id = "mock-thread-id" + @DocumentUpdaterHandler.deleteThread = sinon.stub().yields() + @ChatApiHandler.deleteThread = sinon.stub().yields() + @CommentsController.deleteThread @req, @res + + it "should ask the doc udpater to delete the thread", -> + @DocumentUpdaterHandler.deleteThread + .calledWith(@project_id, @doc_id, @thread_id) + .should.equal true + + it "should ask the chat handler to delete the thread", -> + @ChatApiHandler.deleteThread + .calledWith(@project_id, @thread_id) + .should.equal true + + it "should tell the client the thread was deleted", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "delete-thread", @thread_id) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "editMessage", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + message_id: @message_id = "mock-thread-id" + @req.body = + content: @content = "mock-content" + @ChatApiHandler.editMessage = sinon.stub().yields() + @CommentsController.editMessage @req, @res + + it "should ask the chat handler to edit the comment", -> + @ChatApiHandler.editMessage + .calledWith(@project_id, @thread_id, @message_id, @content) + .should.equal true + + it "should tell the client the comment was edited", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "edit-message", @thread_id, @message_id, @content) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + + describe "deleteMessage", -> + beforeEach -> + @req.params = + project_id: @project_id = "mock-project-id" + thread_id: @thread_id = "mock-thread-id" + message_id: @message_id = "mock-thread-id" + @ChatApiHandler.deleteMessage = sinon.stub().yields() + @CommentsController.deleteMessage @req, @res + + it "should ask the chat handler to deleted the message", -> + @ChatApiHandler.deleteMessage + .calledWith(@project_id, @thread_id, @message_id) + .should.equal true + + it "should tell the client the message was deleted", -> + @EditorRealTimeController.emitToRoom + .calledWith(@project_id, "delete-message", @thread_id, @message_id) + .should.equal true + + it "should return a success code", -> + @res.send.calledWith(204).should.equal + describe "_injectUserInfoIntoThreads", -> beforeEach -> @users = { diff --git a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee index 3bde5e991a..681915abc6 100644 --- a/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/DocumentUpdater/DocumentUpdaterHandlerTests.coffee @@ -330,3 +330,38 @@ describe 'DocumentUpdaterHandler', -> @callback .calledWith(new Error("doc updater returned failure status code: 500")) .should.equal true + + describe "deleteThread", -> + beforeEach -> + @thread_id = "mock-thread-id-1" + @callback = sinon.stub() + + describe "successfully", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, null, {statusCode: 200}, @body) + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it 'should delete the thread in the document updater', -> + url = "#{@settings.apis.documentupdater.url}/project/#{@project_id}/doc/#{@doc_id}/comment/#{@thread_id}" + @request.del.calledWith(url).should.equal true + + it "should call the callback", -> + @callback.calledWith(null).should.equal true + + describe "when the document updater API returns an error", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, @error = new Error("something went wrong"), null, null) + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it "should return an error to the callback", -> + @callback.calledWith(@error).should.equal true + + describe "when the document updater returns a failure error code", -> + beforeEach -> + @request.del = sinon.stub().callsArgWith(1, null, { statusCode: 500 }, "") + @handler.deleteThread @project_id, @doc_id, @thread_id, @callback + + it "should return the callback with an error", -> + @callback + .calledWith(new Error("doc updater returned failure status code: 500")) + .should.equal true \ No newline at end of file From 798e09f0117115d2cf0eff259b8ee77d9e5db04c Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 16:56:08 +0100 Subject: [PATCH 147/204] Don't show 'no comments' when submitting --- services/web/app/views/project/editor/review-panel.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 98aeefee97..bb50dfc024 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -180,7 +180,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }" ) - .rp-loading(ng-if="!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0") + .rp-loading(ng-if="!threads[entry.thread_id].submitting && (!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0)") | No comments div .rp-comment( From 13d21b881f7a17a7c4b0a986545a2d271303e9f9 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 24 Jan 2017 16:03:05 +0000 Subject: [PATCH 148/204] use new annoncments feature for case study info --- .../AnnouncementsController.coffee | 6 ++-- .../Announcements/AnnouncementsHandler.coffee | 36 +++++++++++++++---- .../infrastructure/ExpressLocals.coffee | 18 ---------- services/web/app/views/project/list.jade | 1 - .../web/app/views/project/list/side-bar.jade | 9 +---- .../left-hand-menu-promo-controller.coffee | 3 -- .../AnnouncementsHandlerTests.coffee | 36 ++++++++++++++++--- 7 files changed, 65 insertions(+), 44 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index 65013eae46..aeda79b003 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -9,9 +9,9 @@ module.exports = if !settings?.apis?.analytics?.url? or !settings.apis.blog.url? return res.json [] - user_id = AuthenticationController.getLoggedInUserId(req) - logger.log {user_id}, "getting unread announcements" - AnnouncementsHandler.getUnreadAnnouncements user_id, (err, announcements)-> + user = AuthenticationController.getSessionUser(req) + logger.log {user_id:user?._id}, "getting unread announcements" + AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? logger.err {err, user_id}, "unable to get unread announcements" next(err) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index ce41e3b96c..1ea675fbf3 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -5,20 +5,44 @@ _ = require("lodash") logger = require("logger-sharelatex") settings = require("settings-sharelatex") -module.exports = - getUnreadAnnouncements : (user_id, callback = (err, announcements)->)-> + + +module.exports = AnnouncementsHandler = + + + + _domainSpecificAnnouncements : (email)-> + domainSpecific = _.filter settings?.domainAnnouncmentsToShow, (domainAnnouncment)-> + matches = _.filter domainAnnouncment.domains, (domain)-> + return email.indexOf(domain) != -1 + return matches.length > 0 + return domainSpecific or [] + + + getUnreadAnnouncements : (user, callback = (err, announcements)->)-> async.parallel { lastEvent: (cb)-> - AnalyticsManager.getLastOccurance user_id, "announcement-alert-dismissed", cb + AnalyticsManager.getLastOccurance user?._id, "announcement-alert-dismissed", cb announcements: (cb)-> BlogHandler.getLatestAnnouncements cb }, (err, results)-> if err? - logger.err err:err, user_id:user_id, "error getting unread announcements" + logger.err err:err, user_id:user?._id, "error getting unread announcements" return callback(err) - announcements = _.sortBy(results.announcements, "date").reverse() + domainSpecific = AnnouncementsHandler._domainSpecificAnnouncements(user?.email) + + domainSpecific = _.map domainSpecific, (domainAnnouncment)-> + try + domainAnnouncment.date = new Date(domainAnnouncment.date) + return domainAnnouncment + catch e + return callback(e) + + announcements = results.announcements + announcements = _.union announcements, domainSpecific + announcements = _.sortBy(announcements, "date").reverse() lastSeenBlogId = results?.lastEvent?.segmentation?.blogPostId @@ -35,6 +59,6 @@ module.exports = announcement.read = read return announcement - logger.log announcementsLength:announcements?.length, user_id:user_id, "returning announcements" + logger.log announcementsLength:announcements?.length, user_id:user?._id, "returning announcements" callback null, announcements diff --git a/services/web/app/coffee/infrastructure/ExpressLocals.coffee b/services/web/app/coffee/infrastructure/ExpressLocals.coffee index c0b4412d19..8124d13d93 100644 --- a/services/web/app/coffee/infrastructure/ExpressLocals.coffee +++ b/services/web/app/coffee/infrastructure/ExpressLocals.coffee @@ -190,24 +190,6 @@ module.exports = (app, webRouter, apiRouter)-> res.locals.getSessionUser = -> return AuthenticationController.getSessionUser(req) - res.locals.caseStudyToShow = -> - Settings.caseStudysToShow = [ - { - url:"http://www.sharelatex.com/i/university/indiana", - domains: ["sharelatex.com", 'chicargo.edu'], - title: "Indiana University Case Study", - logo:"/img/crests/logo/iu.png" - } - - ] - - caseStudy = _.filter Settings.caseStudysToShow, (caseStudy)-> - matches = _.filter caseStudy.domains, (domain)-> - email = AuthenticationController.getSessionUser(req)?.email - return email.indexOf(domain) != -1 - return matches.length > 0 - - return caseStudy?[0] or {} next() webRouter.use (req, res, next) -> diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 5d5729ad08..44fa99a5e3 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -11,7 +11,6 @@ block content projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, - caseStudy: !{JSON.stringify(caseStudyToShow())} }; window.algolia = { institutions: { diff --git a/services/web/app/views/project/list/side-bar.jade b/services/web/app/views/project/list/side-bar.jade index d3eaeaaba7..1fb0e2bda9 100644 --- a/services/web/app/views/project/list/side-bar.jade +++ b/services/web/app/views/project/list/side-bar.jade @@ -94,7 +94,7 @@ - if (showUserDetailsArea) span(ng-controller="LeftHandMenuPromoController", ng-cloak) - .row-spaced#userProfileInformation(ng-if="hasProjects && !showCaseStudy") + .row-spaced#userProfileInformation(ng-if="hasProjects") div(ng-controller="UserProfileController") hr(ng-show="percentComplete < 100") .text-centered.user-profile(ng-show="percentComplete < 100") @@ -108,13 +108,6 @@ ng-click="openUserProfileModal()" ) #{translate("complete")} - .row-spaced(ng-if="hasProjects && showCaseStudy", ng-cloak).text-centered - hr - a(href="{{caseStudy.url}}") - p.small read about: - p - img(src="{{caseStudy.logo}}") - a(href="{{caseStudy.url}}") {{caseStudy.title}} .row-spaced(ng-if="hasProjects && userHasNoSubscription", ng-cloak).text-centered hr diff --git a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee index d5d1a2b110..9fdb3e9ca2 100644 --- a/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee +++ b/services/web/public/coffee/main/project-list/left-hand-menu-promo-controller.coffee @@ -7,6 +7,3 @@ define [ $scope.hasProjects = window.data.projects.length > 0 $scope.userHasNoSubscription = window.userHasNoSubscription - $scope.showCaseStudy = window.data.caseStudy?.url? - $scope.caseStudy = window.data.caseStudy - diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index 49e8292f97..e1d9fcc7f6 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -10,7 +10,9 @@ expect = require("chai").expect describe 'AnnouncementsHandler', -> beforeEach -> - @user_id = "some_id" + @user = + _id:"some_id" + email: "someone@gmail.com" @AnalyticsManager = getLastOccurance: sinon.stub() @BlogHandler = @@ -44,7 +46,7 @@ describe 'AnnouncementsHandler', -> it "should mark all announcements as read is false", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].read.should.equal false announcements[1].read.should.equal false announcements[2].read.should.equal false @@ -53,7 +55,7 @@ describe 'AnnouncementsHandler', -> it "should should be sorted again to ensure correct order", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[3].should.equal @stubbedAnnouncements[2] announcements[2].should.equal @stubbedAnnouncements[3] announcements[1].should.equal @stubbedAnnouncements[1] @@ -62,7 +64,7 @@ describe 'AnnouncementsHandler', -> it "should return older ones marked as read as well", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2014/04/12/title-date-irrelivant"}}) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].id.should.equal @stubbedAnnouncements[0].id announcements[0].read.should.equal false @@ -79,7 +81,7 @@ describe 'AnnouncementsHandler', -> it "should return all of them marked as read", (done)-> @AnalyticsManager.getLastOccurance.callsArgWith(2, null, {segmentation:{blogPostId:"/2016/11/01/introducting-latex-code-checker"}}) - @handler.getUnreadAnnouncements @user_id, (err, announcements)=> + @handler.getUnreadAnnouncements @user, (err, announcements)=> announcements[0].read.should.equal true announcements[1].read.should.equal true announcements[2].read.should.equal true @@ -87,3 +89,27 @@ describe 'AnnouncementsHandler', -> done() + describe "with custom domain announcements", -> + beforeEach -> + @stubbedDomainSpecificAnn = [ + { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"iaaa" + date: new Date(1308369600000).toString() + } + ] + + @handler._domainSpecificAnnouncements = sinon.stub().returns(@stubbedDomainSpecificAnn) + + it "should insert the domain specific in the correct place", (done)-> + @AnalyticsManager.getLastOccurance.callsArgWith(2, null, []) + @handler.getUnreadAnnouncements @user, (err, announcements)=> + announcements[4].should.equal @stubbedAnnouncements[2] + announcements[3].should.equal @stubbedAnnouncements[3] + announcements[2].should.equal @stubbedAnnouncements[1] + announcements[1].should.equal @stubbedDomainSpecificAnn[0] + announcements[0].should.equal @stubbedAnnouncements[0] + done() From 59c40ea5cc7d79d398f55a99bace9248c18894d9 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 24 Jan 2017 17:03:32 +0100 Subject: [PATCH 149/204] Only show delete options when thread has more than one message! --- services/web/app/views/project/editor/review-panel.jade | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index bb50dfc024..b16230c24c 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -205,8 +205,9 @@ script(type='text/ng-template', id='commentEntryTemplate') span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") |  •  a(href, ng-click="startEditing(comment)") Edit - |  •  - a(href, ng-click="confirmDelete(comment)") Delete + span(ng-if="threads[entry.thread_id].messages.length > 1") + |  •  + a(href, ng-click="confirmDelete(comment)") Delete span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") | Are you sure? | •  From 69ab275404057696ebcabb8f605116f9d2c43266 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:14:21 +0000 Subject: [PATCH 150/204] Update list.jade --- services/web/app/views/project/list.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 44fa99a5e3..f707cd9411 100644 --- a/services/web/app/views/project/list.jade +++ b/services/web/app/views/project/list.jade @@ -10,7 +10,7 @@ block content window.data = { projects: !{JSON.stringify(projects).replace(/\//g, '\\/')}, tags: !{JSON.stringify(tags).replace(/\//g, '\\/')}, - notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')}, + notifications: !{JSON.stringify(notifications).replace(/\//g, '\\/')} }; window.algolia = { institutions: { @@ -73,4 +73,4 @@ block content .col-md-offset-2.col-md-8.col-md-offset-2.col-xs-8 include ./list/empty-project-list - include ./list/modals \ No newline at end of file + include ./list/modals From 1280a2313d177a563422c408e6613b2a5567a73a Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:34:53 +0000 Subject: [PATCH 151/204] add check for id to exist in domain announcments null check user at start of getUnreadAnnouncements fix spelling mistake --- .../Announcements/AnnouncementsHandler.coffee | 15 +++--- .../AnnouncementsHandlerTests.coffee | 46 ++++++++++++++++++- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index 1ea675fbf3..161815dc6d 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -1,9 +1,9 @@ AnalyticsManager = require("../Analytics/AnalyticsManager") BlogHandler = require("../Blog/BlogHandler") -async = require("async") -_ = require("lodash") logger = require("logger-sharelatex") settings = require("settings-sharelatex") +async = require("async") +_ = require("lodash") @@ -13,22 +13,25 @@ module.exports = AnnouncementsHandler = _domainSpecificAnnouncements : (email)-> - domainSpecific = _.filter settings?.domainAnnouncmentsToShow, (domainAnnouncment)-> + domainSpecific = _.filter settings?.domainAnnouncementsToShow, (domainAnnouncment)-> matches = _.filter domainAnnouncment.domains, (domain)-> return email.indexOf(domain) != -1 - return matches.length > 0 + return matches.length > 0 and domainAnnouncment.id? return domainSpecific or [] getUnreadAnnouncements : (user, callback = (err, announcements)->)-> + if !user? and !user._id? + return callback("user not supplied") + async.parallel { lastEvent: (cb)-> - AnalyticsManager.getLastOccurance user?._id, "announcement-alert-dismissed", cb + AnalyticsManager.getLastOccurance user._id, "announcement-alert-dismissed", cb announcements: (cb)-> BlogHandler.getLatestAnnouncements cb }, (err, results)-> if err? - logger.err err:err, user_id:user?._id, "error getting unread announcements" + logger.err err:err, user_id:user._id, "error getting unread announcements" return callback(err) domainSpecific = AnnouncementsHandler._domainSpecificAnnouncements(user?.email) diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index e1d9fcc7f6..bd5070644e 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -17,13 +17,14 @@ describe 'AnnouncementsHandler', -> getLastOccurance: sinon.stub() @BlogHandler = getLatestAnnouncements:sinon.stub() + @settings = {} @handler = SandboxedModule.require modulePath, requires: "../Analytics/AnalyticsManager":@AnalyticsManager "../Blog/BlogHandler":@BlogHandler + "settings-sharelatex":@settings "logger-sharelatex": log:-> - describe "getUnreadAnnouncements", -> beforeEach -> @stubbedAnnouncements = [ @@ -113,3 +114,46 @@ describe 'AnnouncementsHandler', -> announcements[1].should.equal @stubbedDomainSpecificAnn[0] announcements[0].should.equal @stubbedAnnouncements[0] done() + + describe "_domainSpecificAnnouncements", -> + beforeEach -> + @settings.domainAnnouncementsToShow = [ + { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"id1" + date: new Date(1308369600000).toString() + }, { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + date: new Date(1308369600000).toString() + }, { + domains: ["gmail.com", 'yahoo.edu'] + title: "some message" + excerpt: "read this" + url:"http://www.sharelatex.com/i/somewhere" + id:"id3" + date: new Date(1308369600000).toString() + } + ] + + it "should filter announcments which don't have an id", (done) -> + result = @handler._domainSpecificAnnouncements "someone@gmail.com" + result.length.should.equal 2 + result[0].id.should.equal "id1" + result[1].id.should.equal "id3" + done() + + + it "should match on domain", (done) -> + @settings.domainAnnouncementsToShow[2].domains = ["yahoo.com"] + result = @handler._domainSpecificAnnouncements "someone@gmail.com" + result.length.should.equal 1 + result[0].id.should.equal "id1" + done() + + From cc717f035761e62d93a1fc1137c5ee6acea08a13 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 09:43:42 +0000 Subject: [PATCH 152/204] domainAnnouncementsToShow -> domainAnnouncements --- .../Features/Announcements/AnnouncementsHandler.coffee | 7 +------ .../coffee/Announcement/AnnouncementsHandlerTests.coffee | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee index 161815dc6d..9934a8bf69 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsHandler.coffee @@ -5,15 +5,10 @@ settings = require("settings-sharelatex") async = require("async") _ = require("lodash") - - - module.exports = AnnouncementsHandler = - - _domainSpecificAnnouncements : (email)-> - domainSpecific = _.filter settings?.domainAnnouncementsToShow, (domainAnnouncment)-> + domainSpecific = _.filter settings?.domainAnnouncements, (domainAnnouncment)-> matches = _.filter domainAnnouncment.domains, (domain)-> return email.indexOf(domain) != -1 return matches.length > 0 and domainAnnouncment.id? diff --git a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee index bd5070644e..daa0da0531 100644 --- a/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Announcement/AnnouncementsHandlerTests.coffee @@ -117,7 +117,7 @@ describe 'AnnouncementsHandler', -> describe "_domainSpecificAnnouncements", -> beforeEach -> - @settings.domainAnnouncementsToShow = [ + @settings.domainAnnouncements = [ { domains: ["gmail.com", 'yahoo.edu'] title: "some message" @@ -150,7 +150,7 @@ describe 'AnnouncementsHandler', -> it "should match on domain", (done) -> - @settings.domainAnnouncementsToShow[2].domains = ["yahoo.com"] + @settings.domainAnnouncements[2].domains = ["yahoo.com"] result = @handler._domainSpecificAnnouncements "someone@gmail.com" result.length.should.equal 1 result[0].id.should.equal "id1" From f7b4e00466602f44832e60ae8b8f0884c88d636a Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 25 Jan 2017 10:30:53 +0000 Subject: [PATCH 153/204] Restore npm-shrinkwrap.json --- services/web/npm-shrinkwrap.json | 4311 ++++++++++++++++++++++++++++++ 1 file changed, 4311 insertions(+) create mode 100644 services/web/npm-shrinkwrap.json diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json new file mode 100644 index 0000000000..04fdfc0142 --- /dev/null +++ b/services/web/npm-shrinkwrap.json @@ -0,0 +1,4311 @@ +{ + "name": "web-sharelatex", + "version": "0.1.4", + "dependencies": { + "archiver": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "dependencies": { + "buffer-crc32": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + }, + "readable-stream": { + "version": "1.0.34", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar-stream": { + "version": "0.3.3", + "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "dependencies": { + "bl": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + }, + "end-of-stream": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "dependencies": { + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + } + } + } + } + }, + "zip-stream": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "dependencies": { + "crc32-stream": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + }, + "debug": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "dependencies": { + "ms": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + } + } + }, + "deflate-crc32-stream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + } + } + }, + "lazystream": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + }, + "file-utils": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "dependencies": { + "lodash": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + }, + "iconv-lite": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + }, + "glob": { + "version": "3.2.11", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + }, + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "findup-sync": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "dependencies": { + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "isbinaryfile": { + "version": "0.1.9", + "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "async": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" + }, + "base64-stream": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "dependencies": { + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "basic-auth-connect": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + }, + "bcrypt": { + "version": "0.8.3", + "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "1.8.4", + "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + } + } + }, + "body-parser": { + "version": "1.15.2", + "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "dependencies": { + "bytes": { + "version": "2.4.0", + "from": "bytes@2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + }, + "content-type": { + "version": "1.0.2", + "from": "content-type@~1.0.1", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "http-errors": { + "version": "1.5.0", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "setprototypeof": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + }, + "statuses": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + } + } + }, + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@~2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "qs": { + "version": "6.2.0", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + }, + "raw-body": { + "version": "2.1.7", + "from": "raw-body@~2.1.5", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "type-is": { + "version": "1.6.13", + "from": "type-is@~1.6.10", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + } + } + } + } + }, + "bufferedstream": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + }, + "connect-redis": { + "version": "3.1.0", + "from": "connect-redis@3.1.0", + "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "dependencies": { + "debug": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.2", + "from": "ms@0.7.2" + } + } + }, + "redis": { + "version": "2.6.3", + "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "dependencies": { + "double-ended-queue": { + "version": "2.1.0-0", + "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + }, + "redis-commands": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + }, + "redis-parser": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + } + } + } + } + }, + "contentful": { + "version": "3.5.0", + "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "dependencies": { + "babel-runtime": { + "version": "6.11.6", + "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "dependencies": { + "core-js": { + "version": "2.4.1", + "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" + }, + "regenerator-runtime": { + "version": "0.9.5", + "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + } + } + }, + "contentful-sdk-core": { + "version": "2.3.4", + "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "dependencies": { + "follow-redirects": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "stream-consume": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + } + } + }, + "qs": { + "version": "6.2.1", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + } + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + } + } + }, + "cookie": { + "version": "0.2.4", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + }, + "cookie-parser": { + "version": "1.3.5", + "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "dependencies": { + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + } + } + }, + "csurf": { + "version": "1.9.0", + "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "dependencies": { + "cookie": { + "version": "0.3.1", + "from": "cookie@0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "csrf": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "dependencies": { + "base64-url": { + "version": "1.2.2", + "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + }, + "rndm": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + }, + "tsscmp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + }, + "uid-safe": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "dependencies": { + "random-bytes": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + } + } + } + } + }, + "http-errors": { + "version": "1.5.0", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "setprototypeof": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + }, + "statuses": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + } + } + } + } + }, + "dateformat": { + "version": "1.0.4-1.2.3", + "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + }, + "express": { + "version": "4.13.0", + "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "dependencies": { + "accepts": { + "version": "1.2.13", + "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "dependencies": { + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + }, + "negotiator": { + "version": "0.5.3", + "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + } + } + }, + "array-flatten": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + }, + "content-disposition": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + }, + "content-type": { + "version": "1.0.2", + "from": "content-type@~1.0.1", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + }, + "cookie": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@~2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "escape-html": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + }, + "etag": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + }, + "finalhandler": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "fresh": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + }, + "merge-descriptors": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + }, + "methods": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@~2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "parseurl": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + }, + "path-to-regexp": { + "version": "0.1.6", + "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + }, + "proxy-addr": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "dependencies": { + "forwarded": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + }, + "ipaddr.js": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + } + } + }, + "qs": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + }, + "range-parser": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + }, + "send": { + "version": "0.13.0", + "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "dependencies": { + "destroy": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, + "serve-static": { + "version": "1.10.3", + "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "dependencies": { + "escape-html": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + }, + "send": { + "version": "0.13.2", + "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "dependencies": { + "depd": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "destroy": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + } + } + }, + "type-is": { + "version": "1.6.13", + "from": "type-is@~1.6.10", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + } + } + }, + "vary": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + }, + "utils-merge": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + } + } + }, + "express-session": { + "version": "1.14.2", + "from": "express-session@1.14.2", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "dependencies": { + "cookie": { + "version": "0.3.1", + "from": "cookie@0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "cookie-signature@1.0.6" + }, + "crc": { + "version": "3.4.1", + "from": "crc@3.4.1", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.1.0", + "from": "depd@1.1.0" + }, + "on-headers": { + "version": "1.0.1", + "from": "on-headers@1.0.1" + }, + "parseurl": { + "version": "1.3.1", + "from": "parseurl@1.3.1" + }, + "uid-safe": { + "version": "2.1.3", + "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "dependencies": { + "base64-url": { + "version": "1.3.3", + "from": "base64-url@1.3.3" + }, + "random-bytes": { + "version": "1.0.0", + "from": "random-bytes@1.0.0" + } + } + }, + "utils-merge": { + "version": "1.0.0", + "from": "utils-merge@1.0.0" + } + } + }, + "grunt": { + "version": "0.4.5", + "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "dependencies": { + "async": { + "version": "0.1.22", + "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + }, + "coffee-script": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + }, + "colors": { + "version": "0.6.2", + "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + }, + "eventemitter2": { + "version": "0.4.14", + "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + }, + "findup-sync": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "dependencies": { + "glob": { + "version": "3.2.11", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "glob": { + "version": "3.1.21", + "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "dependencies": { + "graceful-fs": { + "version": "1.2.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + }, + "inherits": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + } + } + }, + "hooker": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + }, + "iconv-lite": { + "version": "0.2.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "nopt": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + } + } + }, + "rimraf": { + "version": "2.2.8", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "lodash": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + }, + "underscore.string": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + }, + "which": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + }, + "js-yaml": { + "version": "2.0.5", + "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "dependencies": { + "argparse": { + "version": "0.1.16", + "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "dependencies": { + "underscore": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + }, + "underscore.string": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + } + } + }, + "esprima": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + } + } + }, + "exit": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "getobject": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + }, + "grunt-legacy-util": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + }, + "grunt-legacy-log": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "dependencies": { + "grunt-legacy-log-utils": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + }, + "underscore.string": { + "version": "2.3.3", + "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + } + } + } + } + }, + "heapdump": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + }, + "http-proxy": { + "version": "1.14.0", + "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "dependencies": { + "eventemitter3": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + }, + "requires-port": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + } + } + }, + "ioredis": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "dependencies": { + "bluebird": { + "version": "3.4.6", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + }, + "cluster-key-slot": { + "version": "1.0.8", + "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + }, + "debug": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.2", + "from": "ms@0.7.2" + } + } + }, + "double-ended-queue": { + "version": "2.1.0-0", + "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", + "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + }, + "flexbuffer": { + "version": "0.0.6", + "from": "flexbuffer@0.0.6" + }, + "redis-commands": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + }, + "redis-parser": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + } + } + }, + "jade": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "dependencies": { + "commander": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "transformers": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "dependencies": { + "promise": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "dependencies": { + "is-promise": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + } + } + }, + "css": { + "version": "1.0.8", + "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "dependencies": { + "css-parse": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + }, + "css-stringify": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + } + } + }, + "uglify-js": { + "version": "2.2.5", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "dependencies": { + "source-map": { + "version": "0.1.43", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "optimist": { + "version": "0.3.7", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + } + } + } + } + } + }, + "character-parser": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + }, + "monocle": { + "version": "1.1.51", + "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "dependencies": { + "readdirp": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "dependencies": { + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + } + } + } + } + }, + "with": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "dependencies": { + "uglify-js": { + "version": "2.4.24", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + }, + "window-size": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + }, + "wordwrap": { + "version": "0.0.2", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } + } + } + } + } + }, + "constantinople": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "dependencies": { + "uglify-js": { + "version": "2.4.24", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + }, + "window-size": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + }, + "wordwrap": { + "version": "0.0.2", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + } + } + } + } + } + } + } + }, + "ldapjs": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "0.1.5", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "bunyan": { + "version": "1.5.1", + "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "dependencies": { + "mv": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ncp": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + }, + "rimraf": { + "version": "2.4.5", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "dependencies": { + "glob": { + "version": "6.0.4", + "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "dependencies": { + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + }, + "safe-json-stringify": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + } + } + }, + "dashdash": { + "version": "1.10.1", + "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + }, + "backoff": { + "version": "2.4.1", + "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "dependencies": { + "precond": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + } + } + }, + "ldap-filter": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + }, + "once": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "vasync": { + "version": "1.6.3", + "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + }, + "verror": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + } + } + }, + "dtrace-provider": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + } + } + } + } + }, + "lodash": { + "version": "4.14.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + }, + "logger-sharelatex": { + "version": "1.3.1", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "dependencies": { + "bunyan": { + "version": "1.5.1", + "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "dependencies": { + "dtrace-provider": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + } + } + }, + "mv": { + "version": "2.1.1", + "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ncp": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + }, + "rimraf": { + "version": "2.4.5", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "dependencies": { + "glob": { + "version": "6.0.4", + "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "dependencies": { + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + }, + "safe-json-stringify": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + } + } + }, + "coffee-script": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + }, + "raven": { + "version": "0.8.1", + "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "dependencies": { + "cookie": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + }, + "lsmod": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + }, + "stack-trace": { + "version": "0.0.7", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + } + } + } + } + }, + "lynx": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "dependencies": { + "mersenne": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + }, + "statsd-parser": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + } + } + }, + "marked": { + "version": "0.3.6", + "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + }, + "method-override": { + "version": "2.3.6", + "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "debug@2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "methods": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + }, + "parseurl": { + "version": "1.3.1", + "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + }, + "vary": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + } + } + }, + "metrics-sharelatex": { + "version": "1.3.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "dependencies": { + "coffee-script": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + } + } + }, + "mimelib": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "dependencies": { + "encoding": { + "version": "0.1.12", + "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + } + } + }, + "addressparser": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + } + } + }, + "mocha": { + "version": "1.17.1", + "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "dependencies": { + "commander": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + }, + "growl": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + }, + "jade": { + "version": "0.26.3", + "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "dependencies": { + "commander": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + }, + "mkdirp": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + } + } + }, + "diff": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "glob": { + "version": "3.2.3", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "graceful-fs": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mongojs": { + "version": "0.18.2", + "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "dependencies": { + "thunky": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + }, + "readable-stream": { + "version": "1.1.14", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "mongodb": { + "version": "1.4.32", + "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "dependencies": { + "bson": { + "version": "0.2.22", + "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "dependencies": { + "nan": { + "version": "1.8.4", + "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + } + } + }, + "kerberos": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "dependencies": { + "nan": { + "version": "1.6.2", + "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" + } + } + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + } + } + }, + "mongoose": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "dependencies": { + "async": { + "version": "0.9.0", + "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + }, + "bson": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "dependencies": { + "bson-ext": { + "version": "0.1.13", + "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "2.0.9", + "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + } + } + } + } + }, + "hooks-fixed": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + }, + "kareem": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + }, + "mongodb": { + "version": "2.0.34", + "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "dependencies": { + "mongodb-core": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "dependencies": { + "bson": { + "version": "0.4.23", + "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + }, + "kerberos": { + "version": "0.0.21", + "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "dependencies": { + "nan": { + "version": "2.3.5", + "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + } + } + } + } + }, + "readable-stream": { + "version": "1.0.31", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mpath": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + }, + "mpromise": { + "version": "0.5.4", + "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", + "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + }, + "mquery": { + "version": "1.6.1", + "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "dependencies": { + "bluebird": { + "version": "2.9.26", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + } + } + }, + "ms": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + }, + "muri": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + }, + "regexp-clone": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + }, + "sliced": { + "version": "0.0.5", + "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + } + } + }, + "multer": { + "version": "0.1.8", + "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "dependencies": { + "busboy": { + "version": "0.2.13", + "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "dependencies": { + "dicer": { + "version": "0.2.5", + "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "dependencies": { + "streamsearch": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + } + } + }, + "readable-stream": { + "version": "1.1.14", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "qs": { + "version": "1.2.2", + "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + }, + "type-is": { + "version": "1.5.7", + "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.0.14", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + } + } + } + } + }, + "node-uuid": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" + }, + "nodemailer": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "dependencies": { + "libmime": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + }, + "libbase64": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + }, + "libqp": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + } + } + }, + "mailcomposer": { + "version": "3.3.2", + "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "dependencies": { + "buildmail": { + "version": "3.3.2", + "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "dependencies": { + "addressparser": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + }, + "libbase64": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + }, + "libqp": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + }, + "nodemailer-fetch": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + } + } + } + } + }, + "nodemailer-direct-transport": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "dependencies": { + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + }, + "nodemailer-shared": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "dependencies": { + "nodemailer-fetch": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + } + } + }, + "nodemailer-smtp-pool": { + "version": "2.1.0", + "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "dependencies": { + "clone": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "nodemailer-wellknown": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + }, + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + }, + "nodemailer-smtp-transport": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "dependencies": { + "clone": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "nodemailer-wellknown": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + }, + "smtp-connection": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + } + } + } + } + }, + "nodemailer-sendgrid-transport": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "dependencies": { + "sendgrid": { + "version": "1.9.2", + "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "dependencies": { + "mime": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "lodash": { + "version": "3.10.1", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "smtpapi": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + } + } + } + } + }, + "nodemailer-ses-transport": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "dependencies": { + "aws-sdk": { + "version": "2.4.14", + "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "dependencies": { + "sax": { + "version": "1.1.5", + "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" + }, + "xml2js": { + "version": "0.4.15", + "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" + }, + "xmlbuilder": { + "version": "2.6.2", + "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "dependencies": { + "lodash": { + "version": "3.5.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + } + } + }, + "jmespath": { + "version": "0.15.0", + "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + } + } + } + } + }, + "optimist": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + }, + "passport": { + "version": "0.3.2", + "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + }, + "pause": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + } + } + }, + "passport-ldapauth": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + }, + "ldapauth-fork": { + "version": "2.5.3", + "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "dependencies": { + "bcryptjs": { + "version": "2.3.0", + "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" + }, + "lru-cache": { + "version": "3.2.0", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + } + } + } + } + } + } + }, + "passport-local": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + } + } + }, + "passport-saml": { + "version": "0.15.0", + "from": "passport-saml@", + "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "dependencies": { + "passport-strategy": { + "version": "1.0.0", + "from": "passport-strategy@*" + }, + "q": { + "version": "1.1.2", + "from": "q@1.1.x" + }, + "xml2js": { + "version": "0.4.17", + "from": "xml2js@0.4.x", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "dependencies": { + "sax": { + "version": "1.2.1", + "from": "sax@>=0.6.0" + }, + "xmlbuilder": { + "version": "4.2.1", + "from": "xmlbuilder@^4.1.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + } + } + }, + "xml-crypto": { + "version": "0.8.4", + "from": "xml-crypto@0.8.x", + "dependencies": { + "xmldom": { + "version": "0.1.19", + "from": "xmldom@=0.1.19" + }, + "xpath.js": { + "version": "1.0.6", + "from": "xpath.js@>=0.0.3" + } + } + }, + "xmldom": { + "version": "0.1.22", + "from": "xmldom@0.1.x" + }, + "xmlbuilder": { + "version": "2.5.2", + "from": "xmlbuilder@2.5.x", + "dependencies": { + "lodash": { + "version": "3.2.0", + "from": "lodash@~3.2.0" + } + } + }, + "xml-encryption": { + "version": "0.7.4", + "from": "xml-encryption@~0.7", + "dependencies": { + "ejs": { + "version": "0.8.8", + "from": "ejs@~0.8.3" + }, + "async": { + "version": "0.2.10", + "from": "async@~0.2.7" + }, + "xpath": { + "version": "0.0.5", + "from": "xpath@0.0.5", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + }, + "node-forge": { + "version": "0.2.24", + "from": "node-forge@0.2.24", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + } + } + } + } + }, + "pg": { + "version": "6.0.3", + "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", + "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", + "dependencies": { + "buffer-writer": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" + }, + "packet-reader": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" + }, + "pg-connection-string": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" + }, + "pg-pool": { + "version": "1.4.0", + "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", + "dependencies": { + "generic-pool": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + }, + "object-assign": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + } + } + }, + "pg-types": { + "version": "1.11.0", + "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", + "dependencies": { + "ap": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" + }, + "postgres-array": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" + }, + "postgres-bytea": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" + }, + "postgres-date": { + "version": "1.0.3", + "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" + }, + "postgres-interval": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", + "dependencies": { + "xtend": { + "version": "4.0.1", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + } + } + } + }, + "pgpass": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", + "dependencies": { + "split": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", + "dependencies": { + "through": { + "version": "2.3.8", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + } + } + } + }, + "semver": { + "version": "4.3.2", + "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" + } + } + }, + "pg-hstore": { + "version": "2.3.2", + "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", + "dependencies": { + "underscore": { + "version": "1.8.3", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" + } + } + }, + "redback": { + "version": "0.4.0", + "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" + }, + "redis": { + "version": "0.10.1", + "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + }, + "redis-sharelatex": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "dependencies": { + "chai": { + "version": "1.9.1", + "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "dependencies": { + "assertion-error": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + }, + "deep-eql": { + "version": "0.1.3", + "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "dependencies": { + "type-detect": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + } + } + } + } + }, + "coffee-script": { + "version": "1.8.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + } + } + }, + "grunt-contrib-coffee": { + "version": "0.11.1", + "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "dependencies": { + "coffee-script": { + "version": "1.7.1", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + } + } + }, + "chalk": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "has-ansi": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + } + }, + "strip-ansi": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + } + }, + "supports-color": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + } + } + }, + "lodash": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + } + } + }, + "grunt-mocha-test": { + "version": "0.12.0", + "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "dependencies": { + "hooker": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + }, + "fs-extra": { + "version": "0.11.1", + "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "dependencies": { + "ncp": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + }, + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "jsonfile": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + }, + "rimraf": { + "version": "2.5.4", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "dependencies": { + "glob": { + "version": "7.0.5", + "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + } + } + } + } + }, + "mocha": { + "version": "1.21.4", + "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "dependencies": { + "commander": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + }, + "growl": { + "version": "1.8.1", + "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + }, + "jade": { + "version": "0.26.3", + "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "dependencies": { + "commander": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + }, + "mkdirp": { + "version": "0.3.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + } + } + }, + "diff": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "mkdirp": { + "version": "0.3.5", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + }, + "glob": { + "version": "3.2.3", + "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "graceful-fs": { + "version": "2.0.3", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "redis": { + "version": "0.12.1", + "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + }, + "redis-sentinel": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "dependencies": { + "redis": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + }, + "q": { + "version": "0.9.2", + "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", + "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + } + } + }, + "sandboxed-module": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "dependencies": { + "require-like": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + } + } + }, + "sinon": { + "version": "1.10.3", + "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "dependencies": { + "formatio": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "dependencies": { + "samsam": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + } + } + }, + "util": { + "version": "0.10.3", + "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "underscore": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + } + } + }, + "request": { + "version": "2.74.0", + "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "dependencies": { + "aws-sign2": { + "version": "0.6.0", + "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + }, + "aws4": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" + }, + "bl": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "extend": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.0-rc4", + "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "dependencies": { + "async": { + "version": "1.5.2", + "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + } + } + }, + "har-validator": { + "version": "2.0.6", + "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "dependencies": { + "chalk": { + "version": "1.1.3", + "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.9.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.13.1", + "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "is-property": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "xtend": { + "version": "4.0.1", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + } + }, + "pinkie-promise": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "dependencies": { + "pinkie": { + "version": "2.0.4", + "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + } + } + } + }, + "hawk": { + "version": "3.1.3", + "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "dependencies": { + "hoek": { + "version": "2.16.3", + "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "boom": { + "version": "2.10.1", + "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "http-signature": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + }, + "jsprim": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "dependencies": { + "extsprintf": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + }, + "json-schema": { + "version": "0.2.2", + "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + }, + "verror": { + "version": "1.3.6", + "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + } + } + }, + "sshpk": { + "version": "1.9.2", + "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "dependencies": { + "asn1": { + "version": "0.2.3", + "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + }, + "assert-plus": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dashdash": { + "version": "1.14.0", + "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + }, + "getpass": { + "version": "0.1.6", + "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + }, + "jsbn": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + }, + "tweetnacl": { + "version": "0.13.3", + "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + }, + "jodid25519": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + }, + "ecc-jsbn": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + } + } + } + } + }, + "is-typedarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + }, + "isstream": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.11", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "dependencies": { + "mime-db": { + "version": "1.23.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.7", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + }, + "oauth-sign": { + "version": "0.8.2", + "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + }, + "qs": { + "version": "6.2.1", + "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + }, + "stringstream": { + "version": "0.0.5", + "from": "stringstream@~0.0.4", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + }, + "tough-cookie": { + "version": "2.3.1", + "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + }, + "tunnel-agent": { + "version": "0.4.3", + "from": "tunnel-agent@~0.4.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + } + } + }, + "requests": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "dependencies": { + "axo": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + }, + "eventemitter3": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + }, + "extendible": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + }, + "hang": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + }, + "loads": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "dependencies": { + "failure": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + }, + "one-time": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + }, + "xhr-response": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + }, + "xhr-status": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + } + } + }, + "xhr-send": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + } + } + }, + "rimraf": { + "version": "2.2.6", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" + }, + "sanitizer": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + }, + "sequelize": { + "version": "3.23.6", + "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "dependencies": { + "bluebird": { + "version": "3.4.1", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + }, + "depd": { + "version": "1.1.0", + "from": "depd@~1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "dottie": { + "version": "1.1.1", + "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + }, + "generic-pool": { + "version": "2.4.2", + "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + }, + "inflection": { + "version": "1.10.0", + "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + }, + "lodash": { + "version": "4.12.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" + }, + "moment": { + "version": "2.14.1", + "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + }, + "moment-timezone": { + "version": "0.5.5", + "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + }, + "node-uuid": { + "version": "1.4.7", + "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + }, + "retry-as-promised": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + } + } + }, + "semver": { + "version": "5.3.0", + "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + }, + "shimmer": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + }, + "terraformer-wkt-parser": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "dependencies": { + "terraformer": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + } + } + }, + "toposort-class": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + }, + "validator": { + "version": "5.5.0", + "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", + "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + }, + "wkx": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + } + } + }, + "settings-sharelatex": { + "version": "1.0.0", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "dependencies": { + "coffee-script": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + } + } + }, + "sixpack-client": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + }, + "temp": { + "version": "0.8.3", + "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "dependencies": { + "os-tmpdir": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + } + } + }, + "underscore": { + "version": "1.6.0", + "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + }, + "v8-profiler": { + "version": "5.6.5", + "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "dependencies": { + "nan": { + "version": "2.4.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + }, + "node-pre-gyp": { + "version": "0.6.29", + "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "nopt": { + "version": "3.0.6", + "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.9", + "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + } + } + }, + "npmlog": { + "version": "3.1.2", + "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "dependencies": { + "are-we-there-yet": { + "version": "1.1.2", + "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "dependencies": { + "delegates": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + }, + "gauge": { + "version": "2.6.0", + "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "dependencies": { + "aproba": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + }, + "has-color": { + "version": "0.1.7", + "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + }, + "has-unicode": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + }, + "object-assign": { + "version": "4.1.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + }, + "signal-exit": { + "version": "3.0.0", + "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + }, + "string-width": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "dependencies": { + "code-point-at": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "wide-align": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + } + } + }, + "set-blocking": { + "version": "2.0.0", + "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + } + } + }, + "rc": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "dependencies": { + "deep-extend": { + "version": "0.4.1", + "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + }, + "ini": { + "version": "1.3.4", + "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + }, + "minimist": { + "version": "1.2.0", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + }, + "strip-json-comments": { + "version": "1.0.4", + "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + } + } + }, + "rimraf": { + "version": "2.5.4", + "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "dependencies": { + "glob": { + "version": "7.0.5", + "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "dependencies": { + "fs.realpath": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + }, + "inflight": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } + }, + "semver": { + "version": "5.2.0", + "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + }, + "tar": { + "version": "2.2.1", + "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "dependencies": { + "block-stream": { + "version": "0.0.9", + "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + }, + "fstream": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.5", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar-pack": { + "version": "3.1.4", + "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "dependencies": { + "debug": { + "version": "2.2.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "fstream": { + "version": "1.0.10", + "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.5", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "fstream-ignore": { + "version": "1.0.5", + "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "3.0.3", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.6", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + }, + "concat-map": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + } + } + }, + "once": { + "version": "1.3.3", + "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + } + }, + "readable-stream": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "dependencies": { + "buffer-shims": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + }, + "core-util-is": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + } + }, + "uid-number": { + "version": "0.0.6", + "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + } + } + } + } + } + } + }, + "xml2js": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "dependencies": { + "sax": { + "version": "1.2.1", + "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + } + } + } + } +} From f11926d0a9db66282035e4dd1a60869ab2557b6b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 25 Jan 2017 10:31:02 +0000 Subject: [PATCH 154/204] Make sure layout math is done on load. --- .../public/coffee/main/project-list/project-list.coffee | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/services/web/public/coffee/main/project-list/project-list.coffee b/services/web/public/coffee/main/project-list/project-list.coffee index 431c24ada7..161598d32d 100644 --- a/services/web/public/coffee/main/project-list/project-list.coffee +++ b/services/web/public/coffee/main/project-list/project-list.coffee @@ -14,10 +14,9 @@ define [ $scope.searchText = value : "" - if $scope.projects.length == 0 - $timeout () -> - recalculateProjectListHeight() - , 10 + $timeout () -> + recalculateProjectListHeight() + , 10 recalculateProjectListHeight = () -> topOffset = $(".project-list-card")?.offset()?.top From 2a00b9c7a2469b299fc3dd4ffd8a795b6e313118 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 10:33:08 +0000 Subject: [PATCH 155/204] use user._id for error log --- .../Features/Announcements/AnnouncementsController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index aeda79b003..a0f92c73bd 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -13,7 +13,7 @@ module.exports = logger.log {user_id:user?._id}, "getting unread announcements" AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? - logger.err {err, user_id}, "unable to get unread announcements" + logger.err {err, user._id}, "unable to get unread announcements" next(err) else res.json announcements From 3eb13ccdd11009560328f629640a9c73b1e3eceb Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 25 Jan 2017 10:38:39 +0000 Subject: [PATCH 156/204] fix stupid mistake --- .../Features/Announcements/AnnouncementsController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee index a0f92c73bd..9c3a9f4deb 100644 --- a/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee +++ b/services/web/app/coffee/Features/Announcements/AnnouncementsController.coffee @@ -13,7 +13,7 @@ module.exports = logger.log {user_id:user?._id}, "getting unread announcements" AnnouncementsHandler.getUnreadAnnouncements user, (err, announcements)-> if err? - logger.err {err, user._id}, "unable to get unread announcements" + logger.err {err:err, user_id:user._id}, "unable to get unread announcements" next(err) else res.json announcements From 60500bc4eaf05716be11bf6ed63275ad42cf3812 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 25 Jan 2017 10:52:08 +0000 Subject: [PATCH 157/204] update shrinkwrap --- services/web/npm-shrinkwrap.json | 2813 +++++++++++------------------- 1 file changed, 1037 insertions(+), 1776 deletions(-) diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 04fdfc0142..03abe920f9 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -4,65 +4,53 @@ "dependencies": { "archiver": { "version": "0.9.0", - "from": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-0.9.0.tgz", + "from": "archiver@0.9.0", "dependencies": { "buffer-crc32": { - "version": "0.2.5", - "from": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz" + "version": "0.2.13", + "from": "buffer-crc32@~0.2.1" }, "readable-stream": { "version": "1.0.34", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "from": "readable-stream@~1.0.24", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "tar-stream": { "version": "0.3.3", - "from": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-0.3.3.tgz", + "from": "tar-stream@~0.3.0", "dependencies": { "bl": { "version": "0.6.0", - "from": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.6.0.tgz" + "from": "bl@~0.6.0" }, "end-of-stream": { "version": "0.1.5", - "from": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "from": "end-of-stream@~0.1.3", "dependencies": { "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } } @@ -72,77 +60,63 @@ }, "zip-stream": { "version": "0.3.7", - "from": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.3.7.tgz", + "from": "zip-stream@~0.3.0", "dependencies": { "crc32-stream": { "version": "0.2.0", - "from": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.2.0.tgz" + "from": "crc32-stream@~0.2.0" }, "debug": { "version": "1.0.4", - "from": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz", + "from": "debug@~1.0.2", "dependencies": { "ms": { "version": "0.6.2", - "from": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + "from": "ms@0.6.2" } } }, "deflate-crc32-stream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/deflate-crc32-stream/-/deflate-crc32-stream-0.1.2.tgz" + "from": "deflate-crc32-stream@~0.1.0" } } }, "lazystream": { "version": "0.1.0", - "from": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz" + "from": "lazystream@~0.1.0" }, "file-utils": { "version": "0.1.5", - "from": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/file-utils/-/file-utils-0.1.5.tgz", + "from": "file-utils@~0.1.5", "dependencies": { "lodash": { "version": "2.1.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.1.0.tgz" + "from": "lodash@~2.1.0" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.6", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -150,96 +124,79 @@ }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "isbinaryfile": { "version": "0.1.9", - "from": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-0.1.9.tgz" + "from": "isbinaryfile@~0.1.9" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.0" } } }, "async": { "version": "0.6.2", - "from": "https://registry.npmjs.org/async/-/async-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.6.2.tgz" + "from": "async@0.6.2" }, "base64-stream": { "version": "0.1.3", - "from": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/base64-stream/-/base64-stream-0.1.3.tgz", + "from": "base64-stream@^0.1.2", "dependencies": { "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.2", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -247,133 +204,109 @@ }, "basic-auth-connect": { "version": "1.0.0", - "from": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz" + "from": "basic-auth-connect@^1.0.0" }, "bcrypt": { "version": "0.8.3", - "from": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.3.tgz", + "from": "bcrypt@0.8.3", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@1.2.1" }, "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@1.8.4" } } }, "body-parser": { - "version": "1.15.2", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.15.2.tgz", + "version": "1.16.0", + "from": "body-parser@^1.13.1", "dependencies": { "bytes": { "version": "2.4.0", - "from": "bytes@2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" + "from": "bytes@2.4.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.2" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2" } } }, "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@0.4.15" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "qs": { - "version": "6.2.0", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz" + "version": "6.2.1", + "from": "qs@6.2.1" }, "raw-body": { - "version": "2.1.7", - "from": "raw-body@~2.1.5", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "version": "2.2.0", + "from": "raw-body@~2.2.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@1.0.0" } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.14", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -383,18 +316,15 @@ }, "bufferedstream": { "version": "1.6.0", - "from": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/bufferedstream/-/bufferedstream-1.6.0.tgz" + "from": "bufferedstream@1.6.0" }, "connect-redis": { - "version": "3.1.0", - "from": "connect-redis@3.1.0", - "resolved": "https://registry.npmjs.org/connect-redis/-/connect-redis-3.1.0.tgz", + "version": "3.2.0", + "from": "connect-redis@^3.1.0", "dependencies": { "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -403,184 +333,152 @@ } }, "redis": { - "version": "2.6.3", - "from": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.6.3.tgz", + "version": "2.6.5", + "from": "redis@^2.1.0", "dependencies": { "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.1.1.tgz" + "version": "2.3.0", + "from": "redis-parser@^2.0.0" } } } } }, "contentful": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/contentful/-/contentful-3.5.0.tgz", + "version": "3.8.0", + "from": "contentful@^3.3.14", "dependencies": { "babel-runtime": { - "version": "6.11.6", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.11.6.tgz", + "version": "6.3.19", + "from": "babel-runtime@~6.3.19", "dependencies": { "core-js": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz" - }, - "regenerator-runtime": { - "version": "0.9.5", - "from": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz" + "version": "1.2.7", + "from": "core-js@^1.2.0" } } }, "contentful-sdk-core": { - "version": "2.3.4", - "from": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", - "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-2.3.4.tgz", + "version": "2.5.0", + "from": "contentful-sdk-core@~2.5.0", "dependencies": { "follow-redirects": { "version": "0.0.7", - "from": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", + "from": "follow-redirects@0.0.7", "dependencies": { "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "stream-consume": { "version": "0.1.0", - "from": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" + "from": "stream-consume@^0.1.0" } } }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@^6.1.0" } } }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" + }, + "lodash": { + "version": "4.2.1", + "from": "lodash@~4.2.0" } } }, "cookie": { "version": "0.2.4", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.2.4.tgz" + "from": "cookie@^0.2.3" }, "cookie-parser": { "version": "1.3.5", - "from": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "from": "cookie-parser@1.3.5", "dependencies": { "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" } } }, "csurf": { "version": "1.9.0", - "from": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", - "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.9.0.tgz", + "from": "csurf@^1.8.3", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "csrf": { - "version": "3.0.3", - "from": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz", + "version": "3.0.4", + "from": "csrf@~3.0.3", "dependencies": { "base64-url": { - "version": "1.2.2", - "from": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz" + "version": "1.3.3", + "from": "base64-url@1.3.3" }, "rndm": { "version": "1.2.0", - "from": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz" + "from": "rndm@1.2.0" }, "tsscmp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz" + "from": "tsscmp@1.0.5" }, "uid-safe": { - "version": "2.1.1", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz", + "version": "2.1.3", + "from": "uid-safe@2.1.3", "dependencies": { "random-bytes": { "version": "1.0.0", - "from": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz" + "from": "random-bytes@~1.0.0" } } } } }, "http-errors": { - "version": "1.5.0", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.0.tgz", + "version": "1.5.1", + "from": "http-errors@~1.5.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2.0.3" }, "setprototypeof": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.1.tgz" + "version": "1.0.2", + "from": "setprototypeof@1.0.2" }, "statuses": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz" + "version": "1.3.1", + "from": "statuses@>= 1.3.1 < 2" } } } @@ -588,280 +486,229 @@ }, "dateformat": { "version": "1.0.4-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.4-1.2.3.tgz" + "from": "dateformat@1.0.4-1.2.3" }, "express": { "version": "4.13.0", - "from": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", - "resolved": "https://registry.npmjs.org/express/-/express-4.13.0.tgz", + "from": "express@4.13.0", "dependencies": { "accepts": { "version": "1.2.13", - "from": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "from": "accepts@~1.2.9", "dependencies": { "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, "negotiator": { "version": "0.5.3", - "from": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + "from": "negotiator@0.5.3" } } }, "array-flatten": { "version": "1.1.0", - "from": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.0.tgz" + "from": "array-flatten@1.1.0" }, "content-disposition": { "version": "0.5.0", - "from": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + "from": "content-disposition@0.5.0" }, "content-type": { "version": "1.0.2", - "from": "content-type@~1.0.1", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" + "from": "content-type@~1.0.1" }, "cookie": { "version": "0.1.3", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + "from": "cookie@0.1.3" }, "cookie-signature": { "version": "1.0.6", - "from": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + "from": "cookie-signature@1.0.6" }, "debug": { "version": "2.2.0", "from": "debug@~2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "depd": { "version": "1.0.1", - "from": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + "from": "depd@~1.0.1" }, "escape-html": { "version": "1.0.2", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + "from": "escape-html@1.0.2" }, "etag": { "version": "1.7.0", - "from": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + "from": "etag@~1.7.0" }, "finalhandler": { "version": "0.4.0", - "from": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "from": "finalhandler@0.4.0", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + "from": "unpipe@~1.0.0" } } }, "fresh": { "version": "0.3.0", - "from": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + "from": "fresh@0.3.0" }, "merge-descriptors": { "version": "1.0.0", - "from": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + "from": "merge-descriptors@1.0.0" }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.1" }, "on-finished": { "version": "2.3.0", "from": "on-finished@~2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + "from": "ee-first@1.1.1" } } }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.0" }, "path-to-regexp": { "version": "0.1.6", - "from": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.6.tgz" + "from": "path-to-regexp@0.1.6" }, "proxy-addr": { "version": "1.0.10", - "from": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz", + "from": "proxy-addr@~1.0.8", "dependencies": { "forwarded": { "version": "0.1.0", - "from": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + "from": "forwarded@~0.1.0" }, "ipaddr.js": { "version": "1.0.5", - "from": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz" + "from": "ipaddr.js@1.0.5" } } }, "qs": { "version": "2.4.2", - "from": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + "from": "qs@2.4.2" }, "range-parser": { "version": "1.0.3", - "from": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz" + "from": "range-parser@~1.0.2" }, "send": { "version": "0.13.0", - "from": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "from": "send@0.13.0", "dependencies": { "destroy": { "version": "1.0.3", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + "from": "destroy@1.0.3" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } }, "serve-static": { "version": "1.10.3", - "from": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "from": "serve-static@~1.10.0", "dependencies": { "escape-html": { "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + "from": "escape-html@~1.0.3" }, "send": { "version": "0.13.2", - "from": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", - "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "from": "send@0.13.2", "dependencies": { "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@~1.1.0" }, "destroy": { "version": "1.0.4", - "from": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "from": "destroy@~1.0.4" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@~1.3.1", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@1.3.4" }, "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + "from": "statuses@~1.2.1" } } } } }, "type-is": { - "version": "1.6.13", - "from": "type-is@~1.6.10", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz", + "version": "1.6.14", + "from": "type-is@~1.6.3", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.13", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } } @@ -869,63 +716,55 @@ }, "vary": { "version": "1.0.1", - "from": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + "from": "vary@~1.0.0" }, "utils-merge": { "version": "1.0.0", - "from": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + "from": "utils-merge@1.0.0" } } }, "express-session": { - "version": "1.14.2", - "from": "express-session@1.14.2", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.14.2.tgz", + "version": "1.15.0", + "from": "express-session@^1.14.2", "dependencies": { "cookie": { "version": "0.3.1", - "from": "cookie@0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "from": "cookie@0.3.1" }, "cookie-signature": { "version": "1.0.6", "from": "cookie-signature@1.0.6" }, "crc": { - "version": "3.4.1", - "from": "crc@3.4.1", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.1.tgz" + "version": "3.4.4", + "from": "crc@3.4.4" }, "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "depd": { "version": "1.1.0", - "from": "depd@1.1.0" + "from": "depd@~1.1.0" }, "on-headers": { "version": "1.0.1", - "from": "on-headers@1.0.1" + "from": "on-headers@~1.0.1" }, "parseurl": { "version": "1.3.1", - "from": "parseurl@1.3.1" + "from": "parseurl@~1.3.1" }, "uid-safe": { "version": "2.1.3", - "from": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.3.tgz", + "from": "uid-safe@~2.1.3", "dependencies": { "base64-url": { "version": "1.3.3", @@ -933,7 +772,7 @@ }, "random-bytes": { "version": "1.0.0", - "from": "random-bytes@1.0.0" + "from": "random-bytes@~1.0.0" } } }, @@ -945,63 +784,51 @@ }, "grunt": { "version": "0.4.5", - "from": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "from": "grunt@^0.4.5", "dependencies": { "async": { "version": "0.1.22", - "from": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz" + "from": "async@~0.1.22" }, "coffee-script": { "version": "1.3.3", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz" + "from": "coffee-script@~1.3.3" }, "colors": { "version": "0.6.2", - "from": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + "from": "colors@~0.6.2" }, "dateformat": { "version": "1.0.2-1.2.3", - "from": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz" + "from": "dateformat@1.0.2-1.2.3" }, "eventemitter2": { "version": "0.4.14", - "from": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" + "from": "eventemitter2@~0.4.13" }, "findup-sync": { "version": "0.1.3", - "from": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "from": "findup-sync@~0.1.2", "dependencies": { "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@~3.2.9", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@0.3", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } } @@ -1009,150 +836,123 @@ }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "glob": { "version": "3.1.21", - "from": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "from": "glob@~3.1.21", "dependencies": { "graceful-fs": { "version": "1.2.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + "from": "graceful-fs@~1.2.0" }, "inherits": { "version": "1.0.2", - "from": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" + "from": "inherits@1" } } }, "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "iconv-lite": { "version": "0.2.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz" + "from": "iconv-lite@~0.2.11" }, "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.12", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "nopt": { "version": "1.0.10", - "from": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "from": "nopt@~1.0.10", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "rimraf": { "version": "2.2.8", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + "from": "rimraf@~2.2.8" }, "lodash": { "version": "0.9.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz" + "from": "lodash@~0.9.2" }, "underscore.string": { "version": "2.2.1", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz" + "from": "underscore.string@~2.2.1" }, "which": { "version": "1.0.9", - "from": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz" + "from": "which@~1.0.5" }, "js-yaml": { "version": "2.0.5", - "from": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "from": "js-yaml@~2.0.5", "dependencies": { "argparse": { "version": "0.1.16", - "from": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "from": "argparse@~ 0.1.11", "dependencies": { "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@~1.7.0" }, "underscore.string": { "version": "2.4.0", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz" + "from": "underscore.string@~2.4.0" } } }, "esprima": { "version": "1.0.4", - "from": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" + "from": "esprima@~ 1.0.2" } } }, "exit": { "version": "0.1.2", - "from": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + "from": "exit@~0.1.1" }, "getobject": { "version": "0.1.0", - "from": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz" + "from": "getobject@~0.1.0" }, "grunt-legacy-util": { "version": "0.2.0", - "from": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz" + "from": "grunt-legacy-util@~0.2.0" }, "grunt-legacy-log": { "version": "0.1.3", - "from": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "from": "grunt-legacy-log@~0.1.0", "dependencies": { "grunt-legacy-log-utils": { "version": "0.1.1", - "from": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz" + "from": "grunt-legacy-log-utils@~0.1.1" }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" }, "underscore.string": { "version": "2.3.3", - "from": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz" + "from": "underscore.string@~2.3.3" } } } @@ -1160,45 +960,37 @@ }, "heapdump": { "version": "0.3.7", - "from": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.7.tgz" + "from": "heapdump@^0.3.7" }, "http-proxy": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.14.0.tgz", + "version": "1.16.2", + "from": "http-proxy@^1.8.1", "dependencies": { "eventemitter3": { "version": "1.2.0", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + "from": "eventemitter3@1.x.x" }, "requires-port": { "version": "1.0.0", - "from": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + "from": "requires-port@1.x.x" } } }, "ioredis": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-2.4.0.tgz", + "version": "2.5.0", + "from": "ioredis@^2.4.0", "dependencies": { "bluebird": { - "version": "3.4.6", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4" }, "cluster-key-slot": { "version": "1.0.8", - "from": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz" + "from": "cluster-key-slot@^1.0.6" }, "debug": { - "version": "2.3.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { "version": "0.7.2", @@ -1208,8 +1000,7 @@ }, "double-ended-queue": { "version": "2.1.0-0", - "from": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz" + "from": "double-ended-queue@^2.1.0-0" }, "flexbuffer": { "version": "0.0.6", @@ -1217,91 +1008,75 @@ }, "redis-commands": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.0.tgz" + "from": "redis-commands@^1.2.0" }, "redis-parser": { "version": "1.3.0", - "from": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-1.3.0.tgz" + "from": "redis-parser@^1.3.0" } } }, "jade": { "version": "1.3.1", - "from": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-1.3.1.tgz", + "from": "jade@~1.3.1", "dependencies": { "commander": { "version": "2.1.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" + "from": "commander@2.1.0" }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "transformers": { "version": "2.1.0", - "from": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "from": "transformers@2.1.0", "dependencies": { "promise": { "version": "2.0.0", - "from": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz", + "from": "promise@~2.0", "dependencies": { "is-promise": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" + "from": "is-promise@~1" } } }, "css": { "version": "1.0.8", - "from": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", - "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz", + "from": "css@~1.0.8", "dependencies": { "css-parse": { "version": "1.0.4", - "from": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + "from": "css-parse@1.0.4" }, "css-stringify": { "version": "1.0.5", - "from": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + "from": "css-stringify@1.0.5" } } }, "uglify-js": { "version": "2.2.5", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "from": "uglify-js@~2.2.5", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@~0.1.7", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "optimist": { "version": "0.3.7", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "from": "optimist@~0.3.5", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" } } } @@ -1311,38 +1086,31 @@ }, "character-parser": { "version": "1.2.0", - "from": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" + "from": "character-parser@1.2.0" }, "monocle": { "version": "1.1.51", - "from": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", - "resolved": "https://registry.npmjs.org/monocle/-/monocle-1.1.51.tgz", + "from": "monocle@1.1.51", "dependencies": { "readdirp": { "version": "0.2.5", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-0.2.5.tgz", + "from": "readdirp@~0.2.3", "dependencies": { "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@>=0.2.4", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -1354,60 +1122,49 @@ }, "with": { "version": "3.0.1", - "from": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/with/-/with-3.0.1.tgz", + "from": "with@~3.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.12", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1417,60 +1174,49 @@ }, "constantinople": { "version": "2.0.1", - "from": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-2.0.1.tgz", + "from": "constantinople@~2.0.0", "dependencies": { "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@~2.4.0", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + "from": "async@~0.2.6" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "dependencies": { "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + "version": "1.0.1", + "from": "amdefine@>=0.0.4" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + "from": "uglify-to-browserify@~1.0.0" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@~3.5.4", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + "from": "camelcase@^1.0.2" }, "decamelize": { "version": "1.2.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "from": "decamelize@^1.0.0" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + "from": "window-size@0.1.0" }, "wordwrap": { "version": "0.0.2", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + "from": "wordwrap@0.0.2" } } } @@ -1481,102 +1227,94 @@ } }, "ldapjs": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.0.tgz", + "version": "1.0.1", + "from": "ldapjs@^1.0.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@0.2.3" }, "assert-plus": { - "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + "version": "1.0.0", + "from": "assert-plus@^1.0.0" }, "bunyan": { - "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "version": "1.8.5", + "from": "bunyan@^1.8.3", "dependencies": { + "dtrace-provider": { + "version": "0.8.0", + "from": "dtrace-provider@~0.8", + "dependencies": { + "nan": { + "version": "2.5.1", + "from": "nan@^2.3.3" + } + } + }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -1586,192 +1324,186 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" + }, + "moment": { + "version": "2.17.1", + "from": "moment@^2.10.6" } } }, "dashdash": { - "version": "1.10.1", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz" + "version": "1.14.1", + "from": "dashdash@^1.14.0" }, "backoff": { - "version": "2.4.1", - "from": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.4.1.tgz", + "version": "2.5.0", + "from": "backoff@^2.5.0", "dependencies": { "precond": { "version": "0.2.3", - "from": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz" + "from": "precond@0.2" } } }, "ldap-filter": { "version": "0.2.2", - "from": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz" + "from": "ldap-filter@0.2.2", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@0.1.5" + } + } }, "once": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "version": "1.4.0", + "from": "once@^1.4.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "vasync": { - "version": "1.6.3", - "from": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.3.tgz" + "version": "1.6.4", + "from": "vasync@^1.6.4", + "dependencies": { + "verror": { + "version": "1.6.0", + "from": "verror@1.6.0", + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "from": "extsprintf@1.2.0" + } + } + } + } }, "verror": { - "version": "1.6.0", - "from": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "version": "1.9.0", + "from": "verror@^1.8.1", "dependencies": { + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@1.0.2" + }, "extsprintf": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" + "version": "1.3.0", + "from": "extsprintf@^1.2.0" } } }, "dtrace-provider": { - "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "version": "0.7.1", + "from": "dtrace-provider@^0.7.0", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.3.3" } } } } }, "lodash": { - "version": "4.14.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz" + "version": "4.17.4", + "from": "lodash@^4.13.1" }, "logger-sharelatex": { "version": "1.3.1", - "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", + "from": "logger-sharelatex@git+https://github.com/sharelatex/logger-sharelatex.git#v1.3.1", "resolved": "git+https://github.com/sharelatex/logger-sharelatex.git#bf413ec621a000cf0e08c939de38d5e24541a08c", "dependencies": { "bunyan": { "version": "1.5.1", - "from": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", + "from": "bunyan@1.5.1", "dependencies": { "dtrace-provider": { "version": "0.6.0", - "from": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz", + "from": "dtrace-provider@~0.6", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.0.8" } } }, "mv": { "version": "2.1.1", - "from": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "from": "mv@~2", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "ncp": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "from": "ncp@~2.0.0" }, "rimraf": { "version": "2.4.5", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "from": "rimraf@~2.4.0", "dependencies": { "glob": { "version": "6.0.4", - "from": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "from": "glob@^6.0.1", "dependencies": { "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@2 || 3", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -1781,35 +1513,29 @@ }, "safe-json-stringify": { "version": "1.0.3", - "from": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz" + "from": "safe-json-stringify@~1" } } }, "coffee-script": { "version": "1.4.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz" + "from": "coffee-script@1.4.0" }, "raven": { "version": "0.8.1", - "from": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", - "resolved": "https://registry.npmjs.org/raven/-/raven-0.8.1.tgz", + "from": "raven@^0.8.0", "dependencies": { "cookie": { "version": "0.1.0", - "from": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz" + "from": "cookie@0.1.0" }, "lsmod": { "version": "0.0.3", - "from": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-0.0.3.tgz" + "from": "lsmod@~0.0.3" }, "stack-trace": { "version": "0.0.7", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.7.tgz" + "from": "stack-trace@0.0.7" } } } @@ -1817,181 +1543,150 @@ }, "lynx": { "version": "0.1.1", - "from": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", + "from": "lynx@0.1.1", "dependencies": { "mersenne": { "version": "0.0.3", - "from": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.3.tgz" + "from": "mersenne@~0.0.3" }, "statsd-parser": { "version": "0.0.4", - "from": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz" + "from": "statsd-parser@~0.0.4" } } }, "marked": { "version": "0.3.6", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz" + "from": "marked@^0.3.5" }, "method-override": { - "version": "2.3.6", - "from": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", - "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz", + "version": "2.3.7", + "from": "method-override@^2.3.3", "dependencies": { "debug": { - "version": "2.2.0", - "from": "debug@2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.3.3", + "from": "debug@2.3.3", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "methods": { "version": "1.1.2", - "from": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "from": "methods@~1.1.2" }, "parseurl": { "version": "1.3.1", - "from": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + "from": "parseurl@~1.3.1" }, "vary": { "version": "1.1.0", - "from": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz" + "from": "vary@~1.1.0" } } }, "metrics-sharelatex": { - "version": "1.3.0", - "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", - "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#080c4aeb696edcd5d6d86f202f2c528f0661d7a6", + "version": "1.6.0", + "from": "metrics-sharelatex@git+https://github.com/sharelatex/metrics-sharelatex.git#v1.6.0", + "resolved": "git+https://github.com/sharelatex/metrics-sharelatex.git#718f1144407ab2c867b869ebb38e07de2be1933b", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "mimelib": { "version": "0.2.14", - "from": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", + "from": "mimelib@0.2.14", "dependencies": { "encoding": { "version": "0.1.12", - "from": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "from": "encoding@~0.1", "dependencies": { "iconv-lite": { - "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "version": "0.4.15", + "from": "iconv-lite@~0.4.13" } } }, "addressparser": { "version": "0.2.1", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz" + "from": "addressparser@~0.2.0" } } }, "mocha": { "version": "1.17.1", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.17.1.tgz", + "from": "mocha@1.17.1", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.7.0", - "from": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz" + "from": "growl@1.7.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + "from": "commander@0.6.1" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "from": "mkdirp@0.3.0" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -1999,109 +1694,89 @@ }, "mongojs": { "version": "0.18.2", - "from": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", - "resolved": "https://registry.npmjs.org/mongojs/-/mongojs-0.18.2.tgz", + "from": "mongojs@0.18.2", "dependencies": { "thunky": { "version": "0.1.0", - "from": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz" + "from": "thunky@~0.1.0" }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@~1.1.9", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } }, "mongodb": { "version": "1.4.32", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.4.32.tgz", + "from": "mongodb@1.4.32", "dependencies": { "bson": { "version": "0.2.22", - "from": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.2.22.tgz", + "from": "bson@~0.2", "dependencies": { "nan": { "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "from": "nan@~1.8" } } }, "kerberos": { "version": "0.0.9", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.9.tgz", + "from": "kerberos@0.0.9", "dependencies": { "nan": { "version": "1.6.2", - "from": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.6.2.tgz" + "from": "nan@1.6.2" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@latest", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -2111,33 +1786,27 @@ }, "mongoose": { "version": "4.1.0", - "from": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-4.1.0.tgz", + "from": "mongoose@4.1.0", "dependencies": { "async": { "version": "0.9.0", - "from": "https://registry.npmjs.org/async/-/async-0.9.0.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz" + "from": "async@0.9.0" }, "bson": { "version": "0.3.2", - "from": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.3.2.tgz", + "from": "bson@~0.3", "dependencies": { "bson-ext": { "version": "0.1.13", - "from": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", - "resolved": "https://registry.npmjs.org/bson-ext/-/bson-ext-0.1.13.tgz", + "from": "bson-ext@~0.1", "dependencies": { "bindings": { "version": "1.2.1", - "from": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + "from": "bindings@^1.2.1" }, "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "from": "nan@~2.0.9" } } } @@ -2145,38 +1814,31 @@ }, "hooks-fixed": { "version": "1.1.0", - "from": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-1.1.0.tgz" + "from": "hooks-fixed@1.1.0" }, "kareem": { "version": "1.0.1", - "from": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-1.0.1.tgz" + "from": "kareem@1.0.1" }, "mongodb": { "version": "2.0.34", - "from": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.0.34.tgz", + "from": "mongodb@2.0.34", "dependencies": { "mongodb-core": { "version": "1.2.0", - "from": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.2.0.tgz", + "from": "mongodb-core@1.2.0", "dependencies": { "bson": { "version": "0.4.23", - "from": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz", - "resolved": "https://registry.npmjs.org/bson/-/bson-0.4.23.tgz" + "from": "bson@~0.4" }, "kerberos": { - "version": "0.0.21", - "from": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-0.0.21.tgz", + "version": "0.0.22", + "from": "kerberos@~0.0", "dependencies": { "nan": { - "version": "2.3.5", - "from": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz" + "version": "2.4.0", + "from": "nan@~2.4" } } } @@ -2184,28 +1846,23 @@ }, "readable-stream": { "version": "1.0.31", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.31.tgz", + "from": "readable-stream@1.0.31", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2213,33 +1870,27 @@ }, "mpath": { "version": "0.1.1", - "from": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" + "from": "mpath@0.1.1" }, "mpromise": { "version": "0.5.4", - "from": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz", - "resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.5.4.tgz" + "from": "mpromise@0.5.4" }, "mquery": { "version": "1.6.1", - "from": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-1.6.1.tgz", + "from": "mquery@1.6.1", "dependencies": { "bluebird": { "version": "2.9.26", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.26.tgz" + "from": "bluebird@2.9.26" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } } @@ -2247,72 +1898,59 @@ }, "ms": { "version": "0.1.0", - "from": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" + "from": "ms@0.1.0" }, "muri": { "version": "1.0.0", - "from": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/muri/-/muri-1.0.0.tgz" + "from": "muri@1.0.0" }, "regexp-clone": { "version": "0.0.1", - "from": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz" + "from": "regexp-clone@0.0.1" }, "sliced": { "version": "0.0.5", - "from": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz" + "from": "sliced@0.0.5" } } }, "multer": { "version": "0.1.8", - "from": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", - "resolved": "https://registry.npmjs.org/multer/-/multer-0.1.8.tgz", + "from": "multer@^0.1.8", "dependencies": { "busboy": { - "version": "0.2.13", - "from": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.13.tgz", + "version": "0.2.14", + "from": "busboy@~0.2.9", "dependencies": { "dicer": { "version": "0.2.5", - "from": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "from": "dicer@0.2.5", "dependencies": { "streamsearch": { "version": "0.1.2", - "from": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz" + "from": "streamsearch@0.1.2" } } }, "readable-stream": { "version": "1.1.14", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "from": "readable-stream@1.1.x", "dependencies": { "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + "from": "isarray@0.0.1" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" } } } @@ -2320,33 +1958,27 @@ }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" }, "qs": { "version": "1.2.2", - "from": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-1.2.2.tgz" + "from": "qs@~1.2.2" }, "type-is": { "version": "1.5.7", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "from": "type-is@~1.5.2", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + "from": "media-typer@0.3.0" }, "mime-types": { "version": "2.0.14", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "from": "mime-types@~2.0.9", "dependencies": { "mime-db": { "version": "1.12.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + "from": "mime-db@~1.12.0" } } } @@ -2356,65 +1988,53 @@ }, "node-uuid": { "version": "1.4.1", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.1.tgz" + "from": "node-uuid@1.4.1" }, "nodemailer": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.1.0.tgz", + "from": "nodemailer@2.1.0", "dependencies": { "libmime": { "version": "2.0.0", - "from": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.0.0.tgz", + "from": "libmime@2.0.0", "dependencies": { "iconv-lite": { "version": "0.4.13", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" + "from": "iconv-lite@0.4.13" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" } } }, "mailcomposer": { "version": "3.3.2", - "from": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.3.2.tgz", + "from": "mailcomposer@3.3.2", "dependencies": { "buildmail": { "version": "3.3.2", - "from": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.3.2.tgz", + "from": "buildmail@3.3.2", "dependencies": { "addressparser": { "version": "1.0.0", - "from": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.0.tgz" + "from": "addressparser@1.0.0" }, "libbase64": { "version": "0.1.0", - "from": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz" + "from": "libbase64@0.1.0" }, "libqp": { "version": "1.1.0", - "from": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz" + "from": "libqp@1.1.0" }, "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } } @@ -2422,69 +2042,57 @@ }, "nodemailer-direct-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-2.0.1.tgz", + "from": "nodemailer-direct-transport@2.0.1", "dependencies": { "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-shared": { "version": "1.0.3", - "from": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.3.tgz", + "from": "nodemailer-shared@1.0.3", "dependencies": { "nodemailer-fetch": { "version": "1.2.1", - "from": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.2.1.tgz" + "from": "nodemailer-fetch@1.2.1" } } }, "nodemailer-smtp-pool": { "version": "2.1.0", - "from": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.1.0.tgz", + "from": "nodemailer-smtp-pool@2.1.0", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } }, "nodemailer-smtp-transport": { "version": "2.0.1", - "from": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.0.1.tgz", + "from": "nodemailer-smtp-transport@2.0.1", "dependencies": { "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + "from": "clone@1.0.2" }, "nodemailer-wellknown": { "version": "0.1.7", - "from": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.7.tgz" + "from": "nodemailer-wellknown@0.1.7" }, "smtp-connection": { "version": "2.0.1", - "from": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.0.1.tgz" + "from": "smtp-connection@2.0.1" } } } @@ -2492,69 +2100,97 @@ }, "nodemailer-sendgrid-transport": { "version": "0.2.0", - "from": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-sendgrid-transport/-/nodemailer-sendgrid-transport-0.2.0.tgz", + "from": "nodemailer-sendgrid-transport@^0.2.0", "dependencies": { "sendgrid": { "version": "1.9.2", - "from": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sendgrid/-/sendgrid-1.9.2.tgz", + "from": "sendgrid@^1.8.0", "dependencies": { "mime": { "version": "1.3.4", - "from": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + "from": "mime@^1.2.9" }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "from": "lodash@^3.0.1 || ^2.0.0" }, "smtpapi": { "version": "1.2.0", - "from": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/smtpapi/-/smtpapi-1.2.0.tgz" + "from": "smtpapi@^1.2.0" } } } } }, "nodemailer-ses-transport": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/nodemailer-ses-transport/-/nodemailer-ses-transport-1.4.0.tgz", + "version": "1.5.0", + "from": "nodemailer-ses-transport@^1.3.0", "dependencies": { "aws-sdk": { - "version": "2.4.14", - "from": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.4.14.tgz", + "version": "2.7.28", + "from": "aws-sdk@^2.6.12", "dependencies": { - "sax": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.5.tgz" - }, - "xml2js": { - "version": "0.4.15", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "buffer": { + "version": "4.9.1", + "from": "buffer@4.9.1", "dependencies": { - "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + "base64-js": { + "version": "1.2.0", + "from": "base64-js@^1.0.2" + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@^1.1.4" + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@^1.0.0" } } }, + "crypto-browserify": { + "version": "1.0.9", + "from": "crypto-browserify@1.0.9" + }, "jmespath": { "version": "0.15.0", - "from": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" + "from": "jmespath@0.15.0" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0" + }, + "sax": { + "version": "1.1.5", + "from": "sax@1.1.5" + }, + "url": { + "version": "0.10.3", + "from": "url@0.10.3", + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2" + } + } + }, + "uuid": { + "version": "3.0.0", + "from": "uuid@3.0.0" + }, + "xml2js": { + "version": "0.4.15", + "from": "xml2js@0.4.15" + }, + "xmlbuilder": { + "version": "2.6.2", + "from": "xmlbuilder@2.6.2", + "dependencies": { + "lodash": { + "version": "3.5.0", + "from": "lodash@~3.5.0" + } + } } } } @@ -2562,67 +2198,55 @@ }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@0.6.1", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + "from": "wordwrap@~0.0.2" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + "from": "minimist@~0.0.1" } } }, "passport": { "version": "0.3.2", - "from": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", - "resolved": "https://registry.npmjs.org/passport/-/passport-0.3.2.tgz", + "from": "passport@^0.3.2", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "pause": { "version": "0.0.1", - "from": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz" + "from": "pause@0.0.1" } } }, "passport-ldapauth": { "version": "0.6.0", - "from": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-0.6.0.tgz", + "from": "passport-ldapauth@^0.6.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" }, "ldapauth-fork": { - "version": "2.5.3", - "from": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", - "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-2.5.3.tgz", + "version": "2.5.5", + "from": "ldapauth-fork@~2.5.0", "dependencies": { "bcryptjs": { "version": "2.3.0", - "from": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz" + "from": "bcryptjs@2.3.0" }, "lru-cache": { "version": "3.2.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "from": "lru-cache@3.2.0", "dependencies": { "pseudomap": { "version": "1.0.2", - "from": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + "from": "pseudomap@^1.0.1" } } } @@ -2632,20 +2256,17 @@ }, "passport-local": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "from": "passport-local@^1.0.0", "dependencies": { "passport-strategy": { "version": "1.0.0", - "from": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz" + "from": "passport-strategy@1.x.x" } } }, "passport-saml": { "version": "0.15.0", - "from": "passport-saml@", - "resolved": "https://registry.npmjs.org/passport-saml/-/passport-saml-0.15.0.tgz", + "from": "passport-saml@^0.15.0", "dependencies": { "passport-strategy": { "version": "1.0.0", @@ -2658,7 +2279,6 @@ "xml2js": { "version": "0.4.17", "from": "xml2js@0.4.x", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", "dependencies": { "sax": { "version": "1.2.1", @@ -2666,13 +2286,12 @@ }, "xmlbuilder": { "version": "4.2.1", - "from": "xmlbuilder@^4.1.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + "from": "xmlbuilder@^4.1.0" } } }, "xml-crypto": { - "version": "0.8.4", + "version": "0.8.5", "from": "xml-crypto@0.8.x", "dependencies": { "xmldom": { @@ -2680,13 +2299,13 @@ "from": "xmldom@=0.1.19" }, "xpath.js": { - "version": "1.0.6", + "version": "1.0.7", "from": "xpath.js@>=0.0.3" } } }, "xmldom": { - "version": "0.1.22", + "version": "0.1.27", "from": "xmldom@0.1.x" }, "xmlbuilder": { @@ -2713,166 +2332,39 @@ }, "xpath": { "version": "0.0.5", - "from": "xpath@0.0.5", - "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.5.tgz" + "from": "xpath@0.0.5" }, "node-forge": { "version": "0.2.24", - "from": "node-forge@0.2.24", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.2.24.tgz" + "from": "node-forge@0.2.24" } } } } }, - "pg": { - "version": "6.0.3", - "from": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "resolved": "https://registry.npmjs.org/pg/-/pg-6.0.3.tgz", - "dependencies": { - "buffer-writer": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz" - }, - "packet-reader": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-0.2.0.tgz" - }, - "pg-connection-string": { - "version": "0.1.3", - "from": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz" - }, - "pg-pool": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-1.4.0.tgz", - "dependencies": { - "generic-pool": { - "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" - }, - "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" - } - } - }, - "pg-types": { - "version": "1.11.0", - "from": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-1.11.0.tgz", - "dependencies": { - "ap": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz" - }, - "postgres-array": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-1.0.0.tgz" - }, - "postgres-bytea": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz" - }, - "postgres-date": { - "version": "1.0.3", - "from": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.3.tgz" - }, - "postgres-interval": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.0.2.tgz", - "dependencies": { - "xtend": { - "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - } - } - }, - "pgpass": { - "version": "0.0.6", - "from": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-0.0.6.tgz", - "dependencies": { - "split": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - } - } - }, - "semver": { - "version": "4.3.2", - "from": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.2.tgz" - } - } - }, - "pg-hstore": { - "version": "2.3.2", - "from": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.2.tgz", - "dependencies": { - "underscore": { - "version": "1.8.3", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz" - } - } - }, - "redback": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/redback/-/redback-0.4.0.tgz" - }, "redis": { "version": "0.10.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.10.1.tgz" + "from": "redis@0.10.1" }, "redis-sharelatex": { "version": "0.0.9", - "from": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/redis-sharelatex/-/redis-sharelatex-0.0.9.tgz", + "from": "redis-sharelatex@0.0.9", "dependencies": { "chai": { "version": "1.9.1", - "from": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", - "resolved": "https://registry.npmjs.org/chai/-/chai-1.9.1.tgz", + "from": "chai@1.9.1", "dependencies": { "assertion-error": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz" + "from": "assertion-error@1.0.0" }, "deep-eql": { "version": "0.1.3", - "from": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "from": "deep-eql@0.1.3", "dependencies": { "type-detect": { "version": "0.1.1", - "from": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + "from": "type-detect@0.1.1" } } } @@ -2880,195 +2372,167 @@ }, "coffee-script": { "version": "1.8.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.8.0.tgz", + "from": "coffee-script@1.8.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "grunt-contrib-coffee": { "version": "0.11.1", - "from": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/grunt-contrib-coffee/-/grunt-contrib-coffee-0.11.1.tgz", + "from": "grunt-contrib-coffee@0.11.1", "dependencies": { "coffee-script": { "version": "1.7.1", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.7.1.tgz", + "from": "coffee-script@~1.7.0", "dependencies": { "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@~0.3.5" } } }, "chalk": { "version": "0.5.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "from": "chalk@~0.5.0", "dependencies": { "ansi-styles": { "version": "1.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" + "from": "ansi-styles@^1.1.0" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.0" }, "has-ansi": { "version": "0.1.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "from": "has-ansi@^0.1.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.1" } } }, "strip-ansi": { "version": "0.3.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "from": "strip-ansi@^0.3.0", "dependencies": { "ansi-regex": { "version": "0.2.1", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + "from": "ansi-regex@^0.2.1" } } }, "supports-color": { "version": "0.2.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + "from": "supports-color@^0.2.0" } } }, "lodash": { "version": "2.4.2", - "from": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz" + "from": "lodash@~2.4.1" } } }, "grunt-mocha-test": { "version": "0.12.0", - "from": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", - "resolved": "https://registry.npmjs.org/grunt-mocha-test/-/grunt-mocha-test-0.12.0.tgz", + "from": "grunt-mocha-test@0.12.0", "dependencies": { "hooker": { "version": "0.2.3", - "from": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" + "from": "hooker@~0.2.3" }, "fs-extra": { "version": "0.11.1", - "from": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.11.1.tgz", + "from": "fs-extra@~0.11.1", "dependencies": { "ncp": { "version": "0.6.0", - "from": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.6.0.tgz" + "from": "ncp@^0.6.0" }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@^0.5.0", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "jsonfile": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.3.1.tgz" + "version": "2.4.0", + "from": "jsonfile@^2.0.0", + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@^4.1.6" + } + } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@^2.2.8", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } @@ -3080,89 +2544,73 @@ }, "mocha": { "version": "1.21.4", - "from": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-1.21.4.tgz", + "from": "mocha@1.21.4", "dependencies": { "commander": { "version": "2.0.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz" + "from": "commander@2.0.0" }, "growl": { "version": "1.8.1", - "from": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" + "from": "growl@1.8.x" }, "jade": { "version": "0.26.3", - "from": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "from": "jade@0.26.3", "dependencies": { "commander": { "version": "0.6.1", - "from": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" + "from": "commander@0.6.1" }, "mkdirp": { "version": "0.3.0", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" + "from": "mkdirp@0.3.0" } } }, "diff": { "version": "1.0.7", - "from": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz" + "from": "diff@1.0.7" }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@*", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } }, "mkdirp": { "version": "0.3.5", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz" + "from": "mkdirp@0.3.5" }, "glob": { "version": "3.2.3", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", + "from": "glob@3.2.3", "dependencies": { "minimatch": { "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "from": "minimatch@~0.2.11", "dependencies": { "lru-cache": { "version": "2.7.3", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + "from": "lru-cache@2" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "from": "sigmund@~1.0.0" } } }, "graceful-fs": { "version": "2.0.3", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "from": "graceful-fs@~2.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } } @@ -3170,69 +2618,57 @@ }, "redis": { "version": "0.12.1", - "from": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.12.1.tgz" + "from": "redis@0.12.1" }, "redis-sentinel": { "version": "0.1.1", - "from": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/redis-sentinel/-/redis-sentinel-0.1.1.tgz", + "from": "redis-sentinel@0.1.1", "dependencies": { "redis": { "version": "0.11.0", - "from": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.11.0.tgz" + "from": "redis@0.11.x" }, "q": { "version": "0.9.2", - "from": "https://registry.npmjs.org/q/-/q-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/q/-/q-0.9.2.tgz" + "from": "q@0.9.2" } } }, "sandboxed-module": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sandboxed-module/-/sandboxed-module-1.0.1.tgz", + "from": "sandboxed-module@1.0.1", "dependencies": { "require-like": { "version": "0.1.2", - "from": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz" + "from": "require-like@0.1.2" }, "stack-trace": { "version": "0.0.9", - "from": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + "from": "stack-trace@0.0.9" } } }, "sinon": { "version": "1.10.3", - "from": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.10.3.tgz", + "from": "sinon@1.10.3", "dependencies": { "formatio": { "version": "1.0.2", - "from": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.0.2.tgz", + "from": "formatio@~1.0", "dependencies": { "samsam": { "version": "1.1.3", - "from": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz" + "from": "samsam@~1.1" } } }, "util": { "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "from": "util@>=0.10.3 <1", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "inherits@2.0.1" } } } @@ -3240,215 +2676,141 @@ }, "underscore": { "version": "1.7.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz" + "from": "underscore@1.7.0" } } }, "request": { - "version": "2.74.0", - "from": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", + "version": "2.79.0", + "from": "request@^2.69.0", "dependencies": { "aws-sign2": { "version": "0.6.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + "from": "aws-sign2@~0.6.0" }, "aws4": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz" - }, - "bl": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "process-nextick-args": { - "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } + "version": "1.5.0", + "from": "aws4@^1.2.1" }, "caseless": { "version": "0.11.0", - "from": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + "from": "caseless@~0.11.0" }, "combined-stream": { "version": "1.0.5", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "from": "combined-stream@~1.0.5", "dependencies": { "delayed-stream": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "from": "delayed-stream@~1.0.0" } } }, "extend": { "version": "3.0.0", - "from": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + "from": "extend@~3.0.0" }, "forever-agent": { "version": "0.6.1", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "from": "forever-agent@~0.6.1" }, "form-data": { - "version": "1.0.0-rc4", - "from": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", + "version": "2.1.2", + "from": "form-data@~2.1.1", "dependencies": { - "async": { - "version": "1.5.2", - "from": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + "asynckit": { + "version": "0.4.0", + "from": "asynckit@^0.4.0" } } }, "har-validator": { "version": "2.0.6", - "from": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "from": "har-validator@~2.0.6", "dependencies": { "chalk": { "version": "1.1.3", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "from": "chalk@^1.1.1", "dependencies": { "ansi-styles": { "version": "2.2.1", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + "from": "ansi-styles@^2.2.1" }, "escape-string-regexp": { "version": "1.0.5", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "from": "escape-string-regexp@^1.0.2" }, "has-ansi": { "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "from": "has-ansi@^2.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.0", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "supports-color": { "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + "from": "supports-color@^2.0.0" } } }, "commander": { "version": "2.9.0", - "from": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "from": "commander@^2.9.0", "dependencies": { "graceful-readlink": { "version": "1.0.1", - "from": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + "from": "graceful-readlink@>= 1.0.0" } } }, "is-my-json-valid": { - "version": "2.13.1", - "from": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", + "version": "2.15.0", + "from": "is-my-json-valid@^2.12.4", "dependencies": { "generate-function": { "version": "2.0.0", - "from": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + "from": "generate-function@^2.0.0" }, "generate-object-property": { "version": "1.2.0", - "from": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "from": "generate-object-property@^1.1.0", "dependencies": { "is-property": { "version": "1.0.2", - "from": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + "from": "is-property@^1.0.0" } } }, "jsonpointer": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + "version": "4.0.1", + "from": "jsonpointer@^4.0.0" }, "xtend": { "version": "4.0.1", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + "from": "xtend@^4.0.0" } } }, "pinkie-promise": { "version": "2.0.1", - "from": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "from": "pinkie-promise@^2.0.0", "dependencies": { "pinkie": { "version": "2.0.4", - "from": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "from": "pinkie@^2.0.0" } } } @@ -3456,107 +2818,91 @@ }, "hawk": { "version": "3.1.3", - "from": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "from": "hawk@~3.1.3", "dependencies": { "hoek": { "version": "2.16.3", - "from": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + "from": "hoek@2.x.x" }, "boom": { "version": "2.10.1", - "from": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + "from": "boom@2.x.x" }, "cryptiles": { "version": "2.0.5", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + "from": "cryptiles@2.x.x" }, "sntp": { "version": "1.0.9", - "from": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + "from": "sntp@1.x.x" } } }, "http-signature": { "version": "1.1.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "from": "http-signature@~1.1.0", "dependencies": { "assert-plus": { "version": "0.2.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" + "from": "assert-plus@^0.2.0" }, "jsprim": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", + "version": "1.3.1", + "from": "jsprim@^1.2.2", "dependencies": { "extsprintf": { "version": "1.0.2", - "from": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + "from": "extsprintf@1.0.2" }, "json-schema": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" + "version": "0.2.3", + "from": "json-schema@0.2.3" }, "verror": { "version": "1.3.6", - "from": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + "from": "verror@1.3.6" } } }, "sshpk": { - "version": "1.9.2", - "from": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.9.2.tgz", + "version": "1.10.2", + "from": "sshpk@^1.7.0", "dependencies": { "asn1": { "version": "0.2.3", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" + "from": "asn1@~0.2.3" }, "assert-plus": { "version": "1.0.0", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "from": "assert-plus@^1.0.0" }, "dashdash": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" + "version": "1.14.1", + "from": "dashdash@^1.12.0" }, "getpass": { "version": "0.1.6", - "from": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" + "from": "getpass@^0.1.1" }, "jsbn": { "version": "0.1.0", - "from": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" + "from": "jsbn@~0.1.0" }, "tweetnacl": { - "version": "0.13.3", - "from": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" + "version": "0.14.5", + "from": "tweetnacl@~0.14.0" }, "jodid25519": { "version": "1.0.2", - "from": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" + "from": "jodid25519@^1.0.0" }, "ecc-jsbn": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" + "from": "ecc-jsbn@~0.1.1" + }, + "bcrypt-pbkdf": { + "version": "1.0.0", + "from": "bcrypt-pbkdf@^1.0.0" } } } @@ -3564,196 +2910,212 @@ }, "is-typedarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "from": "is-typedarray@~1.0.0" }, "isstream": { "version": "0.1.2", - "from": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "from": "isstream@~0.1.2" }, "json-stringify-safe": { "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "from": "json-stringify-safe@~5.0.1" }, "mime-types": { - "version": "2.1.11", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", + "version": "2.1.14", + "from": "mime-types@~2.1.7", "dependencies": { "mime-db": { - "version": "1.23.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz" + "version": "1.26.0", + "from": "mime-db@~1.26.0" } } }, - "node-uuid": { - "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, "oauth-sign": { "version": "0.8.2", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" + "from": "oauth-sign@~0.8.1" }, "qs": { - "version": "6.2.1", - "from": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.0", + "from": "qs@~6.3.0" }, "stringstream": { "version": "0.0.5", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" + "from": "stringstream@~0.0.4" }, "tough-cookie": { - "version": "2.3.1", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" + "version": "2.3.2", + "from": "tough-cookie@~2.3.0", + "dependencies": { + "punycode": { + "version": "1.4.1", + "from": "punycode@^1.4.1" + } + } }, "tunnel-agent": { "version": "0.4.3", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" + "from": "tunnel-agent@~0.4.1" + }, + "uuid": { + "version": "3.0.1", + "from": "uuid@^3.0.0" } } }, "requests": { "version": "0.1.7", - "from": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/requests/-/requests-0.1.7.tgz", + "from": "requests@^0.1.7", "dependencies": { "axo": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/axo/-/axo-0.0.1.tgz" + "version": "0.0.2", + "from": "axo@0.0.x" }, "eventemitter3": { "version": "1.1.1", - "from": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + "from": "eventemitter3@1.1.x" }, "extendible": { "version": "0.1.1", - "from": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" + "from": "extendible@0.1.x" }, "hang": { "version": "1.0.0", - "from": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hang/-/hang-1.0.0.tgz" + "from": "hang@1.0.x" }, "loads": { "version": "0.0.4", - "from": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/loads/-/loads-0.0.4.tgz", + "from": "loads@0.0.x", "dependencies": { "failure": { "version": "1.1.1", - "from": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/failure/-/failure-1.1.1.tgz" + "from": "failure@1.1.x" }, "one-time": { "version": "0.0.4", - "from": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz" + "from": "one-time@0.0.x" }, "xhr-response": { "version": "1.0.1", - "from": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/xhr-response/-/xhr-response-1.0.1.tgz" + "from": "xhr-response@1.0.x" }, "xhr-status": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-status/-/xhr-status-1.0.0.tgz" + "from": "xhr-status@1.0.x" } } }, "xhr-send": { "version": "1.0.0", - "from": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/xhr-send/-/xhr-send-1.0.0.tgz" + "from": "xhr-send@1.0.x" } } }, "rimraf": { "version": "2.2.6", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz" + "from": "rimraf@2.2.6" + }, + "rolling-rate-limiter": { + "version": "0.1.4", + "from": "rolling-rate-limiter@git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master", + "resolved": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#8a1a2cd8aaf9cd1a75cc81317b7f261157be2149", + "dependencies": { + "microtime-nodejs": { + "version": "1.0.0", + "from": "microtime-nodejs@~1.0.0" + } + } }, "sanitizer": { "version": "0.1.1", - "from": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.1.tgz" + "from": "sanitizer@0.1.1" }, "sequelize": { - "version": "3.23.6", - "from": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-3.23.6.tgz", + "version": "3.30.0", + "from": "sequelize@^3.2.0", "dependencies": { "bluebird": { - "version": "3.4.1", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz" + "version": "3.4.7", + "from": "bluebird@^3.3.4" }, "depd": { "version": "1.1.0", - "from": "depd@~1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + "from": "depd@^1.1.0" }, "dottie": { "version": "1.1.1", - "from": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-1.1.1.tgz" + "from": "dottie@^1.0.0" }, "generic-pool": { "version": "2.4.2", - "from": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.2.tgz" + "from": "generic-pool@2.4.2" }, "inflection": { "version": "1.10.0", - "from": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.10.0.tgz" + "from": "inflection@^1.6.0" }, "lodash": { "version": "4.12.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.12.0.tgz" + "from": "lodash@4.12.0" }, "moment": { - "version": "2.14.1", - "from": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.14.1.tgz" + "version": "2.17.1", + "from": "moment@^2.13.0" }, "moment-timezone": { - "version": "0.5.5", - "from": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.5.tgz" + "version": "0.5.11", + "from": "moment-timezone@^0.5.4" }, "node-uuid": { "version": "1.4.7", - "from": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" + "from": "node-uuid@~1.4.4" }, "retry-as-promised": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.0.1.tgz", + "version": "2.2.0", + "from": "retry-as-promised@^2.0.0", "dependencies": { + "cross-env": { + "version": "3.1.4", + "from": "cross-env@^3.1.2", + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "from": "cross-spawn@^3.0.1", + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "from": "lru-cache@^4.0.1", + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "from": "pseudomap@^1.0.1" + }, + "yallist": { + "version": "2.0.0", + "from": "yallist@^2.0.0" + } + } + }, + "which": { + "version": "1.2.12", + "from": "which@^1.2.9", + "dependencies": { + "isexe": { + "version": "1.1.2", + "from": "isexe@^1.1.1" + } + } + } + } + } + } + }, "debug": { - "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "version": "2.6.0", + "from": "debug@^2.2.0", "dependencies": { "ms": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "version": "0.7.2", + "from": "ms@0.7.2" } } } @@ -3761,170 +3123,140 @@ }, "semver": { "version": "5.3.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "from": "semver@^5.0.1" }, "shimmer": { "version": "1.1.0", - "from": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.1.0.tgz" + "from": "shimmer@1.1.0" }, "terraformer-wkt-parser": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.0.tgz", + "version": "1.1.2", + "from": "terraformer-wkt-parser@^1.1.0", "dependencies": { "terraformer": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.5.tgz" + "version": "1.0.7", + "from": "terraformer@~1.0.5" } } }, "toposort-class": { "version": "1.0.1", - "from": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "from": "toposort-class@^1.0.1" }, "validator": { - "version": "5.5.0", - "from": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz", - "resolved": "https://registry.npmjs.org/validator/-/validator-5.5.0.tgz" + "version": "5.7.0", + "from": "validator@^5.2.0" }, "wkx": { "version": "0.2.0", - "from": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.2.0.tgz" + "from": "wkx@0.2.0" } } }, "settings-sharelatex": { "version": "1.0.0", - "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", + "from": "settings-sharelatex@git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0", "resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", "dependencies": { "coffee-script": { "version": "1.6.0", - "from": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz" + "from": "coffee-script@1.6.0" } } }, "sixpack-client": { "version": "1.0.0", - "from": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/sixpack-client/-/sixpack-client-1.0.0.tgz" + "from": "sixpack-client@^1.0.0" }, "temp": { "version": "0.8.3", - "from": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "from": "temp@^0.8.3", "dependencies": { "os-tmpdir": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + "version": "1.0.2", + "from": "os-tmpdir@^1.0.0" } } }, "underscore": { "version": "1.6.0", - "from": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + "from": "underscore@1.6.0" }, "v8-profiler": { "version": "5.6.5", - "from": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", - "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.6.5.tgz", + "from": "v8-profiler@^5.2.3", "dependencies": { "nan": { - "version": "2.4.0", - "from": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz" + "version": "2.5.1", + "from": "nan@^2.3.2" }, "node-pre-gyp": { - "version": "0.6.29", - "from": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.29.tgz", + "version": "0.6.32", + "from": "node-pre-gyp@^0.6.5", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@~0.5.1", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + "from": "minimist@0.0.8" } } }, "nopt": { "version": "3.0.6", - "from": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "from": "nopt@~3.0.6", "dependencies": { "abbrev": { "version": "1.0.9", - "from": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" + "from": "abbrev@1" } } }, "npmlog": { - "version": "3.1.2", - "from": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz", + "version": "4.0.2", + "from": "npmlog@^4.0.1", "dependencies": { "are-we-there-yet": { "version": "1.1.2", - "from": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", + "from": "are-we-there-yet@~1.1.2", "dependencies": { "delegates": { "version": "1.0.0", - "from": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "from": "delegates@^1.0.0" }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.2.2", + "from": "readable-stream@^2.0.0 || ^1.1.13", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "from": "core-util-is@~1.0.0" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } } @@ -3932,65 +3264,47 @@ }, "console-control-strings": { "version": "1.1.0", - "from": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "from": "console-control-strings@~1.1.0" }, "gauge": { - "version": "2.6.0", - "from": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz", + "version": "2.7.2", + "from": "gauge@~2.7.1", "dependencies": { "aproba": { "version": "1.0.4", - "from": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" + "from": "aproba@^1.0.3" }, - "has-color": { - "version": "0.1.7", - "from": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + "supports-color": { + "version": "0.2.0", + "from": "supports-color@^0.2.0" }, "has-unicode": { "version": "2.0.1", - "from": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "from": "has-unicode@^2.0.0" }, "object-assign": { - "version": "4.1.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + "version": "4.1.1", + "from": "object-assign@^4.1.0" }, "signal-exit": { - "version": "3.0.0", - "from": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz" + "version": "3.0.2", + "from": "signal-exit@^3.0.0" }, "string-width": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz", + "version": "1.0.2", + "from": "string-width@^1.0.1", "dependencies": { "code-point-at": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } + "version": "1.1.0", + "from": "code-point-at@^1.0.0" }, "is-fullwidth-code-point": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "from": "is-fullwidth-code-point@^1.0.0", "dependencies": { "number-is-nan": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + "version": "1.0.1", + "from": "number-is-nan@^1.0.0" } } } @@ -3998,231 +3312,191 @@ }, "strip-ansi": { "version": "3.0.1", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "from": "strip-ansi@^3.0.1", "dependencies": { "ansi-regex": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + "version": "2.1.1", + "from": "ansi-regex@^2.0.0" } } }, "wide-align": { "version": "1.1.0", - "from": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" + "from": "wide-align@^1.1.0" } } }, "set-blocking": { "version": "2.0.0", - "from": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "from": "set-blocking@~2.0.0" } } }, "rc": { "version": "1.1.6", - "from": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", + "from": "rc@~1.1.6", "dependencies": { "deep-extend": { "version": "0.4.1", - "from": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" + "from": "deep-extend@~0.4.0" }, "ini": { "version": "1.3.4", - "from": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + "from": "ini@~1.3.0" }, "minimist": { "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + "from": "minimist@^1.2.0" }, "strip-json-comments": { "version": "1.0.4", - "from": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + "from": "strip-json-comments@~1.0.4" } } }, "rimraf": { "version": "2.5.4", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "from": "rimraf@~2.5.4", "dependencies": { "glob": { - "version": "7.0.5", - "from": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", + "version": "7.1.1", + "from": "glob@^7.0.5", "dependencies": { "fs.realpath": { "version": "1.0.0", - "from": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "from": "fs.realpath@^1.0.0" }, "inflight": { - "version": "1.0.5", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", + "version": "1.0.6", + "from": "inflight@^1.0.4", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } } }, "once": { - "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "version": "1.4.0", + "from": "once@^1.3.0", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "path-is-absolute": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + "version": "1.0.1", + "from": "path-is-absolute@^1.0.0" } } } } }, "semver": { - "version": "5.2.0", - "from": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.2.0.tgz" + "version": "5.3.0", + "from": "semver@~5.3.0" }, "tar": { "version": "2.2.1", - "from": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "from": "tar@~2.2.1", "dependencies": { "block-stream": { "version": "0.0.9", - "from": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + "from": "block-stream@*" }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@^1.0.2", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2" } } }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" } } }, "tar-pack": { - "version": "3.1.4", - "from": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.4.tgz", + "version": "3.3.0", + "from": "tar-pack@~3.3.0", "dependencies": { "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@~2.2.0", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "from": "ms@0.7.1" } } }, "fstream": { "version": "1.0.10", - "from": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", + "from": "fstream@~1.0.10", "dependencies": { "graceful-fs": { - "version": "4.1.5", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz" + "version": "4.1.11", + "from": "graceful-fs@^4.1.2" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.0" } } }, "fstream-ignore": { "version": "1.0.5", - "from": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "from": "fstream-ignore@~1.0.5", "dependencies": { "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@2" }, "minimatch": { "version": "3.0.3", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "from": "minimatch@^3.0.2", "dependencies": { "brace-expansion": { "version": "1.1.6", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "from": "brace-expansion@^1.0.0", "dependencies": { "balanced-match": { "version": "0.4.2", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + "from": "balanced-match@^0.4.1" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "from": "concat-map@0.0.1" } } } @@ -4232,62 +3506,51 @@ }, "once": { "version": "1.3.3", - "from": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "from": "once@~1.3.3", "dependencies": { "wrappy": { "version": "1.0.2", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "from": "wrappy@1" } } }, "readable-stream": { - "version": "2.1.4", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz", + "version": "2.1.5", + "from": "readable-stream@~2.1.4", "dependencies": { "buffer-shims": { "version": "1.0.0", - "from": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" + "from": "buffer-shims@^1.0.0" }, "core-util-is": { "version": "1.0.2", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "from": "core-util-is@~1.0.0" }, "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "version": "2.0.3", + "from": "inherits@~2.0.1" }, "isarray": { "version": "1.0.0", - "from": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "from": "isarray@~1.0.0" }, "process-nextick-args": { "version": "1.0.7", - "from": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" + "from": "process-nextick-args@~1.0.6" }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + "from": "string_decoder@~0.10.x" }, "util-deprecate": { "version": "1.0.2", - "from": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "from": "util-deprecate@~1.0.1" } } }, "uid-number": { "version": "0.0.6", - "from": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" + "from": "uid-number@~0.0.6" } } } @@ -4297,13 +3560,11 @@ }, "xml2js": { "version": "0.2.0", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.0.tgz", + "from": "xml2js@0.2.0", "dependencies": { "sax": { "version": "1.2.1", - "from": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz" + "from": "sax@>=0.1.1" } } } From a924794a5a599e4a4f9260a64327f8373971d0aa Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 25 Jan 2017 13:51:33 +0000 Subject: [PATCH 158/204] Add expandable text area directive; apply it to review panel text areas. --- .../app/views/project/editor/review-panel.jade | 3 +++ .../coffee/directives/expandableTextArea.coffee | 17 +++++++++++++++++ services/web/public/coffee/ide.coffee | 1 + 3 files changed, 21 insertions(+) create mode 100644 services/web/public/coffee/directives/expandableTextArea.coffee diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index b16230c24c..46aa4b96d1 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -193,6 +193,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ) {{ comment.user.name }}:  | {{ comment.content }} textarea.rp-comment-input( + expandable-text-area ng-if="comment.editing" ng-model="comment.content" ng-keypress="saveEditOnEnter($event, comment);" @@ -219,6 +220,7 @@ script(type='text/ng-template', id='commentEntryTemplate') i.fa.fa-spinner.fa-spin .rp-comment-reply(ng-if="permissions.comment") textarea.rp-comment-input( + expandable-text-area ng-model="entry.replyContent" ng-keypress="handleCommentReplyKeyPress($event);" stop-propagation="click" @@ -309,6 +311,7 @@ script(type='text/ng-template', id='addCommentEntryTemplate') div(ng-if="state.isAdding") .rp-new-comment textarea.rp-comment-input( + expandable-text-area ng-model="state.content" ng-keypress="handleCommentKeyPress($event);" placeholder="Add your comment here" diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee new file mode 100644 index 0000000000..8010ae68dc --- /dev/null +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -0,0 +1,17 @@ +define [ + "base" +], (App) -> + App.directive "expandableTextArea", () -> + restrict: "A" + link: (scope, el) -> + resetHeight = () -> + console.log el.val() + el.css("height", "auto") + el.css("height", el.prop("scrollHeight")) + + scope.$watch (() -> el.val()), resetHeight + + resetHeight() + + + \ No newline at end of file diff --git a/services/web/public/coffee/ide.coffee b/services/web/public/coffee/ide.coffee index cf9e8abe66..08531f993a 100644 --- a/services/web/public/coffee/ide.coffee +++ b/services/web/public/coffee/ide.coffee @@ -28,6 +28,7 @@ define [ "directives/onEnter" "directives/stopPropagation" "directives/rightClick" + "directives/expandableTextArea" "services/queued-http" "filters/formatDate" "main/event" From 406181b05dba3f5a140567cc1b067b20c5a3cdf4 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 25 Jan 2017 15:49:38 +0100 Subject: [PATCH 159/204] Remove a console.log --- services/web/public/coffee/directives/expandableTextArea.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee index 8010ae68dc..8f646c10a7 100644 --- a/services/web/public/coffee/directives/expandableTextArea.coffee +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -5,7 +5,6 @@ define [ restrict: "A" link: (scope, el) -> resetHeight = () -> - console.log el.val() el.css("height", "auto") el.css("height", el.prop("scrollHeight")) From 1a1320b561a8a13f33ea10d3864aac745b8c08e4 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 26 Jan 2017 11:59:55 +0000 Subject: [PATCH 160/204] Avoid shrinking the expandable text area. --- .../public/coffee/directives/expandableTextArea.coffee | 10 +++++----- .../public/stylesheets/app/editor/review-panel.less | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee index 8f646c10a7..58f8ce13ae 100644 --- a/services/web/public/coffee/directives/expandableTextArea.coffee +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -5,12 +5,12 @@ define [ restrict: "A" link: (scope, el) -> resetHeight = () -> - el.css("height", "auto") - el.css("height", el.prop("scrollHeight")) + curHeight = el.outerHeight() + fitHeight = el.prop("scrollHeight") + + if fitHeight > curHeight and el.val() != "" + el.css("height", fitHeight) scope.$watch (() -> el.val()), resetHeight - resetHeight() - - \ No newline at end of file diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index da9fa7eb43..86bdedfff1 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -451,6 +451,7 @@ resize: vertical; color: @rp-type-darkgrey; margin-top: 3px; + overflow-x: hidden; } .rp-icon-delete { From 6304c213bdce77ea6ae80ea93371c8df33d39013 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 26 Jan 2017 12:00:11 +0000 Subject: [PATCH 161/204] Add a min-height to the review panel text areas. --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 86bdedfff1..1bac7faf6f 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -452,6 +452,7 @@ color: @rp-type-darkgrey; margin-top: 3px; overflow-x: hidden; + min-height: 3em; } .rp-icon-delete { From abb4ef14d866bb091ba312579e11eb7841bd9a2a Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 15:08:30 +0100 Subject: [PATCH 162/204] Streamline the update/rendering process to not do extra work --- .../views/project/editor/review-panel.jade | 1 - .../track-changes/TrackChangesManager.coffee | 55 ++++++++++++------- .../controllers/ReviewPanelController.coffee | 6 +- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 9b31516b3f..590c1a6776 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -41,7 +41,6 @@ .rp-entry-list-inner .rp-entry-wrapper( ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]" - ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 2d57100cc5..ed15da2958 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -35,8 +35,8 @@ define [ @$scope.$on "comment:remove", (e, comment_id) => @removeCommentId(comment_id) - @$scope.$on "comment:resolve_thread", (e, thread_id) => - @resolveCommentByThreadId(thread_id) + @$scope.$on "comment:resolve_threads", (e, thread_ids) => + @resolveCommentByThreadIds(thread_ids) @$scope.$on "comment:unresolve_thread", (e, thread_id) => @unresolveCommentByThreadId(thread_id) @@ -105,29 +105,45 @@ define [ # ace has updated @rangesTracker.on "insert:added", (change) => sl_console.log "[insert:added]", change - setTimeout () => @_onInsertAdded(change) + setTimeout () => + @_onInsertAdded(change) + @broadcastChange() @rangesTracker.on "insert:removed", (change) => sl_console.log "[insert:removed]", change - setTimeout () => @_onInsertRemoved(change) + setTimeout () => + @_onInsertRemoved(change) + @broadcastChange() @rangesTracker.on "delete:added", (change) => sl_console.log "[delete:added]", change - setTimeout () => @_onDeleteAdded(change) + setTimeout () => + @_onDeleteAdded(change) + @broadcastChange() @rangesTracker.on "delete:removed", (change) => sl_console.log "[delete:removed]", change - setTimeout () => @_onDeleteRemoved(change) + setTimeout () => + @_onDeleteRemoved(change) + @broadcastChange() @rangesTracker.on "changes:moved", (changes) => sl_console.log "[changes:moved]", changes - setTimeout () => @_onChangesMoved(changes) + setTimeout () => + @_onChangesMoved(changes) + @broadcastChange() @rangesTracker.on "comment:added", (comment) => sl_console.log "[comment:added]", comment - setTimeout () => @_onCommentAdded(comment) + setTimeout () => + @_onCommentAdded(comment) + @broadcastChange() @rangesTracker.on "comment:moved", (comment) => sl_console.log "[comment:moved]", comment - setTimeout () => @_onCommentMoved(comment) + setTimeout () => + @_onCommentMoved(comment) + @broadcastChange() @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment - setTimeout () => @_onCommentRemoved(comment) + setTimeout () => + @_onCommentRemoved(comment) + @broadcastChange() @rangesTracker.on "clear", () => @clearAnnotations() @@ -150,6 +166,8 @@ define [ for comment in @rangesTracker.comments @_onCommentAdded(comment) + + @broadcastChange() addComment: (offset, content, thread_id) -> op = { c: content, p: offset, t: thread_id } @@ -190,15 +208,20 @@ define [ removeCommentId: (comment_id) -> @rangesTracker.removeCommentId(comment_id) - resolveCommentByThreadId: (thread_id) -> + resolveCommentByThreadIds: (thread_ids) -> + resolve_ids = {} + for id in thread_ids + resolve_ids[id] = true for comment in @rangesTracker?.comments or [] - if comment.op.t == thread_id + if resolve_ids[comment.op.t] @_onCommentRemoved(comment) + @broadcastChange() unresolveCommentByThreadId: (thread_id) -> for comment in @rangesTracker?.comments or [] if comment.op.t == thread_id @_onCommentAdded(comment) + @broadcastChange() checkMapping: () -> # TODO: reintroduce this check @@ -303,7 +326,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-added-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-added-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onDeleteAdded: (change) -> position = @_shareJsOffsetToAcePosition(change.op.p) @@ -318,7 +340,6 @@ define [ callout_marker_id = @_createCalloutMarker(position, "track-changes-deleted-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onInsertRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -326,7 +347,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onDeleteRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -334,7 +354,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onCommentAdded: (comment) -> if @rangesTracker.resolvedThreadIds[comment.op.t] @@ -350,7 +369,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-comment-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-comment-marker-callout") @changeIdToMarkerIdMap[comment.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onCommentRemoved: (comment) -> if @changeIdToMarkerIdMap[comment.id]? @@ -360,7 +378,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _aceRangeToShareJs: (range) -> lines = @editor.getSession().getDocument().getLines 0, range.row @@ -385,14 +402,12 @@ define [ end = start @_updateMarker(change.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _onCommentMoved: (comment) -> start = @_shareJsOffsetToAcePosition(comment.op.p) end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) @_updateMarker(comment.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _updateMarker: (change_id, start, end) -> return if !@changeIdToMarkerIdMap[change_id]? diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 5dc2cd3715..45b2e7294e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -222,8 +222,10 @@ define [ delete delete_changes[comment.id] if $scope.reviewPanel.resolvedThreadIds[comment.op.t] new_comment = resolvedComments[comment.id] ?= {} + delete entries[comment.id] else new_comment = entries[comment.id] ?= {} + delete resolvedComments[comment.id] new_entry = { type: "comment" thread_id: comment.op.t @@ -356,7 +358,7 @@ define [ thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() $scope.reviewPanel.resolvedThreadIds[thread_id] = true - $scope.$broadcast "comment:resolve_thread", thread_id + $scope.$broadcast "comment:resolve_threads", [thread_id] _onCommentReopened = (thread_id) -> thread = getThread(thread_id) @@ -477,9 +479,9 @@ define [ for comment in thread.messages formatComment(comment) if thread.resolved_by_user? - $scope.$broadcast "comment:resolve_thread", thread_id thread.resolved_by_user = formatUser(thread.resolved_by_user) $scope.reviewPanel.resolvedThreadIds[thread_id] = true + $scope.$broadcast "comment:resolve_threads", [thread_id] $scope.reviewPanel.commentThreads = threads $timeout () -> $scope.$broadcast "review-panel:layout" From 76328ff93f2292eb1e59ea7ebe9dc70197cbcfd1 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 15:12:59 +0100 Subject: [PATCH 163/204] Tell other clients when threads are deleted --- .../review-panel/controllers/ReviewPanelController.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 45b2e7294e..ac687386f8 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -66,6 +66,10 @@ define [ ide.socket.on "reopen-thread", (thread_id) -> _onCommentReopened(thread_id) + ide.socket.on "delete-thread", (thread_id) -> + _onThreadDeleted(thread_id) + $scope.$apply () -> + ide.socket.on "edit-message", (thread_id, message_id, content) -> _onCommentEdited(thread_id, message_id, content) $scope.$apply () -> @@ -372,6 +376,7 @@ define [ _onThreadDeleted = (thread_id) -> delete $scope.reviewPanel.resolvedThreadIds[thread_id] delete $scope.reviewPanel.commentThreads[thread_id] + $scope.$broadcast "comment:remove", thread_id _onCommentEdited = (thread_id, comment_id, content) -> thread = getThread(thread_id) @@ -396,7 +401,6 @@ define [ 'X-CSRF-Token': window.csrfToken } }) - $scope.$broadcast "comment:remove", entry_id event_tracking.sendMB "rp-comment-delete" $scope.saveEdit = (thread_id, comment) -> From ce89714a48d9fa6e5ebbbb8626107d6fea1f44bd Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 26 Jan 2017 14:35:01 +0000 Subject: [PATCH 164/204] Emit event when textarea resizes; capture it in the review panel and trigger reflow. --- .../web/public/coffee/directives/expandableTextArea.coffee | 1 + .../ide/review-panel/controllers/ReviewPanelController.coffee | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/services/web/public/coffee/directives/expandableTextArea.coffee b/services/web/public/coffee/directives/expandableTextArea.coffee index 58f8ce13ae..d0bfa9cb99 100644 --- a/services/web/public/coffee/directives/expandableTextArea.coffee +++ b/services/web/public/coffee/directives/expandableTextArea.coffee @@ -9,6 +9,7 @@ define [ fitHeight = el.prop("scrollHeight") if fitHeight > curHeight and el.val() != "" + scope.$emit "expandable-text-area:resize" el.css("height", fitHeight) scope.$watch (() -> el.val()), resetHeight diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 5dc2cd3715..1a1a37cf21 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -33,6 +33,10 @@ define [ $scope.$on "layout:pdf:resize", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) + $scope.$on "expandable-text-area:resize", (event) -> + $timeout () -> + $scope.$broadcast "review-panel:layout" + $scope.$watch "ui.pdfLayout", (layout) -> $scope.reviewPanel.layoutToLeft = (layout == "flat") From 0479b01b9d641ccc1a8e78ea31dba804d3c1c1f7 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 16:04:08 +0100 Subject: [PATCH 165/204] Jump to code when clicking on review panel entries --- .../views/project/editor/review-panel.jade | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 9b31516b3f..1ef55c19c5 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -50,6 +50,7 @@ on-reject="rejectChange(entry_id);" on-accept="acceptChange(entry_id);" on-indicator-click="toggleReviewPanel();" + ng-click="gotoEntry(editor.open_doc_id, entry)" permissions="permissions" ) @@ -62,6 +63,7 @@ on-indicator-click="toggleReviewPanel();" on-save-edit="saveEdit(entry.thread_id, comment)" on-delete="deleteComment(entry.thread_id, comment)" + ng-click="gotoEntry(editor.open_doc_id, entry)" permissions="permissions" ng-if="!reviewPanel.loadingThreads" ) @@ -150,28 +152,28 @@ script(type='text/ng-template', id='changeEntryTemplate') i.rp-icon-delete(ng-switch-when="delete") .rp-entry-details .rp-entry-description(ng-switch="entry.type") - span(ng-switch-when="insert") Added  + span(ng-switch-when="insert", stop-propagation="click") Added  ins.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} a.rp-collapse-toggle( href ng-if="needsCollapsing" ng-click="toggleCollapse();" ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} - span(ng-switch-when="delete") Deleted  + span(ng-switch-when="delete", stop-propagation="click") Deleted  del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} a.rp-collapse-toggle( href ng-if="needsCollapsing" ng-click="toggleCollapse();" ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} - .rp-entry-metadata + .rp-entry-metadata(stop-propagation="click") | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} .rp-entry-actions(ng-if="permissions.write") - a.rp-entry-button(href, ng-click="onReject();") + a.rp-entry-button(href, ng-click="onReject();", stop-propagation="click") i.fa.fa-times |  Reject - a.rp-entry-button(href, ng-click="onAccept();") + a.rp-entry-button(href, ng-click="onAccept();", stop-propagation="click") i.fa.fa-check |  Accept @@ -196,7 +198,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ng-repeat="comment in threads[entry.thread_id].messages track by comment.id" ) p.rp-comment-content - span(ng-if="!comment.editing") + span(ng-if="!comment.editing", stop-propagation="click") span.rp-entry-user( style="color: hsl({{ comment.user.hue }}, 70%, 40%);", ) {{ comment.user.name }}:  @@ -214,16 +216,16 @@ script(type='text/ng-template', id='commentEntryTemplate') span(ng-if="!comment.deleting") {{ comment.timestamp | date : 'MMM d, y h:mm a' }} span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") |  •  - a(href, ng-click="startEditing(comment)") Edit + a(href, ng-click="startEditing(comment)", stop-propagation="click") Edit span(ng-if="threads[entry.thread_id].messages.length > 1") |  •  - a(href, ng-click="confirmDelete(comment)") Delete + a(href, ng-click="confirmDelete(comment)", stop-propagation="click") Delete span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") | Are you sure? | •  - a(href, ng-click="doDelete(comment)") Delete + a(href, ng-click="doDelete(comment)", stop-propagation="click") Delete |  •  - a(href, ng-click="cancelDelete(comment)") Cancel + a(href, ng-click="cancelDelete(comment)", stop-propagation="click") Cancel .rp-loading(ng-if="threads[entry.thread_id].submitting") i.fa.fa-spinner.fa-spin @@ -239,6 +241,7 @@ script(type='text/ng-template', id='commentEntryTemplate') button.rp-entry-button( ng-click="animateAndCallOnResolve();" ng-if="permissions.comment && permissions.write" + stop-propagation="click" ) i.fa.fa-inbox |  Resolve @@ -246,6 +249,7 @@ script(type='text/ng-template', id='commentEntryTemplate') ng-click="onReply();" ng-if="permissions.comment" ng-disabled="!entry.replyContent.length" + stop-propagation="click" ) i.fa.fa-reply |  Reply From 68aab6e05cf196afd49263c07227660565123692 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 16:13:21 +0100 Subject: [PATCH 166/204] Don't use code check on .bib files --- .../web/public/coffee/ide/editor/directives/aceEditor.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 41c70b4dee..248d8bec38 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -279,7 +279,7 @@ define [ session.setUseWrapMode(true) # use syntax validation only when explicitly set - if scope.syntaxValidation? and syntaxValidationEnabled + if scope.syntaxValidation? and syntaxValidationEnabled and !scope.fileName.match(/\.bib$/) session.setOption("useWorker", scope.syntaxValidation); # now attach session to editor From 15ad3f476905cef1e30981d439a92591a9476ce0 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 26 Jan 2017 16:11:02 +0000 Subject: [PATCH 167/204] Avoid stopping propagation, check event target instead. --- .../views/project/editor/review-panel.jade | 28 +++++++++---------- .../directives/changeEntry.coffee | 5 ++++ .../directives/commentEntry.coffee | 5 ++++ 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 1ef55c19c5..0e71858ffb 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -50,7 +50,7 @@ on-reject="rejectChange(entry_id);" on-accept="acceptChange(entry_id);" on-indicator-click="toggleReviewPanel();" - ng-click="gotoEntry(editor.open_doc_id, entry)" + on-body-click="gotoEntry(editor.open_doc_id, entry)" permissions="permissions" ) @@ -63,7 +63,7 @@ on-indicator-click="toggleReviewPanel();" on-save-edit="saveEdit(entry.thread_id, comment)" on-delete="deleteComment(entry.thread_id, comment)" - ng-click="gotoEntry(editor.open_doc_id, entry)" + on-body-click="gotoEntry(editor.open_doc_id, entry)" permissions="permissions" ng-if="!reviewPanel.loadingThreads" ) @@ -152,28 +152,28 @@ script(type='text/ng-template', id='changeEntryTemplate') i.rp-icon-delete(ng-switch-when="delete") .rp-entry-details .rp-entry-description(ng-switch="entry.type") - span(ng-switch-when="insert", stop-propagation="click") Added  + span(ng-switch-when="insert") Added  ins.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} a.rp-collapse-toggle( href ng-if="needsCollapsing" ng-click="toggleCollapse();" ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} - span(ng-switch-when="delete", stop-propagation="click") Deleted  + span(ng-switch-when="delete") Deleted  del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }} a.rp-collapse-toggle( href ng-if="needsCollapsing" ng-click="toggleCollapse();" ) {{ isCollapsed ? '... (show all)' : ' (show less)' }} - .rp-entry-metadata(stop-propagation="click") + .rp-entry-metadata | {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} •  span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} .rp-entry-actions(ng-if="permissions.write") - a.rp-entry-button(href, ng-click="onReject();", stop-propagation="click") + a.rp-entry-button(href, ng-click="onReject();") i.fa.fa-times |  Reject - a.rp-entry-button(href, ng-click="onAccept();", stop-propagation="click") + a.rp-entry-button(href, ng-click="onAccept();") i.fa.fa-check |  Accept @@ -193,12 +193,12 @@ script(type='text/ng-template', id='commentEntryTemplate') .rp-loading(ng-if="!threads[entry.thread_id].submitting && (!threads[entry.thread_id] || threads[entry.thread_id].messages.length == 0)") | No comments - div + .rp-comment-loaded .rp-comment( ng-repeat="comment in threads[entry.thread_id].messages track by comment.id" ) p.rp-comment-content - span(ng-if="!comment.editing", stop-propagation="click") + span(ng-if="!comment.editing") span.rp-entry-user( style="color: hsl({{ comment.user.hue }}, 70%, 40%);", ) {{ comment.user.name }}:  @@ -216,16 +216,16 @@ script(type='text/ng-template', id='commentEntryTemplate') span(ng-if="!comment.deleting") {{ comment.timestamp | date : 'MMM d, y h:mm a' }} span.rp-comment-actions(ng-if="comment.user.isSelf && !comment.deleting") |  •  - a(href, ng-click="startEditing(comment)", stop-propagation="click") Edit + a(href, ng-click="startEditing(comment)") Edit span(ng-if="threads[entry.thread_id].messages.length > 1") |  •  - a(href, ng-click="confirmDelete(comment)", stop-propagation="click") Delete + a(href, ng-click="confirmDelete(comment)") Delete span.rp-confim-delete(ng-if="comment.user.isSelf && comment.deleting") | Are you sure? | •  - a(href, ng-click="doDelete(comment)", stop-propagation="click") Delete + a(href, ng-click="doDelete(comment)") Delete |  •  - a(href, ng-click="cancelDelete(comment)", stop-propagation="click") Cancel + a(href, ng-click="cancelDelete(comment)") Cancel .rp-loading(ng-if="threads[entry.thread_id].submitting") i.fa.fa-spinner.fa-spin @@ -241,7 +241,6 @@ script(type='text/ng-template', id='commentEntryTemplate') button.rp-entry-button( ng-click="animateAndCallOnResolve();" ng-if="permissions.comment && permissions.write" - stop-propagation="click" ) i.fa.fa-inbox |  Resolve @@ -249,7 +248,6 @@ script(type='text/ng-template', id='commentEntryTemplate') ng-click="onReply();" ng-if="permissions.comment" ng-disabled="!entry.replyContent.length" - stop-propagation="click" ) i.fa.fa-reply |  Reply diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index 96f5e50016..d7bdabdc42 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -11,11 +11,16 @@ define [ onAccept: "&" onReject: "&" onIndicatorClick: "&" + onBodyClick: "&" link: (scope, element, attrs) -> scope.contentLimit = 40 scope.isCollapsed = true scope.needsCollapsing = false + element.on "click", (e) -> + if $(e.target).is('.rp-entry, .rp-entry-description, .rp-entry-body') + scope.onBodyClick() + scope.toggleCollapse = () -> scope.isCollapsed = !scope.isCollapsed $timeout () -> diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee index 7c7811d553..b2f09c96af 100644 --- a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -13,10 +13,15 @@ define [ onIndicatorClick: "&" onSaveEdit: "&" onDelete: "&" + onBodyClick: "&" link: (scope, element, attrs) -> scope.state = animating: false + element.on "click", (e) -> + if $(e.target).is('.rp-entry, .rp-comment-loaded, .rp-comment-content, .rp-comment-reply, .rp-entry-metadata') + scope.onBodyClick() + scope.handleCommentReplyKeyPress = (ev) -> if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey ev.preventDefault() From b086d7afa246d7997759e4f365614c73d85b2e18 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 27 Jan 2017 16:26:58 +0100 Subject: [PATCH 168/204] Refactor rate limiting code around sending invites --- .../CollaboratorsInviteController.coffee | 57 ++++---- .../CollaboratorsInviteHandler.coffee | 2 +- .../Collaborators/CollaboratorsRouter.coffee | 4 +- .../coffee/Features/Email/EmailBuilder.coffee | 8 +- .../Subscription/LimitationsManager.coffee | 21 +-- .../CollaboratorsInviteControllerTests.coffee | 123 ++++++++++-------- .../LimitationsManagerTests.coffee | 35 ++++- 7 files changed, 149 insertions(+), 101 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index 1fde81f5c9..a2314da57f 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -23,7 +23,7 @@ module.exports = CollaboratorsInviteController = return next(err) res.json({invites: invites}) - _checkShouldInviteEmail: (sendingUser, email, callback=(err, shouldAllowInvite)->) -> + _checkShouldInviteEmail: (email, callback=(err, shouldAllowInvite)->) -> if Settings.restrictInvitesToExistingAccounts == true logger.log {email}, "checking if user exists with this email" UserGetter.getUser {email: email}, {_id: 1}, (err, user) -> @@ -31,19 +31,20 @@ module.exports = CollaboratorsInviteController = userExists = user? and user?._id? callback(null, userExists) else - UserGetter.getUser sendingUser._id, {features:1, _id:1}, (err, user)-> - if err? - return callback(err) - collabLimit = user?.features?.collaborators || 1 - if collabLimit == -1 - collabLimit = 20 - collabLimit = collabLimit * 10 - opts = - endpointName: "invite_to_project" - timeInterval: 60 * 30 - subjectName: sendingUser._id - throttle: collabLimit - rateLimiter.addCount opts, callback + callback(null, true) + + _checkRateLimit: (user_id, callback = (error) ->) -> + LimitationsManager.allowedNumberOfCollaboratorsForUser user_id, (err, collabLimit = 1)-> + return callback(err) if err? + if collabLimit == -1 + collabLimit = 20 + collabLimit = collabLimit * 10 + opts = + endpointName: "invite-to-project-by-user-id" + timeInterval: 60 * 30 + subjectName: user_id + throttle: collabLimit + rateLimiter.addCount opts, callback inviteToProject: (req, res, next) -> projectId = req.params.Project_id @@ -64,20 +65,24 @@ module.exports = CollaboratorsInviteController = if !email? or email == "" logger.log {projectId, email, sendingUserId}, "invalid email address" return res.sendStatus(400) - CollaboratorsInviteController._checkShouldInviteEmail sendingUser, email, (err, shouldAllowInvite)-> - if err? - logger.err {err, email, projectId, sendingUserId}, "error checking if we can invite this email address" - return next(err) - if !shouldAllowInvite - logger.log {email, projectId, sendingUserId}, "not allowed to send an invite to this email address" - return res.json {invite: null, error: 'cannot_invite_non_user'} - CollaboratorsInviteHandler.inviteToProject projectId, sendingUser, email, privileges, (err, invite) -> + CollaboratorsInviteController._checkRateLimit sendingUserId, (error, underRateLimit) -> + return next(error) if error? + if !underRateLimit + return res.sendStatus(429) + CollaboratorsInviteController._checkShouldInviteEmail email, (err, shouldAllowInvite)-> if err? - logger.err {projectId, email, sendingUserId}, "error creating project invite" + logger.err {err, email, projectId, sendingUserId}, "error checking if we can invite this email address" return next(err) - logger.log {projectId, email, sendingUserId}, "invite created" - EditorRealTimeController.emitToRoom(projectId, 'project:membership:changed', {invites: true}) - return res.json {invite: invite} + if !shouldAllowInvite + logger.log {email, projectId, sendingUserId}, "not allowed to send an invite to this email address" + return res.json {invite: null, error: 'cannot_invite_non_user'} + CollaboratorsInviteHandler.inviteToProject projectId, sendingUser, email, privileges, (err, invite) -> + if err? + logger.err {projectId, email, sendingUserId}, "error creating project invite" + return next(err) + logger.log {projectId, email, sendingUserId}, "invite created" + EditorRealTimeController.emitToRoom(projectId, 'project:membership:changed', {invites: true}) + return res.json {invite: invite} revokeInvite: (req, res, next) -> projectId = req.params.Project_id diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee index 0e6cd8876c..ecca8ab86f 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteHandler.coffee @@ -80,7 +80,7 @@ module.exports = CollaboratorsInviteHandler = # Send email and notification in background CollaboratorsInviteHandler._sendMessages projectId, sendingUser, invite, (err) -> if err? - logger.err {projectId, email}, "error sending messages for invite" + logger.err {err, projectId, email}, "error sending messages for invite" callback(null, invite) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee index 8b130d27db..ea7e1f89f8 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsRouter.coffee @@ -22,13 +22,13 @@ module.exports = webRouter.post( '/project/:Project_id/invite', RateLimiterMiddlewear.rateLimit({ - endpointName: "invite-to-project" + endpointName: "invite-to-project-by-project-id" params: ["Project_id"] maxRequests: 100 timeInterval: 60 * 10 }), RateLimiterMiddlewear.rateLimit({ - endpointName: "invite-to-project-ip" + endpointName: "invite-to-project-by-ip" ipOnly:true maxRequests: 100 timeInterval: 60 * 10 diff --git a/services/web/app/coffee/Features/Email/EmailBuilder.coffee b/services/web/app/coffee/Features/Email/EmailBuilder.coffee index 5360adb7a8..0a06a2a175 100644 --- a/services/web/app/coffee/Features/Email/EmailBuilder.coffee +++ b/services/web/app/coffee/Features/Email/EmailBuilder.coffee @@ -97,7 +97,7 @@ Thank you templates.projectInvite = - subject: _.template "<%= project.name.slice(0, 40) %> - shared by <%= owner.email %>" + subject: _.template "<%= project.name %> - shared by <%= owner.email %>" layout: BaseWithHeaderEmailLayout type:"notification" plainTextTemplate: _.template """ @@ -111,16 +111,16 @@ Thank you """ compiledTemplate: (opts) -> SingleCTAEmailBody({ - title: "#{ opts.project.name.slice(0, 40) } – shared by #{ opts.owner.email }" + title: "#{ opts.project.name } – shared by #{ opts.owner.email }" greeting: "Hi," - message: "#{ opts.owner.email } wants to share “#{ opts.project.name.slice(0, 40) }” with you." + message: "#{ opts.owner.email } wants to share “#{ opts.project.name }” with you." secondaryMessage: null ctaText: "View project" ctaURL: opts.inviteUrl gmailGoToAction: target: opts.inviteUrl name: "View project" - description: "Join #{ opts.project.name.slice(0, 40) } at ShareLaTeX" + description: "Join #{ opts.project.name } at ShareLaTeX" }) templates.completeJoinGroupAccount = diff --git a/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee b/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee index 59a0748f36..ec29b9257a 100644 --- a/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee +++ b/services/web/app/coffee/Features/Subscription/LimitationsManager.coffee @@ -1,20 +1,25 @@ logger = require("logger-sharelatex") Project = require("../../models/Project").Project -User = require("../../models/User").User +UserGetter = require("../User/UserGetter") SubscriptionLocator = require("./SubscriptionLocator") Settings = require("settings-sharelatex") CollaboratorsHandler = require("../Collaborators/CollaboratorsHandler") CollaboratorsInvitesHandler = require("../Collaborators/CollaboratorsInviteHandler") module.exports = - allowedNumberOfCollaboratorsInProject: (project_id, callback) -> - getOwnerOfProject project_id, (error, owner)-> + Project.findById project_id, 'owner_ref', (error, project) => return callback(error) if error? - if owner.features? and owner.features.collaborators? - callback null, owner.features.collaborators + @allowedNumberOfCollaboratorsForUser project.owner_ref, callback + + allowedNumberOfCollaboratorsForUser: (user_id, callback) -> + UserGetter.getUser user_id, {features: 1}, (error, user) -> + return callback(error) if error? + if user.features? and user.features.collaborators? + callback null, user.features.collaborators else callback null, Settings.defaultPlanCode.collaborators + canAddXCollaborators: (project_id, x_collaborators, callback = (error, allowed)->) -> @allowedNumberOfCollaboratorsInProject project_id, (error, allowed_number) => @@ -63,8 +68,4 @@ module.exports = logger.log user_id:user_id, limitReached:limitReached, currentTotal: subscription.member_ids.length, membersLimit: subscription.membersLimit, "checking if subscription members limit has been reached" callback(err, limitReached, subscription) -getOwnerOfProject = (project_id, callback)-> - Project.findById project_id, 'owner_ref', (error, project) -> - return callback(error) if error? - User.findById project.owner_ref, (error, owner) -> - callback(error, owner) +getOwnerIdOfProject = (project_id, callback)-> diff --git a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee index bc1cb2e3b4..453296b3d6 100644 --- a/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Collaborators/CollaboratorsInviteControllerTests.coffee @@ -114,7 +114,8 @@ describe "CollaboratorsInviteController", -> describe 'when all goes well', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -128,7 +129,7 @@ describe "CollaboratorsInviteController", -> it 'should have called _checkShouldInviteEmail', -> @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 - @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@targetEmail).should.equal true it 'should have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1 @@ -141,7 +142,8 @@ describe "CollaboratorsInviteController", -> describe 'when the user is not allowed to add more collaborators', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, false) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -159,7 +161,8 @@ describe "CollaboratorsInviteController", -> describe 'when canAddXCollaborators produces an error', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @err = new Error('woops') @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, @err) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -178,7 +181,8 @@ describe "CollaboratorsInviteController", -> describe 'when inviteToProject produces an error', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @err = new Error('woops') @CollaboratorsInviteHandler.inviteToProject = sinon.stub().callsArgWith(4, @err) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -193,7 +197,7 @@ describe "CollaboratorsInviteController", -> it 'should have called _checkShouldInviteEmail', -> @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 - @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@targetEmail).should.equal true it 'should have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 1 @@ -202,7 +206,8 @@ describe "CollaboratorsInviteController", -> describe 'when _checkShouldInviteEmail disallows the invite', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, false) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, false) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -212,7 +217,7 @@ describe "CollaboratorsInviteController", -> it 'should have called _checkShouldInviteEmail', -> @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 - @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@targetEmail).should.equal true it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -220,7 +225,8 @@ describe "CollaboratorsInviteController", -> describe 'when _checkShouldInviteEmail produces an error', -> beforeEach -> - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, new Error('woops')) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, new Error('woops')) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -230,7 +236,7 @@ describe "CollaboratorsInviteController", -> it 'should have called _checkShouldInviteEmail', -> @CollaboratorsInviteController._checkShouldInviteEmail.callCount.should.equal 1 - @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@sendingUser, @targetEmail).should.equal true + @CollaboratorsInviteController._checkShouldInviteEmail.calledWith(@targetEmail).should.equal true it 'should not have called inviteToProject', -> @CollaboratorsInviteHandler.inviteToProject.callCount.should.equal 0 @@ -240,7 +246,8 @@ describe "CollaboratorsInviteController", -> beforeEach -> @req.session.user = {_id: 'abc', email: 'me@example.com'} @req.body.email = 'me@example.com' - @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, true) @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) @CollaboratorsInviteController.inviteToProject @req, @res, @next @@ -261,6 +268,22 @@ describe "CollaboratorsInviteController", -> it 'should not have called emitToRoom', -> @EditorRealTimeController.emitToRoom.callCount.should.equal 0 + describe 'when _checkRateLimit returns false', -> + + beforeEach -> + @CollaboratorsInviteController._checkShouldInviteEmail = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit = sinon.stub().yields(null, false) + @LimitationsManager.canAddXCollaborators = sinon.stub().callsArgWith(2, null, true) + @CollaboratorsInviteController.inviteToProject @req, @res, @next + + it 'should send a 429 response', -> + @res.sendStatus.calledWith(429).should.equal true + + it 'should not call inviteToProject', -> + @CollaboratorsInviteHandler.inviteToProject.called.should.equal false + + it 'should not call emitToRoom', -> + @EditorRealTimeController.emitToRoom.called.should.equal false describe "viewInvite", -> @@ -679,13 +702,12 @@ describe "CollaboratorsInviteController", -> beforeEach -> @email = 'user@example.com' - describe 'when we should be restricting to existing accounts', -> beforeEach -> @settings.restrictInvitesToExistingAccounts = true @call = (callback) => - @CollaboratorsInviteController._checkShouldInviteEmail {}, @email, callback + @CollaboratorsInviteController._checkShouldInviteEmail @email, callback describe 'when user account is present', -> @@ -730,46 +752,43 @@ describe "CollaboratorsInviteController", -> expect(shouldAllow).to.equal undefined done() - describe 'when we should not be restricting on only registered users but do rate limit', -> + describe '_checkRateLimit', -> + beforeEach -> + @settings.restrictInvitesToExistingAccounts = false + @sendingUserId = "32312313" + @LimitationsManager.allowedNumberOfCollaboratorsForUser = sinon.stub() + @LimitationsManager.allowedNumberOfCollaboratorsForUser.withArgs(@sendingUserId).yields(null, 17) - beforeEach -> - @settings.restrictInvitesToExistingAccounts = false - @sendingUser = - _id:"32312313" - features: - collaborators:17.8 - @UserGetter.getUser = sinon.stub().callsArgWith(2, null, @sendingUser) + it 'should callback with `true` when rate limit under', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit @sendingUserId, (err, result)=> + @RateLimiter.addCount.called.should.equal true + result.should.equal true + done() - it 'should callback with `true` when rate limit under', (done) -> - @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> - @RateLimiter.addCount.called.should.equal true - result.should.equal true - done() + it 'should callback with `false` when rate limit hit', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, false) + @CollaboratorsInviteController._checkRateLimit @sendingUserId, (err, result)=> + @RateLimiter.addCount.called.should.equal true + result.should.equal false + done() + + it 'should call rate limiter with 10x the collaborators', (done) -> + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit @sendingUserId, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(170) + done() - it 'should callback with `false` when rate limit hit', (done) -> - @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, false) - @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> - @RateLimiter.addCount.called.should.equal true - result.should.equal false - done() - - it 'should call rate limiter with 10x the collaborators', (done) -> - @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> - @RateLimiter.addCount.args[0][0].throttle.should.equal(178) - done() + it 'should call rate limiter with 200 when collaborators is -1', (done) -> + @LimitationsManager.allowedNumberOfCollaboratorsForUser.withArgs(@sendingUserId).yields(null, -1) + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit @sendingUserId, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(200) + done() - it 'should call rate limiter with 200 when collaborators is -1', (done) -> - @sendingUser.features.collaborators = -1 - @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> - @RateLimiter.addCount.args[0][0].throttle.should.equal(200) - done() - - it 'should call rate limiter with 10 when user has no collaborators set', (done) -> - delete @sendingUser.features - @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) - @CollaboratorsInviteController._checkShouldInviteEmail @sendingUser, @email, (err, result)=> - @RateLimiter.addCount.args[0][0].throttle.should.equal(10) - done() \ No newline at end of file + it 'should call rate limiter with 10 when user has no collaborators set', (done) -> + @LimitationsManager.allowedNumberOfCollaboratorsForUser.withArgs(@sendingUserId).yields(null) + @RateLimiter.addCount = sinon.stub().callsArgWith(1, null, true) + @CollaboratorsInviteController._checkRateLimit @sendingUserId, (err, result)=> + @RateLimiter.addCount.args[0][0].throttle.should.equal(10) + done() \ No newline at end of file diff --git a/services/web/test/UnitTests/coffee/Subscription/LimitationsManagerTests.coffee b/services/web/test/UnitTests/coffee/Subscription/LimitationsManagerTests.coffee index 93f00afad5..f81433e156 100644 --- a/services/web/test/UnitTests/coffee/Subscription/LimitationsManagerTests.coffee +++ b/services/web/test/UnitTests/coffee/Subscription/LimitationsManagerTests.coffee @@ -6,17 +6,17 @@ Settings = require("settings-sharelatex") describe "LimitationsManager", -> beforeEach -> - @project = { _id: "project-id" } - @user = { _id: "user-id", features:{} } + @project = { _id: @project_id = "project-id" } + @user = { _id: @user_id = "user-id", features:{} } @Project = findById: (project_id, fields, callback) => if project_id == @project_id callback null, @project else callback null, null - @User = - findById: (user_id, callback) => - if user_id == @user.id + @UserGetter = + getUser: (user_id, filter, callback) => + if user_id == @user_id callback null, @user else callback null, null @@ -26,7 +26,7 @@ describe "LimitationsManager", -> @LimitationsManager = SandboxedModule.require modulePath, requires: '../../models/Project' : Project: @Project - '../../models/User' : User: @User + '../User/UserGetter' : @UserGetter './SubscriptionLocator':@SubscriptionLocator 'settings-sharelatex' : @Settings = {} "../Collaborators/CollaboratorsHandler": @CollaboratorsHandler = {} @@ -37,6 +37,7 @@ describe "LimitationsManager", -> describe "when the project is owned by a user without a subscription", -> beforeEach -> @Settings.defaultPlanCode = collaborators: 23 + @project.owner_ref = @user_id delete @user.features @callback = sinon.stub() @LimitationsManager.allowedNumberOfCollaboratorsInProject(@project_id, @callback) @@ -46,6 +47,7 @@ describe "LimitationsManager", -> describe "when the project is owned by a user with a subscription", -> beforeEach -> + @project.owner_ref = @user_id @user.features = collaborators: 21 @callback = sinon.stub() @@ -53,6 +55,27 @@ describe "LimitationsManager", -> it "should return the number of collaborators the user is allowed", -> @callback.calledWith(null, @user.features.collaborators).should.equal true + + describe "allowedNumberOfCollaboratorsForUser", -> + describe "when the user has no features", -> + beforeEach -> + @Settings.defaultPlanCode = collaborators: 23 + delete @user.features + @callback = sinon.stub() + @LimitationsManager.allowedNumberOfCollaboratorsForUser(@user_id, @callback) + + it "should return the default number", -> + @callback.calledWith(null, @Settings.defaultPlanCode.collaborators).should.equal true + + describe "when the user has features", -> + beforeEach -> + @user.features = + collaborators: 21 + @callback = sinon.stub() + @LimitationsManager.allowedNumberOfCollaboratorsForUser(@user_id, @callback) + + it "should return the number of collaborators the user is allowed", -> + @callback.calledWith(null, @user.features.collaborators).should.equal true describe "canAddXCollaborators", -> beforeEach -> From d9b774bb9b02e8c3cd2f08bac8fea6d9c9ca53fe Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 27 Jan 2017 17:12:17 +0100 Subject: [PATCH 169/204] Sycn track changes based on doc state, not editor state --- services/web/public/coffee/ide/editor/Document.coffee | 3 +++ services/web/public/coffee/ide/editor/EditorManager.coffee | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/editor/Document.coffee b/services/web/public/coffee/ide/editor/Document.coffee index 9d7eca813a..1de01b5467 100644 --- a/services/web/public/coffee/ide/editor/Document.coffee +++ b/services/web/public/coffee/ide/editor/Document.coffee @@ -84,6 +84,9 @@ define [ setTrackingChanges: (track_changes) -> @doc.track_changes = track_changes + getTrackingChanges: () -> + !!@doc.track_changes + setTrackChangesIdSeeds: (id_seeds) -> @doc.track_changes_id_seeds = id_seeds diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 22fcef1a69..9b658ac87b 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -162,7 +162,7 @@ define [ @_syncTimeout = null want = @$scope.editor.wantTrackChanges - have = @$scope.editor.trackChanges + have = doc.getTrackingChanges() if want == have return From 30618d33db61295a9c0c9f2467a80a25fe74abb7 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 27 Jan 2017 17:13:11 +0100 Subject: [PATCH 170/204] Add in extra check to set ui state --- services/web/public/coffee/ide/editor/EditorManager.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 9b658ac87b..3b6672fae8 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -164,6 +164,7 @@ define [ want = @$scope.editor.wantTrackChanges have = doc.getTrackingChanges() if want == have + @$scope.editor.trackChanges = want return do tryToggle = () => From 9663df3457b68fc539d2e6fefdd458a98ddc3988 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 30 Jan 2017 16:00:32 +0100 Subject: [PATCH 171/204] Jump to text when clicking change icon as well --- .../coffee/ide/review-panel/directives/changeEntry.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index d7bdabdc42..9dc1ef2a37 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -18,7 +18,7 @@ define [ scope.needsCollapsing = false element.on "click", (e) -> - if $(e.target).is('.rp-entry, .rp-entry-description, .rp-entry-body') + if $(e.target).is('.rp-entry, .rp-entry-description, .rp-entry-body, .rp-entry-action-icon i') scope.onBodyClick() scope.toggleCollapse = () -> From 21986694d8eb4ae8b5a794cbaeeac4d547a01250 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 30 Jan 2017 15:13:03 +0000 Subject: [PATCH 172/204] update gitignore --- services/web/modules/.gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/web/modules/.gitignore b/services/web/modules/.gitignore index b90beee9f7..1d30263cb3 100644 --- a/services/web/modules/.gitignore +++ b/services/web/modules/.gitignore @@ -2,3 +2,11 @@ */test/unit/js */index.js ldap +admin-panel +groovehq +launchpad +learn-wiki +references-search +sharelatex-saml +templates +tpr-webmodule From b0dd7475b0e1cd779c634998f689f39a9bd4a89b Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 31 Jan 2017 14:57:22 +0000 Subject: [PATCH 173/204] fix pug syntax --- services/web/app/views/admin/index.pug | 4 ++-- services/web/app/views/contact-us-modal.pug | 10 +++++----- services/web/app/views/layout.pug | 2 +- services/web/app/views/layout/footer.pug | 6 +++--- services/web/app/views/layout/navbar.pug | 2 +- .../web/app/views/project/editor/chat.pug | 2 +- .../web/app/views/project/editor/editor.pug | 6 +++--- .../app/views/project/editor/file-tree.pug | 12 +++++------ .../web/app/views/project/editor/header.pug | 6 +++--- .../app/views/project/editor/left-menu.pug | 6 +++--- services/web/app/views/project/editor/pdf.pug | 14 ++++++------- .../web/app/views/project/editor/share.pug | 6 +++--- .../web/app/views/project/invite/show.pug | 6 +++--- .../app/views/project/list/project-list.pug | 8 ++++---- services/web/app/views/referal/bonus.pug | 12 +++++------ services/web/app/views/restore.pug | 4 ++-- services/web/app/views/scribtex-modal.pug | 2 +- services/web/app/views/sentry.pug | 6 +++--- .../web/app/views/subscriptions/dashboard.pug | 20 +++++++++---------- services/web/app/views/subscriptions/new.pug | 2 +- .../views/subscriptions/upgradeToAnnual.pug | 2 +- services/web/app/views/user/activate.pug | 2 +- services/web/app/views/user/login.pug | 2 +- services/web/app/views/user/settings.pug | 2 +- 24 files changed, 72 insertions(+), 72 deletions(-) diff --git a/services/web/app/views/admin/index.pug b/services/web/app/views/admin/index.pug index 0fa9017cc1..050829e9d7 100644 --- a/services/web/app/views/admin/index.pug +++ b/services/web/app/views/admin/index.pug @@ -28,10 +28,10 @@ block content tab(heading="Open Sockets") .row-spaced ul - -each agents, url in openSockets + each agents, url in openSockets li #{url} - total : #{agents.length} ul - -each agent in agents + each agent in agents li #{agent} tab(heading="Close Editor") diff --git a/services/web/app/views/contact-us-modal.pug b/services/web/app/views/contact-us-modal.pug index f4fd8938b7..d3e5aa0e87 100644 --- a/services/web/app/views/contact-us-modal.pug +++ b/services/web/app/views/contact-us-modal.pug @@ -24,10 +24,10 @@ script(type='text/ng-template', id='supportModalTemplate') a.contact-suggestion-list-item(ng-href="{{ suggestion.url }}", ng-click="clickSuggestionLink(suggestion.url);" target="_blank") span(ng-bind-html="suggestion.name") i.fa.fa-angle-right - label.desc(ng-show="'#{getUserEmail()}'.length < 1") + label.desc(ng-show="'"+getUserEmail()+"'.length < 1") | #{translate("email")} - .form-group(ng-show="'#{getUserEmail()}'.length < 1") - input.field.text.medium.span8.form-control(ng-model="form.email", ng-init="form.email = '#{getUserEmail()}'", type='email', spellcheck='false', value='', maxlength='255', tabindex='2') + .form-group(ng-show="'"+getUserEmail()+"'.length < 1") + input.field.text.medium.span8.form-control(ng-model="form.email", ng-init="form.email = '"+getUserEmail()+"'", type='email', spellcheck='false', value='', maxlength='255', tabindex='2') label#title12.desc | #{translate("project_url")} (#{translate("optional")}) .form-group @@ -37,6 +37,6 @@ script(type='text/ng-template', id='supportModalTemplate') .form-group textarea.field.text.medium.span8.form-control(ng-model="form.message",type='text', value='', tabindex='4', onkeyup='') .form-group.text-center - input.btn-success.btn.btn-lg(type='submit', ng-disabled="sending", ng-click="contactUs()" value='#{translate("contact_us")}') + input.btn-success.btn.btn-lg(type='submit', ng-disabled="sending", ng-click="contactUs()" value=translate("contact_us")) span(ng-show="sent") - p #{translate("request_sent_thank_you")} \ No newline at end of file + p #{translate("request_sent_thank_you")} diff --git a/services/web/app/views/layout.pug b/services/web/app/views/layout.pug index 8f4d1263db..7276c0ae5c 100644 --- a/services/web/app/views/layout.pug +++ b/services/web/app/views/layout.pug @@ -30,7 +30,7 @@ html(itemscope, itemtype='http://schema.org/Product') meta(itemprop="name", content="ShareLaTeX, the Online LaTeX Editor") -if (typeof(meta) == "undefined") - meta(itemprop="description", name="description", content='#{translate("site_description")}') + meta(itemprop="description", name="description", content=translate("site_description")) -else meta(itemprop="description", name="description" , content=meta) diff --git a/services/web/app/views/layout/footer.pug b/services/web/app/views/layout/footer.pug index efd64b6f6e..62a98ecfaa 100644 --- a/services/web/app/views/layout/footer.pug +++ b/services/web/app/views/layout/footer.pug @@ -13,9 +13,9 @@ footer.site-footer data-toggle="dropdown", aria-haspopup="true", aria-expanded="false", - tooltip="#{translate('language')}" + tooltip=translate('language') ) - figure(class="sprite-icon sprite-icon-lang sprite-icon-#{currentLngCode}") + figure(class="sprite-icon sprite-icon-lang sprite-icon-"+currentLngCode) ul.dropdown-menu(role="menu") li.dropdown-header #{translate("language")} @@ -23,7 +23,7 @@ footer.site-footer if !subdomainDetails.hide li.lngOption a.menu-indent(href=subdomainDetails.url+currentUrl) - figure(class="sprite-icon sprite-icon-lang sprite-icon-#{subdomainDetails.lngCode}") + figure(class="sprite-icon sprite-icon-lang sprite-icon-"+subdomainDetails.lngCode) | #{translate(subdomainDetails.lngCode)} //- img(src="/img/flags/24/.png") each item in nav.left_footer diff --git a/services/web/app/views/layout/navbar.pug b/services/web/app/views/layout/navbar.pug index 4d78d02fba..54509d6565 100644 --- a/services/web/app/views/layout/navbar.pug +++ b/services/web/app/views/layout/navbar.pug @@ -4,7 +4,7 @@ nav.navbar.navbar-default button.navbar-toggle(ng-init="navCollapsed = true", ng-click="navCollapsed = !navCollapsed", ng-class="{active: !navCollapsed}") i.fa.fa-bars if settings.nav.custom_logo - a(href='/', style='background-image:url("#{settings.nav.custom_logo}")').navbar-brand + a(href='/', style='background-image:url("'+settings.nav.custom_logo+'")').navbar-brand else if (nav.title) a(href='/').navbar-title #{nav.title} else diff --git a/services/web/app/views/project/editor/chat.pug b/services/web/app/views/project/editor/chat.pug index 47a1752834..fcd47a81e3 100644 --- a/services/web/app/views/project/editor/chat.pug +++ b/services/web/app/views/project/editor/chat.pug @@ -50,7 +50,7 @@ aside.chat( .new-message textarea( - placeholder="#{translate('your_message')}...", + placeholder=translate('your_message')+"...", on-enter="sendMessage()", ng-model="newMessageContent", ng-click="resetUnreadMessages()" diff --git a/services/web/app/views/project/editor/editor.pug b/services/web/app/views/project/editor/editor.pug index bcb778fda4..98a2840069 100644 --- a/services/web/app/views/project/editor/editor.pug +++ b/services/web/app/views/project/editor/editor.pug @@ -70,7 +70,7 @@ div.full-size( ng-controller="PdfSynctexController" ) a.btn.btn-default.btn-xs( - tooltip="#{translate('go_to_code_location_in_pdf')}" + tooltip=translate('go_to_code_location_in_pdf') tooltip-placement="right" tooltip-append-to-body="true" ng-click="syncToPdf()" @@ -78,7 +78,7 @@ div.full-size( i.fa.fa-long-arrow-right br a.btn.btn-default.btn-xs( - tooltip-html="'#{translate('go_to_pdf_location_in_code')}'" + tooltip-html="'"+translate('go_to_pdf_location_in_code')+"'" tooltip-placement="right" tooltip-append-to-body="true" ng-click="syncToCode()" @@ -90,4 +90,4 @@ div.full-size( ng-show="ui.view == 'pdf'" ) include ./pdf - \ No newline at end of file + diff --git a/services/web/app/views/project/editor/file-tree.pug b/services/web/app/views/project/editor/file-tree.pug index 92af8b627d..03c2bd79b7 100644 --- a/services/web/app/views/project/editor/file-tree.pug +++ b/services/web/app/views/project/editor/file-tree.pug @@ -3,21 +3,21 @@ aside#file-tree(ng-controller="FileTreeController", ng-class="{ 'multi-selected' a( href, ng-click="openNewDocModal()", - tooltip-html="'#{translate('new_file').replace(' ', '
')}'", + tooltip-html="'"+translate('new_file').replace(' ', '
')+"'", tooltip-placement="bottom" ) i.fa.fa-file a( href, ng-click="openNewFolderModal()", - tooltip-html="'#{translate('new_folder').replace(' ', '
')}'", + tooltip-html="'"+translate('new_folder').replace(' ', '
')+"'", tooltip-placement="bottom" ) i.fa.fa-folder a( href, ng-click="openUploadFileModal()", - tooltip="#{translate('upload')}", + tooltip=translate('upload'), tooltip-placement="bottom" ) i.fa.fa-upload @@ -26,7 +26,7 @@ aside#file-tree(ng-controller="FileTreeController", ng-class="{ 'multi-selected' a( href, ng-click="startRenamingSelected()", - tooltip="#{translate('rename')}", + tooltip=translate('rename'), tooltip-placement="bottom", ng-show="multiSelectedCount == 0" ) @@ -34,7 +34,7 @@ aside#file-tree(ng-controller="FileTreeController", ng-class="{ 'multi-selected' a( href, ng-click="openDeleteModalForSelected()", - tooltip="#{translate('delete')}", + tooltip=translate('delete'), tooltip-placement="bottom", tooltip-append-to-body="true" ) @@ -431,4 +431,4 @@ script(type='text/ng-template', id='invalidFileNameModalTemplate') .modal-footer button.btn.btn-default( ng-click="$close()" - ) #{translate('ok')} \ No newline at end of file + ) #{translate('ok')} diff --git a/services/web/app/views/project/editor/header.pug b/services/web/app/views/project/editor/header.pug index 601b18e9cf..475ba1da52 100644 --- a/services/web/app/views/project/editor/header.pug +++ b/services/web/app/views/project/editor/header.pug @@ -45,7 +45,7 @@ header.toolbar.toolbar-header.toolbar-with-labels( ng-if="permissions.admin", href='#', tooltip-placement="bottom", - tooltip="#{translate('rename')}", + tooltip=translate('rename'), tooltip-append-to-body="true", ng-click="startRenaming()", ng-show="!state.renaming" @@ -71,7 +71,7 @@ header.toolbar.toolbar-header.toolbar-with-labels( span.dropdown(dropdown, ng-if="onlineUsersArray.length >= 4") span.online-user.online-user-multi( dropdown-toggle, - tooltip="#{translate('connected_users')}", + tooltip=translate('connected_users'), tooltip-placement="left" ) strong {{ onlineUsersArray.length }} @@ -121,4 +121,4 @@ header.toolbar.toolbar-header.toolbar-with-labels( span.label.label-info( ng-show="unreadMessages > 0" ) {{ unreadMessages }} - p.toolbar-label #{translate("chat")} \ No newline at end of file + p.toolbar-label #{translate("chat")} diff --git a/services/web/app/views/project/editor/left-menu.pug b/services/web/app/views/project/editor/left-menu.pug index 80d5c606ab..4e86b31620 100644 --- a/services/web/app/views/project/editor/left-menu.pug +++ b/services/web/app/views/project/editor/left-menu.pug @@ -24,7 +24,7 @@ aside#left-menu.full-size( | PDF div.link-disabled( ng-if="!pdf.url" - tooltip="#{translate('please_compile_pdf_before_download')}" + tooltip=translate('please_compile_pdf_before_download') tooltip-placement="bottom" ) i.fa.fa-file-pdf-o.fa-2x @@ -47,7 +47,7 @@ aside#left-menu.full-size( a(href, ng-if="pdf.url" ,ng-click="openWordCountModal()") i.fa.fa-fw.fa-eye span    #{translate("word_count")} - a.link-disabled(href, ng-if="!pdf.url" , tooltip="#{translate('please_compile_pdf_before_word_count')}") + a.link-disabled(href, ng-if="!pdf.url" , tooltip=translate('please_compile_pdf_before_word_count')) i.fa.fa-fw.fa-eye span.link-disabled    #{translate("word_count")} @@ -200,7 +200,7 @@ script(type='text/ng-template', id='wordCountModalTemplate') span   #{translate("loading")}... div.pdf-disabled( ng-if="!pdf.url" - tooltip="#{translate('please_compile_pdf_before_word_count')}" + tooltip=translate('please_compile_pdf_before_word_count') tooltip-placement="bottom" ) div(ng-if="!status.loading") diff --git a/services/web/app/views/project/editor/pdf.pug b/services/web/app/views/project/editor/pdf.pug index 074856bd7c..ba03f068a6 100644 --- a/services/web/app/views/project/editor/pdf.pug +++ b/services/web/app/views/project/editor/pdf.pug @@ -2,7 +2,7 @@ div.full-size.pdf(ng-controller="PdfController") .toolbar.toolbar-tall .btn-group( dropdown, - tooltip-html="'#{translate('recompile_pdf')} ({{modifierKey}} + Enter)'" + tooltip-html="'"+translate('recompile_pdf')+" ({{modifierKey}} + Enter)'" tooltip-class="keyboard-tooltip" tooltip-popup-delay="500" tooltip-append-to-body="true" @@ -53,7 +53,7 @@ div.full-size.pdf(ng-controller="PdfController") href ng-click="stop()" ng-show="pdf.compiling", - tooltip="#{translate('stop_compile')}" + tooltip=translate('stop_compile') tooltip-placement="bottom" ) i.fa.fa-stop() @@ -61,7 +61,7 @@ div.full-size.pdf(ng-controller="PdfController") href ng-click="toggleLogs()" ng-class="{ 'active': shouldShowLogs == true }" - tooltip="#{translate('logs_and_output_files')}" + tooltip=translate('logs_and_output_files') tooltip-placement="bottom" ) i.fa.fa-file-text-o @@ -77,7 +77,7 @@ div.full-size.pdf(ng-controller="PdfController") ng-href="{{pdf.downloadUrl || pdf.url}}" target="_blank" ng-if="pdf.url" - tooltip="#{translate('download_pdf')}" + tooltip=translate('download_pdf') tooltip-placement="bottom" ) i.fa.fa-download @@ -87,7 +87,7 @@ div.full-size.pdf(ng-controller="PdfController") href, ng-click="switchToFlatLayout()" ng-show="ui.pdfLayout == 'sideBySide'" - tooltip="#{translate('full_screen')}" + tooltip=translate('full_screen') tooltip-placement="bottom" tooltip-append-to-body="true" ) @@ -96,7 +96,7 @@ div.full-size.pdf(ng-controller="PdfController") href, ng-click="switchToSideBySideLayout()" ng-show="ui.pdfLayout == 'flat'" - tooltip="#{translate('split_screen')}" + tooltip=translate('split_screen') tooltip-placement="bottom" tooltip-append-to-body="true" ) @@ -233,7 +233,7 @@ div.full-size.pdf(ng-controller="PdfController") .files-dropdown-container a.btn.btn-default.btn-sm( href, - tooltip="#{translate('clear_cached_files')}", + tooltip=translate('clear_cached_files'), tooltip-placement="top", tooltip-append-to-body="true", ng-click="openClearCacheModal()" diff --git a/services/web/app/views/project/editor/share.pug b/services/web/app/views/project/editor/share.pug index 78fb69c333..32e0404afc 100644 --- a/services/web/app/views/project/editor/share.pug +++ b/services/web/app/views/project/editor/share.pug @@ -38,7 +38,7 @@ script(type='text/ng-template', id='shareProjectModalTemplate') .col-xs-1 a( href - tooltip="#{translate('remove_collaborator')}" + tooltip=translate('remove_collaborator') tooltip-placement="bottom" ng-click="removeMember(member)" ) @@ -55,7 +55,7 @@ script(type='text/ng-template', id='shareProjectModalTemplate') .col-xs-1 a( href - tooltip="#{translate('revoke_invite')}" + tooltip=translate('revoke_invite') tooltip-placement="bottom" ng-click="revokeInvite(invite)" ) @@ -66,7 +66,7 @@ script(type='text/ng-template', id='shareProjectModalTemplate') .form-group tags-input( template="shareTagTemplate" - placeholder="#{settings.customisation.shareProjectPlaceholder || 'joe@example.com, sue@example.com, ...'}" + placeholder=settings.customisation.shareProjectPlaceholder || 'joe@example.com, sue@example.com, ...' ng-model="inputs.contacts" focus-on="open" display-property="display" diff --git a/services/web/app/views/project/invite/show.pug b/services/web/app/views/project/invite/show.pug index eed30d3d19..d129fe015d 100644 --- a/services/web/app/views/project/invite/show.pug +++ b/services/web/app/views/project/invite/show.pug @@ -20,12 +20,12 @@ block content form.form( name="acceptForm", method="POST", - action="/project/#{invite.projectId}/invite/token/#{invite.token}/accept" + action="/project/"+invite.projectId+"/invite/token/"+invite.token+"/accept" ) input(name='_csrf', type='hidden', value=csrfToken) - input(name='token', type='hidden', value="#{invite.token}") + input(name='token', type='hidden', value=invite.token) .form-group.text-center button.btn.btn-lg.btn-primary(type="submit") | #{translate("join_project")} .form-group.text-center - \ No newline at end of file + diff --git a/services/web/app/views/project/list/project-list.pug b/services/web/app/views/project/list/project-list.pug index 01007213d0..0bb93e8336 100644 --- a/services/web/app/views/project/list/project-list.pug +++ b/services/web/app/views/project/list/project-list.pug @@ -6,7 +6,7 @@ form.project-search.form-horizontal(role="form") .form-group.has-feedback.has-feedback-left.col-md-7.col-xs-12 input.form-control.col-md-7.col-xs-12( - placeholder="#{translate('search_projects')}…", + placeholder=translate('search_projects')+"…", autofocus='autofocus', ng-model="searchText.value", focus-on='search:clear', @@ -25,7 +25,7 @@ .btn-group(ng-hide="selectedProjects.length < 1") a.btn.btn-default( href, - tooltip="#{translate('download')}", + tooltip=translate('download'), tooltip-placement="bottom", tooltip-append-to-body="true", ng-click="downloadSelectedProjects()" @@ -33,7 +33,7 @@ i.fa.fa-cloud-download a.btn.btn-default( href, - tooltip="#{translate('delete')}", + tooltip=translate('delete'), tooltip-placement="bottom", tooltip-append-to-body="true", ng-click="openArchiveProjectsModal()" @@ -45,7 +45,7 @@ href, data-toggle="dropdown", dropdown-toggle, - tooltip="#{translate('add_to_folders')}", + tooltip=translate('add_to_folders'), tooltip-append-to-body="true", tooltip-placement="bottom" ) diff --git a/services/web/app/views/referal/bonus.pug b/services/web/app/views/referal/bonus.pug index 5b0183d9c1..f3a65c6bc4 100644 --- a/services/web/app/views/referal/bonus.pug +++ b/services/web/app/views/referal/bonus.pug @@ -24,7 +24,7 @@ block content .row .col-md-8.col-md-offset-2.bonus-banner .title - a(href='https://twitter.com/share?text=is%20trying%20out%20the%20online%20LaTeX%20Editor%20ShareLaTeX&url=#{encodeURIComponent(buildReferalUrl("t"))}&counturl=https://www.sharelatex.com', target="_blank").twitter Tweet + a(href='https://twitter.com/share?text=is%20trying%20out%20the%20online%20LaTeX%20Editor%20ShareLaTeX&url='+encodeURIComponent(buildReferalUrl("t"))+'&counturl=https://www.sharelatex.com', target="_blank").twitter Tweet .row .col-md-8.col-md-offset-2.bonus-banner @@ -34,12 +34,12 @@ block content .row .col-md-8.col-md-offset-2.bonus-banner .title - a(href="https://plus.google.com/share?url=#{encodeURIComponent(buildReferalUrl('gp'))}", onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;").google-plus #{translate("share_us_on_googleplus")} + a(href="https://plus.google.com/share?url="+encodeURIComponent(buildReferalUrl('gp')), onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;").google-plus #{translate("share_us_on_googleplus")} .row .col-md-8.col-md-offset-2.bonus-banner .title - a(href='mailto:?subject=Online LaTeX editor you may like &body=Hey, I have been using the online LaTeX editor ShareLaTeX recently and thought you might like to check it out. #{encodeURIComponent(buildReferalUrl("e"))}', title='Share by Email').email #{translate("email_us_to_your_friends")} + a(href='mailto:?subject=Online LaTeX editor you may like &body=Hey, I have been using the online LaTeX editor ShareLaTeX recently and thought you might like to check it out. '+encodeURIComponent(buildReferalUrl("e")), title='Share by Email').email #{translate("email_us_to_your_friends")} .row .col-md-8.col-md-offset-2.bonus-banner @@ -58,9 +58,9 @@ block content .col-md-10.col-md-offset-1.bonus-banner(style="position: relative; height: 30px; margin-top: 20px;") - for (var i = 0; i <= 10; i++) { - if (refered_user_count == i) - .number(style="left: #{i}0%").active #{i} + .number(style="left: "+i+"0%").active #{i} - else - .number(style="left: #{i}0%") #{i} + .number(style="left: "+i+"0%") #{i} - } .row.ab-bonus @@ -68,7 +68,7 @@ block content .progress - if (refered_user_count == 0) div(style="text-align: center; padding: 4px;") #{translate("spread_the_word_and_fill_bar")} - .progress-bar.progress-bar-info(style="width: #{refered_user_count}0%") + .progress-bar.progress-bar-info(style="width: "+refered_user_count+"0%") .row.ab-bonus .col-md-10.col-md-offset-1.bonus-banner(style="position: relative; height: 70px;") diff --git a/services/web/app/views/restore.pug b/services/web/app/views/restore.pug index 51c0ee03fc..1cd7ad458a 100644 --- a/services/web/app/views/restore.pug +++ b/services/web/app/views/restore.pug @@ -19,11 +19,11 @@ block content .row-fluid table.table - -each project in projects + each project in projects tr - project_id = project._id.toString() td(width="50%") #{project.name} td(width="25%") - a.btn(href="/project/#{project_id}/zip") Download latest version as Zip + a.btn(href="/project/"+project_id+"/zip") Download latest version as Zip include general/small-footer diff --git a/services/web/app/views/scribtex-modal.pug b/services/web/app/views/scribtex-modal.pug index 1d4e2ce005..3efbf19314 100644 --- a/services/web/app/views/scribtex-modal.pug +++ b/services/web/app/views/scribtex-modal.pug @@ -5,4 +5,4 @@ script(type='text/ng-template', id='scribtexModalTemplate') p ScribTeX has moved to https://scribtex.sharelatex.com. Please update your bookmarks. p(style="text-align: center") You can find the page you were looking for here: p(style="text-align: center") - a(href="https://scribtex.sharelatex.com#{scribtexPath}", style="font-size: 16px") https://scribtex.sharelatex.com#{scribtexPath} \ No newline at end of file + a(href="https://scribtex.sharelatex.com"+scribtexPath, style="font-size: 16px") https://scribtex.sharelatex.com#{scribtexPath} diff --git a/services/web/app/views/sentry.pug b/services/web/app/views/sentry.pug index 0a51686015..5399252cd9 100644 --- a/services/web/app/views/sentry.pug +++ b/services/web/app/views/sentry.pug @@ -1,12 +1,12 @@ - if (typeof(sentrySrc) != "undefined") - if (sentrySrc.match(/^([a-z]+:)?\/\//i)) - script(src="#{sentrySrc}") + script(src=sentrySrc) - else - script(src=buildJsPath("libs/#{sentrySrc}", {fingerprint:false})) + script(src=buildJsPath("libs/"+sentrySrc, {fingerprint:false})) - if (typeof(sentrySrc) != "undefined") script(type="text/javascript"). if (typeof(Raven) != "undefined" && Raven.config) { - Raven.config("#{sentryPublicDSN}", { + Raven.config(sentryPublicDSN, { tags: { 'commit': '@@COMMIT@@', 'build': '@@RELEASE@@' }, release: '@@RELEASE@@', // Ignore list based off: https://gist.github.com/1878283 diff --git a/services/web/app/views/subscriptions/dashboard.pug b/services/web/app/views/subscriptions/dashboard.pug index 3448dc9072..fb4f834c34 100644 --- a/services/web/app/views/subscriptions/dashboard.pug +++ b/services/web/app/views/subscriptions/dashboard.pug @@ -12,7 +12,7 @@ block scripts mixin printPlan(plan) -if (!plan.hideFromUsers) - tr(ng-controller="ChangePlanFormController", ng-init="plan=#{JSON.stringify(plan)}", ng-show="shouldShowPlan(plan.planCode)") + tr(ng-controller="ChangePlanFormController", ng-init="plan="+JSON.stringify(plan), ng-show="shouldShowPlan(plan.planCode)") td strong #{plan.name} td {{refreshPrice(plan.planCode)}} @@ -22,18 +22,18 @@ mixin printPlan(plan) | {{prices[plan.planCode]}} / #{translate("month")} td -if (subscription.state == "free-trial") - a(href="/user/subscription/new?planCode=#{plan.planCode}").btn.btn-success #{translate("subscribe_to_this_plan")} + a(href="/user/subscription/new?planCode="+plan.planCode).btn.btn-success #{translate("subscribe_to_this_plan")} -else if (typeof(subscription.planCode) != "undefined" && plan.planCode == subscription.planCode.split("_")[0]) button.btn.disabled #{translate("your_plan")} -else form - input(type="hidden", ng-model="plan_code", name="plan_code", value="#{plan.planCode}") + input(type="hidden", ng-model="plan_code", name="plan_code", value=plan.planCode) input(type="submit", ng-click="changePlan()", value=translate("change_to_this_plan")).btn.btn-success mixin printPlans(plans) - -each plan in plans - mixin printPlan(plan) + each plan in plans + +printPlan(plan) block content .content.content-alt(ng-cloak) @@ -46,7 +46,7 @@ block content |   | #{translate("your_billing_details_were_saved")} .card(ng-if="view == 'overview'") - .page-header(x-current-plan="#{subscription.planCode}") + .page-header(x-current-plan=subscription.planCode) h1 #{translate("your_subscription")} - if (subscription && user._id+'' == subscription.admin_id+'') @@ -97,9 +97,9 @@ block content th !{translate("name")} th !{translate("price")} th - mixin printPlans(plans.studentAccounts) - mixin printPlans(plans.individualMonthlyPlans) - mixin printPlans(plans.individualAnnualPlans) + +printPlans(plans.studentAccounts) + +printPlans(plans.individualMonthlyPlans) + +printPlans(plans.individualAnnualPlans) each groupSubscription in groupSubscriptions @@ -107,7 +107,7 @@ block content div p !{translate("member_of_group_subscription", {admin_email: "" + groupSubscription.admin_id.email + ""})} span - button.btn.btn-danger(ng-click="removeSelfFromGroup('#{groupSubscription.admin_id._id}')") #{translate("leave_group")} + button.btn.btn-danger(ng-click="removeSelfFromGroup('"+groupSubscription.admin_id._id+"')") #{translate("leave_group")} -if(subscription.groupPlan && user._id+'' == subscription.admin_id+'') div diff --git a/services/web/app/views/subscriptions/new.pug b/services/web/app/views/subscriptions/new.pug index 1465b24c82..2d410f8fba 100644 --- a/services/web/app/views/subscriptions/new.pug +++ b/services/web/app/views/subscriptions/new.pug @@ -164,7 +164,7 @@ block content ng-change="updateCountry()" required ) - mixin countries_options() + +countries_options() span.input-feedback-message {{ simpleCCForm.country.$error.required ? 'This field is required' : '' }} if (showVatField) diff --git a/services/web/app/views/subscriptions/upgradeToAnnual.pug b/services/web/app/views/subscriptions/upgradeToAnnual.pug index d92290ad0e..0ce41856f7 100644 --- a/services/web/app/views/subscriptions/upgradeToAnnual.pug +++ b/services/web/app/views/subscriptions/upgradeToAnnual.pug @@ -6,7 +6,7 @@ block content .container(ng-controller="AnnualUpgradeController") .row(ng-cloak) .col-md-6.col-md-offset-3 - .card(ng-init="planName = #{JSON.stringify(planName)}") + .card(ng-init="planName = "+JSON.stringify(planName)) .page-header h1.text-centered #{translate("move_to_annual_billing")} div(ng-hide="upgradeComplete") diff --git a/services/web/app/views/user/activate.pug b/services/web/app/views/user/activate.pug index 7961876389..8b60b10471 100644 --- a/services/web/app/views/user/activate.pug +++ b/services/web/app/views/user/activate.pug @@ -36,7 +36,7 @@ block content placeholder="email@example.com" required, ng-model="email", - ng-init="email = #{JSON.stringify(email)}", + ng-init="email = "+JSON.stringify(email), ng-model-options="{ updateOn: 'blur' }", disabled ) diff --git a/services/web/app/views/user/login.pug b/services/web/app/views/user/login.pug index 8339f27189..823299d660 100644 --- a/services/web/app/views/user/login.pug +++ b/services/web/app/views/user/login.pug @@ -19,7 +19,7 @@ block content placeholder='email@example.com', ng-model="email", ng-model-options="{ updateOn: 'blur' }", - ng-init="email = #{JSON.stringify(email)}", + ng-init="email = "+JSON.stringify(email), focus="true" ) span.small.text-primary(ng-show="loginForm.email.$invalid && loginForm.email.$dirty") diff --git a/services/web/app/views/user/settings.pug b/services/web/app/views/user/settings.pug index 310912cf07..a4217d8ca4 100644 --- a/services/web/app/views/user/settings.pug +++ b/services/web/app/views/user/settings.pug @@ -28,7 +28,7 @@ block content placeholder="email@example.com" required, ng-model="email", - ng-init="email = #{JSON.stringify(user.email)}", + ng-init="email = "+JSON.stringify(user.email), ng-model-options="{ updateOn: 'blur' }" ) span.small.text-primary(ng-show="settingsForm.email.$invalid && settingsForm.email.$dirty") From efdd777c891e0cb440cbb6e5778b1d42560c87d5 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Tue, 31 Jan 2017 15:43:53 +0000 Subject: [PATCH 174/204] Add a _headLinks block to layout --- services/web/app/views/layout.pug | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/web/app/views/layout.pug b/services/web/app/views/layout.pug index 7276c0ae5c..75c96ff276 100644 --- a/services/web/app/views/layout.pug +++ b/services/web/app/views/layout.pug @@ -21,6 +21,8 @@ html(itemscope, itemtype='http://schema.org/Product') link(rel="icon", href="/favicon.ico") link(rel='stylesheet', href=buildCssPath('/style.css')) + block _headLinks + if settings.i18n.subdomainLang each subdomainDetails in settings.i18n.subdomainLang if !subdomainDetails.hide From 5be65431f7bd553523179c54164f6fc23f682493 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Wed, 1 Feb 2017 10:55:01 +0000 Subject: [PATCH 175/204] Fix sentry config --- services/web/app/views/sentry.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/sentry.pug b/services/web/app/views/sentry.pug index 5399252cd9..9e10d7837e 100644 --- a/services/web/app/views/sentry.pug +++ b/services/web/app/views/sentry.pug @@ -6,7 +6,7 @@ - if (typeof(sentrySrc) != "undefined") script(type="text/javascript"). if (typeof(Raven) != "undefined" && Raven.config) { - Raven.config(sentryPublicDSN, { + Raven.config("#{sentryPublicDSN}", { tags: { 'commit': '@@COMMIT@@', 'build': '@@RELEASE@@' }, release: '@@RELEASE@@', // Ignore list based off: https://gist.github.com/1878283 From ad3a30b1b3279e9568a7db428db9588fc4aeda17 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 1 Feb 2017 16:51:37 +0000 Subject: [PATCH 176/204] Add track changes teaser assets. --- .../track-changes/teaser-track-changes.gif | Bin 0 -> 780359 bytes .../track-changes/teaser-track-changes.mp4 | Bin 0 -> 505592 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/web/public/img/teasers/track-changes/teaser-track-changes.gif create mode 100644 services/web/public/img/teasers/track-changes/teaser-track-changes.mp4 diff --git a/services/web/public/img/teasers/track-changes/teaser-track-changes.gif b/services/web/public/img/teasers/track-changes/teaser-track-changes.gif new file mode 100644 index 0000000000000000000000000000000000000000..00e02a29b06f887052dacaacb12164cac7a8daca GIT binary patch literal 780359 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

K3xO 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%0A*koz@1)2A8b`I)Cy1HtD_?-lvdWYJ}&g< z!Z12zT>dsP|I?hS{h@4(e*y*gIt zv1y4$QCIV2BVh+~sO794zec@eNSyTI9<%|L;um7+3z_r`i~K53f~nF+Hd}3YkUUn< z#$>DyrJv0d{zXV#ou=^#d=Gt(5^7$R?LEET5u#n`L@w{6XtB6U69 zH?CaHx6-{uS1hE!U3<5RF`}Gr4I?nM{+L8rRqSeWU@(>S23}dN0jzUmuvlJRR-?au%T|6cQ{Lr4~tObajI|`JUQ^l;gY$MpV z4CZ^^fwgqmJhQ;yVs5jIi#p#+kGUM?RmvHO=b6KbU>)hFM-PB)ZY^YW#+_ndxUFxE zmHiEpEI3mURY|YhYH~7IPak23#m|LWtli!!6+!b)XF?WaLxBA^k`_8-9`66w^N<1N zUaH)5`0pa1e_XRWPYK2{{#69@a?QT#imdv#83!o>63!8b{@aWbj2C?&X+g|5RM{_o zNLohn_OBq?;7WtpNWlw9Yc0>_D?}S?VIFODhiHT2H)NaL0kEhD9URA7FJ>J4b$y}f z5agPDcx<_Fdkj(p)V<~jnTL5azhB9>vmecrs8)nVc|(eTe02wMjz57ed9!&O7k_WZ{R`$e$qEU_qVjSLS-0|7j6W>n5oV$^KTb!SQaY z5SGC$j!=x-(Y86P6Ql@;Tm@-U5Ca8glnQwZ>TLweu(VPXJ9-j8HfwKm^rZ-hLW~)n zt_XPCHIEXVro;j?^k+Zbi;{zp*-N4sYn7r5`2d0E;%_5~F7HRKh2;a>eOz_7iX!kY*f>_al9+#zSUgAb!#rvvOlZaBI2antAV*?C3`Xc*OqKZ9V-zM|i`j z1CXha)eLgMXbe4PMr%s8lB!v82#Dejg`pZ_&>*w3APdhZ}cU}_6 z^mVx~Gqu7Yi~#|qrg?DRx%%L>E`pwW$>DyQ^j06eqyD}2RYdfn_tgO?n3l!(o-r*5 zr##O0)@2*DZbXz|($Sl>bNiQ0so1xsIDdggec0!Z_=9VGuLC6*bHWqCd40Gqfp3EV z*qPiCUr7r7cOP@ymaohiRj7C2Xl<6BfKKo+{oY?1sx-HVUfm z7dxprsgmSBk|KQ4xT3ZwkW!EbHu(BkFZ0w9bh);>WXD^B;x~~M2f3{cD#(dT+qIt+ zJG5veEAuRcK$IOpcuILBQ4y6#11+JyRW%;7P@1O4`a-T~@{QZa#96&@W14G>^B#aF zXb}RjeuH`BYqXrF)XLx5riy6PY1EBmF;hxpi|_TOku8n2WbW^h2S z=#G>>HqM`l$Z#j`l&NuXER<^eWO!#I!(L}HH+`8{Smi=1Q%|UoQBqpg0M=9r3Dzjo zq0eI5KhZq?r5cikU0pJZ(ROiUZ4Z%G!hmR8cxat>F0y+^;X8o}Az>~<=4yoMzZTey3;>HZm7vMORO^DAZI z0gRNrlguYyOngm(a%KD4&syFZb?jQ>bs`Qa-%%`}aPcREf4y@ytCWP@O=D>3QnpT4 zAGN?X^vY9^U`?!3U1ZO7nq(-ccZfhS6KW}{aP_^kh5FVO0QK+tq$0#w2LG4)By-Y# zN`v8)I{X`nGL`A>xbq+08g9Ab?Bw6x8r|$aytRc2lzhpdzvid1&0q7=>Q&5N$1Gxh zAG5^&eazDL=a?nyuVWU)zm8eBnoibHUW)WQqZLY`UiL{0Di;Ju8q9haGCzm^%+K(b z`Kep;GCv!-svsoFnoh|4JpVI417GH6+r-QK(K<2 z0JxVTJ;A|INRb{-p${ewDVp3+I(d6{w){Qj~s@P11sJ{$IO<-oJ2vLF!N(U0y>A_oahUM8}(F^on~GU>2L z=r=Y}4AY(UPVUTGQLEHY(sob;Tu1>ikkP4ZiXvJrqC7{!`WbxeknHPiUFxJmk4fKo zQl3&4uZ^-V1caL%Ll4BMc#WRe*d7LmWw$M3OQkH>t?Y@u3@0{gjg!c4rH`t^^?9SE(?5UBbPjCv9w?|c+7LD` zt63F3yJ#^hO`%R^K)Kx5hGIjX5sOcM$j?Vu6O)&S9=$5QMCX|UghDH$Q8a}3jZm?r zm8(?@&O8TA@wZJ!{$1d>@2q~R?8=?7Bh)gb=VCODV|+9$2BlG`d;F0a9Nq#> zD`AaYC!6nZO=H%kNH1>gq80t<<&&|@`e304y8Qy44AysHl0OOg-Jz0Q-QNg3%9Nu3?*2nQ#&ekTAb{{PTw1OGD|K{`n)ec@6jkv5 zw@?1}=O^7&SOJ}N{2JzFlP8kQm20(1awB>yTNx?o(d6f>tVxt#+w3#?Y)SM4sio^! zfU$1_iOl#}E7w%-p_Z>wS|`luUCKVxSC+CSGHg+YzU-6lsfOhaSeXDo3*H~;)8f=r zB|zCL#)ki8pG5nsNG}6Yq$daBT^gHoZ~u{f5e4Eul$r8g{gD%_wuW>$_N<7TQJb49 zLoQ6xFc6qv;eucuEr`9EE-fRIhek4SWRI^rG#Dv`QFWxRwjdp4&CbGu9P)$uZU*dV zRbUIS7Mu3Ki#VqPXTM%1{mL#pB_cIYKCF{1k_y-OB$bu4`mb;7MEk2^}uL%!nnCs zJla?cl!GG|7Gg*?Y|YZyR^%g6ijoCBZs81-d^$@^m*Swpxocc%eYV&ys{B-LJ2rwd zM9tYkjaCKEfm+hEgV#)5K3kHIA>J%0Qye~I=d915Kk(bFdXb}2+Ji_h3g?$X=6y9z zYKz*}ous3%}XIhjbrZh|N>+EZ5pM9mc5YNNJEY71-~ibQRRsK^Si7 zDjCgdCk96?P}fe;W7D@Q^G|Q{*Ga*+k+Z|I!%k?R=U)uQlPF(6tQ!bhLJudrY%#mENK=zNuO1)U3 zQ1yp5QIFN=`JIraU9J5~W2IR8qp_}E|CNybW%h?R>H14!Eue|`t+CcAXKH@@JuX|_ z3rGS1o|TMD|No53o;_@D>9L^$flMa@>XdJf4d5gY7?iQTcGnQAqOY7Vnt^Ca=0v{f z7j+>Ya`l>%``dl5t*fmesjI-CEIVv);h4zGiQO#$_3(uXLjC--TC^z3vUyhw6h%rF=Av z5AM&>mzrAU+X z{bf7THNdTjFI;W*8>}gqN6A7v*LLS@70anh%8!9v6h%0W?kUAgW7;38aLI{j1mj!{ z38_FPKg^En`1wgEG;DX-A#=>R+d;$=!t?QmciG5Cg+7+tLZu~Bho@!Qm z%>$565s>7n(&ey3-N^Gpn&Q^}e8~rH~Au!`M2Mk)G7aaG>7e*!*91GC< zp8LuVIWiZLLZS~&>k8D)oco>w(1+-L74UaL8a4eYkWwZOP94yX*?two7?}reCNY4! zb`{Jyk%#C40NsgKAp-FE|LsmhEOM1gj5^MT!HZM0V^4rdw?pjv)6Pu$l#i_p?wbs@ z9cgAAz2EE#C)o6_1I< zWm_0w-7c+*-+|0FllP)2b=vU-E3he;JWx~$mnuhqA0_fs>tRLNIHDOD~hPYF>m;!v50``0sCZ)w_}Z>Hh^w>R;GE?4KZ5yO94F0!Qao`D+OLC&2L!j4xMJ{s+d_v;XV=1?7+aXQR>dn+?oBr~mDT4L4S_ zfc!8O;CE{{P@Ba7;uEp%#7gaNGIrjJ_Wy$+aF@aY%yQtX+}lBsPbl1}_9sivrw1A| z9=3^Pf)G##K3c=Y!7g9*I5!D{Kg=DXlhCWDX68pX)@&U!0kYM z;>H*O7}HV%ns85zZJ(4dp|S9f?M)+}{8U1--$zA0=0_5yw_=m<+&>Z%o=V>A#qu?~ zs`_~Mw#M*>Yxw5HE1)jq#;L%eOZq90=l3PNIC7aJ=_57{k>%=??UTqEo*bkb;BrZF zgA@5nMtfVs5+zz^H^E2%Em~DFlvM3a!Z<8PO|mV#%FtsmhFlGOV&4o%2%&LHi$NjG zpN6Dz%#wxq2%>H%rDQe|aiQlXsS;!e`D0rI37tSo=gj}DU9QI*Ps?BR^QlbunIiigaVrv9*bJHsNmAyKhs;`J0N zAQ)e|?DOiUn972%egbWOS&F2{lVRReUm<476dht{;xkghde0k^oBFZG^tD>a{P&{) zgu0Io*E86+v@6PIn(MHcupi)TSyLeE9Xp|{z~SA!^>Bl$zTkDXV@j_QnR*U2x%W7nK8{X^Fi0Vh}j?VgjD7){}u8^GO#dwLV|ym>Fg zP+@#AyF&!;88P2%8}$y38s8+K;Hsyj>GdjKw(VKK@BC?cQB5vTAAd4qfAg#}jgTyU z!9_l+2+2&uKj<((Qs%{;2}uL~N?r~4>(Oi^o8d`5mG$PAa_lR(Io?K9gl`{H?gKJq z-Y+Hvfh7+@XLL>)SW9T7t%h9t-V)w1i~slE>VNT> zjGB0*xKG85VU0(2^|TqUq$-q@QnGIKiGxzhV2YCHAHT#W@#EkftHDa!jm9T7MUt(` zrHz-KSEqa)os054Nd(ftk~N+aLjUw1hYr5+9Td@GmS3FcP*L`uejQ^gz##=2HBR5q z$#s8)OtqnQ2&_R*ju^acwR>M2v@HW*68uS{Kz^ts|4Jr`UsN>aJ;su4I1smIUx?(0 zuwaJ;LnNR$pTl4?A5d>Z%-EZ=_25>&Z+}shT4{pmzuZ`8l-Ia)20+D^?qKP)liCEJF`JCj4jT1_$Ka zto_eaH^zUXx<$Xr{KuDD@^*hL{jVOPlIctipT9RyI0K0Picu*f{q5Y46dC^6K&jID z>y@q0U=AV~GLov+TYmQt{f<%n?jZujsD6_SpcvKf9-;xVf!|;5n*aQAHzqPzZBDSU zfL_^I?ua1eY38?cQyli&xuN{y+!Xv)p5zk?LC(!qZvbcm1r(#&10>M=Uu7CDPrr4# zwLHTFb5D17yl0o+%)muHt#5Nr`AlYDrQ3^Nccs@b1_8s)+ir&=2@?1jn5669Hrd84F00<>k#GI|%I zysf5RgmM`Zpy|kA1soziNeI}2qt21;)l?vxC%`vZ_jL7h+O+^_WY-J6@|`7zEnb?aI&#;ros`?G1qe9{m*H=Rre`ix-Q)Ls~oyh(N+HLonD}u^7S0 z;LC;f_v-rwod^7WWeZan)CO}lenE6u>H1jD7{pg-fCLPH=_5h~DNn|VNKvUE77 zGKs5>1YIUyVjX~S?V!s6RCKD(k1j6D#gId3_IM8MC+r|K8 zatZ#m)ULw0QoR|3#W|d9f(Etz{mTSoV}P)@<9YeTlKa?~hb!J2Wj$9CavvYauNx#> zjK7ASS#Lu5UJf3%{K%3tF{`%W$W8X&ZElPDV~S(+i3x4x;s$Wt8D<%#vxwaQ<;=wU7L!%$AK@4%SrE+S5;u{IRD_k4s$B%rA27$oUmTEpDc)9A6!98+reIKpd=c#;#aZ4Ou=H83k;3AM|M|Sz;yjip=1}mB^ZBz( zCE6w3T8(xm4n01K7cY9UOVHScv-0lXj*?*Sl6v3YoA@EB=-(2SHvaRm{tYRJ2oMDZv> z;c$G(`hUYBs#FZ*^&@^sJ@c=>`+=$b zzoPc@n4}dTx~Ijqs9y#5&l^#)e)7*75&8lA_Zv~G+VS_X#-`3~`-sK?I@b16BcI5$ zLC4xbvM>Ahu|{D%nJ-mFVg=EzXOop6+Vu-3JLp(n{!adJto=^@E&oaW$^B0L@s!?x zXxDj9dJyfJuux;Q6|IQ+|CH`I-VXRfyS{rCP8G*CElm^7x0cwk_jrW}|MYw}1o+)m znJ>a%cbDhG!tR5zirNdnKsp8zoEW`DO%E9l~ z9DpRWGT9_Ma4v8l54b{Ak_Mioa9qF~HCi{! z{O=y?fqy${|F6fok}iXfWmwoT1RZp&!9P~9&JogG+!envb}5rO;x0)L%5rEaL?g{| zDv(;D1~#oEP#TY_A!l`IX(l#a+^^e?&^>H8N*g|WcXbJQ*mSD_HcDz9d$d-R9q7l%g5E?`KHTh(MM?^)h z=cn)s>8IxV)Dd^To8V6bFi*xIdWWUuyg8J23*fTWLMa25Zu&PQsy&a^^_wKZKW~La zx0kD5K`NA$;Nn^2v@> zXC_SF&%V)0i6(%fC{NeAKO1bKTAOVbPVmy zMS)b5K9_kbrX&PEy>xuAn#`R!N=9l%_I><}@gAp?ngp@I?NL~b2rw&V-e17eq_3t*NnR057j%1@2VF&7T+IA4QCc)q z8?8yYb9Xxp(#-;DnnKm*F%Jg?a6;Uw(qAbyC*-Vr`qbFoJL+y&S2}|$$DzG2<$m8F z#w&$}0V_Q0&02lukZU1H*|Ru>qL30wM@&Fe;RTcdN2y&1Ttkcxm4;D}siTu1^jxPj zGS5eqOb?8U)h2GpZz60Fg(Pmy4eL8pYajj`nsy4U<|WgQ%BB=(Z6}>SE=t@{j>@oP zolzui435@qdB#9P^u6c4NipVFgyLAcdE5XTrG@*Pi@Hva6c-bc%v_9hNiY(EMW3y= z_x;xbgD{a?IJC|V5r4s1_yg+uo>_A-Slw9pne<0c^6&Zry}kEcG;86SwGHgUqiUj7 z0#TfVnX!E(uk<-;bok0Q=3li?4lBxt_K!Ac$aT8lxAe$d!8HP@5p50B#?1ocjFoS_ z2Jgn^2Id=X)SX^q)|C*fQUn5nb|7UmL=Az2?Sah1v^!0U&jlz+rM8zh9$mbiQZ_AJ zkd<#V#d621NGYinS8pDhTBJ)wHG%2&>i}zZ+!`h`qcp3oWXE+ zb5#(QGYR&+QSJO@^Hzc0?6g|O>wX>(L#^>$#Ikkw<;Ue*%5U;{<;pXiLrT00KufJQ z^Jd2^$ulUet&ec{gP�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

H2n01jXQeq1@Dpq*S?fsBPrV2Dc4orySshd8fB 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э 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%0D(%8kL(tflxezvxJusE|uY02=HU-yoN} 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%0AQ%M0$9kY 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

OQ4JJ+|Ksxr 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

9TsD&)=hLd)|pIceVOrn0?vCQDBA0;h!GRE#2g* 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%0DOx4%bLAK`7~Q1(iKz(2 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

)(#WTzn@8fk|`Z%Mmd> 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 literal 0 HcmV?d00001 From 98b98005a690bc24c84e8f387a7095e51a3f1196 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 1 Feb 2017 16:52:18 +0000 Subject: [PATCH 177/204] Create and integrate track changes upgrade prompt. --- .../app/views/project/editor/review-panel.pug | 48 ++++++++++++++++++- .../review-panel/ReviewPanelManager.coffee | 1 + .../controllers/ReviewPanelController.coffee | 13 ++++- 3 files changed, 60 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 43a854b591..b6ddf3ce96 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -20,7 +20,7 @@ is-loading="reviewPanel.dropdown.loading" permissions="permissions" ) - span.review-panel-toolbar-label(ng-if="permissions.write") + span.review-panel-toolbar-label(ng-if="permissions.write", ng-click="fooBarBaz($event);") span(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is strong off span(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is @@ -372,3 +372,49 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') .rp-loading(ng-if="!resolvedComments.length") | No resolved threads. +script(type="text/ng-template", id="trackChangesUpgradeModalTemplate") + .modal-header + button.close( + type="button" + data-dismiss="modal" + ng-click="cancel()" + ) × + h3 Track Changes + .modal-body + .teaser-video-container + video.teaser-video(autoplay, loop) + source(src="/img/teasers/track-changes/teaser-track-changes.mp4", type="video/mp4") + img(src="/img/teasers/track-changes/teaser-track-changes.gif") + + h4.teaser-title See changes in your documents, live + + p.small(ng-show="startedFreeTrial") + | #{translate("refresh_page_after_starting_free_trial")} + + .row + .col-md-10.col-md-offset-1 + ul.list-unstyled + li + i.fa.fa-check   + | Track any change, in real-time + + li + i.fa.fa-check   + | Review your peers' work + + li + i.fa.fa-check   + | Accept or reject each change individually + + + .row.text-center(ng-controller="FreeTrialModalController") + a.btn.btn-success( + href + ng-click="startFreeTrial('track-changes')" + ) Try it for free + + .modal-footer() + button.btn.btn-default( + ng-click="cancel()" + ) + span #{translate("close")} \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee index 2ad425b737..1565d6db73 100644 --- a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee +++ b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee @@ -1,5 +1,6 @@ define [ "ide/review-panel/controllers/ReviewPanelController" + "ide/review-panel/controllers/TrackChangesUpgradeModalController" "ide/review-panel/directives/reviewPanelSorted" "ide/review-panel/directives/reviewPanelToggle" "ide/review-panel/directives/changeEntry" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index ac687386f8..4808d1ce84 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -4,7 +4,7 @@ define [ "ide/colors/ColorManager" "ide/review-panel/RangesTracker" ], (App, EventEmitter, ColorManager, RangesTracker) -> - App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http, event_tracking) -> + App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http, $modal, event_tracking) -> $reviewPanelEl = $element.find "#review-panel" $scope.SubViews = @@ -431,6 +431,10 @@ define [ ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) $scope.toggleTrackChanges = (value) -> + if true # TODO check feature/permission + $scope.openTrackChangesUpgradeModal() + return + $scope.editor.wantTrackChanges = value $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} event_tracking.sendMB "rp-trackchanges-toggle", { value } @@ -522,3 +526,10 @@ define [ hue: ColorManager.getHueForUserId(id) avatar_text: [user.first_name, user.last_name].filter((n) -> n?).map((n) -> n[0]).join "" } + + $scope.openTrackChangesUpgradeModal = () -> + $modal.open { + templateUrl: "trackChangesUpgradeModalTemplate" + controller: "TrackChangesUpgradeModalController" + scope: $scope.$new() + } From fe33fa1f650145532c97838a56c3e0548bc765fa Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 2 Feb 2017 10:19:00 +0000 Subject: [PATCH 178/204] Add modal controller. --- .../TrackChangesUpgradeModalController.coffee | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 services/web/public/coffee/ide/review-panel/controllers/TrackChangesUpgradeModalController.coffee diff --git a/services/web/public/coffee/ide/review-panel/controllers/TrackChangesUpgradeModalController.coffee b/services/web/public/coffee/ide/review-panel/controllers/TrackChangesUpgradeModalController.coffee new file mode 100644 index 0000000000..ae8c049f69 --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/controllers/TrackChangesUpgradeModalController.coffee @@ -0,0 +1,11 @@ +define [ + "base" +], (App) -> + App.controller "TrackChangesUpgradeModalController", ($scope, $modalInstance) -> + $scope.cancel = () -> + $modalInstance.dismiss() + + $scope.startFreeTrial = (source) -> + ga?('send', 'event', 'subscription-funnel', 'upgraded-free-trial', source) + window.open("/user/subscription/new?planCode=student_free_trial_7_days") + $scope.startedFreeTrial = true \ No newline at end of file From f50967295d354bedc03d00e837652cd1b2e96c9b Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 2 Feb 2017 12:08:17 +0000 Subject: [PATCH 179/204] Support disabling the review-panel toggle, like a standard checkbox. --- .../review-panel/directives/reviewPanelToggle.coffee | 11 +++++++++-- .../public/stylesheets/app/editor/review-panel.less | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee index 24b7070d07..2b5180dce6 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelToggle.coffee @@ -6,16 +6,23 @@ define [ scope: onToggle: '=' ngModel: '=' + disabled: '=?' + onDisabledClick: '=?' link: (scope) -> + if !scope.disabled? + scope.disabled = false scope.onChange = (args...) -> scope.onToggle(scope.localModel) + scope.handleClick = () -> + if scope.disabled + scope.onDisabledClick() scope.localModel = scope.ngModel scope.$watch "ngModel", (value) -> scope.localModel = value template: """ -

- +
+
""" diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index da9fa7eb43..419a154853 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -643,7 +643,7 @@ .rp-toggle { display: inline-block; vertical-align: middle; - margin-left: 5px; + padding-left: 5px; } .rp-toggle-hidden-input { display: none; From 8f9e43f3391c95dbb40365fa8de07420bbf4b205 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 2 Feb 2017 12:12:14 +0000 Subject: [PATCH 180/204] Handle track changles toggling when the feature is not enabled. --- .../web/app/views/project/editor/review-panel.pug | 10 ++++++++-- .../ide/connection/ConnectionManager.coffee | 1 + .../controllers/ReviewPanelController.coffee | 15 +++++++++------ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index b6ddf3ce96..23857b4e4b 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -20,12 +20,18 @@ is-loading="reviewPanel.dropdown.loading" permissions="permissions" ) - span.review-panel-toolbar-label(ng-if="permissions.write", ng-click="fooBarBaz($event);") + span.review-panel-toolbar-label(ng-if="permissions.write") span(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is strong off span(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is strong on - review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges") + review-panel-toggle( + ng-if="editor.wantTrackChanges == editor.trackChanges" + ng-model="editor.wantTrackChanges" + on-toggle="toggleTrackChanges" + disabled="!project.features.hasTrackChanges" + on-disabled-click="openTrackChangesUpgradeModal" + ) span.review-panel-toolbar-label.review-panel-toolbar-label-disabled(ng-if="!permissions.write") span(ng-if="editor.wantTrackChanges === false") Track Changes is strong off diff --git a/services/web/public/coffee/ide/connection/ConnectionManager.coffee b/services/web/public/coffee/ide/connection/ConnectionManager.coffee index afbc656a02..a8696fc999 100644 --- a/services/web/public/coffee/ide/connection/ConnectionManager.coffee +++ b/services/web/public/coffee/ide/connection/ConnectionManager.coffee @@ -1,3 +1,4 @@ + define [], () -> ONEHOUR = 1000 * 60 * 60 class ConnectionManager diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 4808d1ce84..de52d0188a 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -7,6 +7,10 @@ define [ App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http, $modal, event_tracking) -> $reviewPanelEl = $element.find "#review-panel" + # TODO Mocked feature flag, remove. + $scope.$on "project:joined", () -> + $scope.project.features.hasTrackChanges = false + $scope.SubViews = CUR_FILE : "cur_file" OVERVIEW : "overview" @@ -431,13 +435,12 @@ define [ ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) $scope.toggleTrackChanges = (value) -> - if true # TODO check feature/permission + if $scope.project.features.hasTrackChanges + $scope.editor.wantTrackChanges = value + $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} + event_tracking.sendMB "rp-trackchanges-toggle", { value } + else $scope.openTrackChangesUpgradeModal() - return - - $scope.editor.wantTrackChanges = value - $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} - event_tracking.sendMB "rp-trackchanges-toggle", { value } ide.socket.on "toggle-track-changes", (value) -> $scope.$apply () -> From 9d1d2df977ccfe73bcff616d8d09dc55b2a680bd Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Thu, 2 Feb 2017 12:19:44 +0000 Subject: [PATCH 181/204] Disable mocked feature flag behaviour. --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index de52d0188a..368429a9d7 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -9,7 +9,7 @@ define [ # TODO Mocked feature flag, remove. $scope.$on "project:joined", () -> - $scope.project.features.hasTrackChanges = false + $scope.project.features.hasTrackChanges = true $scope.SubViews = CUR_FILE : "cur_file" From 27c48f3790df32bd3a99ba3225759d60e515adda Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 3 Feb 2017 14:17:09 +0100 Subject: [PATCH 182/204] Clear selection after creating a comment --- .../aceEditor/cursor-position/CursorPositionManager.coffee | 3 +++ .../ide/review-panel/controllers/ReviewPanelController.coffee | 1 + 2 files changed, 4 insertions(+) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee index b8a3d43819..119aa471e1 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee @@ -37,6 +37,9 @@ define [ @gotoOffset(offset) , 10 # Hack: Must happen after @gotoStoredPosition + @$scope.$on "#{@$scope.name}:clearSelection", (e) => + @editor.selection.clearSelection() + storeScrollTopPosition: (session) -> if @doc_id? docPosition = @localStorage("doc.position.#{@doc_id}") || {} diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index ac687386f8..40be0ed372 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -306,6 +306,7 @@ define [ $http.post("/project/#{$scope.project_id}/thread/#{thread_id}/messages", {content, _csrf: window.csrfToken}) .error (error) -> ide.showGenericMessageModal("Error submitting comment", "Sorry, there was a problem submitting your comment") + $scope.$broadcast "editor:clearSelection" $timeout () -> $scope.$broadcast "review-panel:layout" event_tracking.sendMB "rp-new-comment", { size: content.length } From 343abfde233246e4b4994f37f6cad5b359f96964 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 3 Feb 2017 14:36:11 +0100 Subject: [PATCH 183/204] Use user feature flags to determine track changes state --- .../coffee/Features/Project/ProjectEditorHandler.coffee | 7 ++++--- services/web/app/views/project/editor/editor.pug | 2 +- services/web/app/views/project/editor/header.pug | 2 +- services/web/app/views/project/editor/review-panel.pug | 2 +- services/web/config/settings.defaults.coffee | 1 + .../review-panel/controllers/ReviewPanelController.coffee | 6 +----- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee index e25ff29b28..37878fae09 100644 --- a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee @@ -20,10 +20,10 @@ module.exports = ProjectEditorHandler = if !result.invites? result.invites = [] - hasTrackChanges = false + trackChangesVisible = false for member in members if member.privilegeLevel == "owner" and member.user?.featureSwitches?.track_changes - hasTrackChanges = true + trackChangesVisible = true {owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members) result.owner = owner @@ -37,7 +37,8 @@ module.exports = ProjectEditorHandler = compileGroup:"standard" templates: false references: false - trackChanges: hasTrackChanges + trackChanges: true # TODO: Set this to false to make track changes a paid feature + trackChangesVisible: trackChangesVisible # TODO: Get this from the beta flag when going to public beta }) return result diff --git a/services/web/app/views/project/editor/editor.pug b/services/web/app/views/project/editor/editor.pug index 98a2840069..9924fe1221 100644 --- a/services/web/app/views/project/editor/editor.pug +++ b/services/web/app/views/project/editor/editor.pug @@ -53,7 +53,7 @@ div.full-size( syntax-validation="settings.syntaxValidation", review-panel="reviewPanel", events-bridge="reviewPanelEventsBridge" - track-changes-enabled="project.features.trackChanges", + track-changes-enabled="project.features.trackChangesVisible", track-changes= "editor.trackChanges", doc-id="editor.open_doc_id" renderer-data="reviewPanel.rendererData" diff --git a/services/web/app/views/project/editor/header.pug b/services/web/app/views/project/editor/header.pug index 475ba1da52..85397fa83f 100644 --- a/services/web/app/views/project/editor/header.pug +++ b/services/web/app/views/project/editor/header.pug @@ -87,7 +87,7 @@ header.toolbar.toolbar-header.toolbar-with-labels( a.btn.btn-full-height( href, - ng-if="project.features.trackChanges", + ng-if="project.features.trackChangesVisible", ng-class="{ active: ui.reviewPanelOpen }" ng-click="toggleReviewPanel()" ) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 23857b4e4b..512e9e2b59 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -29,7 +29,7 @@ ng-if="editor.wantTrackChanges == editor.trackChanges" ng-model="editor.wantTrackChanges" on-toggle="toggleTrackChanges" - disabled="!project.features.hasTrackChanges" + disabled="!project.features.trackChanges" on-disabled-click="openTrackChangesUpgradeModal" ) span.review-panel-toolbar-label.review-panel-toolbar-label-disabled(ng-if="!permissions.write") diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index 8e503801f9..b24c2568ab 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -179,6 +179,7 @@ module.exports = settings = compileGroup: "standard" references: true templates: true + trackChanges: true plans: plans = [{ planCode: "personal" diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 368429a9d7..e7290e3ad4 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -7,10 +7,6 @@ define [ App.controller "ReviewPanelController", ($scope, $element, ide, $timeout, $http, $modal, event_tracking) -> $reviewPanelEl = $element.find "#review-panel" - # TODO Mocked feature flag, remove. - $scope.$on "project:joined", () -> - $scope.project.features.hasTrackChanges = true - $scope.SubViews = CUR_FILE : "cur_file" OVERVIEW : "overview" @@ -435,7 +431,7 @@ define [ ide.editorManager.openDocId(doc_id, { gotoOffset: entry.offset }) $scope.toggleTrackChanges = (value) -> - if $scope.project.features.hasTrackChanges + if $scope.project.features.trackChanges $scope.editor.wantTrackChanges = value $http.post "/project/#{$scope.project_id}/track_changes", {_csrf: window.csrfToken, on: value} event_tracking.sendMB "rp-trackchanges-toggle", { value } From 935847f2a1d2cd01d001c2425c6efbd9d0616a94 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 3 Feb 2017 14:47:04 +0100 Subject: [PATCH 184/204] Add track changes flag into user model --- services/web/app/coffee/models/User.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index 44cea29a70..e4097aaa67 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -37,6 +37,7 @@ UserSchema = new Schema compileGroup: { type:String, default: Settings.defaultFeatures.compileGroup } templates: { type:Boolean, default: Settings.defaultFeatures.templates } references: { type:Boolean, default: Settings.defaultFeatures.references } + trackChanges: { type:Boolean, default: Settings.defaultFeatures.trackChanges } } featureSwitches : { track_changes: { type: Boolean } From 6e39824e41ecfedd8dee9381a4970ccbe685a959 Mon Sep 17 00:00:00 2001 From: James Allen Date: Fri, 3 Feb 2017 16:31:42 +0100 Subject: [PATCH 185/204] Fix language icons in language recommendation --- services/web/app/views/translations/translation_message.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/translations/translation_message.pug b/services/web/app/views/translations/translation_message.pug index 225ad3ea2c..635a8c9265 100644 --- a/services/web/app/views/translations/translation_message.pug +++ b/services/web/app/views/translations/translation_message.pug @@ -2,7 +2,7 @@ span(ng-controller="TranslationsPopupController", ng-cloak) .translations-message(ng-hide="hidei18nNotification") a(href=recomendSubdomain.url+currentUrl) !{translate("click_here_to_view_sl_in_lng", {lngName:"" + translate(recomendSubdomain.lngCode) + ""})} - img(src=buildImgPath("flags/24/#{recomendSubdomain.lngCode}.png")) + img(src=buildImgPath("flags/24/" + recomendSubdomain.lngCode + ".png")) button(ng-click="dismiss()").close.pull-right span(aria-hidden="true") × span.sr-only #{translate("close")} \ No newline at end of file From a32ec78a54f3598b24fe95038b2e0a1396349017 Mon Sep 17 00:00:00 2001 From: Joe Green Date: Mon, 6 Feb 2017 11:59:32 +0000 Subject: [PATCH 186/204] added about image for jg --- services/web/public/img/about/joe_green.jpg | Bin 0 -> 9566 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 services/web/public/img/about/joe_green.jpg diff --git a/services/web/public/img/about/joe_green.jpg b/services/web/public/img/about/joe_green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b730673d0a06e38c2c7e665f979217889a86b07 GIT binary patch literal 9566 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 Date: Mon, 6 Feb 2017 12:24:20 +0000 Subject: [PATCH 187/204] Update prompt title. --- services/web/app/views/project/editor/review-panel.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 512e9e2b59..daeac4edb4 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -385,7 +385,7 @@ script(type="text/ng-template", id="trackChangesUpgradeModalTemplate") data-dismiss="modal" ng-click="cancel()" ) × - h3 Track Changes + h3 Upgrade to Track Changes .modal-body .teaser-video-container video.teaser-video(autoplay, loop) From 38e1b66fdce37952f4b344366313885bb40b2ff2 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Mon, 6 Feb 2017 14:06:08 +0000 Subject: [PATCH 188/204] Use slightly slower video. --- .../track-changes/teaser-track-changes.mp4 | Bin 505592 -> 637538 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/services/web/public/img/teasers/track-changes/teaser-track-changes.mp4 b/services/web/public/img/teasers/track-changes/teaser-track-changes.mp4 index 18e25bf82b2c8521e33e991c872d6a4f1b5cf206..1f75a461ad2ad7788a575e01660ed6a9e6e89222 100644 GIT binary patch literal 637538 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

{Tv=I>;ddXiSKPCKPZ1{XvOPvx4N@!irh1pL?tq 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 {^S?X*mCNLev-Ovp+) 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

(UEE1fq@+Jt!{ZQx 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 z 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 OY!|qBd&&RU*na`0NvKr- literal 505592 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

OQ4JJ+|Ksxr zF=mTS*YCJLdU%6z39b(Mr#y`$i5ytT1eH6?GTXCF!zqtYhl2_}$1o^X83Z%dIR(mP z`w5Dw**g}g)|KjrvsKKF=}Fv4j5Glg0Qb3Nf}-czsq9ASDqm)=UpSC9Y7s7z%5Iem zV8gX>82G|Y+pE#pT6JQGxK2rYY*A3JiPZ1{*EO-@Mlpio5(BrgCeZ&+Cv5%67#i;n z3{SCo>F|3Fk0kS_dQn8^Gfkkc&kGsTLPkkG7aJh72+mG-!?ypcwYCnb zU1KccCCef!x&^f4LWpFtQyW1mE^P7vLoYy(Mpn-R5<$9{c-Hj&a+R#M2XQ?k2Wj9@ z1b)eJ&7+rE?^j2^{Ta=3oB8YXGwoc9r?DhVPm5Irg-Gpu z&V+-%mFx}jWR1izdky-!T}8}I(iuYoXi3Y+#isIp)?hk!E>FiODK9!mv4pR=x+1E6 zhX$17C{1dEvuyrG3{a8xkm7o5dFm9Kv%*-w0Jzte8%!^|m;`?N`R6L_M4Cf>(eYYi zeOb;wzQ-isI3S`{8SMNv96EHV$hUJGwIozo2|p`^EDz%0#`uCaqOk8EAQfnS7!U|s zt5m7((ah2h7L~UBH#facR7h0(pKk4F=*>_Dkq1$7Z%ecIe;+`JaFO=Ofa{QgpB2KH z6A^>@l#&53GHs(&@YIja2nn7a*ngDrc>)#Fg+*a4+CUxAO6=)`bqXH8*76eGQ#dgz zvCn5bmcgyWmiyjf2Ulh8+gY=;`Si*O1^>;CnpMV4w0`veknc9>}BP*f; znxgHeSKlou3@7vIqPxaEpU6ywhJ!l}8uKS7rzD9Kb85)dx!T&Y-n3ueJG^3cLBEe` zMiScA+MQZ(#HcNoo8+%UUgZ8zUel^Q`Luz|HjG)KKZmrZO~GY<)P=;-u?omFndEdI-=8ro*Hai@9-as2>BUZQ0XNt|NQ~7-oop-#fY2sIrF}fseXZ4v2r%Q$ z@b10afUXOiPr*2pIbXVbA5mM`J6A#_u1QptaV?;>l1&IozqfOIC^iHER_E~nt%S$f zq6u?TmLrSByb@^NyW`v)dV9cAg~Q0Ay2*(_(V#7Neaa>)XKB> z)6Z6d@o@tJ`AjDInCH9yU>d?gKNGohL`q$W4|o??V4MrhJ=8pOB$=UMqB+L~s1o=6 z^`u4->=O-&fizK_iX0&0`w_xg@lPi&|AN4G*g8OK1)s9YNL>Bb?n@w>pA@*|yh#jh z2r%A#$(AbYvGjwlwa<2xZ4^Biyji*>8T8o5)9-xDjiE+1?|u5zFR?$FS630tQ#ut? zJ_ahs&kIMu#*!6(lRTDTKgb_iO-q-hq`g55=uBuBFBNkF(#wrl)ve(K7OCv_4)`mS z$x@t^cpA?<*oN%|$YSiHt9w;eW%(|Z#VoYdt8fF7tm690;itPKZr1SGqAy~14QCJI z1jJlQ;n>INH@#TIVgd|lHN3>m=G>OZD-lCgrwR7o_3&D~B3d3RlVn|Tz8yEs? z@VkvORIxw26Nca#w0&#){|O0yxvRd;t_)Pf!(8Q&Q8#Hk|M7(og@M{}1$i2h&T7r( zw@Vw;=3o72W>G$pJqw&W_4yim7hMFs$g7I!R4-*tVgk2y$oZNj;F8e2Gt?ux zsVAy5>f7N(!Fr?7N-BGngS~4^kPFf`Nlf_Xm#rP@Sp)=8hWiFQ0oL`y?hi2!hRLHW zh}rD-+oZtD87ysQKU`OO%A11)&wyDiQ7{{g2acm?_)4pk$p+PjjIa=?O;=FhhG7ye zknxpjfR7th6L%jjKxx4AL^jmk=R!-(Gr>za6WY;M#@Z!fFlNGepr91m?Y^A9&ibCO zOpjPCY-1hLMMyMYyM_@^dWr}1^x3K*@$M;&Rk&ng?Vngj{8_*(Lx7W={i&J~`NsWm z)6H=hfVMs>r5nnJA;}6#2E3V)Bs2$T~n1e!~b!QwMv!BZy` zPZ-$nlv6Ptk6m{LU4ohaK-J(9f>%)P62Cw1aNFhUAG@d$W?SSXr5 z2d8a}?$~dAtclgExbViR)VAE3;SM{%>3M7?%J~mkaG2WjcsC~Yk=#KN4lC*b*1*T(*^eukVi`mYDz6f1_X$hcniT-sjl z;^;Yvdt0V@KsT60Jq~OROL1H$r|k0f`Z!4(k-U$p0|oG?TdlI3ciCp;ns~3)ksWY+ zs}^HRSWi+9vFjIcRCKk8KET$s@)>-&3NNZ;xILgkpD1_NDlcV5zlT6u9(c*dof=Pt zpa>19zxcSj@88-=GY7tsQVicj?FjS|Qhan^85fPP@ zd#oVo=i>8xA2+UkRP^V;ti^>R0Xb^EJn7qy6LD@V+Cco0`J4ir!!;M)5zgDw=ThW&RbqGkb%GJ4(zqAsRWX z6y8x)19p{u8%X)bXC z@&Et;xq|tLGCl=C_~}3LY6r^&j90*$h9zScWO%KngDU~hequZ_wfvthl=d`Eqff%~ zL8kfyhBD^lV zH;g&En0G>yM3$i{cqJjq|SCDjQpon@!1aN(o!TLJ6Xj7?wR}%5N5*jP=pH^=u z0BG3gk9K8+$jX-Y!{0)7K9sRrbF}0&A&-aRKsy~~c1)QJJ=j6@emUOE-cnhj7a{%Z zhYLrA7s%x_L5S;5z*W)pUCLz21IM3~7YDI_ylNpFZgPzt^3bSR_UF_bEN{CJCZkfbA%DhI`i*8>VD^~0SNuB#l|K72U#;TR4%4qnP>~60tSFrc5nqY zA98ZT|4^Li#x`aMNtseFj|b|EEXV{MI%44BJa(@vwMxGt&ZPxq3;apRl!?&A_hevim&G*W|6534h(#%*&Ku(G3mISEMWLpQcTip@ zlg5QaQ`RQGE8&!6{%hbxWfHEn`mq_NzC?R0n9~Inwma$k1Ir{ifb&-yHpc-#b&JxH zfA6~@EI|iZ0ULXg^25HBpjOXPy;3{kLh$4S&^FQpoSKPnjAwKceHFxW%>qQiY>ur9 zKO*1uhK6^({0QgOo3x%1yVQ!Kd$Ao zMzzijLr`$?(lQ!!zZWofy=#REP3Fv5MZt%>X}3CO`lE*N)J#$#a0Ji_df&CP0Ko8X zz_=DA7__ytyXX`0Xr=u;!hzJyWNS6Xou^X$+Mkgo^59?G#0lmX(fo%rB7bVBq&NxW zz&igKb<$`r;Li3XNVpmJWKhZmqeE&n|`3=Kg4Q@xWSP~hhOTcbY!3qC$_|4Ja zz}#(vhE$Hz*D1me-Hm)?M}?NF96@V=7}ybTxD)pWIEmK_$cc*ob|c$vYx59NT(eXD@T? zn%pJ}fX|U5!FW@#f6T_KFVMfa2Xb^hNqsL$p=O2@jqa_uh-6m8DHySviSR^nSicx^VoxyXWNvz7J1{fEK~MaLI4yo9Uj0vre^uxu=4J3Id;`iZ zK-R^N1<)moGDa?qxjnw<$#@~cHoVUPvICF{Ik`;HST;wU+eoNPC7yMCJWANz*=eih zp`Iw|HwyQzpysgCN}f;-Z#ReVAW?p0@c`ym!TidCizY|9d$q+`!+C+M5h#lK1m#7< zung{NkV!FEc;H4K@?X1rd!Fk+8yf1u-zaYU)OaA{|9zhN_j#FLwt%x=T)=x*PhG;i zAO3tD8r`lC5%SSHT z0Gj~-0EkR5yQ-`}K>L>k9!!5f00toX4+$vOM42+^#oq}t=p`4&tU@$~d?3%UMv;)i z{2h7!>%RdJg7h-!j*mlo0}?u>Q|;e{a30wzU-=4*iAd)@Qr}6QsX9$m=**AXNsZ;H z8Wr-G5O{M$=s&@Bq$Eu*4*~UT!E+PuuNMOTXRqJqH%2C9je*eSu+YWDsLahACRtFP zYLmR|+iCVjhWKENj%Rl@3AIq@OGAE&SGaGi;YAb{bjc`4_X(WJ0RCP~9O>vsi~*Oj z8l5}Gy(?KM02Ts2WOMld+~u;2DtPJn5)eJCb4|mjBLWQA0U5YZ)3dta--nC3#MnOM zq`WZ`gBzlta4DYa7LsY826Fq`YLmtu9}+O0A)}_k$>bc;o5JBw*QJ$p3PYE&dtx6= zGD+4eOB!|fsDJIDaF{rNLG}Jb0Cro; zxHLAO(ti)PRP?ufB^w7#| z`Xk?*d8(LdNsy@FUxCZq1UTH3j73F17fTgvbjxk6yLzpNoImRQL0ec$6As684p$~i zIIwm4$_=G#e>)uTKq9SIE0JD#52?pUfiL?^3G*Q&h(_U+v-eLN11Mo>= zjNBMF;wLX`L9C*L(po0KJ6IWRjuu1+_ZHMi@?S6={t=JuvcN`EtjeSoiA|$xSJ#`| z99I6Jdv4f2Wxyyr=``OD3^s?eMN7Mu10^tcMKzR81YO%t`l3xH3`8B~rCz{+8A8eR z7Z)qOUnM!UMgjd(eW#X)J*uei-V2gh5;psyh{+M-rJ#Krto5j|9<)}f_AZB=VKD+S z7y+R)ez^>=?q5IcEr13kQdl~@dZxd(bP?zX1oN6~RZ711=ZgK83qS<3yG{dvOIz#z zdxyvPmq4aiv*Cu#6q{DIshOnm*x%tkH_F>X_51JYz0R(O$LViy&WXZ=pZ$FDMyHgb9-MBVqyjW~Is)n_1hT@^FoBAq@E^tmaBC;ji?qH#!cOQ*f_WwFme--;X(Xr2n>TMfC)Ky$3Vy3L9v3j1!L8AT@`$jFvi4J zwK;Qt3bWN|vV8vsBFmmoz$v2H9v-^EW7`cINp|Rv6fi)qkwE?doXlJDN-p|)=-hU1 zL%p$D3f!Qxxx$QD-26Bql`O)vwZIi}!Ab=l3~TQCZWP7RHz*8yc`R!_#(>r=GWty$ z(J@^=S)Vt`!S^BELUgeqeqU_~^!swFtD735;)NN!UfFhf!MaLu#foQ`hyy=BT>h45 zfrh-60;1HY;$B2ca`=47B2Mu?+>dp;|EuZyg4sjhfxzds*8hbA%#keitp!}T;=B>f9r+u4^ zTt_x(8IdKV6Q7uRPetvOX%}cruxe{?aMWIVKG*qP+bKh!UgXFH8P{L@Ozv7J8bYxI z-SNiqYIcFPWaA9vbJ79=QDK-H&w5V1l?D+U&#$Gdn>Ve?CtVyWtyvqN;jGoTv$(wk zXv^X)Ee=FC!~fzKdM7>hazYw1d#}ysesbavaJ>uqFHz?@KF`d*K78n~u8C$0Z9IW- zQWU$uoBh|5rs&oPR{*CH_4W}^*AVb9M-%%i6+_Nu8ucu7898nh2F(>*jrFPRh2dN2 zJ@lcr(Pip_tb+dIpafnVlEDEM%I~gpXtDl{HHDev##QATfDDu}WR1*_Vkc- zX>IGfmH`356G;xU(KgyHub|m4A)CY6V9?dDUPdaUwC6x*UlWT5Chn=HJly_DF@0b6 zoBxI_qgkrGT~+(i8TFO$$|Esp5`JF}PqNqVf7qGJ8LgCY{{F5L7VP7uMYuCR7Pc~ zv$mx;o4ZNO*kC__#NoJd|8Oi&vjc)BlV1H_*T?~CD=S{qjWun@lKXEc$!+damPb{- z^|~G1Ok(d^et6#_NI8|YloFs$y-*cbE({Pj_yd5f{ulcac*fp^$&g1kXo{A9yQ2`dkH^jl zydI%rkBE0+EVLpdSjWPhH#Lmc;a7o4jG@&8%V_5Hog+OguuB)@)cOy z?M;XQcxWDG5}FO+=x7(Q;Hi221p&YM{w{v>{cGC)CloLkqzf*=g+J25uYCkn zt_7Pi)&JHg$nEAtR?+lzsQ@|~{ayZ4q(M%f)}FVp8wVOBrGm`((@p{_1Wp&ReISBS zet6Lb6uLtkZP6s>qW9MHgI;yR{{pY9L!`-*El+NBw&9RRzMa*2#QZbzWe_G)jplO8 zo*JZV=S>%g_Sjn}@@@JSbGevvnlyH>#XlGCY*F3eWfEVIu3I`>s1bQ(3q4Bsl=1wO ztlAAw9-Vmx2avWnKMV4Z;BBwI2_?BtCK-8p&>x=ga7RkhLT-8Q8D44 z2rw3S2d`M5$*58KRZZFOCMA$ovr3$-nJE1>xjy&zCDFf*m~Bl-h;)?(5v8dLv`Cup zP7>0-g@cqdM|A)l&2uSNJpnl+ijLrRW0farCt;ko1KTDFyv8JB-+Af6O}UWQD!vP6yoX zTaeZWOFx_yeD$aDys46Uvn0pY^iiTJ+21`cBS$h(f$ZB6til44vD?L+wBW+ut83=s zfB|lhn!jWKCz!oy9tiyNYx@7c5Fi0!cSN!jvmNr6!Sr#34HbgT@#*q=gVLmh;A>uh z12x&RNkcEa_K0g6h*nR5$C6ET`el!0M*|Y@9(wo*r4BdGge+ljFpxF0f7lj)lQuK! zM44P_BH?$I25-Wig`k**)uB82)k=r!Xc!pU-5$I~1RB>uRtsZ=lpzePhfnv3?#;y0 zsB?yt1U9>8S4?Nt_<7I(u3Na-EjG4_vW{ez?JTW(W;za&W=txjv2fJ9qlHsGo3bh~ zlvBNtnfzF<4%3Z?$P@6cSMT?Ri{0Hd*iFj9zC0mU&um`-JLZICh#4DT&pTkga_=y> z3o^WLbRfXY!$DpHZ-?1Cl$`{M8m!*MFv1mNuDk{(wZB=Ed=b~=+xpL|G$a{Npq-+PWZuQ5Ug;_!0( zX<6msy2Z5E^QCt+Q*!rmi%H4q?EZeSIH+cb-2>N+(i*$rhPog{1Pgx9Q$Cm;4&vro9RI0rgeX(Q z++7QX^!)z!ShrYU!Q+iT9zR~f_7|W?o>I%nv>8wf4b%u+PRe7ghYWYX#@5B#B^oWO zwj*n~CDv3CmyZMU=N(k(zy=U_2Un{yqWYbuk7}G{Fwz(Gw}?SNHnQ&fyPT%>nF5~; z^C%B<1oaien3Th?oY$uE(%c1+8>*Fl7WRELs%@CNPO5FLS1Kh${0o$08M+Mw$JF65 zJPBqXjg58eW*JQ_2~>F%+aRT9B(Dxs(YVgfEDw?hqBVQ3L*k`nl2CbTlHZ2di_I9k zC1=egaRc@8v^iF9#I@&ug6h3Fr~aYCAf1hCm;!tb(en{8367SloQ)rB@52+BKx7g0@cF(}wN-5|CMwYbj%*qA=zktWUvrh&M$+L&QlSWPf`X zBV_IYttmYlb$A_^1*cNJd=CI^&puQHooTx7p>)?jE0(PA3IF>r~~orn(Or+)29c2JoF!mdmlVG*nU8Vc_Q&g5BU7QoIco7i0J?H^y%#X*@tCNcTH;Uv zTSAMHmu1xh9i5>MF$<{9Qbla>dy)CsmO#YUy3cVsdj>H8{aJ7MI|_U9N3DTGLWunm zt#HB@Xu)Fklx0n|Yxz$e-3Qf(&h{Y(-nriwd-@%8UV5-@(UbKYoR02)r zYygqMC_M&ENw-GSMRUy&70nyf1YWEZ(|t-D5FsbwAgnWtbw32PEZ*ueafsyOOR2GYOl%ewnbAA$LHahej0RnxK zIzrUI9@fO35sm0{P?45tlib*F=&wX)7jlO->Y;mLC2L$wYA0gAczX}yLC1q&5cv4h zxq`D0TSvSv@t6!iov1qH5n*CH1JPju2{0cC$W6c>Bd*XY3p^0sbeV!2#$J)`FaXB1 ziW*{2$BPodn?-$0d4XS;?DPXo7!eN4!Pn*~DZ;aMtEinXf^DU?TTG@_>MRGUBAS{v zuBdPvv4K!M3^K_bG)XK-H_jb{x#<+bC|qHHlt*y1d&9K%pdCwj2*QJu(2KHSBxs(_5~RpOxpM6 z`79h$yk_AglP!LhJ=U&@QH4e^_U(@0s;aHYK*RGRa2nz*qvZ}*L@P2TIIdlsuw+}` z8UENglOeN|I9~shg&XnoCb>n%=T}3LqFQ1n#FU3iwH9Lgo4GX<%zvEnk^h0?DiE=N z9gQ@ek$nl;7A#3P)vZ`kh$U!iYjuq}GEhPr^G@~^LXzFa`&?eOncPG3i|Z_8Z&a7m z^9^B}9AU`Mh<|wp1}0Ygp60vE8Q2pzXnehsEK023`xPPznEzShME(N+e2lTk$%1p7 zeL{snHgQCj0RJ+I5p;1&(soZ-sNKRDqUL;sjXe?8>?vsR}3zyA^Btz|&7`(i%D8Q~~$G+lZKtZ7!y z`=S=$eVN*%k_ZMOQBB`r!aE^7fI+mxH;zB3FSo;dL3Ch%W%c3`z-@DmdS1 zSV|k5P^W#R+S&V*k4`Y!LPv9w|FOUjb)#^699cRpPqoteL=!hs#&`f2*IZ0Ubj z<7)^-x30TjKfue|Gl*yDr@oUm?Pt1hHxYv2JoVprUAXx2I0>52qd#E7=LO&HT@k9G zdoLOfs&RxmUoIwg>mBK!)v3zf@oK+Jg>^UsA@zU@&U~k zzp6uQ7LB7?1%CD9k6;$eZ`@p3|8s7WDf1sSf$0BF?d1OjMK8dL)2TYxyNg7iI5cZ+ zg4XJ3fSx_*G}U%Hr7S9Iq!^1R&{SQA*xs98H#~M@Ig_j=epFt=n^!^IT3@-Wx*~Tq ztkrZ;C+~tEOjVSlszruKvmmy03l_f;O%M6MIHl7y-(;}Mk5HVGESeA&FarVxA3eS^ ziAcDRHk=G2$OEY-)zCsjB+uuTBIChy?YB}#a8MjHZPsB>;PD+x?n(ZWKGR4YXS^@A zN<@Ao3+P$AsLa`E`Im`Gcx6!RKom8eVN-1^uVP66Li zr0Z51^%Ztxi{@&q^odYXf(yZz)~ga;=Ym-0QfeR84gK2s8JGY!*@hWl;G)x0a)!M`$xt}{Cb2% z6cUF4*hsZuuILTLHvrm7=Fz=kYDAFbSqatQDm#VL?bYz=>UV1i#Ririp}(@*@1UW7 z_MIxAj%sz8eGBS^T(Xd!WnylrYDU%c>C>vem>#)(};wvLaqf7kkK|% z8_FITkc&`i?&4@~VdxOUL|i4Mwg0Ns%y&*9@Lf zU9jx~SU%T3&$z?ZEB2UO#f=-@svdzZ{11(M_Rd|(z39wo>d#JvT1NZi>pzhopR=!V z|GF|?3_lHDyxLc)QneM6pQ=aGsSe6vSxKE@=%r5? z5~b0kmQTbWTo~;TL{z# zSi$~U0%W9QU&3Q*MoAxMOh#DP4PBagQ(AL9C&t7>Ky;AUnLdWN!;9`+yvKx5tyb7y z@k2R+Km*`5A*aY6lDQd0kN&~UACxUYuih*LP#y@&k>K;qR&^v2@!s{yX}sPa91n8p z!Q^EUB6%JIvaJupB<^*G>jDVdz2P2vBrhgCoX8%3%iojs{<iom{0 zCU6D0Tc74g%kF(c#e_kp+^ws-2duBd~C4h=4AO=A!<*m;uUdb+?lv-$` z&7?Zu5K8#jgU(yYKd*SKBzc63e6Sy^HTyAH|0h1fb7DCAeTz5TdaG%#54%gfO(k@5 zqIS%ENz6*FI@|aDrQOwYED~?ygB>Y+qm05stj>v7JF)*nSV-)BPpVtHVL5@vta)7# zfIE27KN9;;S;c{7-?CYs5?!L+)CKqv2Lr|At=-ikn!v2U##dk+vh_!ZQQJbt+!NvZ zOOK>>bCRF*#A^rhZ!|SI5yYdwUz1(t-EVBKmWGUo;OeS|N=Y0y(O=}*3TBa%|0nC) z|38lZ{BP?u>W1@>lroEmih;4OL@;GGNJ=S!cAA+B1lIIVraA#^*M;N_1US4dIdRGN?(S6XEQfBXTH!wBnEp=womWo!CVVejGY&0mP@auB$ViW9@ zwujqWK%|p|NZtaL1G1DkKg@|B7MVQg5q3YVV zHSf~VT-x4D`!f;n-3yawY5`7C5YC}Z`xSnlNy!PMLzQg-juuAy*W(61aNj9W*Abp) zW6ZpMMsaj{%^CBuexnb1l0d>=zO9*)H9_<7%5+TjbzX4&{biv6!0NqbtZ(uKnLUJWL*TKQtWu%B*AC|uvR z)Sxx~W?V<1^%4^q7#R|4h=;TZuBkvRYG`7b>x=HR%B>4br@GQL>drjt)f|T~Lm}6l z{dguDSTO_%Xw_g=Kvdrw&#SsDc+l_ijWt!&WH?c2@&VRac7xaFN$yf6MfyVZT1AG+ z6FW0@J*=CHTZyOO_a>o<^&?ax>F-{jp0}W}969i|y=Bitow@qAtEe3sR!u$iD`E?$ zPkLWk=pEH{`&?tqb_Md^AikSw`iOv7=hnY~GZM_A8T(I?x&HqTaF1YW8HT%xDg$h} zr>$%Fc16oZZ#8pp#<9$NYQjW?f`3+$8+TqnSeqSY6E&#b>{DlUA*rK5A&9)$piodS zfa5hB4qRdUj);o5%@WVJnOZ3hD8g;(qM^=`Kne%M+7?&KbiGBCCPHJQ5dGmMj3@0%Ir%;nX`W%j$kfk4qS0?79vj4X1KaEWa z>FnxI%QdiZIT!F^%Lzm_E4~OC&OEJkn07--)o5#DMI_j(!f)v4d&^e|*a6 zcFZ%5O%^XqXvEh1SIzHaefAiYG%Z`#CnfBf%cQNqey%4^N$ydN3YIV=p$y^4U&{g+ z#xLFmtD$JqWlg9r^QuL!Zlroq=1i6+PF+43Am&&Glsb@A(%YF@k{L~9wB5h1>6LQ4 zJ9o&G?D}opnDO&>TGrR$_T~EnkZDh?+juuPv8|GM8D?GR>A8}3sS^n;V+j^6!awG8 zcC4)supd8&*NkFllYwa&RB^h>LHL(a+Faz-1!S-fnws)Pr=*X(feT2x1K0a<*ajix zmPRvyVQjP-y4Lx_wS2Q5qwG#ZuIYqf>dnVaUKG(I6$i73RswUdhe@{REq-&DK>UJP zET{iTTwDJ)%9uHU(68;Kn?dm@F6h|n>8s{M`iF^g=VxePqu>^mQfM%4{&kl(QAWgS z*|^Ch=X1#YS$*lVlHvsLORQ@o(rca1&vqr8k)G7?)}ErDujK(}YijTD=)rE>6Oc&O z)Ctv0k`ul&aGI2;MVM8kW*K7dy=H`ARa2-1gsr6hgmcVHIn_*295F~9m$nosbvEHv zEZ2rn^n%CpZxt6dD8dAgHM3;`TK%I{@YA#{~z*EC!TUGw6335@rX zgE%@BLE^{I#J|o3olH|hlXV?|(m-+ooOCK4Hozw7rT8(3&Q+17F(HS{inw0Gboq-fM1RQ<_7)GlI2;wm0@LV! zCOQVEa97Y81-muc`kbPFmrm~_B@E=Xr3{9gA$6cJ6x{AkY9JG8HTVE!{MotJd|yF^ zTVvtWrgu^=9~9)IC)z8r?IpsxI});YH7S)2b3f`B@n%Vw{kER3$0PHT46;6hY1e|X zJSu=gLZYUq$FESh__Qrsee(>rrq=QEyB_L+H%I3>_rpqVct%JVa}x|@bvOb|XEL0L zNPK1z<9j9@q`z7>N)J5Q(AO(kWf&vMUDinjMzm6Qsd;8I2(vQ;@Y9P&PMG-&f?0*J z^#PXDT|dFYkB>;*=AcxJO35VWipb{sFno%*h9cQkEs%iJc&_jMh0vv77BBdJ(%@SE z1tCmAF?tCBX#9TL^`4oK=Q{N0Vj2&$l#%cLeb0W6V)U5FS(u--HdPwnYfE`F%xr1i z*b;D2$>|#n^F)Vy;jilc#w+Dx35%6y$sVLM0~#ueTP!GfVU3(wR8LW)nTz5ocC8zm zi}PZvqQ>cowgCfAX=mmmSr3krL#~{IKU~giXs>MV6gd|bs=A6=MrBO>=Wj2g_@D+# zcxqtr$nn_;jJmhJB5=MNj2f6svRh9Qxy$E{73ZGH0PQ&};isRY!o58O$20B=Smk1y zXZBeO9oXU%*FJUrjHy6RP5aw$G%{&i!wX9|B9yxW4y{lRC{8R@-Fixto)3vXypxy*!ICBeXWC9i@h3!ie33DY)7blWU}9 zWW6|&G?xXBhOI7XR3`JIG6ek2UT1~F1QqKMV-qU~8}KN6On5zR*t0)tdt69;hDzh# z2+m)h)^cY@K((OdvY;PJH(6)LH4nNm8954}$^Ni7U2uOD`RbbDh{Cw)4KI+JKvX)h zt@w{O{X)0hE<)~x{p$83l&|~(YxO1Wea{ct*$=Tdyoo(i*26(WAc$36@A#6foe-Ff zpBP;zDdAQcOs8)g6lLNGk#Fy1oMXTa}&eWy)_X)sqI(1+Fjn6hRoRF>5`y2sQf#}CKW8b3-LsXmw_jfOv&oA z+P}b?rQyNcgEX{g4TgiT17j0%bcC7}9L&+6;PayQuU->0i>?`p2gbE=vR2k$+uSeQ z`vtQ^$$#Pg>k0mMZcCh!6Wi|Xdb#jZQECqA{ZJ|nLPqoLkZ_7Vvuxf`8Z&iqa+Z+f zM?WP>9OrmG>(ix(U7jO&u})U`4cb<=b8dL8>1iDhuX(b5&sH*WyigNr@ zI(lVs{Ydch=s}tzUPl%nMlp!mt1~)-RiZuP^>Xbb_$z6+j3v1Q zdh)2gnvsLNOEV*DaVif@3;7>t*d1;`bm_r%Tdg>i7St(_&}1^`5mK|i7Qc|&c7&!5 z)SVW*6LR29r2S=dfrDgeWA#P->EIBdRTSlSoi~1f5Sx`QQgiZSSiS*n512rqN*_n! zqK|Lnh=3jUtu6%y#Rc>J=3-@j(VJhx-;|30dWsD}2jDpgHB{jojTaiTa`a^6x-i1_ zgpI{bl{6_u;nGlpyl}$}vCJsiBj|~x-K)ju@a)}l`;^)g5Xgdh{5`FIQjauZM=%+^ zo)PoltAm>*G(ex`7ZM*hv8h)Gz5NRJ0c=F`%MgM(0&~Sm``npX&jrNyz+)cUDf+QCKJp=Nz1^)&9(ud_H= zu;ne&XkCEdR(5bVQvu>CVA^4_Q3}=U?4Pwp$i+1fC{v_K+HdVXv+j-3%B5zjN*$Lm zlwt?WW0!n#CcQ?EwT5CH)k3rTIX4%&8<78t+=*o)yP`xnWm@~%(Ig_JHTz0|Q zVU||F=riicXrygLz!zO2FR>RfU63JtB;inrxEj=7aak_@Rqe5?j+U)abO355I&*zu z<}>FQ%dv=toh>!8V}d+pD-y@XL03UhnmFLVMUSX~dpzS;$Ruz#P1Q1;D31Od#{r~E zL~hS)02DRP*IzHF1Bpk!5Iz;mk`@1j@UL(A-w+1i>?Ms&O&PdG70ilnNSK{p(DNX0 zrmB_c^%>TYqvGPLZLg|YX+odz7Z?d#&4wP~37uhv$G>EgLT<*-f)A%*a6 z-^JX5BS!J=2kj^bS*6Q;_@P@)|Gk&licf)mjfc~4V^~Io6^Y2J%@!(vw~eO((Jbyl z9XdA2=docNpy+4d2S?1%;S=+qxw1<840&BlmOmvK*JNg(uAU$qs^TT1C)@)0|SH=Co0ZG+}_5R=^FbHHo6 zmI9Kpu_%xl1?M0gIFm~$63bGu1S~_p31JxkC-BTT_ChB1YADHWPux^fc4~M{ z7>B`7fZ&@i*TblcHp5gH0v^9gd5gpUMb}>k~=WfjQy>eMuZn8;kH29c`0$kh#HacA{$bgOQo;=6u#hIne=_IRC zb(?whg$B&Jd0y}A%_99v-<2Z2y$pb_Om** zQt8NC4>sJ+*ber z6(J`#Kubi)HB6`vL}#!q-hdiK)ViY0GW*^;U)u@Y%^PTJ2c390d_GLP2O_FWt*YPV z10IY*Y@IQA=oJ3%qILf4u!V8wAMK}MS71h1VIuh zVUDdiEoD3)wAb%t4j4Vg9Yb{8D21$NAe708`V`kelEg%r zj6T{lD13!o8U~wdW|Wmc8oOr~B=XXJ_J(pWlg-_4jP=AaWvV&5A&Hi21)RKT9gFfo zYV_h+sZY$~7yD&BO5d)%-r(0Pacb<7xvwVz%(Y|61&zEZ@PDuX+}Lp?WS(= zajb7xFMUB#wF2ojJxbyN2Gx!XkE?sbHd97S47&unn&0>m&mWaLb%X3wdm zeR&oJl>Z|Hwa991`4Ct27{qW>p&DOfLae$`;5q0rFUl@x&y#&?C1tU6Id&UQY+wXz zEX*T>8-Dc`TX?{gwL4fZwk?W7;N={lfEI@B&~^@b3}$N3%p<$-o@$P(#t2EnFJwku zEW)~*rLDU}h1_+7)+k019!O5ekklI4Jq#?KYTq1Q78ZKB721_!G6kA}G!IvgN4UaL zoUY=))9=``?#Q2D)=xUR_DpGRQDf$?Y_t8-h+Zux z@8$g$1Tfsn=}*TNp8e-omx?!BePHb#PQQi0Mip?!iTFF{15z&%O*aU8mHLD3zog## zn*{*}Q_iE+NM;|1Z@AR1kWlm|!(7bbN^k5Di0E_)-O0K2e=3}E=+MoHpj1b&@||Ku zPx*nBLQd~xzbw~{!zR%V^zY$Em42^Iu~>rnD!cw+1wBWq@=jalS10b3lQW*?t_fQS z?H8%}t5#B$Qqj-9e$2x|nXYJ0kME7;pJ~u5oaa1LvnGrQrD)o<*4~J7`%kE);^g@( z%HQxM-bn4^8qf8e^^lrOvtO&Vue1 zPEW*zd{&|@WqlR(osGb0>UY36K1L8|5Xr__B%xes2)6n|SXpZ{6p_~H)$W5&Zb`I**ma4?= zWSkfy-Gqt#qnAUdDvM?EujrSURTt>qIYq7C#T4QL=&NW8p`Abi3x_!M^9vO z8i>q+KxxX=MuOK#`q zv8X}CrD9W=?^xd#gSE`!sT$bfi60+bZ8$LBBg-A`J>&`%c_;aQgrJSyS8x9+AZ5#k zjRUr~Fb6Vic;xYIjyGI38Bfqqw@2>$s7!0gs~eMZc$$O&NX?G~H#J9G+@VQc=#ObA zDHf!kJSBX9T^*1 zX-3rk9vsNQ8BYq1Xvh&v%-aT&Z`;&cd z_p$@EG#oQV|N)A;rnGV)c*R)XA4M$yRo8v8n@UECSnV<}8 zS^~UpVU>m1WZdrCB@u4(*)Dx8CBq)|nGyd}X=ehZ>ag^&7&3=mN4Z71Kgh~xT(cvB zT!fw;UQMc=?mRg0rL8}QT#BogX^FfE*$NUpf+tcDfs4dqJ$;v&OlR+)PZjdnnE$cXTdM;Tsxpn z>z&2sK1cacT0-8+{6dZjH_~>B!e{IYejr8j7ezU$`^iYM!g7)0jTxh9#ansNc(V$Yz$W zOl~XUikoji3EE6v;~=3^Oz9Uyrv> zJntH3mO2;_VLio)v@i4@JK1@eP%s;;u#p1&2V6AWZsfJ&z2yJhynQ{S zDuE0F{gsH#>3b)haw?wcvxVtK_uXo^)&VIyg1NMaTsH{s00Absw)FG<L>1ifB z;g6OB!NB0-nXG%LnCz)MR7I%Zcc)9w$r#4@OL}D=*j8o>cGmsGcoGxK6Ghpa zw?j<7VLe;q74(#;2eVJtVc=nvY{0YkjG8PK|K8}GGcj>@CP@VJPw4E@^bEBeD zn0^$!@fHe)g^19--tK5N-S3WU6i;P@W{fz{y$TtHoMR|^*O>$!J+9c-+L1KCTo6d? zcpM=ME-ybWO`PdHJpEbkYlPp8bQdg_36Mp_@R8TTW;sP57`g0jAixX@5#~Lao&mlL zlHg|%C5+IOWjU1~M3a=<6;5X?Y)&Bhf}E#Kf{5lO{#F<&uK#2hs0wNU-$=%p8yAd4 zEwd0Bi=6LQItfFdln{{`hfm$OII{leJ%*yX?bXcj@#6aSI@(fJ!b!zokr-d)=RrM0 zQC+IzRyBnZQ#x;6iq@LO4j!cg85$d6bAwE9%gTq{iVj(5!g5G48cffT4>-cd@V5)h z?MRC@1iK}CLUIG-sGaBH4k15JR^8&TGA8TzcQ_$NiuIi^FwdW9&fn{A;OGdjyJ?$D zokxJG@0`;X%A*SUK!1hNqCZ}d)Vi+PoIx-J^)-MXEPK|xiufb-@F*=-6rIBTwFgSD zjhmPgBfkEgI(8d+n(b6ou<$^yo^Npk+AKiwGpo1IV+F~4pBTOPNs5Ng9T;hi;l$Y* zv7BG$pTnZVXQ8ZZ2bu`BrEPy_9i?`bk-{;O7NP~b&&kuv(6H}_9Ds8R9E=<%_m=}HA4q&CU4-P|r>ieAH;$H`34Snu=R_UfLSoQ`$j*U!JXav^6> zcxN^m>9>w~Gh0>$#t-dCnqzE#fUVRvy8CKlZ zBCGf1np!)?Ts)8zg-c1%zvx|-d<31*z+$Z`LSc6|HU23yn|W|IValblc+G_vNZ`Y_ zaGhhJfpZD2Xe#6RUv-OhlC!X)EG=w{TMo!l)gQWWQ^JV#kGN+Ly$4T+K7h9 zoQ+amZI~>qCQW!~C^{CC{AAJQ&)0I$n?;?8Z$xJw)Q@pss)+9lXReQDRc9~xjzaL< zGn&6apv49YQsz>6WJ?GUN3RHZ?tdX9UsecDJpSRtgCoxj7O&L!R1pRnDPO%Rcs>-p%3wBb)~>|A^i@nv z-G9xHtxmm!5l$asu0@`+e{X;-tLjC#y^yUrH2%Ba)db_0Kx0QsSYqs-oFWeJZkEx>%!QXoSL8s0Wwb-e-6uJyLO)Z&VaS+auJ$ z=bIt#DqIYS=0rB-d<5Rpx0bFJco5Jt&lOQ7V~4%pxt&O}>wCmlQ9kux!9#dTT@gt> zOkc?gU&dg^PYoh>A5&*6Bh4})vx13{UDf~d$D!r60NauDK#e1=9v+%}I1PVFYRV4c zQ2xlgoxM}<=R#`ew{jBdj7lA%Kn)N|ZGOGUV8H;=7nuT2A@!^rQE6Kcqv7(YB&>5R zZm~d5gI%OenCF(^(hsp8x@A?m1p4##3$$>8u7@kTQ8`l~XrrFn75r0^_`ZR{eU{!k{8z`}ACx!j z-q+b`)-=IuYM_)f@BQiY2u;H}3tLT{OqbcAgFd#_*;StBqvQM=KVllY?T*V?PrQX5fhC=YO%4}vix~L*Gak4;G^@?a0s&P{_6x0 z(iEC-lS5cBTfQ>5D6zc-1cMZ(EN(j#*y7kT)LjORb^)|aQPz!`NC+P}G!P2LOS#0y z#4W|-kJbzu9t|CEeq(gKg`bEzd)dpz50(V>ETDPMKwB1jbGkLnBl-t=)G9w2)Mv=n zwjziUZPTvnz}r=T7oCJ3sF7s#wr0~X`;(@#|0pZv`Zbo9O78^qF&3ZKYjl_BI$4i2%l8#$V za^~Ju8pZHmLnMARh7U~Ivh$YCkSvD{J9z9-82?;Lpv(p#HhEjb{GbSI@L|={OGxV) zLUE%fNMD9?yYr@SL)sN|pC|ns9~aa-dXfjryT%7&D!@w>XSe9GZW0@5t8zp`(23rB z$yWSoC+iRMB0^&C4l)>g3GrMH6A?HJvU;9{TioQ0bIBSzLXuW>NKpSvt9h6~j(RCu z-_Kzb*aeu;ct`fUQs1~qVe|9o$wWjyZE!^b3D&?4R9#g!d8I8TE(0ZAHKYWxFzoz7q^>{%-h6`PXyr${FdI4$vENF^6lyo!H zf_U@u1c$mFzeF*uWWEcw8v;5uA3FoMU?~J&xvr{Z7%NetQQwcfu)H!{C5*2sZ|cD7H>!Br`1rQ6!YrXF_;)e+S-h0TldxFR|2a@Ugx2+atowZGwLl3UYn zGkAGgez7-CbBoRExZQ*ME4wS+O(-wVKc8xc`-JlC!=04g7 zo8Ay_sCG^>l_5_f|3UMlfdjigcXUykDaBxI||8zVrz+ zOOuY8M+iLxVV#pm|H(8H_EjG#{g{`0wzloPu?>Amhmgp-81_{Z;#1Che||sqo?X}c zpzn1DT-AO@SPd|Ry5u<)%fVuGVF_l2JdOLsMP#H~ld-&aycBTkc1rqJbGmB>6BLSB z-UxjS`jz9C%IyzdE5L6J)Nb;_{K$07+uVr_YFyVd4s<-rGVro?Vu%j#*r`@UcPbDg zOm1%DARR78OU${G#m#fd(a?E$Nk=HZuL+zY%v1nlL5*m7XxRUZ1;C+Hq;Pl4M>GU!GrCLgEYX!9Rd!^QYeedE;hjn9{e|J_GbrxFAszutV()q|19PTN;v+i}&Rlft zT6#2h=w+TrDKlTT)pugHwaEl@5xSGnmQy6TNDR%%SRX||jI3MyguQ>e=8)Q6?0!gw z=?#QAaVo{r`6CeeG6Esi++IT}`2l5KYn>>{oY->!_YCF>jSCN<43m#G>ZX3wE~pd~ z)INLIxvChkDxA*MfeEtSv1mU8D#*M3)VzCYDs7v`T$c~M!&_X`E_I&317Qhrll)2VK0drJcx{cazc%Y^gjOcpOe=HX(cpc*LX`Enl%>0=xWp z(Ur&3e;g6>-j~;D*>A*x*;qD1P z7S#G&CFuq8c`-<6RQACPpsUFlv_!qn>NaLQLSmMOtT$hCV3cKeLqKlwXw zu{uL&RUlyaYg%o{isrg^dP*rf%=L&IG48pSNQLm|hm~7l3ieuml{yWa z{xjm?&dtzVVRX{pF7gW`;qeD4SSQ5dpb@mhNCE;6IFjl&)8G#F?KeK~ax|7kf4Wob z^&i&`{E1Mn{V!k8w4qP)tGceqKaBrWee}TjBzE?L%iD0MD_3hhbI;p1rHjd!u3c3j zLFqZLA-=+tMD$)Zd{F&U{qmRK#DYI=y=vp!HFVo4VdQ>morBikBy+d3wx8(Y=Q56$ z=?|C7x$`QkT$>h=SpZe9{KH>M$|eo$k0UZsTsjyv^%u~>s2@fSb|9H7K& z-lW$Bw=3GmGit~+snnlG;{kw8Ml?O;zmuS$zU+tqNU#GD$`Bz5#&z>amU3*#lWid=sp)-Sk33stl>o?Dq~Q?Iv1Et;K!@S1-s3b+=p}avG%bXD=;+!}0IbrY>A3)N|H>RiN(?Y(=^D<0Co2N`!G-ueD-j zmEYe2#~MKJ0oWUF;KSRexT;ddtq2kfe25|$0`-A_86c(Q|43tkvP>R?Po~{cn-DYx zj6ln4-xvdRwJS0UDeVQlfM;`nd&y3DeVYsLNbMVC;1m82*P$517+@Xj@|?5!JPIL- z7SaD8-k1Y*PI8~=Aa_Cb(lUQW*aI<>gGNpV-na)^oL=|J-Yb3oY;OEVczZW;lvp{; zfg%LUjYx8v0GM1fyX`;pyy^;n8?5T(`{*!4w)Af^yHbwHJ15{RB@jZ;?A|wGKmbh@ z<$$mmE8CfSfPx{A6*CX;0|0=M-Zx4BU%xOxrF9)CelC&g?Fi{5-2lu$Kk5B9B@sVM zH1MK)ywD?p$d7e0%-c!|1`Z7dXcQR z*=B|_JtLByqwy&MfC1i|`LCv%$p#?yPtfPr07gLKGyiIKlB~qR9vq5XFJQs|O#f=K zzSt;XRRHim(4^V_YcBdxLo=FnXyU7EUJd`RZN&l%|7xqRymO;}IMV}Agjh6vcKFrR zug?DKYe?jN;kQu+1Z4WPRy5G;<;u5C$S#?OgnMJpT@HkJWuoaT`>z?dfZuhnN3)*D!!<`^14amD~JzVej4~$u7zlZevrR;<>s5Io} zmC~6(!~+^3J=dyHD;5Lyi@#CR=V2}MlBF63wv@K;KuE6l3={4_`|cbAZDtsZBv6w{N4xdXlhv?)AMNG@ zi_$sr^ThdGfWyK72q?#vWqTm@~x(YXaT zUjaVteFlpn50|dVD$_ubbcv1Qyn&>OPn*T89St7GW;v*fJJxpOH$k7UX)>~3phs3o zR>>0)lFi0O0%q@~Uj%|(amS&VTG=F=W?SW@<6A$}e$^PSb4>YqqMOvDMxHkc`aVP9 zYaRWte~QQQOEU6q4|CuN$WSVfuJc1QiRLk^-ymuL%iZRD_S`Qsq-rL^UR=^$6cyr< zA|3Hn#I|_N_sGXr#^M~aIdku5sf}h24{?ZTk1LWOoO!VD##^OBVKotP)TB3!tW^4)j+x81ahJ_nH^ScT3ZC=XO>ZdK{Rm+5tORI$T zf7jE4Y=eSb!SIe$1!BnM64^hM&DKV#QTcpJXCbizlbQgj=PB5*wG%b7l!MH+J`nCX zt8CJowsKvloKi<~Jq#C5KkM}}+Uy%DA@fu}Hq%LjdSscIWz1G8xh^V=ioOE+=dchN&nsrIu6K2c*D zJSjdYMqJ?9o&8>#&sgBv=$8=Q+6VHN1jq$KSt`i&+aU2_tX165G^r7jTNb}FpA+PM z$!zGp)TE6s-4^W(3(#iX=$<8bffumqfF{cdkyBAbuwp7L5$35~q0qnZ&yeZ{T19W1 zm-8$=&FCO7^59wd(W9d#i+THU#MCwqqy3RKoW+vMwha~4MhhJ#7yWI!4e=A-hkk|A zM2lr+kfOQ88p8hPx|hUbo7#I4vguoM$&IMKm0BH@(Cf(4U~W7&a0Ij?CiDD55FUse z&?-E}OSe*|1{CNyu@SK<@aqmdatz#xWG&Yd(WJ0dnE{Z+~^iZI~)x2#XZW-nM;>eM0;}5Z1$}K94M? zTwa6dUjL#$RVUUIpGdh4{A#V;jT*%);5j!!4GQ7}JB<|~9IHkBu3PGMeq=qF4h3_= z^}?yU{y}Y=Q$SliUY5Mxc=ER>A!TT{3d-fwigP;#A3A%$&GuMezpwnZ@i7gY*5XQb z#qC_p`MmN0fyj~_JC1TZa5v1L*+*~VI^Mg1X_nVLS`ZL~J7o251@DeGKa<DctU#?7>H78@b9$$_SP`e01U+ z6V5&G%y=;h|AVOV(pffZ| zHNw<1*~axP)65t|!&3Y%zwdC5)|%P9GS1^Hl68Y(5&E%~HhQo<)6FJV`9spV&?r7= z`J`|Ogq2g*=tIhG3qI?N*?WE})ANZm_9jAH54vAaO#c3P9NP6Nc)brBz||Q*v;Vwl z0FX_As^yW-FD(Mka6F^)uy=M!ol2;T8gxrSSi+9)^4f?}06YzV|0@9>aiNXKUcLNf z@Coe2i~_SpTVL6E;W$4sS+-qetpETE1VexRDgeM9H$ppyPct;baFnKO=e!0wKqT_V z_Dvu@3^KhcuoQY$;IA+tXrO)o(cl?N&ib0Fn? z@(xIWr#l?ecC2CkYU-gWt8h#{i)Arie0WXcd}0XO)FtVcG6jv-2MAKo9K^rmDdAq? zlC52&%yNiB+OE=JTOkXfvND5(0w6K~Wcwy#75n^!;pk30&~I_-TzH0kxeoL1yQuj4 zo&i+2Xa@z>iC8P?0Ckev5KYC8C%S&NCH1^UeekT?V28U)LLMVp z;!@-hUaQ3~J2P60trbHgP&4g_J#|+ssMs)|lUE@sFO*nYdKF}*bu)4xO(z<%BQ@=T zx1AJz_dRoUSL#~AAa0uO{Pk-D5~DyGZ4f!p94v%a9stJiJnEOk8gmwMdf{V6Y_LO5 zR5yrPTN>o=NFkU*dR#uW6>|3+vS-*eC&oB$Cd;pW@@W3iPX1wZAYzfL+2iMHXh;Q` zLs2tZD}DJb+^g>gc!#fm7$ z?g=%f++aiR0CE6O7dC)6`HNtXVUdJ?k2pt{Fuvaim`f7=|wY$fuZCz z+6A2PZ(o4OrG)rIG1+KLo>GrI3@q7+0B{!39IA;|x`1b9G-242Gxya`JM>hprQIFZvVfu4}art`FPzg${?-XG&9)ZYo_tPqAP26KY`ulVD%VHos)7A zWY6<(V3`{Q@m@Hso$pMhfhQriWPQS=K3%BEX@ac{@8`XSV&wI1&KDcq9@;0A<6bGR%2r6dJb)m|Z8MrbH{8vfz{&__pCu(>_e<(K$; zagJcH^&oAX7nPo&fE(9cZ|K40IdV1siMtn^x zX0eM1`QB2WP6rnyRh%2r$l0KsZJVuR$rezQ94IRPCYCrzCS;ack2shF`c@TItQSb* zAV|j$p0$cY0EQ31Z2uoHWq5B*P;9^qI6*l2uNmU;Q~E48^&%ZN2um(t!U0SZZ<0&s zg?upa3CNxI0}Y8n>;-HbfbFk?;%Rq4)o+XN5V7Hv&sKVbzWDp*RO~crz^oMZej#1+ z)Pi@t$|6fX`NsO{Ge8+U2>+<`a7@33`Wb~$@Kd1_T0$1-;gcYO0O)J&B%&ES#eY2u zi1fcCN^k>p0!;{D7({bKZ2vW!4aMt6Qc4PaFZ`I%Hh85Za4#-BsHBA~ zsE2<30jwNdZP-q2bTT7qsdRcl3PPS_8X&%*z)ty+yD{sZjmnk-zPlr8(Do6{*z5dj zx5oswBXFnkqB$z^z(h^>&oHOW?%3!Tp9?1UB*!d)85ti#H=y=8U>YPV75Y{#iD_D3 z|GQBxAZQvB@Baw-M7+F6#z&snxVV*A7|_RBSYbrFd&!&r9HNi4T~ds9jt(f)f9-V zBMJXALef-#)C={k2@}Fi`jda7_og_Wxe(R7{!xNkN;L}<04TD4qX_8qIrp$;6ky52 zq*)XeF-T;q^RsMyud_8U-hcQ@krHFB?2snsc%s6`02%x(6Atp7E&u@Z&JTZC`uFH* zHHZM%00uwEzcL7f)h|qrb3<*JWgEh8Yps}o>5Zb-wIGaDt62yn(K6D1F8Ia@sEYT? z+>@;`g(7J7I`;^bKqc-L7XSdpnx+83-@` z!{sTO1q?}RmP@Ud)xCKZ@_?Vwfl-emsd_Z)Yg7Sn+S! zm;nI5jO+amM~u0wkLl<7B-dPdf5x~H(=$}57ytyoqW2q9|1}3$4I%7O0;53;sWWfWIE`pdh&+(t z>Mi5}2M!UMOC!wkB+eu&2?Upctq=rj|3P11TUQnZE>8fO6V33Ns0tL&9_t~4!)YL| zT!Dc@EEGja0APO+&4>>D|F}Jv_Z%pJPu`Pzi3g&D>O6$JXc8ayI*U!>C=s};)DP0M zCR#emk_^Y9;Vt7Vuh5GJ_u^k#j`PdPSIWZ1Zhg zMM2A4eWgUu5q8S0U6ie-BH<1Tp3TiWiv$0JI(Z1S|J&DY$>!U0Lfxk#+t`-(@1}3U zpI48WRnBAtGts~4FC$IrR;7-P7^quakjsqi4|+@SeN8Gc_P{;A2T}`Vi)MT&`Df{G zVeUW4h2EYrVG6vzp~wy2!Ox@e23j{!tO#n@^yay?C{H-7UzxA$bo!Lu1~GuDnsBwr zPV6^K31p&!+1Jky+F?i>YN1eZG$-T6TYT*B0UtwENnnEZa73gmQaWr;y0jFrscR|m z_}N2=kKBP@TvMlqr5o7WuU+P@_QiG`6R{<7K*u>ln%m@NxKiLABgzs2%uZcQyTY{0 zpU^h^bHROlne$V;C#ccWVYSu;(PR=->E?iKqRY)}LpA6}L2;1k+=qN{nU91v(c1kC zDH7J9=AnkZ`_c6?njhQrK7p=M7X~2w_};#TZ_!6Z9V@b>Lp3;k^UwF0 z-$UyB{`Bla@lVuP&?#0Z*Tz`}5wvaTc*Zy;)bizLR{#eOaI;y!c-kfOJz3Gc};Gv)k-IBdx$CEQuK6LhYpm?9Dd`;_+wy^0b8 zNTlB>Y~?By^;nXErR zQI2j);$$sxcS=e$YCm3Oz&m|b-ym2Pnu@)VG7bdGMk0bb^M+;9Bnk!&c7IQ*)`jmM%i&y+lxzwb%Klv3-~`m7kSy=22*E9)om;+(RqxAgFX(XO!L|< z@HyM7NyHY`{km>bqrCKrNG@Y&sDZBq4Sy=^1DPt36<3q8Ww2p~yqK*PqPabCIw6a)1qg zi(<~cF39m(b>e~G8ysbXb9KipgyZ0{CA~;f2hoU++XVUvTODMyJRzFXOTHltZ3@hWi{=Cm5X$9K}_wk6vzyR?Egv-k0~!ahX$bnp9l& zlWNSvHv18n^V=Pi!Y4wrDkU#r+{MIFy+->z0vj!cw=-h{pMz=NRV`M{9~Sk{ zy8FleMCy=3?BNzFn*oB*0_0=bpbm3Nqs9>n;uu=R0MZB?#cW`3m zbM!`0O0oNcZ?L3_X!*A1jS?dEzI~J#YS~#hVLoMFq8?eVhaXa-@{fJ5QdP&J2Q~x= z!^QV2@C?F!@AFy}JGop54?In5#pT zI&+4Gs60-L-?ANZLc_2nr)$7(`XCQ*xz^u(QR}t`@yY?( zZ1y=^qe9Qx?gKN63$&yDC$TQ@Htp$U*S5!xHa~}YKY^J-)2GR`U7M7jBR9O$F)|>~ zS3j6~UY?WpT)PKv7OTr`4dHO$yGFhyG-@&`c@*)H*$*SFv3UkB^K)`GWseMwE6khq z4XWar_kQw3hw!cI8E^kmEJ>@k-<^^K7vxSk{HsqvNR!d4q@>-yUFt)`C}{pFR-$$G zUPq?-;X8^Y`1&|j2MCLpPi1F3%dsl;Qyg>tt{aL&^VHV?jCpm$A09}5ZzUtngdf>_ z=fSS{>_4N|8p?Kd0j%hP35jMjQNQKIU-+Lnn7X7I(#R}g)1v}k6f?yn>_F**{WB_w zpyw4|_fJ>~b-FAH)6;iY)ToSh6pBQl-wt%;Nh=*dom-s}ep^=Se$y zj0hu6pz7aRT;GGPk-7HL-cj{6!36dTrq|@at-*FiEv&FGQHB8@>$9&4N*&NG<|OzW zUsU?Ic6_hZSILl?2w9>ro_u*nR$7|vCHgV6Ym-IWuv>(7)apPw8?}>AG#?VxbhlPP zg~yo3&klskeoEx7hDsWx=DhmX<^a0`Si?4aQ)Z>6;9hOex8 z!@`W`@v5%R2ko7%WsMKII$t@Rhski9Z8~FoKFh`D5e+F|EK%F9s9ln?5H#$W9wENZ zMUHWQh<2R(USURT{2pij^odSf?W6OeU`OgHBM zd?jkh&T$TRBMand?dNehYO#X(iNO~BJ&ik_AFP==SAlCT;fYz=qbS8EWzYwUsJNG1 zA8vyg&Ik~9zIkyLpZg!Kj@%FVofdRLUesRwNEr6A8o}hDgq;MhewbT#$}6d71|QMq z=U{|hbprwO0u%(Sg>^{*hxA^fg#V5aD9XLpNKN|H^q3x}1~b}4xYJ({4CfEzLx~rZ zs*w?@7;7^!s$i4}__5V!{AcCGkkzz}{r?Pzlrp+`WQaS2ay_Dx4Gc~3e{*&1ttual zYt?QoAwpBrzN#r4q%ZrmGt?#Mz&R8s^AycIrSa7M`>uY(xJ@YiCv`#C9CIj;Od$|& zK8frcMlqJHzhByJkxf-CZJ&{aaP^{akMV4?Su4xnq#>E8$G~TLE5vB=_>8I| z=mTHJQBM*}$3i2xW`UD(es}I8yr@HmZ*^ zyeGtB348pbQ+r*A{6zG6X&Pyg;U3vKP6gYF@K{l$>F_fyla&`IGHwhF&d!Htbc$@m zHxZC~_b{VJ?5TTVDn#oFB>pck=QPLx0|)t!4TqP$au^MZ?1>>L(KA0FYz2rJkONt; zG+YHB?_TIp@Ww)nvAA+Y1r;w&X0VIO?4VEN+*=9W=~|d#Y#vG9vrrz5qA`G(y>zfF zc#hoK(?j4FRD*w*Co{8xKZy9~1cFhOisXaJH4Zy$*U#Rz=!I?JC?5fL5Ty5Blq$Hq z{N)>mn><%)f0sO&Q04Z5tBLF-&RTX$9<@IH*6FX{4+J6*`kQcpf?6I1vMnysS3!R+ ziqT(eKbnqe<(YP)Ms&K2>@yNTTl5YV^N#+E-Bw`dWtEBo!V=JZ(TpKWKrXK_%YR2K z6iGAXc2zf%3TqP<;F}Hbevg%Y@QhZzB(D`Z3_n|bOea>}COWN;pzx+`zt zn;qVN35%^bG+jh7SzoN?d=kH8>nyT&Qp_5hXc1q{JhBNLcY$dbGlk_!wB(y{wHPrW zGmC@&fL4`QXAT!NpfFtk#l#pCi*`)rKyZ?Tf_8 z;`{1=oikn(P->9%)TRAAtnQ{f6U`3v*56nuc=v5X$18sbxJQXwWc%RJS^Y8SsE`L} zD(YmA_xD0tA-IU)YcNWeTvdMd8T+~%^Htr@7=E@@N!$BGL|TWu{Yl=uqhS?lAwh~e+dr?k>Q%>Agp>fi}QwuXi z)LnUBoGC3uP?+P!?*5k4VD-w4K_Go@CB``QC`34XcKUmpXyF9SKOiz{tQa znlTv$xcW8l_-Ezk?=l7m#%EPr+CDkOz)u;{8#}DlpZODw8}~Rvnru!s_n9EWO9&Rp zF}@aC3Hsln@ZM2tM|;UPdig&h_)W+3I-s3)Qotx{{%WIBsTE(kmbfYH;7$);3yZtS zM_rCMQly`VRJCdE!`O`y@7>hK1>ISPC%5k+)i%kBoe*$7wBRD!ybb>Rh~?CYKY60) zIlfNTiahf0NWqwBkK1Pf3Wkj+`;qfdJfJ2dY|%YMmT@Su3lFO%p%+6hGY6ZIyGa&%Nwjp~lrv$l!!6oNk0|zW zAg94TG?BzeE++N~O+lFffy67)mvi<=nuE4#D_vA)?z9bh%+>1lZttayf>baLG(l5T zgkp(2kuJCSS&HD651|~FLuatCMP57a)Yff@gs8cr2A5m~kE%c)EoUU*!EoZKJ(FBh ztn-Wc+|mUeo%6=N^8L=dN7iTj&3m45N2XY3jEL-wzMe#ThrZ-eM!3{42jFOsglNY6 z2p}IIL-#+c0~jb`b^dQpHwq1dW;swW+5Z7a@K6skhww{M)<|G$Uu@0ty@kw0z&~PvS1vgvFh{; zQ@q9+@%l6Pd?=XDXh!vYTX_u)Jjr`Yqm2!zrZEr-Md>?L{U#DLf2>Cy;)xM-M{UHC z=t>B~YxQA}OD7=Q5*<0q`t+7i1GHrPpVgd4BzzLdqJob0=v_X4H;}#25QDD&vs}`y zLerIt*?4O>x7q}}UD~0`t|_J_#;3F)!o;Jb9FbZV>=BsXi<|#mMM6q`&^b}GNTOGM;?{z zVDPBXDv~x%PwP&h#0}s&bz9AW9@|s%`v1}Oj=_~iTi0l8+a24sZQHhOc5Ejd+qP}n zR>yYorO$cauj<~qw`%{}tH!RU_FT`JYs@jnEVE8eLU*ouINy-eTJ51iKuHxsO;3aG z;qQtoLQDJW5QwGD9V%o=;hF1ba>g`&V)+>K_$@x)|5%R?5m&(2<_%To`3LI5j%>d^ zr4<8?i~}td3VH|7CU(bCWdyKfxwr>rvLbv?2CL^<_!W7H{^Z-G7<_LUQ{DZ60ZY-) z;)iQh0LjPn?48^_aS^5J)$h}AFe`H?z4|2ueWhS_d)7huE1^?5Ic zDlqmgomN18FCmmzUaX8fj0`!O{yo0ur7+-%=}hh?kBJk=+&cMrJN@Ln|Ie&f?)IR& ze|8kefPVCBD1@X(4W97hEXRuyPS-|4X0C8_SImmrfFF8Nb)Srm8fh3Tkqox{ULmp| z+S##*E0)6@_bL2PlCVJ-u3sECafO;--!g|Fc5QU>>|RFXqoDUYo33x*iq{H;r;TEI z`hdXLp@%e8@6*MX385A=Rr|FwcE&Z%V3qM*k5l`=X}VS+&dIU5-#u)&BsW<<-Xf*- zHgYMJCZQj1?0PRyX9I}s9^;H49_gfJ3!SAPlJ_>a%lqgAr<$95^n+v)mmO3oczI1d zsAbMKQ$K@PT8AT_^B2cwmsf_7g&SDoMUWr@?k9=vUU>WP{5XLgUSiXzMvgm`zSy+J zGlXI6iOpuf_=>r{?}&?X&E$pf7t_2o(A%T7q`julbOcr^g&9J*XuBjE5FmLz$Xj*_ zLDVL%{&sh~b^G73ix!!`SEn4Io^PR1&^XT7u%>B0Tz1EriZ`h2M6G@FS{OJTqx^v7 zn4QZnrydW7pM--!AoCdf-+yxUzo}*Pf5|XZJh|M4*c`6Y;P(R@Ze{xWYAp~2g(WR~ zM_Rq(-N7S^K(Soq->{6{=xW}fYv-M{AQP-_NWEh%3=``jlv&1`R%cYOA&wqi{Z*_132vkUBP+RGH+M7d74BrD{ zLP^l*)n1r!8r27ovN9+T@pAaT-H_r2JwisvRmUWr=;1a)F0Z1u_^TjLTi~OXEe%a> z`Dk#WeWxH;EnwP8;m7*VwdYkS)2>#fOsbb$qxswLe&?-!iPwOf_{L=1( zs#04^r2$E_a#3*m3i?7_Yxml2)CiH+T{rNQeMQB2>iiBz(!it&!E;+S{7oH-nIsGv;3(zePLF9%pU)fWDw{=H5p zF$AfBy_(NaH)JGa_cXa$7rgv+0@}Mj4B$H1o=`B9-g(H~Nri zF_&dQs=dRDSoj8@&!Y#lh-!PQ_1(37B~Yr9^c?Tvu@(HwYPLlB6$VjX9(i$3#MD;GU)wQ!a@};K>1P=lVxs<8ERtm);^f3ru_Z(So)cc)n*|KD(x0F~6v(_H z`xi8C|F0zVU(l3smz?lUrW=_%fRrQSlWST5^TRMw=_#t&r$d&!RSzFu`L-2yp>UdqkJeYqas=bF_j&sbZ@xBZ&x&>Z1*TP%nn6Vq@?!LVp06N zo4&>OhnfhN^h#!B5XA5GPgu<0wgcI%<(9Oo?4iOc^TOiC`~byY^Wa|NekduxdqUMl zE``z4QTULT@-`})-u6@LqKSKj$^MKM5%&!J=mQ0O7xuEwo4=9rC#dac5_mp_U=DW(g;ca#9!V?HZfGLA z#Pxcy2iK_w2s9?6l7O&z;UB*Re9B0X&7V=cG=tFkC42xqFf7axM|R74Xd8T-iRe)| zHBhxxm{ASUdD;^MZ3)^fXd$)N>JdLPk?U$1-_#G#{MEn_uaI%XwqTlns_Q_i0+~-@ z|AONGy50PzWDNkX22~qc)IcD4@x1U^j;_rL4znc#d~>c8-Y3N+Qvwn268a_4Z#x4j zC42)A)QMQ{Gy4?i#}9cXz?u;r5+WdQ##+J`8@v*269i%pfCd*`toLzsrRQ(r641G^#&mFtT$g@#adMR4JG;6n1ANP-&SjE*=r9Td zRs{d0_?65U8fC=#uM@qr0fQ6*6MxE6OCf|!Z5Ct*Jo|MG_-}o@(BtXxBC5=VMpt!A zc>|Bb_#towg|`CQnhT4PF|SRRGUgt;^-}UCU!9tobQ%uDcf|y~q;l`CzYmO(MsEN{ z9p}j(?Q0lO;m@B*IjH2yYC=@BpwsjVVfmdv(h=#>^_gm6fi5Q-pv=z@gL{;I?9juT z6{S=mOrFb0YcpO_6mWOr5w&FxfVuW8#E*DrTYBSE*SCvE@WUscPj_MP%-VKTxBj;3 z6jAq!NL>K{dP)fcAN*9lAt3}Zzs>$d*8keM5dP;z6VQ&}J6qCq8zOEVoV3e5S+IYi zvCt6?ExFJdui`p~Fyi>&mIN85(-Coyr~2t}_j$VY8_Kfi?nV!7&8C-RBKTPP^Sgny z%}KhRLZd=GqZ&dWiM9YD!yGgnr5Lr96d6)JF`^Sm3e_bLq~O}Nd8{0J;!-Ux3D{MC z)Wq%5)nb1f1tnAE>7< zEMDEZ6GCKa*oyTzT(J4XgB?k%Fm}>I!Zh;hbnbfbP@)&*;q;Yt{Rxsn!EL|xZpNuJ zlI=nJuiR;I$FBXsG71g&gTt)YFsb?!#l#Iy5MD3_K+<+sw($LC%AscH&^)-vyG^Dn zKd4N@xmVSZZLMy#Zv|W!xkY>ITW)hkIuV@H1cm}-vwjA{l&uI-_O#bMPUy0pwK4W* zY0~vGcSbCletMJAWuAFjYvWlGi>}s7caLWRDCmCOM z90D*mOeyzw4z(!B9LP%5s2pMu*bqx32to4s69>d^T{snkZd~h#JTSsDXjeyS^769= z8H7^yuZB@zUNi)~uIITDuxA)-G8*5)Q3nDSy5P({5#x>$zt)n^U(2q`wL349rWoI= zaRbHY&a?aonrYF+W*+`k4+ml-AG*>TqIVTt@}i8!V)bn`F}EzT=sH0mw&kPn(bGKm zmWmda@&2~ELN=Ksp22v%(kuSYBZPzntpM<^&&iF163GsbkLbglGjX-;+F3^(|r)2&#~$*Iw*+Xf%SK%)Z3YcULe z_=yU|U)x%2&JJ!7j`GnqxAhF&({PAH@_BwA^5}BNeD75CN)w05a@X50_j4%YT~EXK zQSat#7x<1|MIQw8aBHIrwl;4m&IQFTQrL`opAT;=Fzk5Rt8sD#p|~`hUtU2pb#gBl z#S`X?-9EQw&lrL)j+AKOJq^fpI zh;M7qDmD6`F29R3L1}V;y%&91qEs{ze+Ctj#QVUau&H8Cz}d_qx(opW)69} z4*dHxZQt(|YgkTeq8)2t^Zti4*s**eM7Q!m272c_zAVFJDw z5mgW+#j-tR$c}gm=Wr5ZaUg!*iS{;D3H$8Dzxp-ok zz&Sr{acHMxy4ogA3trHM=Gp4`V0TC5^&tR+im|-SLD}Ew`#=$Px-I>jQUR;oYHiWR zCd2k*>2kFa*^P@-Z`=^Sr`$V;dR;N{?No!{LoXKn#d-te;MR8^arz~ydoei%9Q-A~ z$qLwfVbie^{T-lpnGW@l^9mgX!ix?}2+YXayX!!;)Z- zf0gd2m2H(#Ah$h1hmll_A$ z2(Bnk>Nbj;acuJ~h4Oc$+J;J_wmo+iaLGcFkmY~%5`__HIE$TA4OR2CH0cU)b*DuQ zDf=KbyCMgTWPT`O(qOl+uXP;i8>q3;IdCAt?V)7>0{Bq#GSda5ncGC-X>{Yv+NEY| z+j=k~lGh*^0MMNfQaC1ttHqXRGUKz=c1ZUrQvtr;`F$P;vGz*90>!$r59b8I!k~i9 zd`8z4YUDX{fW%hDz$Wh%{ZztV4<=J+YM!I273lM z*ka!cF?7?ZHJi3I7FAIC%O#sJ+m#%)Sj3@s4I8{yJbh&wS_nxG%RSeSPEmFvhy0ll^58Mkl}WT$#gc^8MbP1r9GmTZ2?84NF;ggu>A^ zO%i;+LtAowM@nboH+kv{PlMmzT*IR&>ZU#7OI>DSdf12;BbaZgu4w2*Q-+FnRr{8K zD$%kHfgx?IWTPNW%-Fa^ry!|L@c41y=y9 znq+d+e!kRo zQZ8TUbcGWt8&X1WTL_wqgS&mMP8B-$I&}BT+Q4*({=!Ikq``HcdKz=4C|{j7DZ7hq zix5ZzwRk)TPLGv0LQQ@W3HL=(VMW}tl3*tQ-pY>M+3U>;J*3}X`U?L6hfjDpZ zTT2|#pe3=#))pm3k|RU?3Tq>3tnMrhkNl&m0{rVcbyu)L-Tc>3Hyudo_TV!28xsHn zN6@f|mZc%5Y8BIu-F@V*JBvp%V&Kr=`M8R`>x$-HW|K5i_hCaVEPiJUI$4W%n|AzK z( zf2Q9xFyo__%>h28w!?_PqI;w=HvX-W1I&i|kB0C^U$~-B008hVNKpuYrtg;xO3;?R z`MgEIX9FKl0drkVX9e;go>^fIydBA~)w_y}u($Wd1%C!`~$=vs*OhH<$2t4nko81H71X zZ@YEQXCh)>Fy$B7PPhxBk^aER|G-uLU$_$g|A7N&&aR=fHn~u4e}7yP{~U*%%C75f zDz@o3S)sp)xt<@T$ZMh3zJHOYc!-K^JjW@xbVa$OlxQ;c`N5Rf>@W`{;1j#!pb-HqDM_&h=!$9&d-Yg1KK2J!l>?Hpq00$#V$tf z`q5r@f3Ri*GT?vIl0SXq|Jz9ZUtumlp;0aRj5tPyC|`=hz_JB%QV*B@f_*#NmAY;l zh$ZYLNcJ_KpXBXcsftQeMz1eF{yb%;sm~{-I%po6ux*O|4c`(!?~|NsIUh@DCBtf9 zogJuji4;+J^iu6{TNl-dXi-kYA5|=r&47rd^h*vGNR}7vMsWcR%}dubVaH9pnqnfN zMt(Y@j~tWi{@cCso(zqg4^$jW&*;)xsxQaUv-Cq?-O?5P37p>r?#1BKFcUUTaCZSe zk8~@Lf&NeZ*zE|AR*0ASO10%|@H5cuCPBO3>1>OqC(el#@ zXD)0}rRRy>Ym%rzG|Gj!WFOHpMrzL0vs@_3b?kS*-`eaxWQ+G4l6Yep}lCSZP$);huBZdY-5=$a4uTtewiE&a zFNEI*;$M6N=>ffao=>oi{x{eGmoTvdHTDDtSR{_s9T@)DN7@5sBq%~>$Nl?WX|}Lq z^T8i1MN^F7`490MC~H`^f;d@wZEz{3LLgsg;~yl@?YArK1!3sT^@7Ue34pMvmPb=S zIElcxwWO%?BbvBC#oT2zSZ>Y$?;@yg&JZG&k`vH2{?18=NTc40CEd&VF*%mx**I;J zai#gbq{z;Ssdwg58p$on%!6-d_;Vv9%&CI6^M;TG22^Bg#~574WaoaDI)1tR70Os!Ummo@(}2>t0V{)Wt35OyoYf^G@d?5G;pwRGPU|pLe9&j6+Gw%25|s^K zVUyArk;jh*iG`hi6Lqt2BK5Qyn_;`3D>DtWJpkwt@h8LjwZ9EK$BbpmIOV;G{#5$+ z8iREhZS0I+Z$@8fwb0&q%yLL)jeTblVZax6?1>2Cq3D7vDZo*v!0a=q=E4=^z3?}% zlH(p7UBI9@GlxzeRAy_11+tF-)a(s>I!-vqGP@)J1RxdQHoSTMfqr3vB3PH|kNRlt zr9klGuuV1Xt|9yf1mJsov&Vm@%Rkp%-w$DtrZ$$Gnz?cq#DXR0QrQ`8bCYoU^}*Zn`U~A zvCl3$%FkhCZpf#{89HUi`|2x^a1pFSoRmTdWT+6dH`1Z}g2}!|D7Os`6tE-RGpj&O zlLpYLjijGn=yJ=-2_i@fY8&Op1=*iQIGdN)wt641c(rXjh7Y@OD6ko9c5m~|TLJiE z1Tr+FdWPEulC+-#1sx3MSYKJz-Efw|^ZQt&E$XSmV)MSux}i6wYnu&bF|k7!C;Bj9qQd!PIjQ-|tRcS-D|Z z;GuDbg?Oj(MuhX6UC6IDluU?ts1|sZe;dZ9rqh$E4;%wSZ{}gNrHAS-6VCLKD$vc_7z$(`%y)Q zA-1!Zb>(s)U?F{~kzX4^{g2!RyQGg48$%(OIcV@21p5K?RE%gEj{#4mf6493I^QTl z1+=p1$jtYWG%*UDYKsd!U|arK)pjy@a?O1QIx?E#&F}VlvUl!-?MFsN@N97GM@QGC zkx~9|Gv{zg-WF#LLE9gXUP7F4-`un1i&o7^IPML%f9xa31wiScv~dEx+vw6TG;);3 z@*%>)IhQHLKRO%<y^|#m_6n|%Q+nIXnb9VF;Z7*N#?!H`d=MR023tASy>jv; zk`BdXu1Y~}p&&+HjbsHp(ey$XtJghi#~q7tB9VVzc)JdPuaaU|1?P}h=;JeMKOy&t zQGFMU&8m{HdACD=ATSdzDVq!ACj*Fq(x^8Nz`#biXOPW{POBw8#d3~5dJWYK_&HC& z$OJOT!T)X1pOI>J7&qRWKtSMm|Fciwzkh57t+>K=%q!+1oD+;QB}6$N%<__1cylbB zq5-R!O(UZ*ik7~C4nK@LTpSi<-Bn_o2os}1q4nym4UQvl!wD=(O@d5+EsG`umGZ(TX`Q*@a1&*FZVkn9^o| zba@iC=&{NOz6Z=KxA{Ki%#8zh$J6Yt*KuZUAHKT|kRvK56haNV<=c{Ij|jvXff{+n z3%kt?ZhV(C^aKlry4tflyVxBSx}(Ze;=(IGJ^ZZL;!Weds{3Hirm)gUXu{6N6KDiLs)f=`Y<4gse2y%vCd7NEg1z zpie5ZGFsnec+gw#B-F>j+MEhK#I4FNJ@-Sl*WoFT!N93`gUMcOb$!9v0@`8LwiryDQJnc zP)$Q2K?4-&H3B(#0msNEx(A$oFvr^(&8zQh13OqF*K|ULO48ZEcFjW|<|G zmVrH#&zm}|y%c|0kL$HHIEj7GSr)mAs#e}Z6P#zT8$l-ktb>8eUzPPb0G}rU>KdL< ze^5qTG@d?328#afur=U{$kO&N!lf#x_;?LQu$FH494C3(r2w)#C4hwK?a_EaaZbPz z(|e0FpHp`FgWBIz7Uh^B3}6anxRhDEv6140-k`M%te z^&Si1aTyq#yStjO3f4Ps$iHI!>J9)<7xJw7*iBo7K!o&lv(%X;qkVRIZlh6jp!Q?s z-jKzXqYXGYeb*9`bT9G#)uvv=x|mL}*fB>YFUXTr^=p$v=gbX1ZBZ5Fyp#jtX1`D2 zMwZVSH)0TI2|$r9iFQVxasmC~}juq1r#fJBr{vi~qFXL~q0l3aJ5CU$yAW%KETs z=b_0gY|tYDz>DS~`cf?Xvwa56GG4mLDTINykE(1M^_(lG?pVO_Sqar)^|H^8%(i?+ zEfy>7$w>x?K!$26PdB*Z^bZ|1YSpm$XK;8Jg4&%!_uyx)Q2z*r>UH-D?6>5s8(s%m z3K#tH2kwiSxtAQbQKeB)0X%Djk#bxJAagRR#T~)KV|SoiWKJdLAxF-D`GY|Jup-^j z+jq4&a*M&xb`}r~X!QhFFepU;;&s7p&}?JxJ6LJ-G>8g0sV2oNs)&Vh)=VLKh=#bH zZjbJxX-L*}t_JdZ_mP0i0Pr!$;&*8@kXs~`w}_znl&f1mWX*5URFT z=kQFxSW#P!Tc0ef|!wl+Nq);K6*gaEr`_%b z|A4;q7In>x=1~-X%qynOZP;?O7_U0fLL2A2aEPBPa@je&a2<9tL68s=IIX;3*nSj5 zOq_Kb!U$%;XGk05I<)@QDmuT(-cdJ*kvz96IWZ=* zdsEIn9WD6$HtVwwfU>xm-{%GixP0M!-13p3LfF&Nm#0q8R0Wg_eA?XcRzb8A6nMaG#~>TwcA$ax5^=+h1E7g7pP<-8n|ib z!u*&1&l0kYk*J`>Mx2d76GKN zKKs>|lu={*kC23iQIAL^ezW)ILwR|I>oI*nBh(`9hV76j>)y5G9aG?0o+B4NM9{-v zQupU4pW`9A_c-HQi#x7V7Is)P!mUXC4q@9Jfkl*h8bFAWS|fT<>XT>)#g}$L`ur-H z0RY-0spMJFv!niu=HH<`nEqWZqavNigk^+4g%e+o`ubdA>$=S$YdI3>=LvmSf58ER zz(8%JSlY+Lz$j0xMhXp#XD-RQ2_(zqTLsM7Zij~UMma67JT<0CiLq`3;GbrNBl$4l z!-*>#<;E(AuWr&9-!%!I+DHl{FF}lepqjMbuB*_VuRI9(iaBX6iZfN|=bJswz~DKu zfJzOHQE-8-)Jb^)($0&^Ci)~Fq{qbK!g!zI-g>vL1}q!~y2A1^k0t!tr2J6(`=!K6 zHMtzNG4;X4eqo+jCT`oYyt-vv$np6ud6h26IdC+WQR$g9Fi42MfJ5WlOV~{{s=m^l zO@fY7k<{CBp#?5`WeIcR?_I)VboYkDj&9BO5bHL%E#DPhxR5EuV~U0@R7jj(Hutmh8C1-`OUhI53mo^<RcW7f_TPohbl<9KPen~Fth#w?aA-JW$+&E zZ(?do-A3;?QeEZxz%6pQcN{Os-z)qYof7M+tqZOTESiKT&5B$*T@;bhc(p!dJOY9NGcN$QjN{I#O)b?oL%v(j_P@J=bNfTBV3b zmBbBN_LhQpWm(3tD}AGDog87nB6uV?DKkokG-A}M6N_5kHsMciW9|g9O2zFF+Goi# z{ozL0WZKhGYtd1xjat;py}E}cvGwxd6G8F#WLUGt~yY7NI_e5_$+(s%e# zucp}wt`OS@nJa?fkoamx9Sa-j&a*%$S$=v!V#zdK`UpKkCqq}s^1&mohU^kqDY+x@zA}~cEwK(TtqR?+Q|yh%|hg3<=PAfb>{nuW>)yD zGeDhPqcAxSF-6h&2mrOZi(@|lpT_0Ml>mkkuE`>Qe_CoR$s-y#QlR^;RGp*souGAK z&6<}l{0mds#}str{P#ifH{g2UUBAdw8hR-L^n}>(rPf>E8NARQ5P7~d2?&LarsIbD zHgT>>OX2}6MMjR$%^u{_rwGJ$CkncO9#pncs6Xg{2F=bn6$)%{(Lw-Ej&jBp=&D5% zp9_MR|6h84kCa=}7qT?fx~ASb5X5680O-Mah4cm+=Ci8qVl}mHRflpK<8yzyCg~57 zl?L&|$9Zx7%57Ds>Fw9O)cTfaW1l;`_y;i;(= zE%Aa7f?IxD` z+m~OPx?kHukhO`}LQ^WVbS6)jO!WH`mI;KC32|ThBtRA4TObwEx~D=xYO!phLvEYL zpO%!mnHQaVxfe4cu84c>kTN(ir1VeoU>OuM(y?W>a##9)6UlU1NsK{t+D0Fn^698W z%=JdfmCQkVtLOyHjCHz@QFT)qk9_(36)075X zU|iGoATMTuzerZTFFRS~YN$@W2Ki#okg?+yXp-t@GqZRDK7NvKW1bZ%jYGthPs(Uc zHuTR5J=fybN8|+E3|OFeS3^mO-IPZOp&9wZsw*kR=_mRnwQyo@B;} z3yyA)6ibKk*2x(JT*UfGKxZ~7CD_Q<}xhemEk5?G9d--K4OTX#b!8SeevsjcUWE>a@Lq7*WHZ#;Kt zSSr+xo$Mzz8pCAElL_?LZf7Zd30m8BYPnB95N9ZIxjlPPTA)dNp_2x$*C;5`O9%r@ zB;)_@XIvgte#a|Phs+he)$0{;m!nuH0Ve+qvLe6Tug~(#VK=+~inqkKGt1OsVt{+g zF-N7qg6UCL?Nw$7-^_^T8>%{`+o)(9+h>Hpd1`!t&n^xid@f&CPF*_NMFbrSS7~G) zNqk3(8kRTwRQ&>fe-&?J=}&?YoPUW8Ucy=(--FS;?{O`GJIwmrHwOTxKM}(<$0dJz z`0Na7o@wykbwkXXv7go;uD>@q*q2XQSE)KN{s0#d*0MSmdj`WXP_6ut=sZM#0uuKx z3!C0Fup6Sj_>afk!u}nK*LmO|Y}ax$^>zNMhfFbg)(y07s{}w5*`J7pR)u;wEOFl- z05E;JNL~crkd27*6yA#}CimCn4~&dt{P9rV@Hd6eG2F)})zq2OD{Far@h&BbIa@|@ z2{zByoLncf=`EuZ4LcAhrNd#52EUSk*!!&>T12O*8Tf&EKG9-*s7$8s??S(`dWj?y zv=K=9zth*C-$Uaz*%kJqHse)g=C z0>pw__$9TPWfvWEiCfvQvCcj>Z2;n_j7EXYCTx62_49he? zkgf?ZZ}*O@0XqpOb(7eK0jlS9pk}hCmFE}pOoqSgA#Ch$-(1M5I+e+VFuGS0JYrl) zfR6yX*;$T0q1bmkc#b?yhY?dvnVjW^lx5i5mG7=YH$HzD7`zg-I^3hB{ZmYw%(M7X ze2j<(T-+`KS|U6FGoB-OZ121JR2J|(o=0(c^B@7)U=*%%D>eKU-qTU?*0z!{PE&Mr zAmHHqkD%IJZ7|1dKl;znerF7tgOKBUQv0Tefc+IeTVjFw zdcz}YiS8lx9>_NP@2^3LQU95pC$6PUro1XC`~$B;SD<}_SL|lhl|WmBv&X8q%y-s4 zMFxYk_8>~%#d9AdpJ~Jjv>XcsC%tQ~?41oV%PqDWYvv_yYp3lPKrZeOQgJt~tHkK- zQ~~ci;dO&vd*-}u*Qybig2$Anlb5|j23n7=N>_1M2W;9JV)?ruGEFZ5h>>R?P+~e{ zlmd#_!c7k3{`nY35%9a)p1MDl;&7IQ?(?{U_>C!Ue5e=9KCeughzbLJ4G1{;@vV8| zkM4TmkP&XeRHvLb$J&japf-M-piv_EeHCqosxJ*d6FWs%G1gnZLur`OjQ}&@u$@Fn za3*$%&W2?MZUDmSWvW3b*-`n;Ee?r+M_LJ$)O$~b@gRc8?R=qdUEdhp4peZQxlFEl z4G4`QgWOmgv`}`x69?&_JLlzR$YL<+8UU?M zTW5Kd_#Jm5P|lKXZ@S4=9U{qOz?aYt${@0AUh@e9JEN!@D|QpDVXxqr(JftCP=aQyQDEK zR$SrJ5+&I$9p+&HdJ}@IMI6jBLf*x&JQ?)NkkhVW-8y6t9xV^_HJ8^e9%;Ul8mTb0 z$w;fjgv3a?0t{-rD8s0dRl5^L1JInzgRvm0ZG7~k;pn&IE&>qq9KI4hXkrG)yT3Be zBRcUb5!?Sfw0Ls$eGe(%W05Vz%i&7*J0k!~Aq0f5GHU z%T(c432Z8lF8S5gL0v+R+vM~i&sj{D@F!wU8Qy>pF@-U9Id@#yl%&9P2$oepnSRAf zgadU8>L8R`XiPV>z{zoB34!NLW>^sU&)`!`5Td`_-w{(MsVqTv-a7#32hR8&IyC}t zCOgfc)Ye#`li!nw!Jg2*`M5c6k~v4em3|@b)~AOd&G#fSDJ-g@(O@-jqSV9>D)qCM z1I$wE?9@YA7gj0d`Ta~1;&{1;GCHY2Lu`5QH?=9>;Ox?3P9YqLi3R_ds@LLPJbac7 z^cN-Z2)}UUoTHo6Y*F6AtiG<;rP@>9K#5xbZbD2eQ5b(5VNM zcvYsSO{7mAuc7FDOpY}SnUdf}tD`78(@_X(+B78Cfu-sAfp$~TX+_QVeWdKe3yBoE zwaB;#)J1HeP_pbjsvZb>`c#{LS4JJIb`7d}%!M&%c&okS%<;^yw8Pm(o#IdEDroiL zr0C)w2Dw!mt%U%tjFEm%$_j<+OxqCfSGRQOwazY4B`83=e+AHDdC#4+T6e`ZVhW_d0s|4H}KTL{+5K8ww?y5=R1v6i+%MR zS|QiNEkG$<`tUurl`|Y+b&!ie%o1iTPff^%-aV7>XmlS)nvy8-FW<)l)WAJ(5L$c|t!Lj+X&Yc`|ugU8z34 zvrI1R%nvAIla|KVU-!axhNTffkRqdH0#LAjy}B34sq#JIhSM& z&%URw-9>7SlHh?JEhv1$Ve}yZ8~g$-5N`x6%*4?g!|=-!6ZnOS7-e`r~-Hj4@h(X5A z*n98THbq`hF73FNe@ii(&c2l89*LJb%7JjYdKl${qUv6-ry&zo_h^pJb9UEr)YkjU z$bG)z#ihCYaqbO)Ku50Z^T5*1tS7EW2Es%Bn%!49m0lb!PY_?)thm0C=Uw`rweT`Q zG(zLZu>X+NDzZQ+8NM8b7pZ^&XnUFPo9*n{<0hD|6om7}_`Aq1=gp_Wsjt5tWaH1r ztf;(DTe!D{V5Pcga$FP#c2P<5u4sKhdmlLC2)-(nQN9~2t}0cx9yjKx?|N-& zkiZY$Py&t3MF}xe6*~zTGa?%zx@Zsl`u~97Gj^lL?3mm^N$!!LCP5fVI&>6YFF&U` zL}$&hk|bjFh@e!8piFKP#;*T8!HJ8~(5x$kjc!6XH;=>fP3jf@4fic)g`xomNN|Wd z!gLwqKPw|`7$2V;oA$i00wa{ZSY-@Lk2|-tLNE@Uc67mfPQ;^_EFttzxDVRjEN&ci0Uc~GW}E@8AamalFkDytt{*{Ou8bVlEVP>Grgl+prsc~Jno zi}-;m-nAgS{q@X$>6zgyvyd-^g3xDfPRi%dkGTx!uDx&=Wu{T^KK%w`iUl|aE^U=r}iI~$-mXJUYx%{qYf#KUvvZy#)^ zQ#DL~0d!!nofe6(NU&y%2`O?%UqV|U70jIjw$^u)~0Go33?t%zwX0H+}P@f2C3zt28}b}wG& ztfU%cSZrO*myz^Jcg4Rd*O`FkUsT8{Wa>Y+Gm;Zfc9e{ZIMn+e8|a-2l%@x@>4n9Q zlH-h+aQKCRG@eie7;-oVk39t5?&ZTX*(L3?e6z{Ri$t*pKT&Xs_IlGPYT_IoUqqjp z8n*Mpg4E?|dv|Kh@(xc**ji7{!@F{ozd9i-RTd@%D*98>+$pv4!8xu|;iEW|`Ec7$_q}M- z3aT^uClv>Zaou)E^BeR_ks)>aJ7CXyCBh*A!-b9Sf5)54%?mpx#^p89^TqPc(#|2) z%N_%Vr|5NzZCkA!q$%dwTSWj-k)skzhv zrZ5OO5f~`K#_)WAe($f4ZUhx$aUj6P5{+lOG9*ErgsU$?5(Na&4&RC3yC1)^rys03 z5}F`Zcq){o#N)`^d@f$dypfmF$wrGsovD5eYQcq?`0}X30FKfJo=r?TBL3w(c1KYD znQ@Y|&PC>wHWl|~=V*-p%i-s{GjxJbq1dQN#nA<1q|qd7Oon&j+2Kjag@j9?aTvF@ zH-Nqy>C$XGS{t2lMkKHDxv|4HQ@u0}st22HAS9|aL5)HwdaK0NMV^191ksRFU;Yar zt~N}DQmLmszM`)epO{>|Rr!Uh@2L5OnM@_ASq+me9b0n2$rJ=Pl6bIg7}07d`nrLz ziLJ3RvvQ%iSWJ-;nS0wqSf@Lw=7nN^XH=p)d5)RzaPGM8BgNbZoB`zSIe6%ZzP^`t zq2VrMbe~S2)y6X=5tOe`^VT}?MMP=4wj!lrKnye53h!;8!t2V%$7$+@M#2eIo3=NY z2m6*5WQI<*6zWVA-f8!x(mA1LaW_F6ZKvcEDCOYPc{Q{B(>=- z`>qf+8lqr?!)WcYN%&m)4?io#`uRo%waIkiHRKC8tXn>o8Kc;;@E;5Tz`DzYOK|hC zbO7f0W{xNBE3#gKeBsW!*@#OP8r;T8W{_zR< zftb#aRFgE##A-FC&&-{~SNEq4%XRsCxTrxr>!tfg--?tWkikFlkK_0*s`>xoIKBrL z$>u*dO3AQ+LV}4ynCZ(WQ`buiVnr?)XFJ{_>t= zJ|XHR;U@&gcHnRKf*%kt=zr{MrjpMBn}2)lbroF)=X(OWJN6a#=~?L&xe-`88`u^P zTB71DxVmBfhxPa&K7g*GG!0?n6xtxVPVq$K9fqgI-^WrBq(R1hAA9RQ*|i{W`#t*4 z%#}X2J4<_5$P+Y;Pu6rCz5&OSA-dWL*-{K-vB_vZlTn7ym_*|$u5V+>A5cXA8{vZ3 zpdMG#IpcEXaY`$>2-v;NObKPk_ zHEQ5ATqtTWOi3J^y*i-e)UptpZy@ocJIx5>pF-<0u~p{=V7nb?DUt~HA{tCuAQH0+ zo4`Y7ZsK|hk%FbHSn5(y=ZyV5z?a!q_T$|yj*zi+6mqSJ zYu-$Lv049gbi6DG`t5FCc4kbOL%C4NxmGGQl(yGwFw#E&1`qgvH!42iyZ8OfF)2AX zSIS$VYTyaVx0Qqn{2%5;g0)b}24<(k-`Yl}Ch+v~a<|)ha5- zbHWcYUhc~=`olcHKoZ8o5FW1m2XO_p_Fu)Y7>c%QzxQhQm?)IQjBaC8vu;y0hcoBk zbIg0W?yX1wMNa>{&mexN6<9GXXn_zLeOA+fNe71XdT&W-4^L!L)E4{1j)uZkATrau z=+QNMh0*4rCtHc#ynUA*tQx(Yhy@y(NAg1?+_IF*5rX#A7iTT-qZE4LycS8EN2*S{ zAp6kqDnr%YF2GC=%~(G@ZK164K2NfH)a0}hgB7n847X@-E(99ZK6+s_!plUMB@n=Z z!Dbw-G*XrE3(q=&(f;}+A7{Bk{t;?eXeh-~gkHX@QZyg(_k`$Gx|$a4J@JS~q0uZ17|wFn4HL-|EV!DV?#C;e zk{jJlH1o)KZi(NHJTkIiXnL^+ahZ~4?fUXJ44+u{6#rkw7l;<`O^ZE58stgwIsQkF zUL!5&99FPHcGLx|>n*F{bywp@zB8ui)FivVgUTbL2EjA|a0*M?qPA-G{5dzv>o7}0 zziZ|U2f|tl&A1Zq)-gjHG&e19?_~++CZ#vPo(=-wv1SS8s{jOkt=#4T7Vjl4TCa#P zbms%=ZoN4C@@gD4LF|z*bzzgp*rKrVj614WNkNu6&WR%-34K^3rJ><>fEvy{=>hed z6tXAfQbVn-{beIGCJ|q5l3m--WV)`{?_GcdxEw}(stkfx81Wh54d1I4tB{S5M0*Ne zzFX*nzd=t98k~BGo&4Y4I?42l%mS|PcrbY@&`IT5fLH^)ERstT#qG;DoqMtSPVx@eWi0Z)cyo z$DkCy)?rrm1#y^cor*?LOq|_ac=RQt7Kdd4(2G)N8*Iv>>mKM%{lSWt{)a|^Bm1ZI z@yQkXzk=ORIE>Gux$>H;h1}~5<ixJL4hnd=kuAL3W^lMzM|LLP6>}p0R%z*l9=zI$%sO zC;F&?e}7-#tXWkUTo;7|1>m;6xMV_4Z?Cw8l0BT}BlOIKRwb%~uqC_D(XYniGmJz; zd}_2<&Ing~L)?Pf&nNMxm%AFWt%NSALik3SS{*<4VEK6W`A@)kDI0PH=9+L zG}@gU(0#wyp?3{e52D?vY_5V~v{PKJF()>WbvAQ#R=d!vmSEKtDy}$#l?Mr}`IP*| z?>piMmf!v>hXduHO;o5j2Q2hpO_}Erqp|~2h>SsAPJs+&(T51Vn^PvknD}h)%9)&= z2wZ=RFQ+7UOz2uCm4F`aJ&+mjaEpc$cVta47Vheu@VtoTcF58^Z-eT=fNb%S?)mFp z$_zq45)H6}jdb+385P-(HqHzmw&Rt5;9iyT$3CbXkou~k-udgF5#~nA$8erovn3&N zw|V&YPB!IFuc7j~L!OW%6mgkxb@*cuN)>|Rm0^Bx3`c0OfqZ~esOcbj^qv4@|GUAR(6)FE zeORlW@_$}p>x#!vFK%SW6Z=9TKNxGOsNltHB@=vNR{SjQA+vJVIsDyy$Obx=W2~M$ zoBIB+vZ`xDx}miLyq*X08`CQn+eS0KN;A^60{bVz{ z{_EA;Xg>373<^p1$0h`NTBCo8!bSzWbEMNth8F>DTKksm@#9A9!0>#yG>if_Srl9i z0nXbuvllzGW0duAbuTmn;2+6sV^utPKooQFl?cp^@41fk>J*A~Czhw1=oDCs>SQ|0aB61Nv`_S1eOfzL=p&Eh z$WeA@u}_T>sT$I)nl$QZZz;tqRK+i06{Ko|ot!tr z$h1f(%mb1K$>v=n3!b^lY-^6kvh+=PM4Yy>z5R~K!252_;n&K%DDES z4m{+A!**9Pu3=2?DHurr6O}F=2OH)ZqE6$<$)s!u?h4Bqh~euyBzeQt8Lv7XlOUC2 zb%z7TqG3DViITbgu1%=r$Y4KN%fO%|m8KFJ*C)HES-`$<6k?5L^wvQ+W`p{KYz;nzr-tiZirx-28D#Wv>^ zQ7+s(cXYx(1UAtwSDiI$3c6kd5GYE)?Fu(p;%$n+_<9@Qjr?6MVHP{ zWMbyB1zsErOz%{wP4VijI|alKg7=1Fl%t4v^q<0s0arV?XhSYUXD~P}a+|WEnUlG? z(35Mx*^^~Hutm=U#F%7`a0QJ~n}E8q|G0Kzdd{uZiJ}(#G=3c5oBZ=hJql&{nv1z! zjYre+HYwCSsM^c632FW6roIE$iwE2@88g;ePen#b{M2=NI>rqUU@9|qP8r5k=!rs0 z{|FSSM`PX1Q6{PpYC>1b7o(MQ{DCNZ)}9d0Su`+ygbWj(-v!`JFP2K3B(%X|+F7lW z0a`6Ir1mSR_^9%c(x!0b1@40)3zBaeYmRaWwMW^U>4my;mU!{;K|d&~n%uO;uH}?( zs^5HqkZo)e6W~M2>V`9yu`6OD?|Y76IQ03JnfSlyuzzQ9-MR@!x%fYEVO zc5#IbMt|=QuTk=k*iE>4W50YZYfL1}bW>Pa<)@ct%yaM5*2kI}f)2b{yhdG!CZ)($ znyh$>9~qPmRLeLNr|Oqc_j{m@_@NcYG$R5fQwz&1%|Ya%%Yd6kcbcN&mGp20T_T#A ztW`j}BRbx$+!#3CG!BfGO9~c)oTS1A)k(c(`cNr%)yCIkzha}&lALfG zd5FC*H4gUw;k!Cvzi#_>Hz>!CF(n}nS?)s)%3{{!K-VV%0I`MpY;8;8WXlstf!{TA z>*}~oR+t^;;#rWYhq@rQ8{WW)w=lh#UesDQ^9n_8RbfvA!TW5OY6mDY=&A!b+(CC#0W9j#K69pW6t1FUX|C+m|$K*#0)) z>sSH!h%#z3mGm=ry34|`IVFa)eCD5nts zAMCpp03Q)Bkd21RE>=ga$-;imzL|vQME@v3O%2~8B!OANnJ@i1<3;yZQjwBY@34yq zmjD0&d;y+FtaP9M%~+!^TbuP5OUUHKp{I8$8TTFIwv!8no9CI%B0dH=p4tV3l2M*4 zX92?(NMzFmy}*OsLYyT}wP161$rk>hVD&c+gs1(iu#oBzJN5A<_3RPwBB6Ow<&D|0 z5+(B?{v~TC(wl+@XNdP@I1pclJHI4sZvX%Y`azmV=YawQ5C7?F@(4T!@gN`|dKm%y zfB*mk0Ez$aAlviGYr`|%ClAjs7X{4*H%eNbY+KVhHsI3(@CSBn@B)7UVzRf5YnGU# zhBblNv}1H%{(lzv?c3cfBEf7fx5V##QOo==&2Z52PMq@TN~hC+24mL7iKX5kdB<&k z@|B`H@IMAeE2HuzErt!)Nw|~%mL<;$dr8{2@ z>`NT$!~3mo_`zO_q^0;P?e6Ry`L#b95!Gv&hY!@>UE0{%k;P+=SC5qBcnmWN2^i5^ zuBF4HidFCdIPoo0DPG5l$i?`k0v7>f<6oF{pAKlt@n{S>@xo?YQl3KBzz}e1p0S1C zB#pnW0dUrAfZTw%gL8HC#fbt#wv4yJZM0l(2g*qBg0!|WhjQIpwLT1~&PLcfNsDpQ zLpJb({jF^ZPS%3AAyX_1Hns6lU6wc%(hv?n80!v+qOwBKr=g~>3+XlIeDnMLBH?_4 z9hSwzqro{bVA=s+g-D{WgTxvISW^m~>PBaWz@3&l0H}oc{c7y@zaH6N^|Bn&smm5g$r_lD3KFjJTnh z$qhaz@Hv=PjMJ_YK4BiyCFM-rL%zVZw`xO9QT*y5Gwu9Bk)Y1PmXbbw?GVX2G=4+1 zOu2O4^V~xBKPN2EX|sBD7D=E^hkHT}8cnUVJ`>07*iR)Ukr{lC^YtQ0UK`6Bu=|+GcOeW!5d#lvElj?I&_y) z1&E?IBD;wt9{+517mFG`5NYWn8X;W}k}u#e&7Z`LR(?^37IWibag7Y^(hx|Wj!B9e zwl@5!*Y+KO->`NMoH$%%NHY9etoB(YOl|puLFuvUaJA-AuC+0G^y(PhxAl zJg@MZ)@w}@8pX^DK>mH17G}SzlCE!JJW5dI2^x){=T)L!7z+XNhoEnGMDQ>!jU>nZtz?A(+_}VfX41qc1PPfkmS*v6Dz7 zo*5RHvTppY+U+~|c45nL7iq|LMQ`I>Y#-l#D60c9!S9y79V(cRS!1a5>|Ho_Q8cj- zk&IwB^lk;k!++iBS8U~v;p)3gPp$dYaWY!JUyYU-p3WndH0@3F?fx0_u@QN4@h9?c ze#)_oc#`|NIRapUpf10bt)d3o|2|1)AZd<`eU)LP@sciZ;?WGTUvmJTR*(GZ%s-D1lU^`Zdzmo>>?Hfr?zuS~7_ekprfdm2MgHOg9YDj<+dW z20(Zr3|N1_H4}Xzcj`i=2uIpB$`^clrOE&Xgxa9lZuFk!*_ZVuw#+Mja8}ddv@@Ed zSEHQ%7nG~&!UFcLtOj^JQ;C}l=-_NN&4_( zv;;&0o_KZqr?WIzaLA}eEdGyyDyPDhOZL98Hzcy#7f@~KM$#*OF|tb$)S?`Tb=k6h zUHDX(ly?T;E_!5aP3-mMWODa7Q*Fh@@D5 z;IDHz897rDGus?9s#tcrn)-y|gLY%z2FzB?KEvFKT)v+qRUwa{S_O}~0kpp0r9!J^ zrSPy=5ZYqh5cFmQoy(WUS$ykq*P30;F;x2_@i8VP`M}aOVkY2m%wqT{#g5VY<_fNG z@l=r>oQjGDpkrU*q3mj`iFrXFtNHf$`B#(8lQ=Lvzs!7Bn2-+vM(JG5=H9wcJN4=i zrz&9JbQ%jD?x=3hS?auJd`MSz?CoT|2@TN57e znt+#!U}r&BqXcO6j24hbEY!g$>~he_uR3JJrfR+42gqVbB@RfU=z9qNZicD^qLl&` zKlqUSbR6JY?t;Rtdgdc19$}GIH`KIF5p9x&L;u5joyAYq+J(UY01Bi*no$RV0t65L z`dab`JO}Y0ARu}f0sMdf00RJ@|9ZF!qtb+9P^&6@OS_Im(O|Sy+cI(zU~iH!u=6^I z3$8VKo^Q^QywaA&Sq;`%E_EWZvxc9^p)vOUag@l;D_EuMt`r3%pf&V#Jh0q!`0mDl zxjJI02B$?gI#r8hElr7#fuC*Wf8fa-J(lof#> zmZ*rYq5C7Qf3L1MeMMbcBG9E}d+dsvjWW*3>~k(nNBG8OdDrWvOD0R!DG!&Q4E>rK zr)-&PE!Z0jT45bFbeAwNK){}54tKs(0-;%LBdnLe$1%jzklq^- zY7>e>CS9dsS-zdX;4FZp-jg^vP*R0+ArF5g#uoU7P`n!OW;$?x#(!BX#eP4&h;zRE zdy-4xo{wEox3(Itz9RM5qm{K5uBU$H1nnurg^D6@7b zb|?pBN{*tJy>ytrKdm@|yn9d;B=sE(e}+(eRl^w0bS%!QQ%TE)sS`?sf;(G#6E%`{E9egW zHk+U9Jz5}wYPPq0WN!)+A*z1kE(Hfygp8|dc&sNd;JvFB3{}fd7I(}5!53#KZ#F9# zyimuOsCNmSp=Wz(gm~ljg&hj>rc_%~qC!tSlER#9lxzXXy%p*P)#e`EIC+ebziij(Z<^1$`@0N0CKveZj;MlO=JfI$nS?bJ5&&9EKDbSq(?ax=&o!!Uw4*dzu zjuR<*>hNnd=SpTV+}1?6CYkCExU~ROg?W*XMz#f*@IRjGl;p_>^Sf8qZqhARJ;5`? ziM{+yhXtVx&%I<+)hSD823~H96yK6Np_l6gB)T z9iJSsV(e7dJ9xK);kPK%Q6cC{beOoju&OLhzWkGvdWD869|?o~zhWvFMoD8}#rbl@tBgKP(} zdqBh7B@x64L_u94aHQ*La!idTg*T&$#7nu-9e>a@F?+yxdyMGkX0Gmk$+Wst7M**b zFDyxkV~^CPzg)U75Ctw~2K2bdj+*+}ydb63I2;x0ey_As%J^?VWhtdq3#E&2-(x@F zVY4FXZ}NvV+f!7OuRi}`yUYkPPmi`rezFXU)9p7g*-^s~gQAy$NH8$C4aZ#)Y-O7ma@TbK%9HQXQZo6l;RX&82_vhjb83J_x#mB=PCC3J!I#{KMz13V z@)q#5@?|Musfg2wD)_YzcbjeOJ5LIe2>a!L+PTQ3ML0N27xhS`RcSeG51Xl0qLqFb zjSg&;b;y?|O9lndEPrc%vfgx?SuctnwW}9TGQ~e~%wTmQF6d88u%Wuj@97?)VA)0fSY)R6ggP(Wx z(_x!3UmWYlQ8Gjw39cWRwkriL+4W`j%dU1d|LsOgkiyB-vz8wkoJD|~LbTh){^Ax1 zwS1%by1Zh`acUgI7?I= z_*m4_LRo}7?WwqWpe+p$W3s!8e}Xcw2a69G5!SKaD9CYxF#xM8v|Jqk)TW|%y}m13 zwQ3x@I>HHvWr1@a10LDGVOKEy#mnwg;@t%nj<;m@=_wn-;n)X%k%W?7Ga%b(J&ugA`=#e(n;sD-eCc18o{>*&vySm=n(`T z!KQ_49RqwzqX?_(c1BX#%yS#1IR6-3x?(;(SA;Jf%*MVdX)}##q;mfkh+|}W;jw>6 z5h^R#<6Ua9d@Eyn$xi2nGY_b2uCX;@H8uszpG!9s3)KB(;G4V!PlHb?s_1BfWwIkMGjMFekcMZe;To zT4Xm4GbQ?hZ=8f=Mf8UvNaLAGa1sg?2I&Q53M%^AqN zwM^1PDh#h0pyeO+32S=4ot^708lafOpPbkg$1#4q>dr!BZREYNxb_nIbJBFehjmyZ z$!>lf1U6fq24(`UcYL>A*{9k^wl+CUYUs(hP^T$Y8UZy57JG`+VR!=J`uW8)6d~~V zK4tv`G5bWxgLU6MwHc(z9;uS)bk2dq$=dGj*B)gzcstM>Mup$m=EJ|oS2g!p$P9>H zyPfE-vx0VuF<<=gk4hAbzOOzSXbH<0&W>sg( zCb<^{lwRVVjC_0MP!RO>e?te~7w-aVq&8R=>#z*vXfB&ANY>|fz6*;hws;Av6eK@I zR=`oPVznMmguz&fmWiJTV8@(&dB1phA_n~(D007`w$RgE{SWeLi1e8hikn_PRn#qi zvs1`%qZ0_M+;mq=RB1PAgKrNm=KQ2EDk7uIc4hJ|s|AajtM?jv5tyyeGectMutPTr zSky5cX)XB#qxskX01Grhnpr1-0t65L{+6-`z<&_|{D1%e0|1HtWulZ_Rj$B}@ z1W0ZQaPdZOcrTtX|K<7g+DsxCJ!1cQoK@%x3pr+ueZg|sz2f+}34oCg3=P$9 zd`E35Pk<5{mjGPnE*{T4F9z|Bj`o3{U25$ibCgptqo*W3Sdr6@bbSqydnNz~V}cu< zH)UiS0JfG(b%1&=On|21^}JhKI0a+RnS{Ku5K)p6DL18zrz@YNr@X>_^_4pXP5_9q zsHa~vGXPA80{Y_w|#6i>NEmW0UBMLJOyVO z|4qx;%pDs1pGbcZear1DYyXKW^`XTgw`!2RT7TM6FVH4oK?sJ@5fB?WBPr~;8~R`S ztDux+)|}m_gd(!jg^$$(>;#ixGvA&$Ds>+jcRN~0*6~}GThvPzZ5?oD?Z0yW^iQ00 z%lCp>xN_7OmKkZCDNG6Zdt&_wOM(eU!Rrc=-acis#w-?M%S z(e?jF#%EVedL-OPx#e6#x)zcitl#^8sFb$dT&gpxr6F&du)Ryb_HTY(di?r9iYJLk zl<=d*c3$nDn%#rg%fmmd6(24tLFj8v1NX{xbxWUIIKX061SOo;1@jw+D{5)DT|py( zX~TfbXxtJwZBd9t1PjHag??R;=)ufvCTEfvWd&SQ8HZp!yz}5gHF_u9$*tyBuZzh9 z-o|+?wr2LVUV>eQxf`uI!9Ne~EH<>-t+FPXU=s*Zz@%FhS}M;yCxWC{k<%?6I)10@Ei0ZQPyNNhAn zP9Ky13=NHI8OZmsLy$m>R_&NGT>Hmtu;tEUb)_P@!^1e>Ip*{9-bcD71U-*i(T| z^>=@XGrar?{*Li-^|aQD;;-S5pW*tWl;NgM!4+P2(Aw%xz+lVia5 zBv}T%_G{VglOVYI@6&1br&BniSu^al=!IydXV(Ssjr6pfeZ+NIE#_ZDXBnt67{33C zu^)HjAnH|KP0yh><-(i>??DC3>G#aa4GP#_!@_6KQ~8vS7WiqZIF~ZC_QV~LCxx_Y zGfjab+gAz2PF!7~v;FdV&;snLQkG{UscGH#_U;})0Z?jUUSb;H)-}+;LeMjiqFQL@ z@4K6(vgyHut%DOhri{NSEzNdLayfTPBWUhlm`gVF?B)n@lX1)^>+5DFPuP1kYh)me z3227>HY}9>q?TMxr8<%+s!^?8g7e`&_zKOsO%1I=9^1GAsJsXkT1e6>UK*8!gBzp8 z8d9qV5j`YxSqMg-EAa1h6pj*&C=8W%D-j!}3ke9$lqDDrQEl3EW8G|*kF03vB|>L# zCt`ONpr{VZiGf^u1xT3G5_>SNC`l6KXZ`?%3L=F!hCq0EZ+detX#;|-WP3J5j+tc30HYLHw3myYmdU+G1K_YH*N&vRi*A(Z}v z#5tw8-I--4HPQxO5^wKfc^5Y1nxQ2D2Sf7EO7`wGtt7R4suiMl5X3RMz@Pg$ z7aYik+YwP{l6tjv6Prke`+Yeg(3f)@-wt@K4Qx$nq6u$Z+CMG!RtAnTKA;?RXs{SqZKwMAE`TdW2{ zsV3p7v`Fq?;!^1OPvDD%vdpktQ?i8wjO0a|P0bP(lD=AZC^jL-Sa$LWH zPaOPN7-UY#b~ABKMYkXpFND+hsHxa0-d!-A-3nD~xaCgU!I2p(b>r(}zaz@1V?_#*ae4wB5SN~O*AE3>sp1>tm94r4r(4>yFFGuD( zi?$U21v7!yC5*LTfTdM@@V54-n>p7+dqM+c=V>$?~ znD@0@KldCLA)C^P+#+tS3a7Gr%=_wA9 zA*JC4!xliB3|`SEpO*k%gz8k59l_C#or)i@B`V0dKe1m8bZSl!k0-wdNSxZ66WLKG zZjahu`Qa&EDe_=PCN_VE*#`9cMRi)Bdb9= zNFWtHKg8i1LD(kASOe~#-Ry-JOx%XeMT8W>2qPAbHF#l6yJ8$KUS92lWCFmzSTLuv zWR_6JKYDmmAp0ww)!|8mx}_r_@P1PF>s(3qhGF~*w9B7rS44_>?Wpjn2f8dTfK&X# zLR$G$EohFhQA&E)XqTUuy(V4GAiCtcvc)`as&i#UVft3xy|IqiX6elT(xG|QmHKZx z;)(QGI4nt4(@a1E@F0)jdr$q$t2O5F8WVT!@cbVWX6B}UmJ*^g5y_vsJrvn-Nd5d) zRZP4Xw83tIOd#T%4Y>?>Hna9fE0a^{*B<5QP}H}n9~{m%<6!yfV!8VGowsV1Lr%{o z=)`z!g;z_xmx=fYD08Ui`IX&=aT-H2R;ea-V}-<)=Q}anb6`rJGr3u2A7^kgNKmxu z_y@}2E`7fS-efHveZ%q*Pk3EMr6~7V5Bv=DKIj*_t}77!xIq;D<2%z?EVapCBv!e& zG-uzu2}X0k#Jb%OU)jl|e2Oto)<)WS6CT{|e82$NYC)7u`Uhn#q6j(})qSmqn)1^# zwA)*C%={Pd&tYW*+S0wSMuJtV^$Etg!Y6@*6jN|rDy4k+S~8wXNzS~$$Fs#FV$*6T z^(4mButfV$PC!$%A7H$Kf%~)4;xKkx6`D=X7vAMLhN7eR&jCT2uQ|u> zRyv8#y0+bjddU(Ls>LGKUHP3~ML&ygVjJJN3_R`Z39zW&!g`z2{?p+mAflQG4f?nS z&8QF>J9;mr&8vda`;5HEnbZIFz`r2wh5tvV%kZZIALxd?#GCn4tv5=+To5ce_p{Xh zy+|BehE9dLz04P#*wBB^CX`<;Gs%!&nWv(A@Hwtipu+^RWy|W=&#LQ|QyZZ6$(ASS z1O!#>hn5d}+;RQG*Jnp1se@H!;UD96iw9{?-MwDgtBayW=CQa7gbx?N)C9N1i^G#$ zkCT{8THnSfA>p)~%vl@K6(FM+L0xX>s4vcpyQTLi>3pO6Ld1`3lxfGvcCk)>c+3m% zW%KM3+2@14O_ZlD^g@hNl@G?nxfy?gsRk&aI&pgrtq?^+ut$-XKunin$%?BSluYum zscS*A0WCYYX?(uc$_%;~W{cTSTqdv#WUKAF+PJJTDn$|tsVUjS-ZC@?3qF8=QIlNb z>Zs7DAO+4TRUSeZyl$s71!ZC4U2Ik1QSxfs$7H!17iCwohj}&uK6EW-zSo|}ZB)kG zR|anpq>7+Cc@Z+(iSq*^Ryldei@-0WmcZ%b{QJWY!TSNx8q=vP14eB4sdv(Pv=QI6 z0b;>+9>&oo>K42l-P{BmNQ-=wW6tE*AV(6)oS}NDy!%k_ivqsIg|FT!9Bm)G z_};+R-}mlsyKfD~4AOZhcX?U*SuPeT%HcWXxU+{6c8fys7g->LlS9_rVCRh*A0r8+ z0CxGb{xW@1cfi|r`;!_0E~l+Yl_U%vVN!d>)!}Q1$WZ+L1Hp~j3}qPK?M`@qi*w0; zWbK9SY(^GrfEQ>1FZ_<)!}O?F$NIvbvWRTRpek;utq>tHcaks7VJgIuBtv0ZQ|$I7 zKKy}2A8bKT{5~KbKnvmM&#TOoCR}7sTSidz0F}u~t^g(1 z0}Jio#{4j#ZY{6+;p3PIviHC5E*o%T|JDBi`Js>KX^KrY7XW1bto+GQ{6v@B%>@4= zQf&4fOsG<1ZN}o#0_Q>7T!vk>3sq%!zENg@IAG25*J8tQrV}qyGn;bv02bl&N@s0( zfl{BZ@Fl$eVYlqK#mnbp!pBN>H5|Rt$&42<{!ZJn4;{(+_p_f!gjo$IK^^gpafp<3 zV?nm7=9Y*RKrj_r8Ab$I;1SD^Wi|=TLb~$|iR>*m@<~$N|Bxu*vQE z>Mv`+S22O<5-l9a#uNxy)>Cp_(#hsvSc=7yLR zwYMo1H7@S&#>e(G8q)1pC|S{^>Y*(w&IDFRyHn+iKdMkz4m$3Q?g>JV<>8?W;pAfl z`n85IZBgDP4{!Vd!Mi{w?X@r^xnNzTR1^^xLWY>O9~ zTE{2^lmFo(kp_4z{#rv#+gsXvF0Hh%N5~t=RQtZ?*fG!m9T_X( z5zqob9(TgtNAXj zPRkk4yLK=N5}^3ny7mkXk>b+uu3-+ntx;6qYJE>GJ6M&=q!ifaso7Rd2*Wva?(S2N z0MAwbEx0IHXDPkG*#+U|*h)=j*3{ExAdPmDn5#7w7WQfL0u~cQ;rwG!KGH|*=Bh24 zLb0O-xC1T-c?A^%UXffENUT==CT07zA#mecyAZ83E9Xabw-c_PZPL)0%Ly-NneuoA z=Qqd4_!AI;*Q*SIQVJ7hr&!Y*SkSgfrb&bqxx(&<+2JNl)`O-*R2B!SAhH3Wpo)pE z%*u?|Y~$op=YDn4t0^8lh{r$Jj&>i$6NTBM$X=hl7d()H%B)7DfYZzf*|cL?$1+kn z3l+-Ds-H@gv--$DhL!i%E*wbN)i{j-Y(dwBq{I-*YGnDI-L%>f0QYgERA7_qizjU! z2qYN9tPU~dXKp)fAxY<+!^^W8u*;~d>paFG9KR}5RrOO(BmXp%2+v_{AeGHw7ARM^o4bQ}p;m);Tz!%!Vl!w|45sDybzq*` zqj+Kf=&K)L`rP-*gbE5zD^CL#0qVe6DeTuo; z@$gsTpIWc-9{W`1@&A^b8#xbKXbZIAf6YIl%jq-}`Tt8s&b!W`(u_oS#jjlwMJhlP zN~26=$F6V;P))8^R2DCyxaI;xE*@CkxB_u!wqY5MVUAzU+%W2A4U0{zO5;n9lrdd{ z0dqD^S*`y>cXW+JA~Q96>DO!UseP*CGF{hsu$Vk#>OAQ;$z8z8QgBd+Vq@lL7CA0` zBqrq8jbf%#jJU-A^q%Fd`j2PqUqfoJ%sJF}MeQrv0_SolV}I%TJ+?>;S7y*nTn7U0 z0SCbvhS7cS?q&`Ds4$%lL1j}{PX!HawI847Z!3UBVJvAa<Y>`*y)Aj66kDApc ztDwDE%>XM*tHndcZk_9_OO?wM9c=ABVxc>OfD7u5_s1ApjX1$-@_Nrq0B}DqNQm8X zUjMo;h)fPtk|}iuULtT|X5R9a>znSKgpw0fHm;NSVj^*s~Ipo??j zw{GIw5UyI*TnAgpX{_|sX0BUPcr|fG>%P6noW4$v`o+ko@Qs&@xli3U$ZzHk3&6*; zdo?>+NA@eAE7=~w9flc7^rrXq@1JQqY_?WpA5!e`Iad5kE9@xR>KyH$mqAzMR=zPc{HJW;f9Jsz4P#KN4l?G z9)3+5ljFph*l&Xxw{ZsGbM0Oz4F~lHwNeeZ(ZO$6!`o~88ESi1?>yu-5=mkW{GM&> z(UO5Td68ERsR00BUM7ht@E22B+ft*|+tMHNF6Kc101W#&4{NxN=K>(z@}_RFtJ1JUp(zY^*-Aj|JkT#4+Tq2^{cdann_+?2i8v!s z_T@}X`Le1&QBr~Jw;m;2_VhE;BU4NaBzFIgp^K40WET_6KOE21topkW$nfRF4LepG z(MfCOaF)Qa%&V>#fXD(WqQP7OoZkA0=smKFz6&4d<)O3=;z*BcC4 z1C$u09OyVX?^nk!!vv5i*ZAl0s2~H(t@o#~hNarO{5qQgawz8|y2O7HFzm-*>HW+l zA^%E&ec58SW}K0nb(83$OEATvUq@G2c(qy}Q*3OBoe%33SQA{P#%?_mIFv9Db=h;iwKGIK`MW-IHfeNL(_l#Mf2zKWtB@698C1 zr@u8cT4j38w3>t*JJip2ZfDlXZ11Zi6^7N&F4p@-8X0K}(a3&Gk7z{HgqYfV!Fj@w z8_Zch>F2U^Z&W(2DdmbzH6{?&Rpj@4!1yBe803hKVWSHfYCVjOcE*y?WV>AL{eCPa zw5Z^F(nPYT{m#^OXeD7#DV_*QA!w%Fcj#K|JJcOh7_Fzn)DFQEIZc>?1`kW+;+AKa z+B9$$&e}91pxpXvx|Zh|sy=+ds}ws=cl^D;l&sV10-9`H_S_+hEBDa^j3*V%p$F9g zZipB&H0kh~=d0cC#BHa_Ubg3~E$u8W*1w75@gt3&JuYnY%}-%_>4f~-S{lt!S{Ca! zG*a%@5HOprieI1H8Yd-f%|n6`SV8s_LBgRuoUT%mTk8FeM*2E^(?=67k!#cOBLbz? z9Wf!^PtcV#?9MUI^j=~F((CjP-V!4i37iPB@@3ci>q`|13JrOGs4KSTUBxcIDn@ta zUsi0#nqM}gH5zU%Y{C#1qJ>S}omSLA`^AG8d$DL^jNP1~Y?lw8V0NZmZAC5aHQ~{M z@gTj`kT&8}G|1TB?htm#ECf`3PFVt*Nf$`yvWy}G0At0h)>NcB(DGf&oEHiSeSR)h zl17jhx%i05ss@j;uI+dCs^B*uw|HUY%9SE-LaKe)x+t4$Su)L>bhvSMw)`h?P+bf| z#u%uk;*Cn@eTve07ta!uRO|n<#$BsDvf@_lAq2_s16XFA!K$FRf1w-leT~mN!=B#^ z4$WUX_Hxc#w``kD4{0-XC(N;brENQ5Zh#Pm=>Y4gv1ZFPc%+P{YJiW)gxiD^g>}Mz zwDj&a^7SK~*|yM_;%!taPGA$N(M9lAW}R5lkr(+aaV{da1ACksYvmeHF%>lIxc;cB zVln1bo;&7jqYP$jfY4$e``(+l=jDrD;_e>s&BKJqV62(pdZ&k@-n_`G&HKY!0?a^F zjPF!+qi&o&$WWCYVu5}>`EYND5P=7ESVrw8as#>P_p{*ans`DfD@%aqI7Ss?uiDfP zXfzHAJj>XXajz;+QjG9M8{)R;!X=gme9j7I%pkQ2g{8&J$DQY%3~IvjU5wpsQ8;5t=V&qFn36cC2ml%0w~}b%TP~ zv!!^8t*47y+EC;y*NjFJ>6LC!A}YjaEyz%_AN#`3!@k?-$pW(5a^m<}jEF$8wYdPI z6yE48Bi{=5#PtWHpm*RCGkDxODjh)#A&9c^heR9=n9pNQuPU#vT%YGM=bPHDlGi_@ zl~@;uMl1CWPCB&^Tn-{a+)RA?K@KFfdS2otO7OlyN?l1zf^S6V<+uO>+YUi2&OO1l z@e{cRM}hVhoG6#uBYUbOZ@*ki!I?jdvKn+3UlY6?hP(Ac90{1_=O~J!D^yW)3;a;2 zqS#H&(D|(eNuexD5)aY7GT)@7)OGRXV>yQn848vdGjvs_Yk_0UyC-{{=)a~#U%1%@ zxc?3pUDfS?a@ZjtilG5R!gWx~ZvY3jJl8XaqX)1Y2Gw4e7NAAewo;sU#S)P{YJw4V z0Iza_NB{Xh(-mGLlop^y6gQ}ktd|+>H2HR8py8U%0Sz67TlqvDos&lV-5RLlZ$5kn zTx~>odTrZ)%DrI@cW9OaFULf4&&GxB6@#je7tK;(RIr64ZeQ2y?p0gSTu(X90>^_m zw+f2!W)mMLd+%VU(o(1Cy3qe68xF&xIh?8?@hyvv`d!>9HA@N!VM3yZbviFdoh(vD zcR8xH46|xoql-AUCu$r$m=ZT?NySi$eI)q`xM|*x1&}te*BIT7_*!3|xJ*uXQFz-% zb7dzz)sEC?SHui=%g3DBy?Fd&*Jokp~`(z}*X2nGzv}qYj^c-zJR^n#lO4h^GWBXOnFvP|Q-y>mou6Lyp}H zX7w*m9zxmq9uZ2Spq~%D94I57g(!f&>NugNBnYcsuFJh)WuqI-W~P=GY&*O zVF^N4sT2%c7qwF=Zpo6~V0QDNv~@+AS*Y^mP~4STL2_2r0a4ds8id2xl9SshAO^JrYwjhNwYEq{Tp;T1*4ooVh+V3$K`6jM+RFBD#W4#wvIs*b5T%di^2%2(Td5%1&?0cBF)|Cns{niekNt`jni@93Bxuk+w>2T&q` zmux5)Y$o5(wiT7s!wZBC;O3raG6sWf}xm9$f{nD*|!%kCc%UvQ>MBIq$uLBXFN^ZO~$K_SP74#rg%R z5&40xXE!g+C%uG~O3jvh?zxNDPY3Fu{9?*&|CNy@%WVcU3qWZKAZ8J31U}>=urlo4 zK#zm7d36|;n;T(>Ohc8u4*@y@ZI>QgrTzCnHskHOJZ-<>x4gC3vf;sXNfM4VLX2S# zopB>9pt?C2@Zhpy{7{ETS_5WLW5Sy~S@*-jE< z*<8elm|UZ1?lCSCeoSl<1gce$h_!rfv z(75FP6%8l9jDoC+9YtR5ig98?QLWG4-=V_NnUO1HEf6nzoYO@eAhloeI6IObg6KC6 zn}TZ;Vs%koFI2n7M9MPZ^mBU_#bpEa00bnxWuq#SLsYd|r~J0px^c$;aNYP-Jm*FU z!UeQYqcMwp?)e>g(+ZIR5N+Mhd{2NU6Q{Fl*WDIJ%a7`3km0B|&9`)yl}J1~7Nhz2 zwJ`p#_-uaCXRZE2B8ZGT%l_ot#W}xJgBf!g5TY!V9->SoH4vHb z!#zd<&;m?k6K)C<3mh^Ge1F{SRE&VcwU6uKcvgG6yaqxcTM+s{!9R3hCj&;X*`^ky zul=7N&&Ab~^c&}w?9>O#!{8$&NBB^y+qQ}lnDfO5OmskUB5oAG9C1!ThIhDA*Q*mfViI@-8n#GL(1kERVo^lT3uDDEh_;?$=bC6irmr z2q_vJNs+5k6`f>?TZ5mj9>vZ}8dnY#pQcF(ruG6hvX@|qpuzC1`p<5k^sQe{fgJ*L z1i&+#D{jt4_okA#rjx|8S*p4V^F>36QFo zZASF*AOlxOfilmQL}cM+KbA;u)+;JW(LlM!@e5#Hr4}mSx7`qkUsxAD^)Y#5M z6 z8_pii*P`b^SMI9h*!YNz4lDO>G3zd9@tAr)dCyY{;gU(pAQ1j{VMCCiXEWOt2GA^X z8a^gCS>$vXvG(#5 zGwZstz~&ODDu){~KqFty1z)`2R~YDLT!uCr%|=l26V{kpz%X(@n|4X(g8;+N$h~1N z!G3G8Ue9_DY@3eS%gb&PM*WX9J>A!Oh^cpW(`r9(NU4lQG&Ra6v?Jw>G5eIvQq057 zJD5KjE(eYFI_aSO{kFG&l#|_F3`Tiigz|C-rkrdtVmR3`H<^EN=KFArOrt#=a-8Dp z3&v#8m}1(|MiS6PW^d+HlJE{YlsiZKEf^>Z znK-B7^u&v%Ke$YTDuEEdux8R1ruc98V_*1)>xgA!ii>dBEnn?6(k2Y zZMcG58MDtTG!LObg+y>AI@=`AR%;f|m97}xerx(un$p#Dr^B#cDN6}QYyn2u>ENWc zi+ewse$AcdN`eB~V-s|~eK?IS`5j$%CXNH%lzcL#WEzLnBc;l@8~RyRKgn=!mxWuA zax{;NzV_U*BLSuGO>}4qSE36tFXACS-MuhXCpDTd=sQIw5JIA{ht!p3b~P>b^Kl5& z%*>AOn^N}BidKTsz%PD?e)5dU*xNc+)sF?EAPl*DxaO&bzd;4{fNM2^nZr;gA8E=E z7F2bhfbE(2dYxrZIzx!eCUwO6(#X}5UcVidKS5IYot#b1`5dXu>EGZLG|fbwcJ~7{ zMBC8xvjANcdv|bA80HDf4hO({)Ubq8l?ZhR2KMe{HDJ)6Y47sWvvquQtvRx`!;oe@ z_=kt8vuDfJleY18wj{ZQc-Zb1#~hKAcdQBfV|zn$#ull!0#(W3xYOJ$x|#~M!dB?n z-ywojaE8H-2XE!#vNdF*&6+}>W{zKz?&%WbqR;;oGuSr+-ir;gyY$)#j7}Z|)SMcV z+MzbJD*w=&pw{vP0G_G9lSW}@ElY*f&dMTNiMP=;Tk!mW)qpjhU8KBwVw2#~=AFD; zEY0jNtBcckuD4CeoQUk23RoRWN3_tVF6X|*OE0Z6B2Mqqlh51ZNWn?pgkVVHe_q>Z z^_`tKmN#GaY^^$h>*sz9qgs>DU+#$7@aEdY({&c=D?JscO z==WpMDra9C#kah6NU{Jx++1uVGdCVOZ#Hq3b!88 z)8v$WQ@9{lR*MBb?IS=yf%6CaO?FwrY&Zun8TjeDN}WaKQUP)k0I$%D#@{a5nF1t%L(!L!9WU&}-wPxXKa2Im z6`rL4@i(sj?R0n5{wYGg_mx^wgd7BU)`fk|MF#{PT7p@+C%%vMgc1oQ5e0yQO>0y0 z`5~vyzJ_Tp#H;hEnbL@e3k_Eni@@i51q=UfJU~eOzDrWtQ_izsa9cqFF;k7>}3I6Mf zqFxFl2hG|+-#Ym|c81+GfihW{1rs((sP4D7Qd?>IXJ+OS1|{3w+p zYqbU`En%DRb|)i^u7Wb+y@ErpYx^us$Of7$ixc8Ij|YafQjCtW2V=7kz^ucfmi=|2 znPL1s%=U7bFv(nvFjKHK{6lNJt_nLEh^G^E!;j;Vn`vtB>@qpI$I;8;E;lNO<->u=hkCbNGy}^{a zhOw(pQ}lX7E1^dUNJ@=GlK-g8EkAPa#D+1>okdnzbgm09k zTMWB)IiYxq)YxhWSm}jS)tL_X@(DeAZidH|tc_XZgM|bvrl!sp=}i?C38kzT)cc|KRI+k@EApPCyWb_e=2-jnO7B^o2T+ zpM2Fi>*ZD^2XfNh@KzJ8LX+V29(P@RmeUzr=;xE3w`z|rvPp3S#384vMDsMm+F%Fp zyM?q)cg_RA9@J~;I*?B&fl_l#Rs)spz4?ok<;OH|JG6M=coB9uS!=?6>1i3 zk*#dJb6M3G_AG78H!3Mte#&|2Uhwe%N((wLXCJM8j>sS_4U6Czdc;=sj#{pHrKFF? zdB1WVJsT za~;1z`W3W>{oH>3Sap!_{8bdG*lyoUR^w26xVs!HG@CqcfSN;+aJ@?sHHF|Y>QM5o(&6s10B?qrjjo2;NS_?m5Baw6cStvO5I_y8xcGC{Dc z&uW{pX0W%S!aUZK@_(bhV|?>A;!O6o4aRSuk-V?OyRTG&P$}9)ZhheZjXmMSye$z|@ybfsuJer?zupaEM z1T+`O000jML7I7|fdl{l|Dt6u00093B7d=xZRq+$c}l?_L&cq{SUa+YGd)pslK0or zxu77!l%kQ~Pe2O>dIJ!@IU8DU3J>fB_Hz)I42>hO@4e7U;`>_96Io2feImCLI2?hA zXM*(Zn8Yl>exr$6QVDEZnavPrSW>`MyACZT`(ACCO7B&TSAH*v@sp}mF%8kvmjGE& z_sA62j7MI_Y3j&AB4iV;Q^?N3lKDX##b0(dV!zF89?Q%l zRY=KnMB15%#*89QyE!C+b%M-y+0S!=3;F;SR1Ahf=!dc<4>T^O+1C1M7z3>gEzP@3 z?|r(COTPIs__iGz%b^%M^N#Bj2w;4yJ8xi}6{_&@y2En6;zI>3Ua$5+k=U}cXZYn` zi!XY+A6LqbGJMYR3gtydWY&FYPB+=S?gs#gu*pXjf0O2!U3rjZXf1ldQy#qwxTJC%;ojg|&#z9){r&Ikk8A1Tj?iE$)G~vnk9a3& zm?E~Uqitg#dbq%En!MH1GI+5|*X2N)D#Q^EZ_`2^5u4CO;ftp5`z@O2WA})@y;#eP z_*p#9qI5kf7}Izlgb~&Mhxla7KJo!HSTY%vo z_et#O1blELbW%bT!+9J{0&o2A9Q&$Gcp~*_zO^Z*C!h{Z(X=+1`}`2&Pv2z7EOj+k zJo5c^!R-q(Hb8GW7N5mkb|5S!OdMUDB=FB3@?RIIeoLhe?=p*L`9#o%`1Ly!J8=Pm zM-FT3bM^m~ba6~f&(`N>~1 z!=o$k^=NL=L6%k2pu{CT5;$_cgrf(NxG3>atDt^pd3R`AO!JeT*fdgFzg`6KnofWBhWc-Wd#bjqfkgq#4&{j5X z%hYG3av1R({bZ5bX`udZ`um4EBzPl#S>oJ6=^|k7Gm$dUxt4*VX;M`vVnyC6XGC8k zWrP~$$JubDd4oy?>M13%e7=!~%O#0;GS*3P)xkKA7Y2(cP@>-A!)k!^qjML0RD`7# z7n#>YEdBeL`vNZ`+aP4iUqZbvEpz80_Tv6_MBh`**V&?FMZU+uJ33b}HvmrtBc2H7 zyZb!(m+IRqQ;`3JXcMk{+z_pPi9;li;+yo}KlaB0s}}bD{c#-!{dquk6D)Zfasx&K7v@4e!C|tqEkd ziVK_!UVmFaY{f!|J$8y9K1G#oP>=Bx z)TOZBlIlL^`;V8fWFB+*jjyb`8qt3f^(!%ggI{iC4&$EYNe_kp)rI*ISg6h{N56xO z8tDBi)Fc@N7`DT10@hOgCDIy4U`GV6*9Ux&nP(-jD9Q+${U>&&?E-ZywfqHjPaaYF zIPzK8!{?>~a2t*i#r9peCTa&^Ug+L(>FRP?h|1!WAE8(ick5B|?{k+2ytU@nV={Co z3IB_Z?Q~67J{)#47u0RXv_RGs6n=t*OJPswI{;&4ZO}Ed$_}Q-3HZQ*W7;6~`>|MQ zDn?TJVdI>_kSZp##Z0DgC{~E&lW@H?;@dd#CN)gm$xHw5RPykwkRBn|C_IW{-e~Ow zqNyu3r7KE~%|6L|KVc%Q*)-|^_)Qh-(1VTA<@OuRaX+>Y8bv3zlr5|)^p@P}?N=W8 zEs%HmSHZ>qOVf{{ZF)UukCp$3H|QSX9(J3O<_ zj^wbx=f9%2}b|A}8a zG535w=;VW6%PyV+-BmnlGNxqC*j`!T%XZgA;rI$1AW2Z-0a0P6|6It1wP_Ed&#gLD zFP^hdQvv^ox6>mKkBZ{Xr`NYZ1>qCUROgbla}S7dwTqz~w3QsYod`273YnWAN!$>| zpc6*p3lJ;^%E7i`2(Gi;gshb;?{=6@mq2;PzBj!6)WLhCq#;Yy6P|)VHBd$YT|1e>q@Lc;X8FcmecF3h# zk$Or+7?Rxt zL|y=JEo<4c$I@d0b67)`imydNu3mN5qjHaK9cO@IpUF_nopL=w|K7;w{WCVZ{*mRN z)kh_YI@~tK_t{%4Nr^K$(Wrct$*W3yde~}Igce*DGZJI(5yuj}7>;6KZ+}4{kfGD+ zd9V2Y`~w#KN`9rx_L4Cq1r*p0m!tvUQwbWRg`Z?QJpr+s@T0UH$aUl>h+D+ZiuZ3p z?!Id18{2?`RGAU>HFva-+ZrR*a0CJ-*hYlJnGhxJp0yQ&g7KjfOW^i$JdyPr_;xIx z1PGa+LEi6UIwIsljy8-XsUs@Z^9l=dig-0S@H9BFn`$=SuplZ-lv^d2#Rv1#6!oix zPwAj;AuR%AiVz0L@$3hrVK>#5vVIm!dk{d^4QnQi%|7{(Z4AxJgN^*lKVY|iA4gOM zjhgYTBlqWYpgl^Yb-|SN()bbQM@OcazDjkp=3CV(Olch7)U((7;h{PlQQ8^EY~y0@ zS=i{7nDFHV%Q?B+SzlKVI1;be@bfLd?$U@F`$^Sl-lxy$WbTFHsy?nT+{K+4OM=A4 zSxw5mME-@N!a}2Wb!i7qVl={9^io6ur5qhzZp5iK%hL}ARdV@TCR+p-sNYa#5-vQ5 z>(!mXy(L_NW#IS?BUS?_fq%@o&+fYLXi&4d8Ns)XlH4Ar;FqVF>f~3Ssv4?n;h4Yz zGxOXRf#scbclU!sRag z0DUmA8DSs9?z)IOO&H$6>^OyWzQebX=E z5Tggi02rX}@PZA0OCdZR)Q4P@@hUFrO%|GK3Ok+&R%J7qzCC9PsH3!nAU*#@hkSg2 zv$=N2`4pCxfWpN4XO6nPtVS^iBI^-0Js;u=TDwjz?rn{}H*%hmdYv^6(OlTMLH z${Hu+R>M@4`EI|^l3rVa^yO+;va4l_yE&*6&(hT}|lRh~mb-e^oi1-xQwfSAx4~6Fh$fQgcBQ#YP8E-@o zZDkJacCY7`16CMJMLR{4Uc594%XuV8_POPII;t#oka?*j5-_1`X&tr#Sq8Ef-j53> z#@+m5Ov5i|ht?i_ommn@Z~R%QiP5ba9#}mrNWJJ5#!Js4Vmh1e(fn%r?2RPWYZ|!b-)0}h= zo=At(6zsMfBH^g`VYw##!W(W4RNandaWhN8TdU?Q9)u%{?5I&$*(9p}N(}F7K?cyFkUIIMR zvm!EC906QyU&OBV8XGrK-wJ=aUdJLB6J|_b!6hw)*0L3?8>$;hh%rSGF--r^QaHt} zRFE1VEsGNzGA~Sb(SCy~UKmN$)+*r5l~`v6A`^_Aw{vmync_8wDrBOa!*jzva2Wb9 zSTj@$*?l#T-S3$Vv|4X38$kU|JKhqIH7hmq+b=aP$TI*5h(x3~VB^x@^Tm?nePpHu zVIap8g7ql?01g{Lnt{iG1ONa3$&|nV00RJ@|89U-*53)5a@R8YYaKgTL6=3c_WOde zw+%=rBSl!#zj_@~;5PqdRB<9*fjaCwiQ?4cL!zJPfrDT_!kyj-sthRxHS* zTle-(Po^p5&m4y3@d;m4U7g?s-qbGQ> zMg^1>A0_o%-9DR8Urq7wnCKApkM~_4rH8jnnyU=x%WD=@P}C-syN}bWVG{-X`Te!e?twHYLY2@-#e-v!aLi?P`5*N4o?}0b6nP?7r{2lpUfyfx*z9B za1BMc6qc1UO7}yGPWk-^#o*vI|Kwu}#A0UnkiuKP>`nb-=73FzdH*W5?Uc7JSnkdd z-9dj;HiYdmgkt?w_8OwJ4r?o>^PkN{=jQajWSgPSY{@C|@MLaaES@D9XU*80`{T`! z956D)#g1p%QZI=fJS=f^PCo?Dg!xFk^UAqWxdRl%gl_pBlVJ5rNJjE2FPUwn68oBD z$psCQk~BO|FsYX$8rjH@Rdu;5=i1TE{4IGTz7^@%Bq=(t0k2I93W19Dz%jK-BaFN= zfi3kvfQc`S{8)v3o?*q9Bp4i9YN))LJ4w-}oQB#LH#5vj7PAkkAdXZ)1b%IT=4vM@ zPP{|+wD3lQa9Fr&);(#w!`Dq5ZQZUx_S?SFn3P>NaI<-~`nOMj z>WfAq4!9{t4(9<5!$)hUuB!`kBVI&)x{qtdwEKB1|Ma>~?53S&$x_7W7IFcmFSc?r zXt6n;)Pt4L8<+0jUVr8B)?>L7MMtOfZJELKA@4P9qIF8+Ds4JgRp(I@B}5J>tD1`I zv68D<5h|PKYkglqzYBYC>jo5M?me$WlO@iWd6ZD~ayZ3o?yybLRzKp<=dB)?b~6y< zPXcLNmw7MVfhJ!2bN9u=20cP85PxXV9s|i}gTjinFK-oR0ZGeapL*n8a4%yh4 zQbfpkRUwCQGPX5D$W|iOMPc~Tkc$>4={Xg)qF#ye-ngm$`KH}~=7A_^f+e;Nym4*I zA90O4V^WB}U!D>YLljM7C2oYQMd0O5S9o|~hGmhT2RO(@9+OSr^N$XoQGIU~z2#NW zsz@hE6Df{r_2Cp0q&#VcR7?zk`-b>IZd+JPZ;5F@=G>A3Y7XnYbbElHlEf>9*7ma;iHeLllB@km%Jv)$G9qrmX9v9*Foq`U`~yDsY!+!R&Z`bxG=Zp=jyjAx=j{R}tVp*O zNnS=4wo6rSqc;!)%!nmfo{Fgy&EU$}LkDg6FB?j20d9JG4E>ED1FbHulOy3lM+D61 zQb~GO{xJN1i}V8>sa9r+%`8c1IAG%J^w*#jUFu=J`6r|A2>3O1Gq+sdgo z&f3FPFuL46;k-cR>-rF8@>YfjE~&~6CP|qF?l(Up>*|AS6XMB#?(%5oK-;zKHn#wT z=(VbZS|^K$0hIjCLIm$@kEQ83rqvy5YbSajyeRZ^!5cFU0!s9aN%C7^H1x2TThM~o ziCThlVsPXi#w#0-E)l9kfm)=;oo|Ex_e|~#o-wPV=k=*yRhR4YKp}&mEtc7JWGYET_@y?O4r&-%0oyu7+^Ow8nvPle5@5!JH%~DK?&wzA> z6Yz&{0BwXRVfgv*s4@^Y!nxLixq04ab;9VctBQB=ic z?VwEe@VV6$TW6J;{CKfL?RZ@1npV4e*GZNga|>RNXk)Pv{&yh40IM#zdG&EL^-0?k zP&oiB;j6hvW+UBET0|GxnX2gnHD^-58KoB_X`X=xf%O;>bar0$ioA5Td6HbGHX;XN zh+d`@id9?uqXJ6|Tw!;C1mt}DYZ3T?ryQfeHF*1ILXgHyE`I<`rDe8r_sFZ~U@vt5 zy;0?xI(OgKS_&XU7LxP(Qe%D+GULhDwUyCfc#x`%Zz0dk^GQrr6}ra{ir)yPEc!QT z2UQ2^(Wt&M3f4v0KpSOo1x)3p@7<_oB8Ilz%5&Qcn-zKoDi~YR1DIgj6x{%B5kVYt zd>iY?SNV~O36~V_kavy9vdaaSYxM$`o@CV#&zj2J!_?_DzkLYI0*cx~4u$(GQGhZ-Cyq4r?D8o4y41{EwE?OTyAF?Qi%F+^G@NF zkU})Ocv$%k`TQZ?!}LGHkls(eMXZ4Eniu`t0K)Itf{JQXI2NN59xEK{g1{-5n%UeD&2D6qR^o47uJ=Wo#Hm{g1Cu}Te(ZAI^W z7J#iUlw1iL2m3Q3*QmYh`OpUdxxq~G%c_FFQnu7}5t|T$d0J&ysG+4||KC{zG@v7) zm=&9T4-y@UO(FS)dsAT1p{JFUl>MllqOJyQVWc=6;AU!}sL{&O9L?hj$@y7GlQvN1 z?Z@C8o5;ZMS%+sOF7o zYxkrAa+L=vLu#Pg`9m{$@B#*BsM&DNeK3P3nkx?__{uK{(}@XTEuzeahJkWvyNTiE zwX@KyTZnP#(G3B#dYqGZw87dsT}8z*9Dy1|2~lqra})g~V*W5B7F;ol&=@yUno>K7 zlQac!+!W3b!>y&%AwSG&A+V%{o(71?!eGTKuedXB#fg4ky`qPQZ$ohw`x4-EE1i(Y z6pjU~IoSDT!s*wF`h7(GYx5Bz6dbXw+}E0vCobgmG})eIw;RD}R4*iDm%+=fd-2h_ z+5Xv}4Tq%%N^uc9`L?p`1rwErd9huiVh~+5A}aZBBu`MY_R45Phk(s(XQth?l|N|~ zGAU)o7F@pGB(k_)6*~{iO^VM_x;~qc%(mM6_CgpXPVzEe&uCu@Do!BGnsF;?)4ZAD zl!5uvHQF4{@$c@UR))zk5)?DSuFVEtqPcGn9>5uT5^o;sH~+%AmQz%=s#n{=c*#$k z%Y<$xG#oGItz5skEztrwc)vYjINsTDh3uEaJM&uuv#DJ~4Jvc3`A~QthRpFL+u;`)*rjrrR2%S=k+eB&G{RzopWwZ@X&R#U%?7oj9QAQ#bGmII`l_ zHCeJn6VVABY2&iS&v~xL9$1HDtVD#7SKNYcS}Orb(!3LfqBOo)tx3*t3o4bb%TYpD}f)%`@v(6plF~NKHZ4HBhc-)V~_wUNy<$RLs@;B^in=7 zt&tjOzb$7sJqwQ)I-&{(LE5YxdIv!D4W4cDLIEuFDi~)|#w=SxPG-V_N)OmAmJScu zv>;Q4m{bg$xQsDkjin;&JGOXYX}m9#e41xQAU6 zYQeXry+lwe3qXDqF-?_ti5${gw9r}y-daaKPVr9Zzkh{RetVf_%t*KJnTFiT zdEPwiIZA9z--B?rm%Hi-#M1l2?KULAthRV|CGIn*cZ{7#g31&0sh*^<7bRDgCu;^f zyZjv6-JrixHA4QMV}*Ve%$L1_^Gx`GjTtt;0cB<%2JTx~J87?sS~}m(jA2onBdxb9 z+?%g6Aa`BOa5&y80f`{$r3H(I-~RmtB-tY6gP7I1(jOhC(vF((xZr)O)Zl|H5CWC4 zeIKW_tht54u5`iRXa>|NsBVl)wN0 z0|5VD3awg<4KZk$;p_k|%dT@it5VZ|xr0f9V4N7JJ6&0i{{Rzi;(K?y2)r(mO+b_i zDaBPb?OXUfS7Eo}?ge`1A>jqVlg}EK-%Fz zLGIG&6hrv%ofY{Xj#9UisHoa`4s10C31%QePNykXqNBeWEi2Qk&FbiGW2zQ5u( zp-GF2qnBxR|HtxR@WSbw8<#obiZmr~PiWQ>Bx>vpbRIXtmPPwyFimvIqrGX5Y$7V9 z&+jBW1%dz^1{Xaql?;IOC9E5uMk(5rGU=s~w*@(_G+o<1`13uKb)%w&BuSkQ-9h+m zKaLMU2%P^yG2H{qth+X=mNrdw*`Fa|KRM%>7U;t5#)+y3oC|uNQal_J9A=hZG8U+uO#6F?D@j>> zD?FM2K$CkKE|=iV@KGV32noYZs)6J15OYwQUW#hx{ZZURGji#qC=y%QiWVPDL!^wU_dZGZfj$ugg0JQDntL*zQg#SCf|Jh=J3P}OEenQ+ zwIH z>-5jWcgqP0_I|!R>hOgpD7}tT*pG>x zH$H;28}%Ed`gjoqik}+fnsoRo6nhi2`+c*uDAd8U;0KVXSW@L(e)-Kc-p8aKMqI?P zdK3DS3_br=2nH`sCj%}1VYurw`CM!NFMr&I!3 z9)z0jqno7pAfM{Ea=Y>dZj}wEx4oGMasHQ{=_}`&4t&BUmYYY0bgrm;zdZ}9or=I8 zQBaWh*1rrB``o+p^22E;qt^Ercl&kF|KDLU8XODqwwJpw>33Fhsx|@|xS%TOY@ICC zERykB>m_MEKT~Ry6Ro6VQ~{BXVIbwUj$R0>r#ayDtz}Aw zoSd_bMKuD}pcmlarfLA3=ds>VNO91n{u@g|r|Gdi!I1@wf@TkLk3AFM+%Bb{f+t%` zWe&NJI`Mri;NnxLpORsKGaNX=viI{-S_-CW8?U8;fY{kfKdTuB6ETyJ=JZvww&0L? z|4e+2H2nRdhjcs$YCgWP#h-r;S~s_NFmQ1ApbLZ|T4L?nW$WHhrfguM{!FUCjHhU< zjgvONwdprXdy$=fZojaiL#u@ngs&phPnnHhvy(T|bX;!qKm<4d2fSuh(n0POSFS7_ ztLoxr9t5Si1SgCnvccfXOXo{E7`i-0@|guN=^LHY$;zXA)ARi-4X)SZXExWp-54cn z437VGm-8|P8jg<4uav0!EFbM;V}y`Xq#A=&r?78R&V}ypA!yk4Jz1hI?|HVZ3jq3{ zUnL@1nAF-wPJ&^{a>+(^`MsoFFWCv9@xA_8OaVvT5`MvYoqJM4f4`i?$D8@ApswyyJVIZDLTd!AB7Cd>0ubEtqurXO zOnt38ry3?d|EAOD`_W>PWo_2E6(?80Xytw#VKdpKfO}+3gfSx*^IFIg@@V_MhU@ zO@J(@$FMlV`)BbNti**^>~6nwhqVeY3%>Xmar4=c7kk!dD>2V+<8CuFQ8j!c>WcRj zi@+1#5%}guXPA008uY6$7>b=XU3ef>MVvl71<6d2rwDufA}ecQv(ml>_b9Hr+xInZ3-38yBGY*$%PenJ>o`byG`VFlSwP-1ysPg@uoDBQE=n1 zl!DY_7o@$M^mi&aA3dqUu^gYO?R=iw3LnAXF(hQK4r`Zy!@~z(xo1e!fV8dLB1w#{ z-ST1UZkrIO29pn$-6Gwk$z@(A-sI~733e00-_$uwulXQ~Q4jff;-TK9`R>I`_|+zl zeV*-L8fFs57;)8mIK1pTx}7tON+4H1ZnZyY5!9hi!Q{Ef`PGElf^9+&`_mY6CLYP* zANO8+_xn`|2Iw?60b|ZRR@RBLkLyY{>u9|slc3!Bd4@_B`Qc)@>t<5|vB;;96qJ9!tl7xCM=G&!4s@?!&K%Bpo!|C>j zfyNbDEx;G1gsi`%a}?;nDd<(g!e>^PeMtyC(~=l9Y4AaowN(@eEWw?RatARb=sNRv zO(5fBSXDSAQX)jVY$tEjDdsx@cD4H|w6?QE%x z(Tyg;hsduZ=I6t9Yehy&ze96f)ZPvcIoy=?J+B zFE?XnOIi!din)!lld}TlP>to%j)!-2PAz?K$pDvLNz2KrrcjpNB~?XXVJ2gA&OE~A z9sN|*OQhbLD>An`R3{EZGW@%^BH{$1IMMn!6znLvp&8r!H`5*p#k-K@;ogWAud{AC9( zC@js8XVo zWo&tQOu=tJVe4gBr4}BoS|AMf?#8R%rsxOo%amPMsc{}Z^kh2aq1as)|Kbvslep+q zh3-TRJD3Yp+z9S0I(q9$jtl#~avAqDKw7pk2PG{TCjG7qW9^Vpu|+q;HKHJut7a+X zHLI6-G)HtW%jGC6ILVZvLNkOb=X8S@BFS%?JgYbaHwBDPM@0aKBHyxF6w>9TWnhbc zKA0%;^lK0~TR%?KT$G$qTI^Y)!gs#SqOz%>pFp6BJc+5iA^z(=5e2m|5Yqr4|NOF| z2O#^Cp`{0!(-o?+NXz$-=W~^I$@~fJgcym>2y>|HAF|Az>6ju-yO6NbPKii1JAGzi zp7JP(!mPV|Zsto)ZAhbf(sW``BXG!w%<3oRs7h-DusrEXlXS9GNEKZzhF*i#WuM7K z%awmwzZN48KX;6!oDIvrcZ?bQkEuG7F^SBg5w2~J5Ng=YNpi0o-|spXB#*o3M8JQ! zV{MhlAJJB6Q>ZMgRNm{breE-b`?vON-sg6$=+(NBInZ*xY3OFAo$C#pEXlX%6GkdZB>=lvolH)3k%DeN z!&>;X8xcjkQAx2xp!t~ZyZxouECMUa?rp#j4vkBz{84T_e)huj(ne3HVID2*z zNUkN3D*<JGC%y(x7_zh zFir!GFyrLvD}-geEE}e;KmW!5<34bWgdGi-UWzD8L7s}j{ShE^+@(gFMpPee$$6YR zUgP$di~n>(RCfXJ$?g%itBhm^t%{6&NV7(WO78VIEOwM7*sQk#NolU=z%%Th|71nG z9OnEZqRHO^cQ6s>0+9k+tQ6WTJ65owotk!V>by)m^z1%1mkP!;7R9i8L66`9-Tn~U z+SE4T{6Fs88KruFcVb$UPPq%T5GF`t>Kbd!+62ga$s{&Fhxb7-j;=NVhTQZ-feEhx zxT*^T-X1s1Ok81z6951W1f0A^C!cn zMf=vS>|ArCV~Qw@#stO^){1}^+2~J4mcqey|0Tk=PCb*Yo~Ea>1o5u6Vt&*Ol27TX zCK8z-gK53ZENLK^D+hZJBmVV-00I_i6&+sJuDj`u_8 z$Uh*`Y$?(1G`S;dcsN6$VV`S)-6Lm=z z*Rn0_iVQ;U@&mSc{QpUcih~?s)s!I3w@mCYqdbCfLKN9L$xGN`@tDZmUw{%rC$PGV zO9p8T7%6qOy%0uROQ{rasii#>(z(C!xI;S1rAXb_Jyf8DeeKNjz%6cGVIOH@FQ7DM zZRjTqF1|5=3LEom+cqJp^csTwj=Xon*N8kd{i?)F9CP{xR^$*B#0wJh+V~c#V^|+a z$cS2}G_d|xQhB5R!@)1gBr=0RmL*|V2(#?`Dt@8aCclrRm8{G1lz5pxfGK6Q!lU%| z5M^^&y=$jolePG9+pecl9aL^DeF^}Xx^M~~4+5dJ5)EP7y3;}WNXu%ER+*(+eDGkk z7#-PUF^29U7jJjBd_YHq>y-U2y)0gDh3Dw zEI!tkQHF>hy)O_?(f~C}okRn-d)>1aG=&^;3BHUt#&n(PTNt=NIugI2;1H7ZhQ1%i zx8vCkX`yq;N($uX9FP2grI?B+9Z=YgbbW1Hs~H1L zqa)?*ki&~?mZXw4k_R=3b_@av$T7es)S{Np~Qd`&hP zVsd?mniSsLkU_KiQt`ahmr?E?yiJ17s5`Gr4Roy))vknANDXy0k8;(3$!~4OzpukA8~2BTj)U916%o~SU4|EY~4KsvH?caP_-8(T31JCKSm+Z6&zV0A-_OP z4K8n&p)oZ6AjR`8AWIU9x4FLUy(!ef2M&tDn*SXVE0@{#x(+Rf4<9Z1%V3|qox%Mn z4Cdp30lT;Wa*H6^%M_g94#|MPDdkqi-?JY=6bv#bq@O7G4r60o3AviIc>AtR z%u-kL z@3U@=G8l`r0el~u2(SSDr?N+pPj}>*AI!artdqJJhe#iXO>X2@ixRzJ7fir%Xb5@Q z_{iCbrWl1&0R+b9Bjgwb%`9=v^wIU8fOKIK*hIvAy4dBqM(_9M{f}%Z&@|QPHXHt= zM>xy#V-$pFNbBK8YQpjOB9dw&!o++GN#yz#5`Ve75nSta2<4?sv8N4N!(5<^*I`Mh z8KTHw?LQjGmBDxr?Ie54_i~K-Yu(1ZBF;4{h<1EPdFL-I(DL@SqAA9GOAu)ung-b9 zPng;1QzlN$w3kT#wKBL(I8fO~W5K!RXmY9CU#&d*h;HE?a*%(gD2^r0%dFQZLY}Tp z=UG+Z@)!~WR(+_WT*uA60NjqR003KXSipm}85hMR4hfShEZ1f75~HhzC!v)Zq}JwJ zH8HsYBifn6A>g`mHkQ9A3aoQZ5D$qn#r>b9B8MaYL4o||kzEYWn z8vZ66oYxJh@0&>8Ko%zM(J2CMD!O7jU8lod0de{w4L@cuV0YI9iu0_$@cr?xrK;X? zLEusr?ru2rGYR`hx;`uw3yIkM%265d0YGuNico`qXrXr z4L#FWpZaU|>8E)Q{Vu8Xx~DkG**y>|z{1Qm@Y-mN#Pu?h=YRpTAi3!oEwee`y#cY( zBpo6F4u|kNl%JeBh+_#8>k4Xxs{VI>4W4dKO&}Agf4(UrXWNV5nv~a?3YSVy^1|iRVGk{G9Oze^S@`ji(>mx}&xJ{V;&R&j$RF?@p#Jtk15f(y{0>F_!PJHUD{JmrWdwS>})R!4|~lKLQ>^334S$Lz=5>< zYDl*FbT~XV&5Sn~pIkcJk7;UYhxNv*^av?M&de&X@`1^IX?4K=ZN!v&wOu<;me+=U z{aMvjt#m}>_A{gH+aMIZn6l~30Fu>Nc?d0}+hx*dD@a4dS41&&!!l40BrO0aD|v^i z{a{_=Pl(_gkY(sIlJd2fI1SiO@2OtS`Uw}FN2L@xj zPR@w4exRqaO?7R*wb;dG8b7KG5R?EFqaQ3Tu1fQF}(O=u}5S81|BQ#D-f^K(GA+UrA^PucO>rn8+ zaH!B4N$Y*w&b6kS$THlQ(uujTx*twM1fKf0%mz)-S2 z*mx?s-uzCAwt97GPX?-ws4-o#T{hSBGJtR<2G!d0dC$Du)B6s={3DkiNgQJpKu$<} zFXND6U7&0lKqu<+!(X0AnLKBJZX8g2mIJw%8l&`Ph(#v`fAMY`4iu{t~daO4GumfbC9SQtGV$t{vANix;pjuzz_#p5w9UC6a}>)I3v~u?zv=7R29#Cibks1f za`8B_e?tu5y%#+Lu`0&R^B-6)uLke4J4OKrQwA?RMSUbXtrKZt9_|2%+TN-5qMi1{ zqdumFX8&%f5(xdHENRdlN`S3doaV}l1)&d?uKDc`9#CL7k}(>JPEK=v4-=riE<33^ ziTeT9Uc4a~oUzI9&A#*pX@Uuk%v1B|0?4G(4jd8oMq<+Xh+|pfz<*E>HQ2$2)dt(z zibcKs$C0g%lr1a!h;;G~%yC$1Gqk=R$`qeuB^4bM+_JDmydUaRjh)sbal(mQI%_tT6{SI%BYHjab$1+~)Ya2|h5y7$? zJ8*&V1n?qAdktA{q2dC-^<)RXr>fm5Cu#7@dU9BvXMt&44{!am%#I_$HHqOxw5Z-S zm+OTaWk^M3aHu5kt-hkcPPk`I25IK!6!2SIHUQ!!G@`E0HJg*&IvWBJv`SZtN#NAq z#S`7XOhY83zowWG$Q4jb%nAtaN>MjmwHV~j;_9b*N%!1`m>lKwP*_NzQ{BEgV$apO zljsED7&-coDTt+`h}|pKcrh))+&XX0J8zi@;AlaYkGOQ}LWr^_6C2{{Rxu=oiK_Kp zn*>gKorJCnyRFdUn+?_5P~2*v%FCGQu=dsNDa!t>ma;H_aPU<0`_Cf_HWRuG(;X{B z+vzQC3{9U$sP&F19Z<66$}{|M;((6V^2?wfYoU)3FHRxR(BXak`>e~oP{&1y(4qq6$&?*Ayb&+h6iYBg92R!AfB*mwOhKBOCxHY1|NqI9 zzyJUP0KZK!UZwIWq_x%S7Bl;^LJIvJf$)xEu35HZX$Crh1d?`w?5-g3`{k_@sLv~; zb2rrT@I5?8GNwxZQGT0nqP0V(;yti}#*x{Z1%wZuL8hdcjbX7Em4=0qsz#@_NI(3# zu-%h^%}Gw!w*IV=!LKY^X3zHNyHOkibi~V6c~>9Y7-gVBpAK>#ibZw1t{Cs)Ics;+ zb4QR!YEl>^b_q!0OH9pOlr7COheI2?)zS^D?nIR^5^E-qI&owRrqWz=DkN4%kaO~P zEOo0zP;-C%R1BXUu!l`T^zM}{2Ki;*w^giJ?(;grWI_l3W2?=$^*jv7cMoo zWtz5mZpGnSGZ&sI#*ck>Gcujdgg&;hr0e4bqRY}EXcAfvndjq*)6+_ z`b(Aa_k5htU%mhV-*n6Nc{Fx3grh*Mm$$3-OhURF5TZ_31e9oLjEVxZMS!xXsHp%j zY#1E(XMZR)oDsh zp5Oo-jukT8G`-bj`2i(g`p|6tzWTE~u~Whx+pRo1e<|#6#72u`u~h$Dpm>LKbn)_| zbM8D)y|cA2CBOh~ErGMwv_CJH@E;r&NFgi!50OAse>LFp{G4qMa z5DYe{UskOjtWex@8J=c2v97wwB*Q{9ZoG2EjM$XN481@!sl>SJ9jmr1FI4|htj=J`MWlH$~HDz zcaJ(me^SP#AJ>VJN5F@)ft7e~7kz~j)aq?szO`ghsv1U=Fk@E+>6SG6vE*@k<{y7T zqg)_HkbA`qP3?b`jx|hN!3CJ)HmaP6JvDoD<`9zCx(83ZUP?oyPmRp1tv%@MJ}GAk zbZ@rT(L~O(81MQPzi$+G9esoOLk_0qQ52~gVOx1?r>+R!LF4ni+oK|Okft4_{Hr`$ zLdJ3}K#_yK#SWUvS)`K@0JWWr;nOQHujIO#YLQ`ed*ET8AueI2~4_gTYOh83t@tMD$Bv|o1Fo6FV`WuR(3`=S`06U>eI$r`yf?I zdm3*5U3e1%XX3V<%6}><`!)7Ti&)OgZL|J|G--I8hK0bs3eI@v-4KUl4i3g$w2s*= z0uWHoFy!caZSz1*J7fO%`T{Jrs{aNXGKo`RhHDWoC8;#=7yo$p^U69%x>uIFrt~5; z6Dk3DLq=0fwdq#@(`TZLpPC3>3o%BLj?JhI?h!6nm&xkZL;@V?&cJ|~$Zg<@RNZK+ z7I&I84uXIfLNJifb4=ewi6j}OxyJvLxy$rKxCL7cN(v~=0-{|RhF3L}oE>Kq0ks~Y zK!@m#e0x3*ibMPL6uOj;n_17`8V7|`#gLlq&(_P`SnG(NA4WfDa%PW620JZtsMynM zSoi9M%L7t+5`UN{_+*9m-Fx(C>&=AP7?<{UxElmVIly7wz+nD3Ejd6N_`EA3z)qoP z@%pPYtoW0#5}}-pXU0@J)D55mHfTzCA$j*F4a3WpYzlY9oro^klZ@F|cT)iCfKHPD zXE7A$p-S!Utz|;>ed%t9yBELx|9C@Jq1+&OBx4l zjl9S@5gvZqC6UQ!2X$fbn;9FIHH*%OxG&XI_zIb2R>XU_&^Mcj)!ZW1zB~UQ{$zp0 zNFjV-(VtXnris8Rv|BDByQ2l;!y5J}HXN4)MmrvZGjp6*W28eKZ}4^`jBaobn1m1j z%h7;)j}^*--mu8wbHbwQvVMsC=byIpBBHuf4$z)hq)k$`mYq<7Q3_UL=GAQshnp2$ z#`cqL1!(=3e|&T$<0j$ZiOhr0?j)1ZH;0rM)=vxLtGV%BUN6or=`Q>VJK9%OUBmtE zwoouUV5_;otrt}gZR$jwLygEabx@s1o-2#&VP6s&>gtG%T<0I@%@Aql_*4&aT`Am| zv{;CVkNG9lLVL3z&#(EoZj3OGvJ1e;I{VXcyu4fCYWsFt9zybX6!2Do8Zh_smFUgf zjOl$c0#F+pnG^&qc!!J@qpAGs87kJ19;Ci}HZwsqj2;w*^d=n6_Os_y$O3=nL(H1ZY|Fb$v z`bkmllo&3kv#Fp>6a~xZ)kyXy4%IFes^94l{ad)1ULV%ceLx`<1OTjTieHEBAj=qn zoypicMr!lSil)cem$x;T`g1JB;u(RcB8we_Z5B_Jx_A9Eu9ZD}#vhcsdcEy;9G04| zaA5wILV4);jm^By{-;d_D`O~w!^U1G_gVaAG4A~!BWw}i&lyXoN{Oz7 z4b_pk6|hIN%gp|D4r+=unpeI*?yQrNfiE=pV=0zBi*^h*b*RTWGcJC{b97#|_9Fme zGdRj~HX`_brHv8ToCojtUMMSII*vYlfvQPFers9$07dTtuW}zT_G0gM6hH)dL;7Yh zdpbfLVVg49D#J^RR~N^2ipj3O(8EAdR=uq znNhCG)REmsEc6!siMh6s_oOF-0S}BFir1LE?(}%m|VBXatwmTynl_A{tn{jTPF%?x`6|`h#+Qfj;zO8qovAWXP!q( z7kz$M=N|A9{QCR308V~q5rWCOA-{}6pZHK}!W;|=xH!ThhW zc52ch)Xg}gtV1OYML^>u#v<$)kkF1vrMZvUm~JZvW6_$wX?RjM=9O5CT2VB!pmDptXemnT(u0B?D~8S1V@y8Rvk6!lXzf!O{5sUy{rxqv7pB%4 zu?cgyw4Kr|!FLM*0XG@KiK7D<%>;?z87#FeLA0Gsn^$xpPp?!`=ozI5-~PtT+?<%m z0j}|lA3jp#w2+RxEKg0-0T5z5 zMMsdw;5(0{WaTJXI%exts>JhTsMrveyjl%)!Lb|Y^Gt#3EGulr+DQ}1%ah~xC+w>J zojR)#2>ah_CMlgFZ+X6Q+t60{MoF+;Xq<3)2}&suS_{!;9RS7VVcZOf=LKx($M3Y_ z=avB4sWE}&4Q)19YXHKusm5%F&;PqJG|UT#q$6g?Jvh5GoVyBxWZ`~8rjFJ_x z4WE_yq#>$)5^maMtLBk3RP#hg9sr&JpC%=(6vr1;+6!Y6x3W1<=u_OD2k`e&s5)-$ z*69$#=XoI!+9EOE;`nf`eqkK5;zKQX`t3%{jjl zx8w>=m#uvH#Qz}m>{RNT*E1&wdx7cjHakfGO068_E0uv$W7l?HlX6$uOEHTBqP{u{ z8K7%10T6&F2pjsD6g2djw!n=j4?l%#kOy2brMcny0xxuZzc$>&_1uz5*G5EO>T(iA z0_qifF;eX4Rf9H+t)TlG(i54Y=iO`j)6wp{_hk zDFGr#>F+iR`Rfm?C_O=cr2ObFL=P*J8C^UDFZp-E0*G`)aAY0xj73ee^zC)ltZ}Uo zDV#+%YFL}&hsLgoJ_|LCo-U?0;clZIQwwr^$_YUgb;)kUQ7`ZtGarp$E3E|6?pvX1itElcd@&ZnT(oOM0yjmc zNO~erlDI&jHu#4msc|2p8G@!_Fd^t+My`6%VV5XG{pPktht0IIhV-9r3jqq|H*LrU zdS50ese2eL=qegDV_Io5t)@P0@@*QzbDuM)PEitOI6J35lV@SLo#}3c$bYd6V$IAK z?rRSo{^pu^RzwI6hhHcC!f7`ZM_hE}$StQ#vF0VlZI2QM8x=xFFD1|^l|gUEY4V(a zT%scI;0Xq3f|1Vic>}c@YbZNu4`omsc@ZHSR?TWIu}sP;1uBBnNopxy++d<}6Q!9f zxZ0{{xBvhU96_3*M}Y(X|NqI9zyJUP0H6Q1pxgF~U^t%&fYR;P_R8QEx7yuoSG-wy zuW}wosJsFr1>OBp>E2|zJw43%=$`}RscO9QrxfC*vvMjk?ART-#Tn;oOeI(h8}+W} zDpbluC36=GSe%6Gx)$c@lD1}<1VgO9Pfk8Q+*2*5I7;w{5fQvh znkN}a-k2273Wh(ln-#Pm;JG$i@} zQPlSmGRJ97X$c{XCYYoP*dFsn}q=g`Ass53Ur|wF}vgr^7+9qO*(p$m*Ps zQ+e*d(F+=7+;HQ0@`G(ljBziEDXF2sBzd*1`r z5PT7K@n<1+CxT1H=uzd&57K5h&~GK%-f=OkXK9DsWsJx#pbieP6qLOm|=EnLoIri`g#mVhOV@EqgW@|ZX^ z=8bp~L`*$1c~83nV9o^{B819)`^G@06MAu+rqV|M%x|-KN7PVpHBIc918A+)T?C?R-Kfu>B6ZjtOJX|h8>L>@+L+)&)e-SYZxKP`GQ2_NM z9X4}1I@9Fpk(r9!>RD@tU}EX7yN+QS%sy>}B{MTzWaFrsgnyehXUNwmqk>^El|rX8 zxMBV*` z;VJN5=5Q{DWTe7@Is3%e55o{XRkz61012kvQ>@%%`7WPnQmAqCoK(%$ul4AZ#0ZBj ztI-C$iI+0|geg!+(>59*QsveOH6{Xo$s{kucU)uwRpHunC;SRT8f5a`C*N?fEl+ky z-;T8|oQoxsTi(mJ(y+<~fjCbN$*Hd|-K$-mY&SOB5!W{5eb@yzgTjXV!9UM_SWnIM%@iArlOna_Yj zRPAR&HG|o`Y83YQ`@{RNi~{l1TSDT@YB__2`k$jt2;;;dMN^iiJx8GYrDTi;A<3H~ zuEsebs(J~+M7+@C!F@24M@w$VkpCi#ei={CruDn%n^)4GriKNSm^P2v4zD|6Wu9YP zmN;DV3TT175k#%MhrCtiZUA1$+L3K5|0CYND4GT}o^i8i_p8hUumQRnW!U$=s$%fa zmjO>7Y(B(8+&&=_xLJHXBlzq^2!(}ZV~>dK+aZ*dB?pd5@X{sGHX=eiKZC3XSFQ+B z1)*S%%8(32hmr7N3dF~@?NuEDxWZwub`fcOy$ZNNpC(=^28#B9({v2)j_-)#OQz_2 z7W2;)mCs38a)1+@*FH+f#&aInp2Vn_4PdoC-XtTlan}Jy<5U7By)&lTXnXGY#v=_` zEk;{YjCx_i>^!q$aP=u6*wuED6tiGpwv0MMGGa) z+u6nV(#Z+?kgtww>5m+qWIpMu5gn>P21ZX8OpAqjoHbD3`$i1MFcZA?wkj$&29?l+AaQlTz=Z zpjQUa^zqw}@--`}qmuu{eJ{LJb{GI6JnTAk=zbnrYKc#eF%rTI*ow13$!bW>fN+}+ zRIwF=BI1>mhupL88XcbPY90U1vgE&fp{PI8<47U zKBUNV$JdS{M6JEQU)%4mSq@JgBH}P-d)Pk|3Wm|@+EIr|!%apZ;l>zh+@S#FY@Kxt zb=xd+gw^rr;d3~gDSQ-~8Yq&VS*OJh8&jhA%fZkmXEtA`;uH30lkk08UK|5HC5tmb z-wSoN{lD=8@Y})+5PsQkLSr!y)yAXoZr)a}Rq*FrHXDGuSM{v!r@0Z9L#JQ8WAM1Q zp4Y|aD?Myg0YsZBof#?Bi@brG$~h7LH(81+3~cq1GijHj%9nu2TH#H;;CQGE3~8YVl4G261q zXn>Kz9UAg4tJRcbmg;G)jQk6_&!CHJ#=Q0q2Ip51lf#CUGXXe$yJpCpC~S*h-bxZ! zL3?e>S~lDdL@{2c*8%MLYxCY3qn}l9L8n2St^|+aXnSefClxITfJlTXhUCZee4eMX zs6{}2{KQEbg_V6G&@N%kznreZj8e50a%N=PUF?vMElAu8oobR<-(vdlZLv9LfIk9- zi*Cd4`T;}GjJ~|(w+<$QE~OYS_Ie?vfSmOB??8AQ{Le5rGzFu7?R}Vyxp!{alir4o zHkqfGupUI6$}Wb*>|$J_LG62UJki>cHS|l ztCM0W+&AB$!2AOz->|1f_ImnRcI{!Vjt6(}{0~xy+Yifl8{qQ8SWVb|RyO8)>wF*e z^nBWuUitxkRls2cD5QSa99!_c3Fd!jzL2YcO0P*R6;RA%qCO*7l!z{Tm1x2gWKc)~ zTZ?ag465uxJ17(;B2jXffuZ2cN>`-Ef=kF6lp~j@4DMM+JXVsb2fgEBE8>^+)23$>lPp zhc_t12F~5HS%QYE7T^iHrr6K1Qly+FW!=CMn3`|58(WUVda7OF5BI2{Y&nbi=4$5f zaEn?s4S!qW*ajD&YOE35p00Sz}`nQy2&c+38Fo{O19Lm~uFUp!N0b|+i3$!}w z{KAyWh6NaqI6)~E+s{sYq3|dI1C3V%uN8>Ew?X5?LC{YT?Kj@%#*2T5ua>+6pp?(| z-yy<{c;jBuFc<-9CW?fv115bU^wqbl{KWO0b$thW+XIybk$noRIZ6ygYZ52c!b!+$ zSlaG(mSn>R%bv9Z8^}spklq<5omM(-7ZjC6QxMqWRxh4qD*FLRh%XQZ=MyCpBeNKo z&h)na^~c0Ym|E_@FqrlmC3x9_174qSTHC=+tZQ3*yKDXuq@UE0ICkBVh$oizH{Eb; z9+j+Qf(nLMDV%=7(0CdNrSguciGa?0VZ`RSs@PkeoLuBw--6A zBqmpewu$n*@?1L?*hGIzv@a{fRU?9}u#5*n)r%+P0v}3vPL;2El^~hNE@^w-Ot4e4 z+y-L;G-;%bPEC8$7-ba&Q4Ou?$rLu%6&`A6?dxZYS0EM@V+WB_RP5vx-$tWw>C7g; z4>x*~49@>f(5d1dv@?c`4CT3ZBLbTXrYZaPs{+*-_$O6JPkOf2{gQq3+AFzwf%ACJA*#N>zih>Nf(^ z%oeRmIMr+m?sx>O{_aJ!r(@06Pe2M9dPyI$u4rIqz*@TJ9#-1Yf?6~|e-%}B5`aGt z!$SYM99h6wX8sGgSXgGeRSNihsBjBw!pnI;51yN&WMNbi=|7XQAJk*y2F&99Z^|YD z^>O>+#O!kpu1z`hW5UGi60-!8gr2I^eUXFJs760VZ9)W-{&_UAiU8g$l9pkiiYsQJ zO=!7(nc^O&%JzZwRf*l=+!GygnWwal`eWNV^%Fy~v{i7D{1T1?`byQ+SDSK>YmVkH zl=gvNux7+){-2}G=A75FM$_LE`cV~mjkXd`HZ3Mt4QOa;NZ`~uCtZBtWVu@;rMO}C zw}lA}Qr7bO_scWtDih+p#G|_2D|5q)7RO$yVU)@0d^O-H1Y}>{xU5Iw+)u2s)Ck-S zdZ;kVq8?51HP%*j499ANrG9)!yOx8Jfq|sN!f&C9Waq73nAwIXn?zpd=o2UwOb|9&e3yjcO z#?>CV2KzjA6FIgo^0Ex-M>|p+1r)gawsuthX2}N| zqf}kVA_**)Y~SkE?j>}uSs65@3^mKoPZ z$o2nuqDr37h3~ahl`Be2839Dz7>*q?OOclPtkK7nYP13)3Rg-oAJ|G32CEj2tp|!m zv}=;@jyGIy;eP)$n!hVu=Hv1PKI=%7_K5;NDckislE#GNT0_0Z+vkEk%= zz;uSqb*)n>_G@zVSBnSr``*v@H@8nV4FCWTpFx_cXMqF%|NqI9zyJUP0RMupyzj$? z86$DpY0fD24Hoo3A54y*aA@Nwp3Pka9+=mFEIySdrO|t9>)ozdrmlMACCv*(cJsFs z1&;X*&LbumNcf(HVN@%gn80};?}cs@^KOsTwy!8{JR<+W3bbcm2BPLtl!0ay=FDJh z0?c3MDxN9Y@;}xnlF$s#@;0XM5J{ccB@MVQ3JZjDWQuIbGi=Au$$F8+m3yZ{ms+M7 zAopN`Lj^K95}Xq0(!Nt;8)-u$GtzKZ6D`D}oFZ8CfSL(V)Ps&6C0m8&rCKV*!w{$D zYg&q)_7Kb;hR*?(f2CRI$mOm>mZ#f)Y0)ath&mKUzx)S)XYJ@_n$XAqeV_2n_NfU> zBf{D4yZsyV;qliwb0Xfwsd?s6wrbJ&<9B<*q-?YGaod6|oh4$s= z!3JmOBkqxB{^qO_h_ARr%BvY)pu?v0H$b(eltm0&{agNmxTzZmK+Ik z=t1p%$da(TOJWJMY6OIIeeze~RU9ESOrLWIcZiS%4w|6mc?2~X+rr2i0F#hxC1l3X zRrc1MsLfYby*#Synw-xO5Q#+xQlXOHIMRxqib{l@*k_7_BYrdGcsO7*%y%5UDVYHS z?|nG}jYVe;k#))6MamwmD4xbNPppQ~6@5pN^6|g_H*${)o_tFMA_|+G2qgnG12H^qoVk<*Zh#w);J3SOI;+pgFbdX*R7;F5(m4yv!3K zi_&3HW7z7Qg?kEfVIV^pO`c6QjCT@^#%7ju-!%n1>gzQ)qYA>KtXC6~FJjJu<;?5E zN3A^z;X&avrMcqCATESl?!39F^boXe`12q&Y2bNaT-?>t1TcXs-h z7^U^VRl6)Tg}y+ZBKR^|M4N4u@RH(g=Bj%@agH`JB*#hHkq{wEUingE<&)6#mduHu zs*uf!OyjFQR5y8(k)qs~%x{Yw75dBd`#po#Qg>fn0zfB{RcYP7AkY!0&1TLPzk7W+ zPETF7itStmkun&5?l=3Vd{-~<%VLi1NhOLd7Dg#F$p9K2e}-yxJ#_L9PD)0sNne3= z1JX_G28e)De$Oz8YzNXaf5Q7V@5e8!n;0zaYcCr^eYu%JchKkv&7~Wd7|=VQE;s;C z4p@$C9`4>^8gbXW5ijynK>3T9N!d$7@Tr>MDF^V=f0FfuyQL0h0>(ShC74Yp%NWb* z1AR2f*p?Pe^snIDKBKt~?X4UQxOi(X`iQm%R&v;d$sgu*2p?df>s=)Xu1kfP5jQF? zn4GSm`m|mUtE&;nU}O z>^DRI2^nt)E~M8+xqA2XAzj?27fiVoi+zpUjUMLIHS|dwg0us%3MhM3AVY}yNc5sT zjsOe)`e&V~-8m{eI}GYh#!m&Q7^;2dc$j1$2{ytfUes#+c0;TK%6V%`nL6^ES^WnM zUJ0{iQ|~~lJ$*II72z1*=AhQC!`Qtc#-v!^Pj^FlZc{$HY5=35sN^{=x2>xHGVUR= zlqu^t94gnmO!~_&Y?NF5d0KeO%1g$Gmnb&}pzr9!eS~{ZL>z1|p&w2GD**gkv3F_Q z2`PgZoNt726_FPcC?s14do{GxD@GWbj^N!NRBaw_AAF7-Jp%R5ARl-b9o1cZ%^KQG zts(|tAn)`#Cw#z)#uvK;Tda|&0hYt_KuXtQ4xh6Jc&pQq>Y^uJ%v*rNJy$}c%xzr`+j^94H9g9vPO$5t90b%J06R^?+o-HR)cp32(U zG1}%MPmmqwQio=R-aqmAzbf6tlLr&O)uyjHmYySQlQY*{I3^oWWi<8dva04awqjNs zR6ZP*#ptCb^preA+^aa=hzFz8mR*K*B@J%3APtIqcon;n@=^1F`I6Ag{3<+4 zp@mKzn()4sCaE5fvdPXTX`g^?sKYz5Q6k&|UV(5vf>xh341vswJjl9R&o7~MmU^(? zM?=OBs&Y$Zqi}lfZ4bwB0`aWeNYMeHkmpQ6eBeG-vrNv#ojaFKd`-lvTx#Aw8%)Xp zN&xhCevm(t^S&F5%5g96<*tp>6o=+IfhBV9{Y^qwtVhk-vjqoB(uMx92fLv8!r-JF+*e?ohvn+byTC!@8lJv#xjCW6IH38 zyv$u5vH~l4S~FtTlq2r;gzr-6oYk-fMWaBGofOZ8)w}j1I~Q{CjCiK?Z_HX}%|_9R zQy(RGCZChV#a8!I2wh;1-Hp%Dc{R71^i%ig=qMYi-qlqjkpNMj5UBvAg*Y9yE0Fa! zLU-)#UyzH74_POYrlLuk%=jCLHCOcztV@9#5dUuMrZUQFIRRE>*6SWYvawe^)|J$4 zDE;X#cAdgkBBpGW=!5njOszZ$PN6sC-l*@EKLdZgh_6aDdzd1x^EBZMTaIX(YwhQ! zlRmM!mW@R|Ytco}vFg^ZwMy8VQ*DtnQKu;dHbgj#d`>o?VTP& ze3uV2<5y`D8s=B*V1kJ=l+2##qx*w9&T)Ml>=aCOPc5?35(%iel-W4Kb(j%Ql`(P4 zav%o**lFHsi%cKhA#iJ=qu>&!Fhy+E0@R@9os9B#MVkN%O0P z&KCBP_injz;`(i#VOmzAF8T{fY$O`tc#xWjF`gh5Faa|;8?n#UT;L-mp2|*st~Y!Gtb`*Jo0^NqBQo^Ne`ia8RQRl# z;AHG#E6!l=p`ZsN>8>|RL50A)4?dgu7B`W$%LN&fvBy)EvN%7GX~;;JXXkqzF$-)b zcGVzQYB(_Qa{TQ5ZV#(`HlM%v$$*vtH4pK2oq)ixQIHXxny>$FETH)kWga6mm9Y^O zVBb=tHW)P5dMjv^f8){KGhD$Hs1%#^Gun^Z6byuSrlwYod9UksiXBmV& zE)XA|`5EKT?XEECXi{C93P%-q3Arb5c^NRw*sM@ho|MC z_dEuIK;jassZHrQ?Bt!{a~>03fw}e@jta`$xrb6=6IApf2Pq}mELv+1jke7?(MLd6 zlcX44RDyUP`!vG7X2oe7@Dv-Xre_g}E!OLl$FQNN?WL{#_@Q1IUlI~Y{UkR|$Ad*h zVC(V}JKzSUXbE;FRsqlRmD@+#vM3|i_2Rqa9d0&=Wl8>%{JNr_9}91dIF%)U5zPp)D5(Scs!7uX5gv;0#c0bW`9!DW2A=^tkgjQRzA>rVMw6~LY!P4=VpUyL z&$}-)`O2Ig8+qYH?4J*r47?!0Z59w2rSjZ&bVA^tTQ)TCON0`6>1`&o<0k3^1Hzhs zOAF@7@u~TvH!6En#O4m2%7L>w{<(f7FvKscDfWepNIQGnLOs^0{#9kO$**Lc(~c;L zwnW?ZYTLGL+qP}nwr$(CZQHipcPIDp{KQNuHERs1Y>PTTP&*10c6USS4KDY!hO#;NPi60I<8r^LQX$>9S z-mwW+(GY&#R&-!w1S>b=$*F(D@}7!u@)GIlLJGmDv5f%jc88N0@e{+?3+ztFHMvVC zbT3w_5PjAh8{`6OyNHp z*BZ+iL6JMeaZk;ZbSv-K=2n~`pUvI$?2)ARuuT|CWwb&%Hi7XH2FM~C`zTcyzn-q8(4Q59Qh8rY#AXB#W+?*o4A2xU@P(h6;hJchS#bB ztxwh?x3&LhgdAY_-8y4~&==Nx9g*KB%ouZ#T@~5-AQPAvXHAN`u9xTx!hYlp&vYSv z@Qsd4@oBr<;p*J?u^kt!tY?zP#wu_s0Q6ZF#TeMLp=`kF#~fK^=eBB%n>3HwU!0)) zK8Ex;vpa%XxC3>jTRg?Oi+;KH8fN}H9W;J_e0W*?e18#NK5js0g}Fp5)4k8zLxNiW zOb|wZs@z?H^!2h~jwfljY%Pwoc#2bMx06@=1p~(~zNdcGok-jR;;S6(+Pu`#wH?!q zZE^K+rWOCq(rFKisZspGxwRJQ(k2LuC|%eHtZP2>-z`HIB^;~81Gx^ys+$!vM8eSA zN(-l>{|qa(kEp^$J;I9dNzKnShm5tG3)DV8V~ebZK?S%+_$-FB`Qn`=Gkz?ba6;sk zKS$1S{-?NtV-m=03=04Pf&csa4($)-0YVV|f75cFJQe41BTRn6f)!TMtais*6^$sR zh(;hQSfYU?^^FDv;|F0i`Vp|+;TNn7u6fWA`4PSUBrqtnGHH;ZHC*`WLjEO{lmpHS_U2E)=vkri9`V>iW{#)Rc3IuoXdW*17U)R~-xIpcx~y zLHzb{5ET?!N2PZ=C5KlGubYR$$XyG(G8OB>siu_3X7A#tDyi7gYO!`tx@yl$w(ShJ zpp_L|ARPzDBBWVD}Z`pkJ!2REyBGeX0(l&ijOOY_x9+f&PQHf;ueA=S-XUcXGK3UM~PvZvHgRD z35k&l$~tW!^`fNj5LD~H8DWob;n(Z zIkf-=E)>7)pe2O3AFTcy>MCc5wpEhU0CL7D%M5n5Gw`sXhvEiO( zdT^*?q&v?^tlkH3DD3Rxy_@_|c66)xyF298~d5UNN($Je)Rc>UDSO1U$ja5b+)3^{Xt zzF+F2+||4#^*Eg=(Cdq>Pu;!r)qD)a#c}5ww?<#Q?(wZsnb7<#f~UP?!{ zbMsn}QXGwQtgQBVKFO*^%kCac#4}yo;IW*ex4G4SvY`}}xz+#Hr~wI!*{)a<)U7T+ zLfbGpzJ;ZDh{*xH&*P>}zM77to}^0D4d#g!CzTYZ5+VutfFe45EZ&#bW_;9tO! zimwwVsG?&wFDUQv-mW?TSjPV&^6D61@<_lB6c>{_X9A{atzl0kU9+5jN3_Hn@h-Y= z>hRx}W?kU~@qoA{Vv*cC@~V@wXgC6Gr!zR!Lw{24BNhI%y;hwrPb$lJ_7~6$hyteK zEP_cpNe)CIm8R2QPXWwb`6_m1%#p__*-*&D`Fn2dnU=q(y=cO~wYWVyo8vXzmSwP6 z9`UCnsRu1Ev|L0a7re$EZ77v5rGBOz({dt-PuqnD-aN5uRsY5S-Q0y805D#P5_qqB zzJ^8~7(ikrSl=DovyVucs26e#l!rp_ZL^2d8yUfj5ySN=GNqF5r zi)(-b7T;s^Y8Km#8P6)Adb8(`m(GM0B~5%{$qI-?POW0sY|bjJx<%CDmMz%K1rHJ< zC+4={?Ej>-FGg2Tx!JEeVAX?JAnxJ#7dzoEt5y`UGyf+d|K|ZzmA-!WD}VVwM7J9| z9t!Z;s;q8YV<5-D-#Tshg~N z_XVF#$P{@*n5AMPmxXnXj2%AB&YMgto9e>00=x94Z zrPZDQOLT{ila0<}E|z+d(p1MI&}ZE^NDAsakeo_FdZ0jylg^eNw{2QGxu}UCuQOL7;n?YZ?U!0`kOh?BVx0bhs5J0$J7B%in zHW4&Qqpc`crbx3va-gr;P8#9`pO-&N=>DWDJtMjj)?MnaPEn_q*m?Z&G|!~51#bf+ zFCRe@>iB;vi*WrE%>3!bcA$vW_ys|}%GS2S z-M$bDxSITy@IXfv;108XRMV;`?S8xPW(40;gn+lYu11f_W*PZoz7p#g{$QP|n^4kDaa%oDe)pEOUby*vkpEGKr z<^A(!+60{?g%g6BYgUN@JoUFqaRS1U1t}3$AC6A2sTY##LVix7)28=GaQ`$eSxr3P z*#qgxytkdcDa=ZtT8ynk#wXqsmSAiO^wa((rNeS0w{xK=o1CE%$px~Ch1{=~1Yv~h zzLeAv)SRP#{>VqL6{{^iJqra<)vIXetZKD+!!%~f=l$xC#jlf1oTn~iVvwakSVqul%jFT3SF|r+Or3F!I&fxE<(GK98?+N4Ae#UJLK(sd z8zSs)5fQr5d&@IkAsS)lQnW}ct_!fvyxg9v$(Q5&P`4${uJWFtxrWgm>5wq86R-7P zt&p+o-`@DS?-AQ03em${Kj_QKc()WzQ{a_fVX=9^*}tLR$(EyL+pUjVMuKo%!IOKM{xioMkjSIa8A#MN$BEEU5x3 zRt)4$J}40=CVDxFtUO?}#N))L7XH%Sg9Lch=TX4{=}kb$8}Tk*PrS75C_i1yvZEN_ z+kO8B`ciGG|NUWB=ul|K@g1&!Yl&01eZu4<$ij5%s_W?IgT zKhm)j@7qt!Y(|o76AG7$;zW0i(e8KrNw6W7{#F1Ogo%1!Ri+xNm3EKRg*

9TsD&)=hLd)|pIceVOrn0?vCQDBA0;h!GRE#2g* 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%0DOx4%bLAK`7~Q1(iKz(2 z0t1Q5noqH0a#5ajbb6uDJO0G;`M6=A!W6hQNyFaiXK~J0PThtqSrDd| zjI{q&H8BRDLB*p#=Duvb1DCBqv!z?sF59+k+qP}nwr$(4UAA}Gwr%Uy*SGIEXWZ^T zurkJ2PiD?Haz+H{wN0{h~ zZ=dTp$mxzl#&hqspMBI4)>$x<{+;R{(MYyOgLalSe6BLFKZhli3IM?BGU@d1)Sb&L zvl~R@AzcNsbcHp1O<@Qs*J3Z!lza)Wt(@s=pqI!n@x#?YmBOz8nC(A4zBm+kNsNTG z$f!YpeopVw!AgOqTUU}j*z-)_r0(rcXG98c7L3FUb94E8hD<8`CMi?gH&$~bDx8a6 ziE1r1c)J-?6EjWr6t8GS>d+0;K5q?3j3=htYa18}!9j_jZxJt|8Z?Xg{vlBmQe!BdlE>jrxgqjjcD>ehD`vH zs}F;u%&p!Z{(aSc0Lt-KnDsSg=%g=EX(f?$RB@f~p=syAXl`%>$&r*cr*nK@fTLd- zzh4+k6J2bbU;b9rZ2UEN$E9DELS<51p|d6if|nv7=ms6ry)Rlt>+dv7T(eRHTPZ4& zqgTd*?xs~J$M%K4`Y+0S>dCJ%SkU#>%Na{U!V+2MtRS$OTP?i)(Zc^)mbsVa3vAB! zw8cb5-jzzLCv2eFj~D=?*N;{uN#;3nfMG&&uTq8*)Nj%t;e z5*lIZ$B9n?KWd}^Y(Q3R<>L{%@w;g-Fb^q-)Sz#>Qq{Z+=&Pm2q!-AfJLZZQ%%mq> z-fxhFqM$kEI9WVCb7TE9Ic8&+nbJ~F&j;!5C5dYzI;GOs`7jsBs;W$bq|N<7*AiLn zu?M6HgBptUhxp1!cMtKO6Zgn_opg&!W?-y447s$7@x`FxGP24Mv!;f-D1Fh$QH2olsYDuTh0JGr&Y+iaSXXcO`rYX-$-7_8xmgIk0kk>Id{Q; zo7CuCd$0cnrlp_=GQsnCl2B~|e5N5HnbhQhMx?*|W^xj!)_38sOgF|U^7^sqCto|I z!fVSL2E)Ihv{Q>H^rXqBUg zAHV%cgKaddJtb_RxPYLRL+_)9QM^BhBIdaK-Xhpx&j_`%DnIfadD|@VC-8qK#{dlF`cb!!R1_m?FUPeEJ3R#33&YHoCQQU3rh76gKP0gQmDa{vlL-OnR^RjP z>aGtu$jfK(Sl7udVSb-mS}iQj9KTr5!LL{)K6#ji4MlvNa_4HNDl#dTFS&w7}t za!T3^#6b4P%$OLMy-q1~Q1l=c{+KJ!P0EFV8^(sur!XXwd66H$pwPPOl=dXp(XB_9 zGUO(i3}h>PE3Zg!Uf!$;7`t_@6shCR8`=h~oUMi~MYA0Y(tc$py7%NCbom{yUr4|) z&%C*;%-@qFe-kQIsRIF^>>z;+xbRe(z%^8blbLB^GPssiL12fUN%*id!UaD^6Y*G9fJNw$i~pw4YtxQxd+mB#)N9;_L7 zDA2l@hsndGff8_Bu^k6rd=36*S4Js2Zo(vC^R=8*vk`AvqmN;(U|_&M$(97o`h=S^ z;WI?nzcb|Y!*P#;QM}Zri%?>B2}+Oiak5e`G8=7D(oD2pHEL{?a(LsrdL>2Oc*}!1 zlj<^5M3;Jc;&l-=|Gs$=Aio*uJ7^$yx*u5eUQW*!laQ>DvUmcJFdvS!cT=kbJ`!|7 zlutlp7b$PMx@{C0EdC7|To9aQFmVwYV#wIbZ&r?h-l5c62<#9SOKKaus5)IdTd7$? zp>b(BnyTwE;H>{=0FW6O^^a=Axyh59e@UD>B*Z2oJvz!F{3zUR97olF4pZug{%g$i zX=vv0yTsCHBI9=w%d^l}O)umq4qHs@KMS9~^$L`Yse=QFEd&i>aga$NfRoenIT$zf z>KRO~YCgTEex>hp3n8v_B8^>tNKLpcMxX9D3R7K7V=oZuyeBP(%2IyiX4qR!6z}&DF_P&*^iEM{#@UN&i)r8RKJG(h8y+3n!q~LT zV{k^WThXhInT{7!+zL@WrhsuKIeK@UX+l$rzOesHcg4XOa6JbQgr9{oyU! z8ua3e=VYf~@r(quu%*_x)(5_cwzL#&-(6%s9~d5>Ydxd}(I3}|G)?>?9+v4#^X)^c zivVW60nc5b2iCweRY0Pb;$ot)36LN)kNMuLm&wQr_MuAkw=|!SPMW&%@nN$u;={#u4FJUmTOEOQZrVZCl z!U#lh57Zdz0Tj#52PdCaWVSa7z2E*FWj%Hal9J?k)m&S|NTeX;vdEelUvK&jxKhLJwHUt%$ZO--MP42|X~ zetvXUjU8MMt53=ix7|QRLDSBWEtrGwV~<|@xZ`vnT-_elW>^t z#MR{@D2W-4fD6xf1UFmJYD4VfT&I+H-|vueTmk3^COQwC7O+54-dEtM9mQ=QTg5!D zR2u-7_l^kCDoA_5B4?TPA0N5i(K_O)>041)aw5@}xUOqv$%^Xq0JFw@fPkAJ>6`-}Fu0FsvJW7bEaAyRiYTfs%5z zRARL&K#>6@flgYb;(T@bjmbv`9vi7x5~Fv7k1ot)L_t}9aX4x+H@px^1Lp#$6_$Kk94B-{YlrFg)GUO1)ZS#2@za$%|aFBW9CI^;*O-mF>HOo+5fpn zY*Q)Pb$@+P#(SR2sJmtDbAxRTEx8D!+pN!~73p7EP=90*%66zFd21jMWO3!;jIPVU ziaWNpt6#)>AzaD0oZei$gN!FaxwUfZUCdgYki(~nP~2CU^ZncRLs|;LO}08*Z9^W| z?COhj2PbDq!NY=tTs*a9Y3?@t(oY@Sm2n7~)o5M_&IX}^IOGqY>Y_ysvfZJJ9Ikv3 z%A1PNtPZ9|MZ2ZH=80#3deJLC(M9yd+bgsi9?fuFa_*KBMuy_-Nv(j2PgZ2*Uty&W zXi`=dqqs_9gFr#wFixIaY(yR0Ft6K6^V$amkk4Utc}=D5;BX1Jl9DZEswcz(aEYAo z(D?yuCfwD`$_$6wAMdJX7oYYulfMFK@ZCaf?oB)O)5Rxg;Pfr5Fd_q4N1tJ)UY(Qas~26+2o3@ z`w4dBQ|@e=C*JtU*&+SPYFuU7mD~Zpmzm>;>#g`w(7<`bby-NIwL9cIxNgESPh;sL zJ#u{NB;6?XSB)L7)<#<^)g7OZpKFLqsgE&Vi0UXU3WiNJ?wN3tzm2%;@@#1ycBOva zFLM%5*4l*PLFv{tRiEDn{<8J9-@J1{w;{V8VO$@!{dUO&DE*B)`Zw-Vp*QaA{s_2r zB-9;hP**NkichYi0uX78ls+4FB^Ecw6!FckEkfglV%)h;PZ_Q(XOBslDd{eBDmF0R zleWj`l>p6ullz1eHF6G0jU=~6nN2?)3)_k2**tm04o(r%7vXV1!1-o>3ujvcm4p^xserVa=jmUx{{%7|zPyc=!DFW>53hEy?zJ;np`(5y_5F=> z^4HF*GkZ5Yp>k$4=t}J7#XK4o7f|5oHj9cKrmf^i9$H{H;0|j)V+LGq?%VQ*oq3T5 ziyDU;M+SVt^{F2!?ZmzmlyaLaV?xC{21fm{-czg zgfHR;7I{6u^EcO2QE>H%%9Q_W!5tOId<4tq4*<0K`MF20Cx8otAcW`(M);3A7f26Z zGC>1E0ni|Yc_9c#TH)xZ<<9kKyxgYBiW^L;HurWix}IUeY#|wSSI|f-ea$9EI-*w3 zRxX-783K(U(4oYFbDatj)4%AwXIe9+qpAVg2Vw#LOYg*vH)(kd+lx^gEsY}Adt}Zh zX2c_~JHi_{Q~CH2=Y#!b8Eg71n74 zS5e6fjr5E{gDgNI@%ZJm7FEWKoAu%#a&PEr zj5@gQHkGhuVc9WnvkR>SNe+#ks^IQ+(Wa$F4kD*$LIz%yL>Em?BhEeCWS#j!4HOh? z0&{1r6cJNEDK$2S2txNlq%yU!&N!ri0g4p#&9En`6rvF7Ss*$?j7m6|{YS<@Vz)qT z2J^`ND@IGAaS%Qwg~6$5g`%2CAdMANFOuZ%q4uNv!L`d7;d(h6T1byjJsy$rnt6e6 z$;gQT`dq|RZR@3l911fQ_&P;|en$Q}LwTaM zTlHdJh&umUA|vm(-P)cds*oOjl>%O39$Q>N+1bm@Crp*W zMLJxLu6SGNo|STr-yfBQ&qm#6f>+qRL>p%q@p2V0fYs>yvS$a;PMTO^AY+8ZH1c@9 z1rB4pbACzfz}tGF{?!BG&Z_my18}BKZzqygFW%8V2$4CVqhKv3Q364lf2WGH$kRH+ z%?$2aTESBwJX2a1KEfU3^P6WE>{RYyfT=PEgboPwBC)sUQBvm28%1}5py;cT7ixMi`7BD;sjtT=`o+MNXA?xHKr-vQ_` z&N+ik__Y|P%mB?+QDr}1q+UMOHGpb>BlyN`A=9WVp41XOEISZ2!hPj6ajWF#1;<^ezN z3H*rT?{m>3)DdsUV6cMxL%CVnst`2>M%g= zWn)ZrOXP)IF9(oeF1H{OVMtMAM7cCeZtEO^E%4tFj?>*cE>6vDUhOK||DxZ!PlCLC zeYDdq1?qDP^n)y#OYXyDWTr7E56EhOk?PgJnsx2)!?k{oehqIXiiMUgo>bQf+fnzjI!XXLXUc_6QHBWf$FhxF!b5C>jFDDG!0>r!>L zkx#i%?(}=;1oT`tb4~|;JRP@A|BS4u-~5$i(D+6t(V@*PB3DG4I{_TFo`{g=Nf&?4 z_}O1W>7D6Wm?S;hr+b&hE$)f#eX3!nE91&8X_>tWy^cw)0bbq7&+k+03COCAIpV>&We})Z**mDX}|@%WU^o# z%$4VR53)w&Uww6*Dy{fqtg3Y&nBr41f>S5Z`t@wkbO@GtQU~W|<|Fh_SG0{+9e_mZ zfl@jh15GB&_bf#kZabZ}!o80buM_#6KB+oD9J4H$ysX}$BSwL&qh61~;T%MJaD%$y z35M1E?Vg%rD}jJmt_cpU&nTvI{g*Knt57NY>zj$FdA`WZzY+YkdT9>fkbzklOX(lG zlEl0h*^=y60&o*}V1xMRBnmRmJjL{9I!_%u6^Upr7F^Tq0=Ae0G1bicMqF9BxJRQJlJP zJH*Y34Qy9Wd4UxVj7i%K?&-QtJ5`vrBsSwiG-k3PH@%3VRmrH5BU)GUnwuGhUVN06 z;PqZtt_bbM_`JUFTlT4T4RZ)}iaS}*WW|{^hEqhqY7a+WnPIph2@IkX`lo+{PvmPK zLbzjE98HEWhNr9Kape*w35zD0^73I-a2u1Y9ph2GY1$*47D`6BtlBcEo5e zfi;m!!x#uTz6PziFk4TiOIbu;yf;DVdS0AXyy4#E6sI#h(-?%dhJ51y{eziv#eA`R zYmh)%PuTFqQ7K_mlT~A1c}4RSzfs!)=0Q{c>M8A1_&O?l7w89#+_gZhNLYCVV8c7k zN?IPEbQ@&mgbimS^HhNAG^{jeQqP;E*F zv-Fc`8u7DXyra_{!Q?>x8a89{^AZ`R>GPxz`oAlx{;nwf|E-7@U_8eck$`#~;8IRE z)kJ*OXppU-Pjmw;Ws;*MjFU>inf(B~q!j3PC zE_cKQB&X>7Kup~up|)>E&%gOcwzqTlD=-0n1hSw<^7%DO>V7^mr2li&Li7S4liGM0 zYJY(vBqjK(Y~^|GrC&DLBFbjQv_CV{jaH)@5q$!{&boanV%kuH1o7#xj4-A@?emfW zd07F%)Avf)(<);grx4L{=-^%O+rXu{?bzpFs<}LesEWv>*29C2qDCWIcrndmvW4ot zzVD3AHr04ub#y*D(J9l(9u)L#6}iG6-@uhTk31DYg9NdxPvle$1HWc88EskElmHhP zx}C-RI1|`I#q-)T!gfRQ3AoGy?xNKY&a1>mk8%&zkh*GMx#5z_6 zB1QmSiPn6Dr8uq|{9$-(nHbT=R=!mpXUtEbM{l!t5yw)KN|69#%=$Ev(`cCv3@oTPFpD;b&T^MdHQ@r zb^*bL^zG9&D+f<@#124rm!hp^A9&BTalkZo_P|FHo@MuWF%9oL$SeIjPDG=tkIzC~ zuVW)94cOzE$ex$!J=th3&f4D+C)bzKj+rbBxTxZR8_g;Q5)1ja4A+6Xrm@*c+209- z&0eB7h<`@P{e8%ILREv249DRYfn9+tP2>jLUP96_Mn!)m8KI zXD0B#xB1#sFZQ7AeGD1eN#Cs_Q zZZA*kPvwjsB5;p&+dk+|V!c0)xo(bq%+N_~X#>!*; zr}H9G#+n{0u)(T3mTA)$c};RxpfX^5cg9ZfAtWg>Fil{DPN!tMmH@0xu806bR*aRr z9-Nq?#dzl}#qYkAJu-*10XM)y(~>ZDyrI5Kmykzm^Lgf{TG_)l`1GWr;`O>*E5$L@ zc>f+){cAIk%qbvkw`T~J8A-4{z9h2&Tzt+CtF{^9Ee#v}jEX{%ifEFw=J4oE*8eI* zMQt{X+qm3o$XNItJjjN8Gg~y^r>c+~d4in4Koc3ikL^Us&tzi)DPEcKGrOMt1?_Hu z&v8GDTQ-;1PF9zFx?7sg0{hH<0b>2*I%5C;0AwnVg##V{TvDm|KmKF5i1mB&5VDe( zCQ`Hflz>NH*r|MGT2KH>QnD7`ozOn0(sLlde6sND!%MN2kZgHtrcc)9-)y||>nTr` zawNu{b4F`Yq5#xii09lVcBO)Wf-q>)(1L`<1O6H-GX{b$ z^;@)~r@MGR*pm4}exoZ-mnxDuO7geKS*P7Gb@9yB6#_LWIGQaaimF%rLD~#3*v{=n zL-9+j6-AE99m6P+e8RDgjFT)29C{9GnEL68^R)s~5~q+U&_I2&hq;6>1!=nSS4jhl zsOwL_MNu95abpBnOP^BT9H$ixMatjuBiqr}J4nY~VdK8P0Fcqx5+k{P4L_AtAViR8 z;Ln{PVT8>349c&jt;bgb8Gz4xMekswDmpgr0JJ(C&%sayBhi*`0(*}hkV4XdGM@Zo zmxl$5GTIFli)0Ly$q?Bl&x_g|9;L{27AO}i+F}^YEV5k0HfE%sT17Uez^SxSFp=MZ zZ7g6Q2>6q;^Y%Mo1gBjO+Y@6-A!Qxc$8tP=#2coBVB*7gCy}yj4dhHW&E8q0E8tcl>^akRUOU&?3*5@OClk z?!cJG554JgHttS4wp38QVyE>R;QV&Vg|q2aB2*F#A!>6q*bGY@=_g(vN}n;P5H5m! zAwcX=VpNG}4A6{Py;4rZCl2LOP!zH*dn-#fvyv@!Jz*|{>W_HHq&FU?U^$IYdB^23 zxi2j$C`cFhE0P6p6g!j|G$ZB|ew}1zx@WSu>$RDUy>c!OYH_BK?hP8p1ZyLHKfOCn zc;pN+5&^5=nV`E)EG*i~4p{4L?#aUKGt>3pqd-;Hs(|;4HM`6KkD5l4ml;yynN$^t!G+;%Gbxn(?b-h$(9TT*~c9#cHD;vz_vn_zV zIfWtv4%A2)<+YnPOd)FPnnPz>o^o@08=I}ILc>Ts^7)CDVLu<#8~YHFX7C=#6_1pj zw_OaigAFxdH}Qn%C6pZ~99XwV*1m17PsASvVvOWt6|BZ&5?TZ#y~OSq*%&ij2@+~c z+h&RGxPPZ$ebLTURO<9xd~VQbQhS4~o$L_2CTX3qLWbKH-ifK2E7T1QNbIHrPg5 zhQA9>j%>?*tFX47U1iCGPo0D|pUuOzUlmeC9VX^*_ zz7@~h1?fm2Q4y8TwB_+w%N5TKe*S%x0^^LstY2cVPFm1c*#VqaA`>V;of%2@=7y}5 ziy`FyX!s`zccEOKeThaCln&O>AC>*Wi9MEXTDrDqkTfL&LtP<@gu4NAI)Hom7vb+x zc6ZYwUf2kP_&{RYJ)hA0%#uw`9lZ;V9As!t*Bt2_=SS|f;!Lm~vM#;@kSI_gsdY1L zzP;^m@#&WHlHsc-j^s8pi3G|$gD|3=xsoQKzz zD+u*VN;RFEI2aEh*IO-JI7wF|uqlJiG$C5wjYK|tw@&ApxuhNBozIghmCFD%pf28( z<-R`iVAL@3dK3>Y^+Jul{hxo{)Mip@NO09PJM2&XC{PohzQuKOf@k308W4I7hVyfiqauyj9_ z6~8Op;8#6r53-!RtknwGl^Sx@5`Mu=84Ss#L?B{~SVzS;f_Rt{{2L1&6u|x9rbC*j zDgV=t$?%HY!I_~A>uf9VAeo^qRxw?lO)}hiRj5mW_g`y!MV#1tY@{2rXX0rJdkzJF zknE0-Y5ku5yO%)bQ4D+mS_};pn3d6oM#jxKo?SW-;(GfWapgPcL1LE6+@UEam5@@a zXf&>U`^d7|5F3d>`W5Q2vTd8!kDe11Ei>lf)L?@NfdRSMLmSqs(o|AWp8gvUH%X^d zo(mJ!tRPTYL~Q`WHA>Nnk+JZ#k;njRK^Cxlt{}W1#f@j8qtSutx_=L`mi;~xtD&3O zw1Nn4a>%6Fn*-N_m9J;{UvSYt>QrqLqu}h4*Wate0kvzX|}L}pmlhyUqt?u<&#LV z2M~AmYLz22mj4(mGCskcc@M-XZA9*{vm}c~TV-*i&v;mko4-UM8dj3hoUJfVWJ_|9dVl z5WUft8epem7W7)MhpaPKS4lx6wm;!lgTuiKw)t4h3ue&)&sUT0L1XShvXLrk>LC}U zMQqLwpxpQS2?`W1ki`=g0Q~c-{{9QzB^%C1yyhiE&6E7L)WfC>=})qmgWa^ z01a3A9V9kX;Gi>_Ixf{M*EDkLnu zLjF(-arEAb_4wh(OwP7rH&Xw+A=2GB^KbT4y#+hFpcUL}jJTk6Vg9(<42hWVQhpv0wT7EdpqOCF)L)bFW;2pdq>4^3YOe^6Ebyfo&=TKm>B=%yVi~_f`2f>Up zTVbe#=H}6wD2POr6N^jyOzHhZRRH9_`r}U0H*`F4##3)S$TWb!{eZhTf3ZGD0e^^= z0ovucARo(9VtfaW3b9X?qdML4`y0s7_GdLD_NM2IhgAaVu!5rBq1@Cc@5__agcBKq zSmFItuhq1d=@+Dnw3U~Z$}na)6VwaPOGwUfoH#Dd9y-2y2jTbc65G#W7x7 z6+<=Bmqv?cM0!TkcXJ^!_8R0af3iqtUzJ(Amiy_T_U=>>lqL_9HeD$G@Z|AwF*Us? zjwSBztEcb~Gmu*V<~qOMF@FaF8h9TA-QDR2C9@xUJOhkviiwsJAhA?k(`uLemSIdOaOZZg-*OpFx3EdyCP@VtuBG+; z>A080W;!*#s?ge|FvC-X)45~cvdX7tjH~NmkQz1EI;@qDpcpov+o-j9BwIoi9+!+v zfAtF`L-;*<%h;yfBrAA~<)7ZXx6NT%JTHQ#;@A^RmmcL~mO)s7d$soUn2|@yThn9P zm(7#9FYUs|vG1F`*zuNOVcXpcwCPa85+6n=r@20YT!}3=1*D-sB}UebfE1lKxzRfH zpaLJcZeEfDaUtkkiGDr#ao&8KLB3j3M~e=sm?DmSqecdM3UFB2Zr|ecRU4!C7so+Q zC>~ec8?0;X(4#5;@tB#X-A~Vy$7W01!=s}4#!JWvB7d*fDB_|&h*NaweoeAK>+$zC zuc{eQdZ3^9dHZ$q-rd?HUyrIArM1hRj;N1o4e-Xvcu9AGksiyrq~p;dQ*vUl`}fBr zmVvGa0c4;eNW(~FE9l5oSl)5}Gj2cQ{-6Q1P>=3xmJ# zDaXW!Tp=v;c#>rHzcf85ihpp=wpt7v@V@f%n@M<@3taYGy3;^>N#35J5e;+xn&?-W z&;^;MR;tIN!UuMwYJk08&T8}Qb00Zvfse1Y zEv~+)JpSyIT7&@*u z;g3Bq@QkNmVOMr3J&d}u3?ErrG7z-ITnWb%I6VD_Z>a4u4kDoDDz^xbT_TN@RGuWs zUop(2^GkfUK$gttFY&)Bwfet^2Z+rZDm(<06A4TjxoJ@2LD=cKZZ&koF}5i`KpZzd zRQ2(V+dNr&ur>F#GnywtMKcv~&FYrp9od7H>P7{Xa{IWrpcBu=K<)m7Ek_sg;35-W{HOg&B2NA;}wMv7NVKak=sA8IrY(Gs-5U^D~z4xtr3EmvPGA zxkmo-%{nl8tXtlcat+PR?#+JLRE2N>1JYh5LA2rkqZ`>P67+{{E##D75S#tDdpee4 zQrrHa)G^~MTr6U`x7gqN8Ch{YDwA*)=;QEq9f-yIYEDxtG|swh%g-T~m$O7kT#=R* zN4g}7;AKc#BMqFKHIguI!x2D)RCt@X`Vjbu81;(b5Ky)=fq`&QaeWyo1g~d zqP*2hyMj+rC(5ZXSsuo#aya2vE~m5NJBu@nIHEX3E$fvNVYr&;%7G!SsU%6m8qn`1 z;Gd2$Lp^LHBSx&4m@qz9NQ?YeQJWvq&S&ZAgx?gn_uq?3?qf&F3XUI0;}wu#mS5|p zc!;hHKG&zNgmz$qc^7Y~rAfBK6iA=vJ4Oh+6{AYdBCkj@*-1;kuGzt9kxNe)Toa6! zfAxl+`snyzYA>L5SVG~gYvbTq8P22?joV$SWFHx7-l_nE4}JL}V0pEwPW+zz;N9z* zO<36$hQo^KvpmTh3Ta;h0uVLOUlDBne*w5v0!uU?Jms8Y z`yiZjXaH4P8Tb>UULH{DpWIC+f;zpXk@pKoX`zOzv0QthV5a*@?Y8X0rn9S%x))}h zaG)1gtcJeHmOxhvQJwW7r@(Q&&xHoC0&KAq#Tj~!>Y#*n8ag5j)9(dduj zi&?4YC?W^xYixdU+O@Zq!F*fKQYY*m=_BFta~%@!$Jeb8R@dWEJIL6)@vtp8UAyI^ z;By22eA`=xpWq8V7WS|kpGs&osv4vg$`b;${pXNF7lPtCrzNal@bdDPF?ca<+BD+R zByyw0@+zAZLvOdz^Jy`BEWm$$(cJxFwuEAEQB8d;Nu`(9hs``}+BP2Q8&LBw>M8+w zLMC;|4mU1l3hfhmTZ#rjn_m00b_up4GMG&`1#ZP6Z1tTP;vkzyph!{45jv^@xV_OY zDcBpYs0%jSq9hP$#vY2n^(?tT@IdHiZiCMFsd8!+)8AV+^p9>P|*|Yhq=?o+> zzt0&mYEW#fx*oXiEV6!kPsLdCnEDyB#m!n8Ta18E0WjZGO6Fl>1s2!>hq0!D$-Z9( z0X>|*TB7mVW)5O-A?UrxS+wQNhfZJ_c}ma&TgRe~+;%Khv6Ja!hCs)HN41rPKSn-} z*1H8x-^r34PNzNI_0F|$cK?`BB3zR-(`T?qih zSo!<8rNaaTX(uYMgMP7C>X1e*-6@iVXnIdE5;gFc10a<)$;{QKmK17`-ZG%SYk>Pq zy0dhr+(1g(fVs{A>LtmE4A^z!`P3k-u6K4xs-Y6JmKOq3*u7n-F!Llxd_(2f*0oMZ z2Lu7+yezIV*&rdU1DOX<5b=;Oq7tAP43zD1D;2mbWvKgfrPogq03>+EPHeA-e@x7C z91gJ|OOBeiiC;TdEMHBk}Jem;x006}PjeoR;L1V)ppA$uwx_Xqe2kz!l z$iO%R%uN21|(^rw|;4ghan zc8GsL_ANwZ2^%w9?%vQ`g&I2A_+bN0aY?AN+6^%Bgf$`)v3L%9$h;mhb6h%VSG_Cj zDsh*tyeN!aY7n(PbLn4238x+MV7o{&l#j?dJMJNfS_IcKH!bvG~$L`)k5>H}IQ<08`A zC)c_VL{4otUfIvcACF5?ni+e${58Voz>9kr z2yQ5c#u{Owtjnd-VbB6zqh-MraI86-j5Xgvp?jw|O}W=wgJnR{&6NVSXFniXGlc3qcOl-vdy*^1 zS40hGMDAKTE)5>ai!r6j$1X-U%Zuz)w@x1-(ySc0HQBGw=! z$Qg!6rE6#N9B49FS}c)ef#JDe0%rh{0XkdC1dePpT*n|0{o(6XNdkd5P=(Yzcg+>T zIH1d%u4L2^MD*Ap$Ccn9KE+-^QDAPJ#-ztA_`+L7Q)1Tw2Z;nEcRu0yV>rCjRQmw6 zr(XHn_9kKhObO`p)EPsD)9vdwCq*yWAENg+d)tNEBrBc*)lG31ek8<< z!sGzrb2VJsW%L!uURF)i*@SS{jx>KOjaG&MoruC{nYwgsXbdGYpv1NhuisAp(sbZD zpM9yL#)e>3`13qD%UD@IV#Ycv$bR-e)A_e3GD1rGxktpyd-6+C4n%CgP`R>PP6*t@RnAp_Q-Pw^ zcUc~l3KP0B4IF)-mojX(7>-M@HBRA&oySod-X72N-rEe(MV{M0;Nt4~rB3oSUD(!T z-)$I%B4clEdy?L|Jcqv6gXYK*e6s09)Pc_08QSyRp|K2$3<<w!w*BC}cV2i0&l9(c3kM^ikmW3nFrXwpmu zKQ2ZTf@{`@#fE9#XUkU3`jW^}c*b$%hMLnaGZXG^kisUDP*VS}@|1L3ofui7Lto7O z_o*LjHvDtBH>C&%Q1YZEzp`45-bTeq4(MH@yD-}0p-D4uElJ&@qSA1pQfx>1aLbjm zodwl!!P~33SP%CPmi7o=r8+uGZ#zZyxp-#zR!A?-^=O_opE%K#nAXCax!Q$pOYymi zUhV=CIMr2CjyRSfv>V#*(3la8X}hK9r!&O%eouT@j(E{CLGD^ivV2mp`i1X-hQ5M< zN1(|#L}O5n3#l~I+&MJ7Nd^!=P8sT(P*@$(XGyWsO32ptT`!!8F^i+_M9~$ySiSob zKdfikC-MFwOQGe`FWyeOs9hdk?$_8c8bpi@3UBb)OO=|;meP#R+c0XroAzn1c6JyY zF}CZf-8$1^LKh|R3;0pfx&6k#K?dom4w3xTzyBvNPdbZ$?^{&1S=2c?OG+?Tn z$}cibvK5@pc2)&iaJP8y{`GO#F_yU3f#ybQckkFhokQMb{@5EW-iDzqW&RP=tGxvA zcDvd2P-*1~rFh%t@|1ZAgE3k%=ozwH*fWG3S3aJ<4kKmHqBiHnhd-+;lG1;ATMgS= zwcqbSAQoh_TtGF+9Xpa6c$ldkfa2BY#{9-_cSI<(o#%4Gu#%Al@VMO7{LiLM5Q&}+ z)?0jv_%?b6$W@h?$BeybqZDG>JV{waP%2te!7lT+&a}-U1*~%4V~||JKLQtzvqDW= z6C+Y8Cbc`DTD?*~?;qy&B{&iM3F!@HoJ|sNe%6~TZ8fy;?CfLnkc<^+by_o%#V9*l zm{0j!moPx9*n4%J=2@dKKcI`SAwZpGkd?{Cz1RyF-2oRvwHaY_a5Pj-dsg53uKqm! zzcle>U+zNF0O2P)#0;*HXP{yIdMxL4c6XdWy;npO_&MgJ%Af%D%}}&_zrPq1Uct;N zR>J*vS>7ba1f+JhNV+C0sW|F;$o7@p>KbqLq{GWir#8|D}MCw?bH zC@dPho*-kEi}6untATwalq>9(!)b?Wg6soRbjd)5q?<7-Bawzoa?lx*q8Htu`rAYe z#%&H!$+?D;XH^Nf^p0a67itD@c|46t&V zGUIX9W9JVns?hw;Y`jP*T>hr9@Y_vYg;{!c;Z}`#$(Y{FFVgmMXjer%6F6RMS+p}i<;Ip7nmP$0=GpB&vr2~AF ztka$?V2IX20Ng}Akgivp?J4h7L+TN-Dt)VDr;;&gokaX*)Qk)5&{$_#Y%fXym~TdKaqXL^$0*v}>u)K{DWo_MscE~C`LxE`4D?xG*k>San)-k;g!HV-?YtlCQ+z1iEJVEIQdy3^)dqgF;n5I| zy(K7vb8e+%9htyQTEG=o3U4BPNtRALt%eROKk?1L4)3tBth%4|7hh8p}L3Jdfz~c&6n6 z&)8ihgwyKnhiLagc#|dRo0@&iaxGY~9NJ3Ksh~Dd40o1SJgU?6NU?SQoj(qCL=m<= ztW~D67hG3JDSK0OzKqCqAX=9d=BJSE_)-&@B{t*p)@}w|aSD3Wp0rXIts?hv+hFGN z{Up4~{Y7+pBewQYw|?g)Z=!=K_U2Q;n;G}b+{CbIa`D|^YE*AJHoN#0Td*1arCDUq zdy7J7ToTBd2l>1$7%e~9YSB@#Yv$j5R-ng1WNi4I8BXM$RN{3TC-Um(MOA8mf)sAJ)UK!VSOV;!OoKq^ zl`Q}%LjA~a|B`|295!s$LcfBwcfUsT|M2ye0d*|P+VH~N-QC?K*dn;QJHg$8OK^7y z?(S~EU4pwqa0^bb@U859&b{aEd*APGKh-n!RCRUr%=C0AYnlNKdWDs~R}_<9s4Y2Y zOz6N|q0|ljQr>j|RT6KUHpgqI2o`}q-Kid`doC~yLs_2ob*yRmfGW-yK)J0C6c((@Hgy3J&AyQ-&u82@lKh?yl+yh?L=O!2uU+F38vCO?d;x>Kn6 zf~Ap7=mwZ=pV2B?k?6nFIch}w-iz8}CUJ;O)jhFB$6u18f91ens-16Ab=avY4J z{0wx?wG`dCx@LQv019_lafC4X~op$UkL4+snRnRZ@=@iulY)#yj1 zF*588jPt05C?3Iv`@6*c;4Z$WKLItqH0o-Znbkx~xdm1*VMPTG06^-4zrh2$1iKd_ z15d?vw!0Ej#t`@nHu}AM%i8z;TTk#LC2D!qtwnGtLE=>f@sSdKZw#eb*|z%)GWOuw zKJM%U(0)zqpg`adlgUVd!U_O#A*j9)at&s6uTM}$25BX*(lzg7xu%X=J1S%3x5_Pl z>#qS=N9poh_o0I%Nd`=|g>r5tZW!9CYlA*jub*B1Qd6ESKC`%l$%R$LYtD<%&w?F_ zrE`rGA*>Rrt$GTBFS6)RzD}Z%*84R%<+93yiRaGGjw5+73#+sanqha@*ID6zAuBUR=S|A zTTo_l>eaG!L;eyWm{@3h2Y{z4^UQRf<-ngg1Hzp>#vm5z#V~^(erm%bPItrtr z4i^XE`J3fkXthm`)cU2^cstYeOhYG^@7-26M~rR}$oN5(SMW!Wd%dfqo4|yW}1)Tvp z9k=dz88GHh+tQx^?#1%5>}?Czjc*;zPpTz1M5NCF`6=zl8WWbF>7EamnR@hpk7uP2 zYbuwniWX+KWjZyO%%HW#HZ*0E7i+NgGrwXY_JwWVY4`hvvO&!83F(Rr9f`+IGe@(H z5r{Mt9=^{3DLk^5b-FmUf=M(aup~kE4h_6C+3r>qj{29YRC+3r+Lk@-T$M4o+DZgCr24n=aQITXrbmj!`Ql+&yoe#sGQuyaZe{-UHmUx%th z+M5PuhNrJQtkm#^wpW^qCW?>F0Z`U!&bN;NK8OdS63$=RYgv|z=CEQa+-@F!a_5Cd zH*w!t@&e%GUzztcn1dGWk*6WH*YWs^=-meqx7h4rdiC*SU3p zhd?$B*$P3MMT%-DJr)=K(oPcTDp)mRjEj$0S8Jv!?2P3wTIM*-BQV}7cnMcJRYpRC zh?B72@(FRmR@Tma;KQ3Mlf1-2R#?8#S=fhO7(}$Y>i_6Dh91y|J$vRLouSp|4Kt6x zzcs^m%g@H`OO4!yIylIGY--pz&t6o(3rCE1m`!=OZCrz~^pLKYA5e(5D-m|~qHs4;%MR|h+dFMCnrUpMay0r* zCmQ($$(e`#$2oy=lA0kXpIvZYC{#WTV}=2+mqX!;8V>hVc#1k=0eY9BIbY85FC*}F_b zXn^qv-3wnd)7Ge6q&7&&ceQfaozs}-0-uQd1X}#Z9TPn2II5_EX2J6^eWyn=iIn{4 z1(N#+%d)(e!XQnpe-QJ3$j5!`z}|){H|zG_X{u9`?bj7OTDA`C6FXO2NuFY^(@HpO z03SK#$Y$MJfMBX>>`QR#M&VHYR?#HC@u^F+XhUD+Ldzq%8zJ3)Yww6Fb`hD$K?|;+e}8J7*drkFL+F`DS&xnODkGyiiJR*1evR zx^wx5wM$gLgp2)_!W%^2?F%8+76 zyw<>e>_Wy;#)eoOxTyzy_}fhj*0q z-GDNI=H;6Lz!VMPHdGGo0iOwYl{s9Wx5`dQ&Maq1!;+F%K$3*|Q@o`y z+2AX%;A%ERw^&elbEpLC5&<*>R_zHOkn{EBF)Z8!;rG=Ud_R97!__{0liX*G`bUL@SJNzkmCB z`lxAwFMb0wufsYJO46~f|Msa*Ym0d+arcvJfuArlG#nOi0%tN~#=QW1o(08lGP}Xr(7}6k8Eo$EL6zl=^laP0 zpI%#P*5(`>J-MEB3s?m?m)&f&m(RwmA@G`!44?%TXfszS%|Bx5zh2#!f_ZM5!hY?m z#W!e_EY*dc&RU^Vqd3&a-|W*o3@@#8RT^OoO8AnG6_NVPM6B9CuI%^q!Y>GWca1Db zX$8{{CvZ=_hgwNNR3ABrun3x=8YWsSnl2Z=mq2)Mh+h9_El*-^7(RC)6{v66sNbaAA?odR;1JN2%; z-i8Mk4y9Oq)-Z0Tm>F|xLM5dSFo755w!rj)YbdIVkHxRHZG$t*hoA7Af2;pC_{gwX zhF}(Qi29rZ#mQ3ip)EZ7oHQGl)UcBOfZK4sNas2+p?B0J`4yTNTN!;aTJ>?FVJK|4 zSk(~9+|e4(o^7o*vJlNkhO3C!sC-i%2?Tz zUbf@%sbA)Aq%r&1V@@exFZuEEUA;&9*A?4SRWuQQu>RsKxGr$Wgjkr*GyABTe5>Z{ ztLX%y{Om6HikC;N%v`Kag_3U9Sduqna<69M`}MCulWuC*Lw9xdzr_eglP!V>HSbKR zk5EhewynV95v~IZNgL@sI*^+ZpeQwI*nhkVFMX)jAIb6joWkKps-~Y8G17|cNLQai zJy#0Wm7BYI0acsC+$K8)4I>3x^)%!<744Unh^WR-hOP4MD(uoJ+9q*c}5b2BV` zs+21=6E7`HSf^IrP)Kx{JP(s7P`m!k$_HUagQRpPQN1PMjTr-ZKS2yslZwe1-qu17wvVWO3|!+&NXz>Uv5#z_Oo>+mgaPwhBx4o17M-}l%L=g>sW_< zR~XRX7!L*IKiw>F=yqTIF!akO56we62Qn+H1)(n8D~ZTar9$sMQYTn^iLxuL38n-a z+a-EU14hzaGo@Fk`;h&t9%WDpPQK(R>@YX!*`?{d0jdczvXzF*(t&IO5iKj6NY!oJ z-z+`t{-c)Qa0y_c=T0v^8ZA)5|D-`jHv8Z!ox&BJqiU{)!qoUH29;H)tmJN2q^-ixFMfp9yxNXpd@$K^K%(V}QyI zSe~P!DT95?bfx6EcdgE!Wdy@j4e`fZYt{6HYbxd^F^tPtF^hOqAJ!0@OWTONR06ZX zs%E44kuDj~9{FO>gc)~@eKbG79jisl;f#YZ%$r;-FjtHNTrBOpwadcgqTz8 z?3MQ^M^^`avcMA>-AWHsi8R99yy=Q+y&#d5TIQ|OC%O9v z@{d2?A(tXuVc`ur%1IgCX*p$1xth40EgG)!aEM{kF(@Lf&cgRB4B0c*&nbuCOL^QY*15`@2ADQ&Ls@?D-qF}zO4I6alvthn9}f( zJ_GGHhoA>$wp#q}i28f4SSi?4@;Y^*m)$=9D8|guYMt@xc;5^(`tmN;cK!O3Mypd2 z7-y~oZQObyB>-8^9YY=#!gFT8kY&BvAU?EV3_wvmTI@Tv``wAZ`=RwviVQy~!-s}? zSlgE~vMj!%8$VhLH=met((>ev!qg|srdZ}E9^y*5ik2Sf z!GyBkbTnC?7bTi|8<~r|>`YSl?JddQ#;3I-9W)#l_rx5=bL#MW%D+O+7`8OS=A#Tt zk0MG{&kfD9qb=~FwOzJGm&dH|NKIM%uo0l*?;V95s4Mp1HADlFFr`16YhksE_>c2) zwvC@d3yJlNRk&em#V=2-rpaoz*@a~DEtbC{rdVX~k@hzSjMy49i$kP1_DI)b5{9HC zhJZhxF8_v4XXBK>c+K8WMi}b1sU(vsaMs$$zlLg>Wz6nh629^vq*Q#4;<~npP$3=~ zfA+qTy_7LN^gS437H836U-MqAQaAIsQ#@zlV$6V@dkE$xoJHepCWamd)|zgxk6B{) z(Fj>WiU?nuXztes1>zRObog&_^k3|FUL@q-PI<~^xj zI(N==OKL5$jldzB_&`_jRrDy&C;yP~z8xpPM;?K@=7bKjh89qB+X5f%YnX|K#o@4d z>mEdo7d0|4-j(kuFv^@K`yA~VzsfMFy9T+}Tj%{7wm{aH7p# z%HI^l5I6K4do~MvdC0gW)|lh}ypsj}ozWBa|B9B9!JWRy-rF_|y2%6OI(7 zt=E>1$9aP6I+=P3U&si146e0rzAQo?)x(dyC5jA`5QFtF3$ajirDYkrG7@Q(o(Sgj{Cfl1}=1=MU| zi*-NK<1>~KcO`J`nmVICUKx_Hu(qk78W&CbOzP7}W6>*&+0rt%T)wIXyhz0t){S%e z?CCDRFQqkCd92#YnlOKW$-;qoP; zj+uiQ*?dH<3$fClrh0TEpN5s3{3;C{+h>JH%mqmS77LAM#XSlic3!)N7dI>Qx-M%z z&&^7HX9(_?r6j^ah3jHv1qRv*M)Uns?{jvYIN@qG29YP)@n_uZwe^F}Gon%B+Jr(g zyjuJoM8Zng0zbBB7wOBD&aeY$=$bZUFEyDI~(WLjB+v`bNokykEnJYzLy+aZ3dodl))4r+$M&s+o= zElLF5K6_XHHd^BMoGC<#_Y8B9C!! zl#jPqSe1TPooyIjdUk>&or_A#T4PYrk|WsZX$(9w9olTF?N~xTjp8J}9C>cD!!~R1 zfWk9!8lG#DJd)CHIltLd1t;%9E|^GH1FI=ox}Nu${t!)rK-6E98mN}hE6f28EWB!N(g-+2KV!?^w6Z5cJ8L{qwQCAHiZs$=z zjBQ)=b?N;F4Z{-&-zzPIjh^n0L$K4$ajJu`cZfv1YFX7g^(%OhEo2<`FlJ3U-RWv4 zj;#)c#8W`6R5d_VkG9tZKj_|DkUV-eBd-lbo{TcqLW!$d2>2?k2~5%%Rrp%QMoT68 zrP}P-n5KNLr|3ejTH!5TgIJ_Hqq&{UyCv5z9itQQecET##rF}NVWUaW|MBFc_^#{w ztw4vq9sD_Mr>enD?&|E0MRV$f(w|i41I!#L{eK5<9JY~%yLzPj7e&A@bPHB?xn{Kn z_4JL>wVEkhbPVci2AL+#?Uwrj3A-Cq0~;x>^ut=jdb zZm-Wp)}%^(D2c3He|(VYfdy{O*{}hdAtfPqQ|)ar8^Dwf>+yw=)}MBi2i11SsrWfu z8+D_R-ui}oYdBUmtb0uLe4DM#YpMI;N_MjekKXVrrY(HqB%Bi!j9Ditrbp^Q3S{lV zxj^Ce`r)C=^0}K1_gO=82}{z((<2@Vs`S^er}Ph<)OshLUpe`_8u`r(c)w_izXd)- z1^gt|5+ig(JhOz{zxWzCb-(hWNnJUQZLxZ-PQDTJI#HmHqMT>7(}Sh2e4evr@mRJ7 z?m;zPkMKe=d6>{X`zr{nOM(tmr%^s^gMuVc%p& z)4!d_A!`l=+Y_q^rkZ<5^}&1hj68kP#6tBJI>qTDESaNCEiM z@fuM%62x^rHKy-dj4=Y@ShX9Rkj`v==fstWj$RVxqflwW>0v8EB8p!-vsOh`Z^YvH z7#uL@!MWB1(Q^)q3VK)7O>-Q!_pH`p4Se6yq;zJkrMhuF%@=Fli@B5dOoBRszb(o- z?;i7>+E5MCkdTDC>zHQpUSDSF6W{H(v)G;q;0G;G1VaU%_2G(L`sPzy?e)S279Lwu z#i!@%BZY*yrg_9@Au{4^l55@Uu@?Z z(LXizH-Jrv3We_Ud zAxhc(_zCvwCyZ%Q*1hITn$Y1dz&z_*z-)SkP8QjS^7tu$5CRG=@$mK$RwCO03zkWKyB}Pml{2-LDfbw@T`|V`$`&4<(f*!AGg^1^tYnWo z{gIN`AOhbHuog(S#T~_YG!DEmv_4ZK+_rIDlS^4meKx?QPOcUWE%1Pc<-K0DtDet4 zNZ+ppAF4r}Iv=mHlE%4K%Pb|6m#;6*rDK*oMPAcP%XvKcpvi(8JsA&wDE!)*h~u}n zL%AY~Yj0fiI9B4{pY*G2JCUk_ul*CFd>9-3e2o~~$pGB# zNu(IgJeZ0uyf{W?FtQ->Q{tq1+as`HjsL7WIOifc+3?CS>hclB+8j#NT{ENy(p(cM zq`K|EIm>w#h41O1tDJSjtTb}C%J7CcO+j1+Naw-gIuMe_UfmJPpuTvm4_PFFAuB3h z7dAXrN3$Q%EYNX;h&+T*JS@}4l2MH5YNTYCV70421eT9E;&}QZ1;pytXKFbBKapc8hj3x|*rB zh3d*!w1rpQ&}^t74*f_L^HFswpg(>;5h+)(y~HPb){ip~dQetcJ+m*~OLoP&F#%(Gm6)#-#9e;*^=G2-l50`ps+-7Oz(t zoaL64{Y^RzZIT4$#cpNLheU`@;son^BN}ASMD*8@>7*OYfF~pY?Ig`^f-|>yiLraD zko4&(xeHHE4-q7PH8M$k*vw+N*#+(KVXZYc_65G=CkTcnOafiFieMYdV>+N`ETYb{ zp0y2UL@iFk!hZR)tR+eWdKDK(HXZW{5=(ZFy`1Zyrldd|G?P@k(`P{oYb{k`)Owx! zbb)o+F@%ROJme&4c=L9(V5fX6q2b!E-GB4AY1sW5f%r>g1A z9I==e(?}WtsZUjc{Slm@iETAG(}tI4z%C=lHc0rMJT#MuZmJZ{KJ8(8hXU%67iwg| z7>m@8H&FAe>;sx8Ur^ZAc_N(ETRGCH$@}Wjgns!x6?X@{45RL*BF%9^oQbbfvQk`q zE~k{dp(8*0(w#VM>+GDmMt}$x=tTg>%CO2ItAcAdY?0W3Riza%Tp`+N|Qd-l_5t(i?#ShMAOMS zq+s?@wdc1IN8#pvawLvuOKs1c=k`h3xbjBFH)m} zvS**Wfm^h9jP*2Mr z>uoTg=3oNUy7G|we*Baa!}M?7nkPCgYiq2247b`X7oajgcdvkYrKB`K zpu1>M3NjL*!yT`~bP_**pa{z`+4)x|x9riW_1JoL8OhU=-r?zWJ45GT7~ABFeC)yX zo_%lOV5K)(RBh{#A^h<&dca7@Nq+;k=2C3Qjw$~_b(WOP7OarjFEX+Q7pCEXU`NM7 zGb9qkSH@vt=MQY%JI?2IUO87lvDZj=F)HHc$)ryZiMRdKpGm=}sO-@eStaFNp|yNJ1KyPdm=JBNKeVT}kWFdc5#;fp z`R;{>>1KzFr$BfNnYzI|DBOzBxYqjuFQ3Kx zO|J0W%p#S}^jcQ}9(zQ`sqsSZf;Q?!NP!pu3@=dMD^o7K-;v2oy6gFOhW2g6UHjq2Re`QN36opZv}2Yo4bmy^@I>p zcyYY9d0i-D&|L)J3aVHkEm1$~-pkV1rav0JVYp?nm?)@x!`Q$aTmEG4OhygE&}oM% z(;;%4`gubd_!w)W_My}6K)+ZZGVW9C8dIV}zu?WihEDa5PNkFI63z04oC;kVv>7~ROJ79JkGZL4 zDx;JqILsj@-BNL_H;pZtoT4|=_OZKypK=n>;AQaYBg~~aX1!2c84|D>!!odQwlmjb zg$-TOLdPRrUOF+~tRp&1&jDA%rU|kLU4(R5OCp_s71-Ebeir>WUe>sq)7PB5#yC!`$kaS$@>miJ|gIbKC$$-EXU zuxaQeNjP+s z6y}>9Y11)oY|2dFb8%&I72_{g;8pcgfdk3dZ?^rFTHjyivc>UZtv|5d8*s{dvA5yj zYmyUBdJ=ZZ;p-v1g;;#(8b+PIWJ{K7Wn0MFCJRYY9vt%PL}c8DiQVhOgCyqA~&Lx>Fb>77#CX&Wj>=poo7pIX& zCgy~7yE^fB0qIivK^$$sf$GXYOopf3cVm*H&Hh(%4hLhek8%FDjai8eI$+ zzLBsL>W+$eEw^D9w5|-iUSv<(Y-LtnWM8wEQsjw9K)gR#o2}4wi6020*emMS3P1Kx z2q5PFbol<(MqyBw#$b>X?FjviWxc*;i3=xsk+o{~T_}_Z5j!`fjzuRJ&UB;)ti5Y5 zHkY;bR8aDx3hN@3xBCZ4p@MB{z3|XJx>{Gp-iW1AJ~^C09}!drv_LnxmGvt;298Ys zt#Q6~wU3--1{fa9lFI`OHs+xT*0VBh>??AW5bmK!!xy1Ci=K9_z{H@;Ny zu#**}RMG0NDhZl)wt$&CH2<7-Fi~Wk0yZWipy%p1d9BG@pBaB#7b^X2XGgSW>Oub9 z>LeMh6v3H0Xy+RnmaXSCFWoi{S%c>{@Nw-R!>RAWV4McMvmI!M+xr+cR7pRGdzjby zQRP^VG#h%P#y7KfrAb8zdq;1r_0?&=q}z+S)wo+D=HVZ^2K)Ent{ywP7e^$&q8oE@ zNPG|s$TjQ$%ms-rNWsWvjrqM?Mg_Gr%*=B&3wjjnkWXMBOSXJIk_HRRvq;h3cnCij zrmVw*Q9m-qk097yB~xZng_m$6I+3Ee1Iobor7%z4Lg9z`EaMf<%Uuz*k}uQ4p0+l~ z?WNJ!hkiSkeOLJ?W1=eNL9We^XLGdgw3#ZA;A}PlOc3GcNnH4qCyET84%0uLIVwh? zNpoV05I!Fi_X*N|Kyv#AePL1eg;#4pGBy*EJ%*^6qyqJsu%$Izi&cKD)9G4!Osp>!-x3uQg$u_q`3!VmgBzXqa^OT ze&jeCJJ`bRBq_2R2NfMOcT#+K*5`_`) z)`O=QXBRtr-2-C(`pl0udX!I%=tb+V)Fwh!#fTDx3Q&z1u8fvwpkOV3f1@44@^bE^It^WIqMv%MRUJ7NPTMGQ;yS(QBA@b=N$}bwOHlExf zEqEQA=$SzAqoT`8_!P-^#nc7J&PN}k2~V`2%5R33Z(G6XGt^6ooXM=JiDw%(<7bVA zM);3PxQ&X$&FDz!(+5+f4s$g3}@z1F^z#Z{Hw? z&SPK(dzaW#xYK~Tj6@7ym%SQs-a}D=&O!XEVFG!K#;R!WmxbM}lHg}&mt@@2g|{Qo z<*LN|*j-32_R}$`%n<}dmX4lS+sR-SNmq_2_a9^DimGXoPNUXT=mD_m&7|D9a$^fV zGRRUj#*9+Z%luF;{L76#ScT7Xn{U=BgE$bDoc@Zsek@JIb}qfoca}g^l!4zI7)8+3 zn%Kht0JJwS^Vs4)W;ie)q%iFJz6e;&3ZPliLzR^ntZw?ta5{v_!K!wDC{I%NGhh(_ zDun*qQ-sp}TK7W5DfY1FLvnrK!XX}Q?$(*Z>1-F? ze&gb9jIhbInUeLa2*bur?B!ulHhA>of~uKaTr|tj0zJJEYHFM|K{pM zyz+|qlUkcJ0z*INalg!+r_M=Z;v?q9Xh|@5aA=z!lhjK z>q;3v&W5quFTSU4;TOi0=Moa8xQjU@=cbvrPV%jC8W+pVUgqgOVU`!-uE`_o$*aTE)gsoi3_*0`kqLZ1ZW#79FO9=N~H5 zYj0S8Rx>EP(3r-4MU6&OkREUmx9mUtI!;^AK0-;b&gY6Po8YQIT1;#i(MSjdp-zA0 z6QzB-4O2p-e+Xe=mifukPcvB8Z2{)-%VE1?6W^N3vmLrFff|6T``!^kEl;a*adB4! zt~jz#Nseu9VCgn`ZW{3{R-Y$}6kpAehl?%0gGhs?tHDVDQT}>A4werv)pLe$O=&MS zN*eCwKOHoYb*QuDq6`Bug0P;(F3w}s3LJ={zt`@RV!*C#=)_DUk6JGXxsRcVvl<9l zdX)MFJ^J(2s|vUGN2$@w%ss)2XUkg0%FhvB3E2H*8|eEcHsX=pak5Hq?z;%Mj$F6S z2)=N20Iu~TRF9ExE!t~<62MTBEs$ij`H-yh6Dke0kqf}Fk#n4pPtMrVkuY`o;Fo+k zCVb$y+E+Kx@SP76t-pk^mma>^A_X_wk}G2AYBTm=rn(IS?qknTt0;_ z(_vup%e&qW2S~m(BN_6QAkU~TdqoV!s3_V|gj)24+_-nvlC@+TEs-G;pG)^Xqw~s| zx$45`J|q}qhR-amB0mIrZNc-s1`N_%!}xa&D)ZARzP49XL3ZAnfThiwp+0gu$PEER zzn75ZQPCFwkZ_YfE+I%tMQ*)PE)OI$y+`@J!=Zu))#*7Nx}HT%2UOGimcY<|eHeXX{%6MGNiJ&mo8=-a{-i z*InA(4)VnExLkF=^gy*{^5zkb*N`h^y*4<{z9+aCHhPbx(@y?+I^$=i(5=;JkONUaGPso$6gvEUvAD=jkV-clB zUWrrf)<<&`r>_qqK~$<`LSc`!TqZVsq%)C4)^S^014!M(7tY1f^1(WE~R?U(S!%fD~0VuSa6TS`NU zefvJ5#i@Ze6Bf71Q(_$F8FfthunW2}GcflF@n46`2d`Hj-p_@poPO2=&`cfntiHW$ zvjluwU>XXXj@T8PI}jiP^`HjJ0sJYLqpQR*LrBDZ2ZtEI1QyW{pHKU%2di9}lY;Jn zQLpDuNgzs)WYs?;q2L*!o`NtdCdCLYu#ty8f{wibV1wi)L2>{QO z|N8SC?fu}4AB@}!tm1kv{ve*)4uHcBb7jCuX|xU}h|Bibpqu49SNlyE@8yiXj2N*z z%x(B?&19(Ix>y#&w~`(5R2s^>iw6;kR$knJ5$-HyY(AN~kGs!SCdOSMQL33*ZPOKyy6pcq4sy*j@OH>+< z09}CvEC=n6nE_~1ua$6;AN16_djYhe3ZjlNMe47l`cCa3-$`yYW~JQlxt?zo{)|6b zP?x_g4gqer!(JY@sdc{P%?yaf%W8q8>a3VjZQzGRv>XTk$5*pj!&Zk= zO_wpBLkJ;Cp1aE=OL9`y%dTwvDfadd2X1d%Xn8!hU-_B5s2ob9+UN5nxG;%v;Ut84 zSqP=F0V^M5(xYY$z(Vt8saoOinrtTcz6m|vZwJe*k5;W;SR}@BuV3NM(hjUshk1{G zjgVgPqYQc(|L)*ny!ooSt0ijtK5YCji=K!uzr*5&MQt!nVbu;S_;xXH0tF%p1m@sJ z|2t}?m*s5pP8C*S3?R?225E~x$NAF~0kDj6rw05jKjk~)&xoV#;Dp$NgVl}K;jW(k z{A$|u6?74h-^k_u3JXdg#x|Bosb7El1*R*!Lc??J>7qK@Q-^DOeF@oghU zP#1bo7u&z$A<;dS(JjC_xuSZ)`%%^*G&YM^MRx#F)KZCrM^&du74)YVfDI&F^;eiA zxi^(#loxyis86Epc`ph8zNN<2HNXuMxT;`I&p(KP5yVFpkrsW zOMbFVKSH7eWD+Sa|Gy&V z-|pwE#+ot3(S00uk?^D_`SiMpd2zGGQKU=w%gmgk#=fnltwhpcXC$W233MeUU=G87 znRmVV$1N*eD6_j1N7-Do6dP}rOHmnOslYs}UHOx!ad9uG0~uHj2jYL25@61a+vy+v z_(Wm+0|;DYZ72r`fu{C7QgYFEB*R@p_T8RwPO+hlEVYZ{qYNEc5$~C zg<^ffVM}h60X9ITfI!d;!|}HVAOP=9YxuTD5u_c9^&kW^DRKO5Z3w_`$m?e6Imx5- zK@flg0{&POG`+c#hWjFG&KDre;Z%@_f~3fRIRbM3a|ZGIjU0CF^SwJ|m(8ACECD10(oXCTd2m4t`|bf*8?JQyAWH`VNP!vR=6~HBboYPyQv`sV4w9h(=Ex)d zI}X;X4~}Q(h1j9gz~`XDiA~i*`qa?!mVSiYfC>!#p{iE(Kdg^uqP<5=W#)!)0D?hw zRh#^`(S@9c2_p>iln$BL9g?a$t`BewgcE{fU z)DF_y9P$50Z!%zp#b2=n8VkDrK9L0t^uYSp`V^n7x@>j ze~dDL&_xYxr7w3ByC6Z(9m5#^4_^E;av~rY#4GF%?SJ{?53f`_JZ}&Ja!c6XjQ_=} z$6OrrBJ{8Js=t{1iRm9>h(9BGdqM4>kPiC~#+%TU#iDjM8zLa+j}HH2{U@ZW2=UNB zFf%YCAoO1YQ1_p#QF>?rb{8-0y)UHD@^S4R=>eb~pzsct`@=rs{jUWAw@v{<)JgwT z!cP&J)1OBYPs<=7e6XDOKgdw6+<(EiWf)mksv?*v{q!3PU!eI(LGj3& z5KlhtprY}G1p*=#PZDMn8d`zLrcO8M!o#$Q2zd>}`H0-{8jEW!3-3$TB1KhUT zpZR+u(S~&vF|57%IUz)!?jv(zhzx^`MM3HZZ7rUuKDKnHyz&7{M^ljz0^(S&PH+FJ`4eSD{-&dHY!;DO}*AhEhkSm z0@1cz-hCoTIn9?bFPCI>E465ftaO72@?{-TyZ?Nz%NKtLkO9s^A6@}m**0`a3LxN2;bx(ef8D1 zW}{+7WzU+r+hN?-&AK)ePn*(&?E8Rhkn*%-0~|JO#|7<6XI9I!w;S}=w$vYUxUVbT zp?{*rTuRx%m2z?tQSxkTwTRABb}sIx2gx)ZxZ=OEIt!}3*PSB3s_9LDU1`wN1km`0 zkx(Bqob7}&F-i+e5q@3>G41*ogsbnu4gK*v27dT`xZc-G&}8jNI7i$|MR+86$ z$us16=Ph<*_*)e#_X=Bch22Bj$_NA&R-6aiR-H=^k9UU58K-shVQE|?4w9if9mytz zJcJ{{1x%ah5_i2E4{<(NmohMt!&i#7o`cjCT}crR4SV&ueW~oT0LCOG6Mi=d=us?T zRfN&Ph87FGaDPGz$KE()>xU@!Agc>k^O|r|o17I~v@Yw&oZRDsP#EnRnn6G7%Ep}> z^N3pDR-m;Q>?c9SekVivh`s#b*jh!uI3?{wuc)IW$uR!5f*-IIzfjd2w4o<3cElET zI7-eX6f_R92yFV>RAYpHw?Hw2MRUU$*l);-pS50913GM-Pi>^j8FG1b`;LNNYf-n} zpafoMzapZSRO#*=$@0eE>@& zqFKOPe)2-EXE8x@qi?iNlG|Gu@WIIYy&0D0B%L4l+2MHPxkQQC@4XHw^O<=}gr%L6*mhaMk*$&#q2yLrD`^>r6{LkO=W%i616B%2 zNW@u`TwW@%9_`;YeaO-7fQ#da@CUP&LD{xV?g(lroizTvqxL0;okG(Ci1)c8#Sft8u(r|n;)t>s z{Y0n2Hcv%qC9dinE;9TWa`h|z-ZbTCMj;Qe{)>d32uOKQD&Yg>q$B=!E(R^lOB{vdWmQ%-skEj3EDOLo_QBSg z1x`FCax;BekHrQufB7_wRsX{YGsFxI==>!BGpNI#B>HDLQ)el1ISG;u0016v z5eb^*nl5X(?vcyKPz9G<;(#3k>VFpgCcupUkF9TvvZdRSE!(zj+qQX%r)=9kW!pYw z+qP}nHeP+VU%&40?#-XMR*t>Lnh}{X7iQ#({r}(k|NgN02LRUixw92ZyCe22-YPH! zcGv||?G#F^jlHEk1XBdP2!BlN8zsnv(*vsPSnH#j<5LO=*e!1`nNZ+8me|s1uAeHP z+yDFut6+BN#eYZSNA-p2Y}!x$^7Xg@ZAL>^Ph`P6O12&DJj?vR?9s`4|30SGRbUQhP_4;B4CIupnN(Q5nD_!_cEyCv9xMw7px zH|h_-AjL5`^>rZJT4rj0As7I6{}$S9S9{0(6W}OfGQDt}lfO%n%T~HDg})ZLv@|`Z zZ)E=YjhRNF7>#UW3Q2eRjmQpwW?G_`cjNYNd$q!h27x4Y00nV^gJ~eq=8X873G5r!eHu z_XEo5USvIk=x|IEbRVs4KE@N$1p>S6rDu(pYR;`sw)#94xZ`98dHC~hPqAXA<>-<^L^Oh=B-_zq~| zg$@h+p=V4sH>^`f1$bmR5D>@id2++bq1^`-;JR%#k47vEz0pq7b z_0jEPx$&S{wuIqc|c*(PB|q2 z*M0zinlKw{pX0k$TPel=WIGIi+5P{DKjJmsRs8sC>%FhAK5*ul$JRgp7buJ&M|a(V z#c(|#xCGk0%+Yl0C*+=j>HYu4j{gby_Nr%$n)5#N(Bh9f!dOmw7zG>|2A@x|VX>5g zR@sH8?S3d-HCY$~^oKO440SD=DlS+d#SS2iPe`NBk_%rNqD?-vrc-d%Wag~WCNuxx zp?B_Ce=ISl`BbXUt6NiPN)JG1ILzn`)%fooC9J;Mz_r=i>_*3T%#5!=1PUUG9$OE7 zc{keSQRnAm*wrOzUk97m_WPhJlNDY3G(K2)rso#%&xH`-GHUOZPn||ADnHP}Sq8F5 z_s?{njuj0j%2edX(5}dj6j8Q?YJFWrz3!>GO!le#^;@`#dl$LB{Lt^4phHth@972t zvX5FC=Ps)rP?`eO#(2uTc+5<|&uucSWe|W*CGhm^%k(ofcRE*wj}-O@Yq1x^l%d$p zfWxIayND@ltNcf+Ro;f4Zk?-A@5iJD(B<)U^y_d`)~{xy=q23pmA<21EH28XWd|L2 zn|h%MgkF{7pLa13mSFn0>5nJj(m&V2|CB`h7vb7~lo|ljPeBlXLN#5UX@<5TR>RTi zmPwgBxfJCKJj-<}562I7m*S#e@d=CEYmXh2dmWCSu$?|&?|OTeib5DkwPSCvl((KO zH)o?aevdpnBi>)TVJ5Kk$V(S<%f9%(e;#vAkOpDPbwej2NUq|*&diGJhU0-bFIlP= z0)U^B-<$)MHpccnS@CUF@%9KVbYf14IohQZ84q|u_RVJOon9dCw@;G{LZz;$=D87P z3jf@&VKXbmNx_ zL9%O+_oZlZ)Zu_Z;R!WCqZRCljHBDdwj&0Oh~apbfzlzz33|rAtbP6qVf29TQjF5l zdh3BWGS^*f2qdn9s?lFaZa0MB*L6ADiz!GPRuMs3^|zocPTHn%S@ zpGoG{&JZ=cKt1t6rSCq$mS;z}a5X0Bi!^q%t|(*+d9h6PJohzX`&s7EoiV(BiDko} z38^a^=KyhFp+tK=he|cXZ6~bqP3a~SXEHKCR?-ZzM$sfZwk>4y)2*$RBLR)g-2l-g zb#+_g+7S?|j!9{Y;K{4s0Kn7g|B$mmFn#`K!J(+}pR4YF>J9!EIzS&57g=x40%)cC z`IY4)0_T_guuv`XXod>O574^NCyG5=?X#UC-DSYo>JnYvDNwIBpg;Ram2HW~8*i$N z5>l)DSfM|i>)k*_Ra!W!u$3vC5`aIQMFQw)eZCZ~E-SQb-JGf`XF?abpF>X9Z_M6{Xz@HIQ8ofFMF}SZ@Pl1#h z&OsNd3AeHLE^W1Ajer(zUR>=u9gw>htl+^z)VB!Z|FC*pFn#^+k2j$8KbPeHl+XLW zahr0Rye@9tZVwIv^Oht3RalY-kzr7}1}7J_H$vNt+3hLWS!NA5%?cQwxe9^=IaGB# zAmxYPn3GIis4?r<9Buo!BfBcMlN2NWyf;w%?g2%i(wIG#tRJ<`o*=gE@leXLP{%vNGP+0&PJMh7&mp z$!yYRfM}VNNtGMt_{=Rmhe`jF;+-?uszq6pz}0N!Ceav@8VuRV>;g1Zq?yRfHxoHEV!HiZAog8uj9+5eLaZD3Zx z$WzlkEm2oTY`+9S6FtDVq_WdW3!Va!(;`5B%FJGdMiJo}r?y5Cf%}$~{h1%+rn~&o z^d~OfS`$1`d01N{X~M-q1WQzvq3|OHn29Qp&^d6mD7@Shp#B9lTmLYM%BqX@w@Ht> zbC*4e!sj_Jt*pY~A(h?Q@52JOS_r~JlFQ?vp?uWV(q^uHpWZPIG`EkTJisEVmrdWO z+|*hjQeJ@>H95I|5)yCg4|b*zXOpn?g4U10#hL?As=g^oix4emnX{jlp_Y3`M-_I$ z(U&gnafWX1M?>kiyXu1ubh8K9#L1l^$I{5cvf!6@G|^OCu2v~67+*Acyy`I4Cb93v z{ka=)3z04VBO8BJ!8qloa~;VYi)>$nb^Ks3Pp1C zHd9o+u;v(Xgk7LOAqjNicpwPB3U+~GdB)nNMB1OURbrRJ$Jq^0oXFkaH$Y&)nYiDQ z-2Hs;R!bqTpp8A@C%hVASD2sA(gBgb8~rd9eqhugn0|izkJsRTl0INKbBtc9$kAQ; zly#>dki-2LcRZ`Xc9k?xpWHTfqYRoJ=9|T>v;CYwY4(wxPGXijhvoSa9i)Ol`vinx zIDm4af!u%3W)?%y>oTVYKOF}dkx;EiFNA{QAk!#ENWhFAZ?}b1<^#4d?qaI0u|bCk z8SlaHB(l`?besuy_5F?)MzVPLS~I| z`#IKht8$h3ZRo+aq^grs)%K5wB1jVXtMY$YIwPMD2LwZ+DKp5sh?0lgHpZQYyt>+C zeL=@G+m&JB%%al1urL91B$JpBCrkKzvE15^ZOx87*ClQlVxCtI>Kue*Zflo5$RfX_ zNmk(6mQxhMbYf=#pEF_gLkQF}VsJ}HnYb&@D}bUaiIn1_C32n~P_S#@E!U!~#y%N1 za9ceq(33E1oDG%rvZBcsyXYNw=wNN`(bauk__HI+#vqcTiR1TUz0$EUir_{`)GCFR zZ?!_U!%@VMV}fi6U$Ts|mwsR?YKkH@s0X;bcVG#ks>KVI~JoXfjPR9E&t?OHx;-0R=64|HgO5(9ce zubR&3?8j!rf_7~Cx<~t>8LM=P3SRxGT)cE`J&T1wBRCUd5zY^rZEGBQnMYrE&22Tt zpZfU%I!D=boFVS7zf0Gpg(OZPNlVGHLA*~QdY89brD~8u5d!N(WKVZ@urJ`tdQLiX*)M}87-^@jJ&6+5o9mW>-Up1X0i8%2NmL*9& znx>kx{VoXV01&p#c0Ccd8ucXp312N~Ilos#TUg`Q!HP??gCV3{;n2Q&I{U9Dy7;i`@mF$int=F8gF2&b{Y1G^8rIf z*+dF=ZMrmf zGPg>(8el&qu;>D_P2;u3#T;dkiFMK!e)&_CGW}zcp)=kh8V*&^;+_4&kJqDyCQB;& zQsaZWi#sNawSN5wD3bKCMFeSz_gs&03tC}c$m*F7G-UF)@rmDE7BareaEwJ&$sbdzpT#2?7M*%J{sW|tEpL>hND z&qqFn%W~B}D>Z{0HDD&v+hPvBwr3N)+%s;&!vYQXny?)s!({KxsnRL$w)fzP($*aj z2b3;DjD#}K(}h%SqI>#Qi6>Crjhq$B98MzI6>Dr%nj1e`A}@T;yr4~Ftb-qV+RC-& zRgBxpKcp?2(F;=yAms1#pvk(ged5mDy2d6{r0Azs_^_u>KwYCu8FZtl@z#yyoHgct zH`zt*-2xP_1btXy^okjRbz)Mp=H@AMAAU`H+;LaT2+9)cYPe0qLRkG@EuXEwln1yl zXN5WA9;E=izc>dMA6^l;R>*#poz0#ql#$x|_RXO*ld2zCgczeV>)bsuc#Ff~d{j`a z&0zd795VUdbPRD}nWBR!ScQSF%HRZ^>#;u5`REm`$d#V|UJ8@F0Q21s=VGXlQyMzv z54Ibcd+a*#Dz6~l(Ioz2D+O9keY8WY>6Iz12hnK%1#4`T2XGve!g1CL1oyQ;|a%=lJES;j)lLlHSfGb5gAON5+SfouJm5;Z~F-K0ZK5LA+ z*6n=ZR;UcOF4;2=(qw->8-8oV$ISRkBQIZUdcdMzU^6=!r^%ezBxka#9)zM?0hq%i z^$KQIstW3dTi7VqPZ04p`d332E5SGSEKV5K?k5R4JK@0MH@Tb$*X+!sg!r&IlIZE` z>_2}JtqJE$Ga=N9>xgTc=?_p+jtCT~gLc*K!2XGpBjHf+yPza>NlzJo5$7M+pi&KM zLv8Iu7}fo|#>BygQEIKH2=|M!ZJ-j7Yln0(HVCrNP;&-nesKl4C!^sM+5)cb&zN6x zco|aHp@a(pU&1sfOKR7Q7Iy-excZDERLH|@-acaE5~t_g=^?Ns)5;;VXZ1n&dxG~1 z?pz&B;G?U`R{ndaiJf7_-9s9*oO16Ce8@{OA$a&mT1Ai-(2AVD8}kW~F=MIK@4F{) zl&5W2mOazjI38OYN|7WvIlCd~92X3kX||HW)>e2{T;CK<7a1~!3WiHWXPXB$T8i-! zii-r4z)2}GRCNXN-&)eLL-0gW8^vOXXqsm1A@szugtR}X|8e+%G5taPj|%>`=|4z= zstGSPa~b60hF^ZUfnXK6zloV(-FFo)Q#$3uyeAj%iu%wmoM^y(8eH9nvO#t?l) z@X4BC=@lYTb3#5zgXIfFih>-9ow6lbXsqvDR2j-+EQjD3N+gA_EtgX2XFG#SozOAqz0AOD>(~a0UjORyiQak@rdsLD(P=Ox#fgGa?vEH_CVfpEj!`E!}tj{ ze~k|Ob^uMkH`58q-QT_0WOlzs`N)O$?a>TsYnb3sgo0pK*-qqH=rsO)UUf0JTW|h|V&vyj0D@O{uF<8&RJT zL2w7ng8^P5@Xa!ar*KObqhORSHjFj(uN$NiPkCnWVJP4opoAquv%1Kc?~axzVKE!l zwl$8^OcCsF(9YX5(nlbP3Fgp@-VTYs3Zb>xiQb41lQI>!&irq3{GnX0zP(zI-h@u? z#~L_&wi)$q2L|+dAV2F2MuHhAe|`Y{Ba8n{6hm6Q)eAK-DU{Vz&moZ-LPlN9O?KB8oFR&cZ*i!2obL)Fm!kFKii@ zh0IU?J&UOE2k;$}=rSvw7z-L%{Bc7PySsT_LtKPylpw|{u)UrvG6$TicKF@X&P0kd7Etz&3+U6>x|a8 zzG!5M{9NYKa_n^BJ|u1XoN7c9ah!{kRQYl3fiEjT*MEbIIG3cEljTh{A^T`RtiO>5 zl@D8R`ed2kb!OVH3{6bPITrW`g8kvzQIB^yyM=yeaAhcDN-#zh;OG8ajAvXQg zuxF4;AKVvPri`!4)mHV1_RE zlvX(b^9G4P9Q79vaw-BK8?1iWV#Db;b{Q_5#HvnaA<+GMr0JI3oo!F3!`M)TF(rl( z?vu9Vvn&S}Tl3(ob(8HE2tO8Qp$x(#yW00~9}!)==&>ntkF9dxe~Jhq#&tDr!FCOX4NQCYAD-a}X5jq&hi9k% zo(Ld`blOQeac4IV`xTla*{5)SGsO|qU@6(DKnqSe$j7mfEUxC36q?7Uc|ngLf3u`3 z>~i=eou+Z+)qO=cX7;Y4Xut524^pkJF+Y2eE=qJDhe#l-gDwGhjr*LToYHAfNpbh@KJXT0ZozmsX(2gHc}-yA^I-|i`ES>ZK-syec?{p5|Be@gjh*b@ zz0jnDukGLzzJilqgoOGi7H48w)ty#7rs6TF*m!V&BWd-Bp#A+D*q_`$DBlG^&lnGD zWro+EbjRs_vMA#+S}47GW>1s!^h$qUL-H55J@1M-$K~t_V1R(^Q~9}j>6j)Z`+b{P zM`V6aFAdaN)q&&n#F)v1D-Al4mJysX5Y^^aEff0}SkfUjUo1)kZxT|YN3U6 z>DtLo7IbW{=wtLOW|R=U+r925Sm0&AJas&=QEwf%-HK%xNx0QK=Y|)hS`&~AFz6X` zS1R3y4;%ITsyeZ1H7Y054FiBLeXWuis7|Yjwdmtq^XI5o}5R+)i?NKY`o4O@qap~>qiZ77-S zGJ*+_GasuRp0 z8UBYMZ~vZ8K)R$>f~xD_s!6xd6k#jA6IE*R$wYSXsDZ2O=E!H7u#DW{yC~Nk#Gn>v ziJ6CLle|HEB)!_kzyr<_da0)Rf}~9$R*30%oo@%+B?isA}_c$aq;C^eE=5?dq&?40<99*Xp*z^L!<-FEvQt!F5ai$+TUW+j_BwEliVT;@pM#O`=KkrB$Yv z8-r*ceKb5apNR$mP*RVAT?)8ki(kRs-Q89m&>bB0DC<3~HOF6_SD5z@OBH>^^Z+O3 zdNQVO2XzN40-US7SDLgy<`jRP(yM8NNwYjSI_G51vclTd=lCr=n$K005=DQt4Ihl> z`JBwaLi~6=(Bf#_;kU(?WgV0)L^`J);Z=1p&i zuh9OUQuvhd1^}Q(N~y*5p1Xqr`Z9iyZBni|m;Sbh#TW^7$}m#C_x4WL95JxdI$r}_ zND;Si9VreYa?*)AxGgmX&#|EodL-c^H_WZRzcyJSr&@*PK2L!Kg;1RqFLK#n)p?ggDR(I%KPz=r$K#pv?&fQtL( zb@gjOmJ$I#yV<1@_(fdd&#lPi2ZD?It++K_1hR#8R5|k4_}lQQ&Mna0Zi`8u`q@2Q zd8@#j(xKSi-xw2-B8`m=_ijFpH3wE)cvM(i46~l@zl|Kzgq>o^m!k9MYB7m70KdAjF zQ%7_B4{HCnL*joe93l<4z`g3!Z_(sHu&Tnp=xiLvWdLLU;$OzPD(p5} z#Sei1Q3?p$n&80j+y;*!AO5(Fa0%TwrWI(}c`*9q681aVT_l{t>(gqSoyKJ?79pqM z!^&4g)yLq}Vov8}dmIH0wqo%xpD^#cvm0C&fU4GabNgRxMOik@+gCm%oXeiV|%x4N#8d-c*Gm@qWcNU=kRS|Mzk@GwUQayQc-x zx(9bu^_C#K5kug2lXVjM_Fqk@*KShE1-?0&vv<>GqTi&Y2J9TLE4=e9Zczw|xnld4>yF8LnNwz=h9!&;+W%v>P3Q64gNehlZw#!v~V1xqE|0IP#m>zyPC^@%=jmhGPP ziFHktTOToITQE|2uBAXpv~<`jBWx6-h(|+VoSp#HTgpHF+~8}dkHevB zHgQt&j+Z})W$AU(#Rae{(mx8Rr9D0EuQ%Y})Y<$Dar*&g9RXoPzXloh@++moFlkv6|K}%(ZX>q3i!gsBBYS{ zOG*H@Eel}oB_AWR&{6A&Os2HgTje19DmnHXmK_P=JlTs$3q1DC>9EW<#vccf#HM2y@|y&h*99Os z>2G#meUN4IU%`Rg37IJp^->;j1+mGafzSgvPc;$=_PN0hP~{|4O)g^EjW3M#69z$$ zsxDebd&IM-e*yUS^#a~`$H^u?iqYNg(#DA-@3QUekk2f%J<;QNP;!1wCI<$X+Boip ztB9`{05MAdfZm7^yZj~K@8Y#j4%hA!$77$)s>Rv4B~BK-PokGn-e_D-2}aRZ?JD^4 zI2M>faVW|};U3_s&~maPP<_Mm>f$`dRbxi&j-y-6&7_Uw3kh_}%aOCji%5O^ZJm=T z{MUp0g~+M3Tb9L^_(S@7W@aVVR!Vk68`wiBnp+u%@RP3f4_@;@Mr|Kp-kF`MF8R%| z#ORwFQwM2#P-8=-8=`PFFgUJEfJP%lE%-uVCbkRYi>xmvFd8A*+^*1f_>!AQ6a!3J zce>5xDg~gnPp1`0=8|fkeZdOg@ARaAQ3*hNn9)Tt*YrEflWAO@0xfgM)+iyfnnw&n zBd&~6c&oj75&{4OJ-;7jaS3MdlK+cY|I2|97yv+CT2Sw1AB~@P1wfj5lT}D+aywoe zFvT6C$pdK`HfiXOgGWu+XZnUDIAJVo0uscMNm*vqt2Jpj@$EL!lOny`uA`tY|JCtc z$mYjU91#D=Uv|uzO#3G_cC?R*g$O8PEhzijb9P@(L4B+zcVHH*O@|`CZOptUb!tmT z9$9P`cdBMpa6OnqcSH2jpzcd(dd#AJXRvL^_XwgF8+_<^r9L>f5F5n#TS0Ak@?cF^5a|!ws|&9Bn^c>F9cFco*=I?XkvYd{o|X# z#T+2>Lxu(~J2fVh;xG|Ckq}8NZEe8h+;r6XZ7V`wq5VL4kz_NcZYslML3T%>7h_Ic-1 zGa22{p*kqGwpSg-=W^b>oUvaYfIZZYFHY;>gw;^A2oBh>7wDsypk_nfRv8OLuJFq}s3vHb~NrQyn_c;K7 zbb5Z+6D*h^D*hkYBlZ5~LEk!Xz>WC3|4gH1v>JPPMzk*IYtMeZnoWc9ySbb%MU<@I zZFB*;pUJ^s0vfgZZO z(&)N0_c-!hf=IBQr-=$)eXjv79#%grXH@jU<9JX&@sK!C&9n22C^u~B0E`M|!bd>) zQO0k!CqLb#;TVC6>T*56+@vWOhC^8O#Q+c8a(p_=;?5yh#ekrn8Wq7zwDIEUw_Ip&Xp&IiSf@|pvrYh~pCxHUI3%7IPyvZ8Fcy5u3~cswHtjZ>nAg{a3A^&KmdTs5fP?wbW9P^8chOSeSq~m z#EE6nU&<|1Ji-gj2AWq-6Ab;WrY=?0B-7s5l%Pr5WvXc=C7b(3BAYpinbIlGD>r~q z?r(cQrz9&-G8VNX*$1;}-8?1oppv42 z-L@6XAm^!_N+CGsW=2Q%Z|Kiv*D{xTcZ7|?SOFxTIX4@45}vJTO@N`(wZLF0hbgPb z7D=rj1`)j?88N7(2nwD+GVjDA{1-mJ=s4hSHY?bAkPz-v^rFL_Wcig#(~&KKwQ)t9 zwIYDjggm%~t71{)D}P~Gpd-O6&vWQKaah9UN@CbO`X@JJJ;;EGkKKdHHCX>-h#*9i zpJnm<*hKOwh(H&RAlp(4dwn=u0yHrCFw_OiX_iE)3p>?XT$KH?0x~)tYZ=%w^%HS> z#LBZ!LYpC~ls~ zK}*#GgcW~?=pvXQYx*CFDE+Q=w&O{1qBN_PXkCkF50vfK=XT{0rbw|Sm#6l`6|;0^ zFQ&Ap(2iy5;-T@&xC-!TZ?3F@oGe(iu)|9V5*%Q8COoYy#0{2FAz|;ZhEzK-b=K!G zT_>FULoga}haQhR;|kswyLO=>t_xlDTH6*|@uJB(qgM~nwJmzcqp4b$o~=9zOhK7_ zq6${@Q=|!201b8KX?T}0zL(2eXx0p*#j}QkqWUV$ZyMJBpokL8#hCAS@Gy8~xgxa= zi3uBrF>uJ}tM95e1*m?nyvP};HN&_;B5b~{!3L}cMv$#eB37}qFKMR-ouUqjbv-(I7I;!dl zEK|w0$0Hl3Y~)>9Bw(|5MjNMCz_K{hz0NZ^%9HFjJE&5u^fO(fd5N%Exdgj?Eskbn zjc3xI_aI<%#$^x^egLN@wB9~CVmnvWRf~Huk)~gbVFk+w-h=gshmQ{Nw#gRph{P}e z^y8cmHwzq7)&%>yr_3J=GZWeO)6^a+eH33vY~WvAtr2Dp6|UWu^6nMRmZ@MTNwTqK zp9$pC3W#tmD_SIwL&=(4u(s2vgN<+GYOwf@ZY`E)?fkAWfM(2Nfni!r?K2HRFRUAq zJWEV=-pI9lZ{v_Fc81Tger+4goo#ft_f|!DomaT>4j{cg>O$X`%r!yTg-43aZL>)Aj;7M|^l?3)JlL8;yUmH)J%d3n zFVxlhu1+`DGry{;gM3UqFSL2&y<+D~;~a&FW^;uGYmh=nThrLE1F5aF0XU-RGH>qp zo`PLNI2Gb0Gq+Z2XGAutp^ZE*+&_O8RS|WxVS=e8r__e4Un3%_`VL6)^9nytY;a{= zBcgf_z1h+pJJ8|=HB6aawKd`B6YYe;*uX~M76O@eB4u$p)v{o1f3Y<0#kD=4P&w*X z=(?^vPxAEh+^9h2Bm2WmMrkj5?wMPYPXDb}@2-5Bdwe(7zs~0xX*dc*miO3SQKW+) zeQ|+-nedKkLH*Eqh;f6l6g}j+ls7g75`DRm6*aO5Cn+oy?H_}~d>|Sy(`@;}JaEAb z)j$7%d9vDt-F>-O_XB+3-cu;rV!#!*rQ3cdDQ*~|mhM-&wDn$nwU_?YikbrNgun8Q zteaWzM0_mP5fm!YL5&{7FDt3P0pXqQ{f!EgMhTvk*QzlJ{j`KYxPpd0-G0x5=acB` zrwE`duN_quCiWj!{YgZ24Ft1|@^(Ah*%TC6vw+&2##{C(k*(k-zv{25GsgFik<)$Z z5%81vL_oWP2=eppnxeXqkVK9fwA!@WX#uCQ60lKy)xQJgJ6`gVi5K+DU5uEw z27GV$!wqXMCa|U`owjv%h$FDJgY3dfjO|-xbd#d%bpnnxd(5U6QD_0W=7@Q`7zcS$ z1;y&js`Z%RATtH}K~VjCxZPcA4;{e{nx68(pu^gA_os!;{A3srKf@3p_B zX|c0idhjQ8YIrhqbG|*z088vsh0n1mfR_h8=OoX}?iRO^M}l@`U)j)-q76;{2EHc! z>a1#~7tgT)RqernLZfNM2(+&E*h+;$fUK>lJ?k6Ij$^tX4Jb9c*6rdF{tXW;Y1U;T zOY&Uh5GmYH4#G7&G;ZK=7Alo>0fV9KG|I0{&k!m$47uk`GpTe7V<&$BU)mdiHu?;t z!}dcN{Bn?cN2ROL-|VSdUEUE`jAX?-(|##kv&+1-E^fGIx1fz5#X=`fNY#b(^KbK- z4e+`7xFa6eLdW;(HCb^hbVRcgX&b8bho9J!%}F#JWLR6^byk;3lC9U;A1O7X@eREM zig$9AHr}Msq6(bFYXg_+XIt=pFe=sQ%@da?Jy@qzeVOb0P5U{y+#Kwxrwx7IodR>- z;_>FX46H5{rzqrA{M_GqotpWayI2TNUSgqT8TN$BBGa)3`UrY}Mr`mtCilC~W~6eY zcN8OA_FKGgA3SiWPYpo(hjOe^%`h^5H~@fQ`i~m?akJO?`yZ(AlS_RTL>BU4@C0Sj z8%Fk!iMJd<_R~z6(;kC3%xPqG`|FK24jmzkIt&E=ohP*+k8w?ArO^W&$vL4J;3OF|REoYu=;DTr_oX3Z&WpuS z1qCdyaL%RAClbTeg$9n1x1-9v?t#07IiwoL_FE@4*PhY~zQRV0J9ezY z+6VQHfY^Dl;mXRRwz%>GaOnneeWo@u&%!P*VBG|gKjK8V_-QGb%?5=9^cU~}s5hLfJm9<^FI?ur z%>%8tHYj(?EHlojGpQ?YAiWu7ddi&f8=TioJTCvmH?o${?J2KFvEEGKhQ`JkkxNtX> zMkJQ^+3(whE5c6}%~KcDtqlN(0s0&Y9usaA8!<(~Ol$}^{$$u4U#V`<%hd(oRuY8QJsI80R|BoQ zFCgc-m%c9SxW0^M<40NROV#(mHL3fkmus2$O)+MJm9*4NVrzld04z;%uMMDer$Q3; z7niula2U(S2HW*ClI%)qs{`8#j~_1zuT+T>)5`b3jUc(o4z;vkAU2UH5~ftg&$$)8 zgaj8}!R*L^0`QEd{-^D1g4;d`zb zguosnk6!H$0M}Io0GsZT)nHz*Dh4b}7bA<7dR*+P_tUDQgiy2xA$o81iyHHf!-j<& z!?NU0f?dCM_=|UXV2|1iz}_1jQ(y@CTSAiglazzO4(3imzvR&iJx=P8d$cqc+Hl=U z2n3VIMAD1#gSvc3GIz!aW1Xoy&1IC!Fgq~YYP%?e)E$ZR>6fPI7=IhF3Yznf2^gSCsBaLp&r#d6S8d5`t z^9a_VK=(4<3);hs@P{Cx&Fo4rh|MRi!je~FGbF3%-%eGtE$!g92$c)*ylB{X>e*7A zrucl8Dd3lW#NhF!fBp`D*e?|U(~A)3Mj6v$MZ-!$Pt_8bp2+vGy6L8w@Z zTHGI-0~CML1(!_@&?w%!L*||TvMuHtVvp&5-DB-1*XS7eoozen0O+EK0x=>HPYceb z{Ku^Ff!5j>AZS54!J`Z`{SP8xWe@iQSuj{!+o`m+>Dozq2Us?XH8i_kkHL`9^(O%p z|IMp7EP|#VY1_1kbDqpnWJ|X1V8%rXeld^3W5Qx%Z+rm(ZKNL)#4mLGRfTb8AR2?< z5tcnz=2Z{Ufj-J4$1GB$lmfpve*#Ketn!CiQi{qGO2QvPO$%mNAO9yp>9C}!>zQ+y zKqC@Au6tke;|L({OYhp&QZ)gL&moT%YU|;add4tV)UFnKz0lPXANfwl|1s;NR-vis zx#QMWhv3ljB6vb*ri6*1rAJTe7VB*yJ1J#b%OQ}gQP51LO$WO5)j5P8YoGXS`wb7a z*ydx%9lKZh!oc!LyFkp~GTQ?n1-*VT_<{`c#Zta9QWw;IWt{}yI)kgpA45PLSq0kX`mbvGVs%>0|{byw9ytpyR+R5Cy4ga-t0z84It*9uRF;Yx@%XUt1)U z`V~5)nDmnTW>v(@;J?{8?W?Q0?K$b$E}GqNbJprKq^FSy!=p9u**5D?qk+XG=6 zfSYWSb}SzyI)Znl4024V;>#;Js73i>mhm77i!>bYs6)(lHr6mC)8v#)v^&E9@t4O| zD18ZSJyBO!71Jv;RHWDNP_JI?n=JVlD&x#{Rd9|hqxCK(z7|94c^~2DoRzth2L7#Q z#m)>MG=_njaOSwxwOobsI)+Ub@V!i$kVHk&Z1tp9GO;zY#`Klob(Fu=bMrnx@;w;XGFq@EW=Jdvx*R8;WOn50OqXPs3~r68nZJe z^hLmt7h1H-ubYl1yzxs?YB`__ZLJ&#@51WYde2)V=#xMZFR^OzN6~98@hZCUI-ETu zLoRFj9+$D&1>qba8+?z8J`)S&B>kydbzkoE&G{N;KXy2qjm?eDif6mRD=0r+~>IAtw>?l68ImLDwTik>| zYCu}PNtT@L3c?wBq_aOL@MJc%V1&BNWv4|G`iu`%L5bI2CNP|}mKGmOA2#HPm~Ol3 zrX&n^biSq0a+PtS!aRoorqpKO?oXl}-`1d846b>+E=00S?8QX9umgrp&uJRCmtt{dwug-}Edm~0V z=;9j=_!2xLMW9$@l#o|ht70Vmf7m*Qz(BZQOUJft+qP{R9ox2T+w9o3ZQC|Fn*1}f zc#F5a`%}18^&J-yM0;vQ@v3bu7r(yi^qjF=CE%0c3m8WGc$FT+QjEo9(o!eS-Eh64 zd79y{(L#+z&;h#zQM$$R);9CLy4#;W#RTaO1Mb(c1CZVZnZG>6R1Om4_@6Doh)mcP(4w7;cdisRXbkbic`>mf^-$X0X;N11e!frfMy2+7-L7TCkiVl0VYF08j zDEzPGn(;foK;hBl#5PIJN;YgHby#lF0|39%t*yqrs-SM`3$dG9uS(t#_DT>zHs#`Z zirQ<-z5$XF`8Yf%Tx55DyD0JzG)3VRx({rHNVq(U8#SB(lIR+;C3m4f6N*Nc98Zd- z{>;(_+aouieU&LIsTAbiiD(|a)D+Iw z0nDH31lGSR%E(5LHkViao+k~@jqHXB$t8OPrexQ4b(!`GwcnaL9L~n> z##cb#8lhht^Snb+tU5vl4q7M?7j!#~N&kfRqsI#t7z+4&r*%*=7k)HPt}9NESu)*t zf|9`Blc&(MLM9!60Q@U+vluq_8^t0=6KELx>8s-*L#eXv`kM%^V{YG7QU?V2=X6+@eV>?><- zMR_c^F1V;0yNYyGch48!Yd@uAcM0c&NTVHTW4kp4E7izp6= z*NdG#sx|t%eB`Cp!Cvhx#KP&_Y+cW{;ADwqMVoF5 zd7X6Wv55iSh&|yUE>UO0Kg^%knbbEZZ`H9I7~n60PX!`fz^=MNahCZ|UZ1GjDH! zTS@H>sE|9t;vKMWY2lPZ-r4oh4msj$?%#om?@?bpc^N@B&TQ-vF&ePzJT=MD(HdbT zwzF1{y=?7De}_v5v5!a>#{wivFp?8@4mbKHG=9|j+%V4hi%EfC`-wLA?Z?A%Tz?h1 zw$t7+fI39?6sI(jlj(E`scXkO9V300CZwh_@+5&+YZr?57cps$^(r7F$Oa_IYJGLk z@$c9ayv#(MeLa##g#h|#Iwlk0Mzgt~J-Yw}lt<|L>A^a1`oC#&sl8dBfJ55Qp__Hw zcaFGzc)iRy2&RHBY~^%2tpSY2wvgS2rtc(gN4|pq%V=dI998&uWgG1}0TbSHmH2{Ul!+VK+lOuK_{F-!i6IvwA{?9jTTtdLD!OR? z5oNovm;vq4a^XC(kjyu4-9^J1?npQDH-k7o`LLb}mX8-8z=wDG43Kf(_4-f6ng4Ti z|G1Fk7^(SKMI2Fw5^?AU5Z;?LNus=TL$3WIh~N%rU(UF3A+S(-SHz45X4=!g3(#h` zA9v;@CVc(^@1~O<;W$%)4~Au>@A$Em2>xa^Fy%PuKWt&te(IKdI;b~_Eu&`MHWMq&;bR}&eE^4X>P%prZuTxSa;mn5FQX@9q{qx*o!uKn%zk*qz z;{Q`%G5?oA34ju-1lg|al*25}PSRc}FrbC6%`#GW1ubWV(m}$sOL0|56w+FlE@K!{bgtsBL(2Jp@pI~ zD?*bGPNCsz76zXX4g<25`d%8~f2T>%4rgvD~KZGCExN1X>aH)+@W%>2k5f%c4}jHTIv z5ML8|^e-%DGY|ewNS**Qez?#U8xcHzPN^wYBH2-0V1+)A3z|Pep)cQ5 zeh4M0W`;?V+R`S1!~+qAJx`uPer|GD1nCfmtF?&>)O+ZwP|-a^!-g%Ee7^rxVUdL5 z@x;51@fm=!o@Y97rk&DM=1fOH7ie2Hz@aYd)0&@q=yFKq?J-PwTmG5H#Mn<%N9Y3} zsl*mFez*H9=XEy56f!>=Yi>6Ur6mHk1>oA0ec`f^^f#0m+Je5*r^qd6$6gB|$U&g^ z+-Ln#W)6b{jDx}PdmKwcLh#vADUD`TPAqpwwcnJld`xwe$XqRVK3V=I*>DIe$Y{P` z5tmk0j50zAj4iTnomNb^-k28|5@j$V%*NfiO z-D7FJNcNs^+m=CE)Kl{Obhs1}iawM55(G4(_hp1unDVpA6;e&V-?s_%NHix7Zp-SxZax2G3(XNrGg7{G7n90EqdRvDmuj z4~o|q9OA-AYqCQuQxYv4FG~ZK>vE*U8+{ljR?4EMl+8}EBs(XY0sgFn6&SETGgKY8 z>hAGI=-%Tu-GOYOS7CoLXvb8GsA`l}Hb6*s2(SL-7BCfS%yP1exgTI}b%sOKH7Sw< zuLXvB$s!G3j5gaY4TJt<4E3Cql)rFXhfoQTg&eIC_ObA^Vsade52;G9{|gl*5zLAW z`yYb+&tL`p2WTCa=#CFb3PJ^93Il^pJOgD;@O&dv1zYBH-0t2sUm8T%1mIy?S|9oK zf`+xHMi2@noOb zLxmbM{;3OrudaUIa2EZDO&}T_?YX{0kkg2V9Fn&*W0H(%Use`pr?dz3OK}Dk`;k%) zfyIr5)L*l$4<*-jroNjL65m?lu~tru%8JyJ0An~b78$utM#~bL*d?kU2u?E&k?)g* zqPGghw3iz#-|2QTWfdZn`Aiv_h=&r6)yom7f(G!QOz$>W@I4BP^Ml-_ubD7b4N2H! zFb9^?;oXBNW`0|DYSh7%JuPbh$JV;MQq+LayWfZq1c*ayd7MlEZU~%uhu)7_)^onN z#Y@$MxFqlE_kP0>+5k~8L#~&w8dGZ&39?Vv?Mtsu*#1aLKzYc=pamqF zz7gZO@_Bmn>~^}DGOEmogIM~BYQi;_;@W`Acd+U$l$2ymigwFuFrl)1m7DMrH&&Dp zJHX(iA@nWc-JPRW(s;YO*A?e=v>_XFoUe#q@dZ)Acr{W2S`+EfPu9`J2Fv?(^Ad_6 zh}BlNKfGG~cm%34Uod<~0_P*bd*64iEp?vTSJgE(E}NQ2=yZ0iO&~$8%Yfjj{CFygI=2DtrtR)iAot zdw3J;UF$fBXgw9Ny7bZlW!Z)|r)}|Uj|vtn)J!;>Si1^LP2}sAWe#=Q!_O35_Oh2U z2+|uFU?;x1`uMGIfBsSxw(Fn8l_-mdTT*bQ*8iCIJR&CkC%VsUCi-QPpERb((SVh$ z7bE+ozpzxr%>?1OJ>xDEL8(Ly*bO8db>7mNRXM*B2oS{iz8w6l7ZMVkjWoS)CCn?5 zFP94gEPb-3^4h2NlR#OM&&dFTE8q`|f{hkQGsml>ULbFU)Nbps#jDjU##SMgaCPtE zNn45DHADAhE;o;i_MU&63gr;FX9C$W0Fr%j9kkv*yBA)9e#UDAAzPHL=gXcGy2%F; zCL1txb1RV&pLvaD{UqfWq+ds7-s;*nyvup01we8lP0alxKSa{oC4ox0HQ+ zmKjyzdHlj zEKRObf=cX}D<^f#eTU@Q?B@-p*+`3MKo2wUamWH?1EmM^GH+pg+^Ud}nkI;ZG_)FJ zjpW>&(8P{Nnf>=pre*Pyl6~t9g-UYFssq6eKklJMC|J^nrtX`|5JY^DmPE|dq-0RY zVK}46EJg_Dt1+sXpQ+qq++mMOZ*UBpCtktn8XIVeAMJV#C<&$)yaDd%Bk}W3RM|-d|B-M2{(pryb8@oBOu+NJzyfzAOR&O9 zjMUMyww%hCNO}%n{|PE6E}3+=r;rXd{;6~6qQ`x>CVU}d=NsO|I z0c!LXl}nV{?0kSq(zg%TVR@U}NmtP)d~AU*6Rrp0GTw#5CdLQIPKI}Jwf7U?vF9W! zxxm98^dh6G9DBLbJx{Jt#^bHj(w*D-P@(6`oS{miS87mFT6++ctE!?{jb*e zd#+9k?H$xsD=Hh!t$Tu?w1Vm)r%u_^5BJvq0|m0O4*5+F4l9629yUYD%wu=F{`XGx z@496zivX*f30u{8Y5AXEOwEG8PMmMua6^I6eExjG?Rdq%n-hWl9#i}jpns!*YBqU1 za94#Jc2M;yjwun#fJPMiCm(=uugR{zJ%*libf8I-^w77vg%;M=$A2&#%?BPqh%JZ9 zV7R{3UUYPFwn}9DzjfdmLLtUi*Q~=HnN(^F88lHU0jq`DFyBPbKX4q~r#(Gk7v@1c z<`0Huwb5PKBj9Hf=$VEYVZrw=ziHu>C%c|~5&m00UI>1mp}4$P#qQ!6)`;-3IjHGchV_p4jitj!PPuA-~rpd@kmX z10g#O`AF=V4{NuOg=*p2L0(1Mfj#3~xcI|=?9PY)xWN+>g2Cdn-aBHs1!3iZ=Mt}w z(id!Ed%_*V!aHiFVM<}o;bx`l)Ef?GTctKUx3m%Y>}%1JS1E8BJ#)Z$Zn=mHeznOU zn3a3_KeYK@F^K*D8aP?nrx|{{6HBRcOvpa(G-!iSuDTny0Js-S!9L5^;h)St2`H>8=u`;( zLR%g2gLaKXCj(t&3Ms40Z16$^4-Ws-#c6OSbp^zHYE=I`3h*FonpQwIcma_LXG-{q zo|dzT?G}{2W4qh@?g-{@QC~Pt2Pd;S*JAV5Z z^m%2rf_39b)xoSfk!*{C0el1KtOZ9pzdLi5uv0KfhAyzO1!hyA?zLbr0=s}DE5W8I zL1fTPx?z^%8rG$VhGl}v@FoXkeNULU`DsC^8W?_A<+cWNd?S)!eoq?ixh6Pl+UnGn+DavrEIwi>4_N ztPkJSgVi`$nMx}CjLsK)xeO5_)Mwb888hRgCW8ND8T&>i-+fZ}JzLbqZq)V^thlK7 zO8nbzcphwo%!wqn7aN1}i`qL<`al50`!_K%0OplW{YTzKoVyE{3=o01TJxj@AOUIC zmmu^ ze`p|}Oa#imKL@}K<2eAZi?K~sX8_0FK+i${PNZTSDD`8y!DTl7{Y*W@m}l20H}6(D zmY<#u=!SXSxteq7j)K`YAkIOWtdub{kkVXF;=p6G&oH4$e>7s8>j3DJbwf8~!JjUV zq1!5+lEh{=O9|IHWnM$Se}<1bI5E>5P$J6R(vK=beAPf=%#p_N^=g*v8a7;3P=kYv zW1p}G*xE!#Cw$GN*JY&dB#*S25~+8ROZwzpnTu06EZ_U$2yIw%Orkiqhr)$0%l50w zSM^ZthF=cQ8gYaD^^vry=9I9hv}lUKwEsEfiFr@;fw?-Fc6N3sh?fE{NIFkq;op3+F#wT(tmO70m2g6YX$X- zmZ0bV(5?F*M@E|^G9;ED(DOCh)I!fHw39ty1$^|PH;qqlRDhwTZ;3E;uFabf94G99 z|LoY%37*|1WM0kbl%Z5OD$OUjLW2!KptiB+HVeEl-wJ(YGjx04DS2ccB5560K^G6W z+MdD5%ZEAr1#Q%cVyg-!0M+R(2q`8-z)cn`$1!dRd)u0L#`e46f!S(ly$UxGY1D%V zyZvq-X{Sl%;nPS@%A)HleYg?}Hkb{Q;oDDS%MqUk=uBurvRz=E^m>*^ihqbIvrE&R z_mqjYET3a1ZjTrHeueRz3Z*Y#ba$1xgS!as>D4YV6Of!0LsZW>za2t*%PWyLBR`$N zjrvqxVT~orJX+5nD63^gFwHb=*5YC*9qS;O)`R{V~;;T4SMNq7iab4I>Fiz%k8vxu9txsiL72i-9wCYIDl|`sBi*`HUA<(#&}H z2ir24EVK*?#!=34o$SxW$n)&V9BnN$iEq{@$mEiY5O4Q{9$J|&j#1vkRp)P-MvY1e zrXeXY37-2$dJM|2$-W~514{Kj>#796yxRZx+F_?@sCHpsc95H?-b5&Vic1IL{2Ngf z3WHjl^u-(@e4*Iqk3CVkxhv`3!SaLT)7nSla;{>k?CjQ>#EF-o_+H3_0hZiogg zP}3sd)4>UIqKDaZ23v17jls_ zKQq)I*Y?usztH^w0HB}*vub|{(*IkuAt)*Xawv;AY##Q>clCn!x2%)*lZDNbSa2n| zAuvm}*u0OF?b-v<`XYe8e7tZadmCUb-CoCUCKAg_BQ$Nbx?MxNl~>J z4qny`!{d(qxkP%1!(Mu}>3sd8HL35eRv0Mir@JpMXZ}bcNW3#dOA5pbc2ZW-0qjjA zNH(J252(nke_tqXf(!7OzzbWl)biSkf}P`y$D+Oc zcuF2l>~JGD2gSn5KegK+tpr!iz!4*G1XdZI%6QPrzoi0Gv^;=koKs2_wa4JUcq~Jo z6H1jPTC{5i!a5Z<`SR)-y7FYmfi8oW68z2SNFaBUxDzA+Vx4C*lWXL|2=4ga zu`$|U#WP$4U{lJa`{e+^=MJA%N=L#f0%NfYuQ-gK$y4XSWKT!te*R$Gd}W2nG@$+59bF5lkw1nZ{uk-jO(9&yFJ{ z_!#dlLxrFnlH1+t=^6o~+)}LxYiGiea!UK36GWyr-#d9P?sAT}KTF)cW)ln91RG(} z0giHp&4mSv(3D`)!%Nf9n~#?|I;#_a5Gx^D_88)N>%n{X*_81Mb+NP%Z9XsI)P0}I zIL{#mv+5pPQeZW^$+iHC1BF1N&on+2`5T+ZSTSeLLy7z{N6{F+a|QW)VZ>HmrYt;& zMmld8$Z45@qwz>4TTp~gO9u#mc*c-_o%k74&!+MbVz+E}A)=ccx#7XI=nOcOsOOj3 zg%T=QUr*$H_$mJWcChSjYUhUX9Ab%)nHL|w39goZSF~dqN{EOYTvmp`G!rK5G(<{7*ucL*~TKLILR-- zEdhZD)^GMt@mkO2XLf{+BfCvdeZ=$U8A-+0{;u+yvFcYx)n zCrT(NByZ64t_^E|b|2yTl>|l<;#d0PbVIabTMK8-MK)%3H&OVDW%1vdAs~8F-Ie5> zsEnoKVX<5XiE)yhI?2HVAZl#FRUW;sG=ug9(QNoUuX=wF*Dh2a6xqF2tn?}O0yV`s z?RiJb?ZNuWN8u4elX|88IFt>d5*-81v=Sg_T66Q#iNW-I)AbSqQtdSDnl1wf=jg}+ z!%v$4ID%(vHLEHJ*kVKa2HP8tFkrkmlme^b8JPsk2QbHLVKrThAVtR;z(}?5g9c^J zU^X!D*NwYEDa~$A#5nX*x{5XrX-o6t1e1)$_B}6hS1Mp?T5tS#W**HoqM{3*2Wnw} z?kcA{vyAet0+hXV)E_%buY6*sAMxpDw|n_r)VIxLd&dBxCJwl~42Vq9R;SwWtfW-Z zuuXt}_Pe_e5pahq() z)A1X~s~6Uti$Uv>v{)%xUdkLD5Z9vX5r|8qXhtZ|>X}QrI5#abZXTUlq*5D!+@V5w z76Qli%3>B^JbM!QO9hISNbv{!rR%i2()IducQovzpO9pPwX^@*s4qra#&fn;u!;`U z(>OQA@}+rbU-GrnwUv#;yq+}?m~>ue#deXqVCRD5^H89(B$v0)w8Y~E@fL>v(N#M{ zx9h_lH0AbmbDI!24$5EdfsZQ?fY81$t|O}|e@67f5H)7r2sC}fXo<4p)r)YAkk?K% zJ1FkeZ8Td+!l#k!v}$q>Z!id5_p?)cyOCKK(YGmFu0*uN)v(;9>bBsZ z3vvo7+AaPsxBDX7X6De!%%Uhk4h_mBAa&3yev4G5_zhuv4;`qNE34{+1-VZ<)9La( zj*Hpdl-FRNI6*?1yc_dD{N3M{N0IS=mLHTGZLFrV$vf_|*(7l(p4?N4@YjX;6V6^e zK>Vyqf13ef%y+T3bEFn)VXRnX!zL`HPmf0Y7NKr59HzXivK{?IL|Jhq;dx+5y>%xH zDMG57iHqO84>!~AuLm__{7yr?B9`2nS7l!Ql|+17;-*&Do=n(H=wM91&JIjq84v?;tyy zTv1T2H85U;l_9`_cA{*7TU~0eI{z>MqHqt&l+ol~==^}LixI8tJ?bF@lia9nW1dQlTx(09+To6;fr5 zgiJrB0lzz<8+wIM@1jNV9OXSCHPP2PGceU}znLsyPpkbvfyM~A$z~O_y%L&wkeb<` z!nJ@CvVBZe>$avGYOwP5msS_YbQF;vG^8;tG!Vk7C{xJHVZa!q(^e5@FFK&gOK^lC z@Q)f};AF{%21ZtiCJ9)=O&*KN{Vu5i6anV7%KVn7!KH~S8MAVf*{$X-;fz?qHPgkM zG13yiyc@duoeDFyA0|aWQgQ=gK_MF7E$xtM)Rd}3 z$W1}DvlvFFqw($D8aK-?u`(;Wnyy)Lr@^UFv!f+brUDP2F)c;46<{l$cdae(4- zNzA1r8hHlw;Zdh%XOD%E8kp=M3EJ=$fQUTiCxe8AcxbLpK7FseF~a=R)#JELpwClL zVm|mQ)eZ5oTW|r9dIve)V5oTmQR7&CB+$%@RX9U=psEvHCeVEyw*1TBs(_Mp#ox!2 z#qbMbd*3sPJWEqvMJsD8=EO9ZMNWyvAM5{}KGYmA3;`-`v-FnUn%C)IIdZy2+L$#N z9Cc4}EM{vL9_ZrzmB`k4xgDwLxtGd?!@ctJQEMR5+`Sg;60R?*wW(!^6&w99+r6bN zI4Nvs_BmA8Gr`>U-v~bv`0*I7Sa;D_lZ6RH5)<_E8p{e#tS6ELiuoR>5IYqsbb(*`W`a)YLH(^eoW zBFsG`0{e=tHuEA7H(D2p8&gz0+P{AystD!^)S}0=s!mRDk}{XoWa6q6RiH$# zJ_%N4UIek_OO=N7BuR;xIU_De3X zy{)~~n%bS)@x@C9R|Gwcet(V4ps_y`35hE?4ab+AokM&tq4V#jjVcPybNMPNd~SFH1?2&u z8wA$TQEh1AS%Cz_4vB41gIY|o{gP<*}4Z%N1-T_f}!nMRdjTc=XQ ztsN#)Tz_Fx*)lr+G}5?6g=0#(dJ5Mu6Vk54pf~RDi2CTHXR;DKceJn(D6br{`-FYk z#RQ~Xe@9-H7()85J>#~bJbuT#D)vq7@{i)z^KX!b!3lK&E1R0QD6^iC3 zwN$1E?I1AwR9dHJI6pR^FOAVFG`H|oP17z{XM@}Ph5fAgsRWIjr{%gW4>&#j?Nx_K zOansJpahTa~v#H~;um@0?gEPk+!YPScMm=J6l?s2^a$7NmSki(qcyo2vRymab)2d~5#0mGG z7a-i*#iNC{y0axsJ?A<+Avhj~ld`ICptF`A+uK70hb;a2lonIbaz3W@&nU%&NZ`OMVCc=BdN;69BbHFxTD>8Zz;$?D2~E3D<8ccM z%J@f15tLZ%besCMoC2d?o+AjZ)zIDeCYt{EHV54z_aLq`h<@PWgmB9ad#4EzXVAu$ zWTlK3+Pv8jK1sG+ky3oDD4cO?nBAd7d3-$PZoa1CO(afbuv{2e z6p7*W17?<_Z@79YRX;7q_IFggV3h=0X&XD6X&4At4JxZ+6KqMu^*94B@O5 zg^$bxIK^1Uu3o}cCEwp=7h%tp`W1t zRHRMG{SvI+n_uZrBUD95=u!Z4#;l~6?i8Ct(1azFtGHOa8p$@b+}04XN70sHU%aILLCv09nXR}q!l>~?7 zv`Xj7j{QnK=Gcv9@bf$Xg)E;NRT#l+GFFq_|EWXO5d8HohQ~9QC6Yh9D{>MjbMzm=D|KNcMkTnbSZeg{bq4ytuoeK#V1ptp6h{K} zu$#%dr#TU!wS|WH0I{4dBqUOyCx3r&o%PYh(PTH|lq;KTW=avPCnW1g%ea=Ro!qS+ zS}z`L4UQKD#(70863W8x1wM^MMV@h+6Zxj_v*57TOfQZ9T|4Cp)9pVxJaitW-mRO$ zv{Yrqfvt_&`bQcrk06ybcPuj!aD!)+?N8ZHK=;Lom#6vx>ZbFThFv1AjLRKk=d?0B zWvgmGFhRiH{I+#jOWOZ}c;tzs7%nRXWL}oxU$Lpx8`OBwl8(G03 zwuZhM ztU(?@4egukK>h&4UTp0)Zq0IB=Mk_Vbckv5pj*jHqlpf&W0TTjZ*u5=-n(BA5$H>r zqBpT3ja^zxUV7!#=f|&!$&1|rLUW{Spts4e!~h3 zlOei;%V)6B2->{8Z*zhZ4p;QJFjE_c+gooegP^0Bn( zNoSlj*UG?;hug3kWFlAcs=Nr@6{I$M#p#2gOD{~h+J>9t*@aS(r+YVTZHd&=fZ@pU z(A@!DC7b;G(F*ys$JXK_SDas|!Qd(P(K%+G{{@b7Erw^iE^oD5hK+JGINMuobvFND9T{H!p zqo>rSl1VBXPs0pz9~>Q>n#$ihK@nP%NK4x>JFewaBcIkgG4m`@uE=GYBqBc&MzJ8CtwHoJ;P|yu<~ukP1wEws za1V>1Nu`OW3`lBRg!d&paRTav4gP(B43R4O*xDWf2Hs5mFI8 z^9O(|uNQkcbgAM{IJlA+#yjhQgO-+H4mo3dnEHS^D9e25DEg5@iOBwjRte^1$@c)I zElm(P&1YuY_anKR_3MD@Cyi5oDi(UbWjQm^;!>Wj&R$^F@fW%6cgjcOl%8~8PXO&2 z0%G3NK&B^NUgfC_KE^zJwG!EWw}Oo}D1m{=2rnJPDL+A0+Vc~Z=wt%Ym23TVBxMrJ z>OK8m+coqbs<3!LaW1lxnXOL!7h#`3MBTPi^o#F;VbfXv+Y92{#5#M6Ok7M`cROlJ zup|2PaYP7N+#qtRd=LsQ6`z#i1qFXb8}R45Rd^O4?yNeRE)@?4x$lCih+~211Tp-A(R|+t>X-%3ku!U6C zBna=II6h;Q6uwNQj*Lz(f9b-y8j6OH8W?>ratpWm_(C0$vVGCk@aEsX4jhW@@6X~9 z$5sY*ELf;cE1C@$8@7enP`h(4vNNxeb$06i06J$q^s5B~pK=SS44~c)57-2X$N>C^ zBqk|G{ZiLl@4-}Kf~%J>2F|R%0W^bNDpWmSuBuq-zgP=49=HnOUDMnGe{cE=Y{lY% z!wV8LdFb*BZ*wDr$AJ2)2|uv6^kpsT#-@o*JM0u{M;?tB20&wCOHnjt-i}F(opi*B zg^P|ce+(x;vrG6&+C@lDn+C9Gm);pkOR;aDj7u_mzAZ=S{Wfd05Fu`_AhFTPgETJykb^rD-XMR9tX>+Nw7%FK;m zPG?b^yjB_6qA0Cn3`|{UiIx?nbP80+NHcvqP)x~xF&$ebNE*r0i;znaMN_QvW2az! zF}7<0Gb@x|1-6s03Z7j+0KQ7_ZuYMES<62qA$(x)9vn@PJ(wiQ9LNoT~_Y z-XEI!xdVX*od2{l0I_CvIGzXko8UYRwRNu_^g>})3_>UvJ}|%jXvczE$dK^8huAxh zZJo`l8Sxc&^Tb?Pgf(>pj?U5^&g=an)vM3>ks2!02CJ5tuFYVg?|bchy3>Z2L$Lby z+C=SSTA76osPX58=AQ0+Ve8H5SacFpmHm*sCTB?H3RD;UZ>rUtf`-T&$jDC7R7Skv z1+dywT4RqTeP^@yK-ya{Dm(pBFnLIw%Ip3NbaJaf+S#t9dtip6VB4i5(>o}#_k6Se zzOLlJo^(v^@bO>rjI8f(MfW51+9x$c+6kBp+?63M%5Ycz)~;2}vPFv+Su#OWsBHyl ztxa3*V*BevU~o0s$IFkZ;0zHX1%Y$F!51uLEAoK+{)r0{f$IV|X&>zF2T#pa(}a zYI!nP#{nfITDP>gv*9W!kXNUXYgZu6{OoAg>iSxSS-T~{!S(%f!x2QKCQX*V8-QtQ zIvoFWOr?B^*)sDJu#8fL{SQ=eE!-#GqLhlM!Q57@FR)w&P49L|8H;rWOTO;t+Cjc` zJh>wsXj**v!2+X;6!xG}-TD8tA_LmJkEZy+E>hAsLiO;t}yO=PDV1F~f*STM6DRw8edhtcA>SM58iScgW=rHM%os zc2ir-jetm!vkV?3=E+|RdX`^PvHOqGJRR`~ssVJ0!<@^ZKE-3!q< zHOH87@-A!xf4=y7D-}tVr>CB8E&VaAyqDGg04&1CZ6h1$&BFE6Sx8Rz(%DF4Og!hT~U2Ab8D0U@)r;kOr?DT+!Rf! zb)Di0{%3^XR(ko76-3GYNJ=)SkAp#9eePS|a9t&g#3YJWvX2UVt4FjI#tJHp>udxw z&SbqG+QFYfHzsR?A{F@ON!WR;X3A-8qk_Zx^=^r;yOCo{7G?b8?y?Ynry^wq=V=wS z(LT(kdQnC@w*2_e+l$RLTqUO4*1D)O$>DHa5CWRJ&l$gUfTCPC6WO1UuXbL-GAGLE#LK$3R&ahw02}ZF zyiGIQTlZ=z(dyt3a^BkFg#j|8%DuXc6^?V<8j?%zv_I$8!EOgfh6OB&C$s16;zeEF z#o7bq;sC-Ee`U@*tS0tA(V0-l)*lJzoct#UK|MKujohB;wj&3g5`9l~OmZ8`^g2M0 zsuL#9MT!X5XI#19xZ0LdZX7h{iVt3wM`1H*0Vn49Gz4lxEm&R;YFA3mPzZtcBMrB# z6pAL|Ft647j;;kD4dBUR0+1n_np~VDXp#*phv@qvLg`-vjh4ZqSvIG`hs?wb3Y2x zAdMF}#9Kpz4siDj`M(oGBXcoP5C@iPCDC8bFgN9X}w^h8Y-m57-9Q>q1qC5iw zQRF>4|AQ4)kRR723@gl~)^!^-V3xy}0X6cDay z)kKBflA2Ig2fv?hJ1mcC9h_)8Eo3olL}XLrAZDqvHH}7UIkjC~Q=SA^2N{x*h&q-x zy+ON>mprOUSC-`wRx3`~^Agzk`sjRECHMAp-~)E2S1IID2BLsoQ}jq~li#!;x1ge0 zUl7xO?Qjf07Jd?N09kqCQ=7{)M4@rq0Xp%F7uAn{y!a56@xf!x^X8h~9w~_7KfVj;5<%%a%SR#$*ZT5#dXD zCtF@N%@qSdl7wvNW*`ai{4iGgL|Q=UMwZJpZ-!B<_?tjk&2)FcvUjab51N^Q0s}x- zZabsShTC3F$OwAe;#S}!=E`j>Z+(<n%DJK2`imk{1n@y8j#bVa4mxu#M zWgZ|O4(@nN{*N>o6GlFViuw;w!KwX1b!8RoE=*$a_RR-Qre!x-tP;!;Ev|%lJ#PyP6QEP1HU5%iXN@~I(;c@}KGI_aUc{ccmOMUG zZNky@UA7{x#1TA7gt8i!;&bhK6V0IWp*PY!51#TW%8n0=zOnmzT5-0QUpxMp&xEZ? zakj;uIrn;n37i%6&GcchAgS_b6O?=HV1>m@WI&DaG{>e4cMSV`UnC43qPsa&DQKP2 zWCrI(3x^hGh{)a_u2j>gCMy^l3LVTRVy(9WO+wb0WlzOr_4d0>&u%fkL*7!FGrGJ> zVvn>`@&CitIq(PqZELn{blJ9T+qP}9%eHOX>auOywr#w+d6~(bWd6fR&c?Ub;&J4m z4Iy`JJNuU!@uJQ5ao~)a{ICCLl^ZN(9fU+5$d73^{(D#&%}k62H7;D=Sq7XBF$12`o@&rs_)IgE1`EdjPzrnuq$Nh3N3G`Un_;HF_KTm!SNXjQ!k^(2u%``u zW~|mP3WPOQgJ+;HTvC^G_fPJ(_JhD1i zsdQE78eo-6j1^l5fzDIOR6;R#a+#&vv7=SXTVjlg$rx;kbP;f+Y0+91pumYuv#O4B zLzf|KOtUrsDjHxsz_pA-cGXqpYhp7OlP+W_4Ecojec^ynklNeU9h1FsM>P~fb!S~Z z*sl}O(WB!^YgympX83AZ(KIxLLB1$?40qe(ECH~DCR^UCxle}|>!{sX+xfM} z^JGAN-3C(V3FkP<<5HcMDNFhL9SfbNAM)f6O;ODhm$5uFB*H=FUo&kJ!VC`{Dwcq^ zz<1dws(8zOTW>Ky&1(q*dQAkq>6>3U#(Pu2?|&eDphQ-x%FhBaHyxoW2WG zwOSDN8S5~{ej8>POyW0orJ%GT6ZU?L&~S>G2`K=K3dY&}@ry0l z8h0~fs%2CsX*;45pdxXIwo;JmIVXSGXT)!Q`44`@4qN!@;`x0`6o#Em;>kA2 zWJ0hy{JoRf#)B2R)#`jw@F%26`_;PhFb*S&}C4W6C=He=?F^z-Ki@1nI25XScFfWX|M65N~b zhI#7XQL);qqULSXw^OWjDM{rXE#Z1ea8v*Qgi(Ra-v1L;4(Yo+#Dn?Ytn$#0VAIgV zL}=~d&HRNm;VpHqHhO>gV^ck!9A*+T$`f6yP;=!?YTCDo1@2g!N^c;j?EI@ z=`P($LXId5hBC^_J+h*RmfYoFhX4T)qq^N@E3~Yh`CQDOm zt|ph7x(Ym}lL{8Qlw$=?jsn};M^~066m>Wp#kjOtDVe;zoIkSJaB}<2O`JXs5FiSO zNKHD`z+ZRHld{?(R0EJ*DXs6Kml68JlTkm}m%eAFsaYej2%D1+>oBGF4Yg@(Fj+=p z;t7C3sZK>WT_qZ2R5!Ecv0XloHFP33*y~_6x))bu_>IUl-bi*YeoCz!m6jnJ(zKrx zF$C8kr&RAv=7O@G#+>^GZ^hW66%Jt0_K)S5UFxe6Ze-u@kNLK3n0k=%+?-CSWn|`+ z^|6nao=_1CZBcqtQJW{i=57_8QKj}5$a@ZdWUP9TL~imT^Si9J79sNj7A#Rjj&XWs z?GRBqTOhpx5By6UbyRYm-RW0C6-+_o0rrZD3yAp{mW;{tBuORb?shtGwXWd5`6OB^ z7CT-%!70SV(ZY%;^7Kh3xKpXs;(ynrOUp0~TyAdSpMAn0Cz@*LOP=vG7YTxrOS)OM zghfodU z7dzAF&e)a6-Lmk?joi9PqA@+7fG{{+YWZWz1x(K!aU%8kGs9l|(<1N^ z>B`Kgk1W+L(N+Y3)hUydDq@(3)mVM{`?ThKUGjX$3T<=Llz-_UBcp*XqunUw_4f0@ z_sypv($3)LOk(^PN$Tb&8;+%SBADQ=;2b33T{>n=O@MW^hYGWi>Iva2i@HrFCknwR z*GEAu1(6VsVwp{pO`^~q_VSGT5)nWG&)R!6<&9<9XYry3i4=nEFQ{SZZDAia z&(M`#YirtuGBue2*~*DbdAjQc)2zq;CO@Og(rf+sF21%^%%qEKCUw8<7A=_g>rH(z zmgqWR?a=SGW_fzV^HXO26xcH15MFiZhbq~UU?DY78|aRSj8}K+p+aOq5H|xBwr2y#9AbCt zvQGX|$jB!meI8VFoQiP(y#Lc@gfha>~v;1POQl(-=|^j{e4p{NlbL>lsSGwC)c(6+@h&@J7kEKOJf-EuN#kK z(+zRWn&NeDJ&z56WO*aS|4;tWyj&P?8WYiz^P&uDupyC zQ;F!-oU6u60^`RxVKLyghO}Z(E}MH#;?sr}0ecZ+4~f%Y^yM(~kJy*f4p)`EeV~(F z<8)`sg4&fV16baB%T&LWfy`mvoB+nqITag6-tnJ1cz15u+sEB=#;42Q$%N4O$yStS z79Jzx^A!ibrbZ9=ZU|m?)h+d*@Qy{OG<ZVUiNCr%_POojbPxUcyQ~a%evGQ1yrh)7D(N@8b{sPq=vyud3O{`N8jL`{a*H;p z2>2m<+F)&&n>{9?=g66^^G4a@f<-(GyRgP5$6I8!qW}ANj2{W%s!zW0k?bYq&v&nt z?8wzN`6%=XBcRpBP}z!GJ4Dfp=yyDxwRXnma=kN!kYI#we<0J5&dFuo(A-BF10%v7 zHuA|jSQXdI?Gzv4`WnD->?ygoGx6!oJcyC9nL=HT9#14m|GCT4bB^m%ntA`;J-2Ve2N~+K=BwDKZH!+ zX?LZ)Df;0}02#IQJ*y>8q6q?Oix_XzkD5!1?`1V<{wKES&d1A&D+lTEz(9mI*~5GNMoRLro?j>6>R9gb9mQ~%fIrzK?!lm0fg5&Hly zbYj7$WEOKdOdQ`4DL`Q$<3|lKUFgajrkO>W-^-r0KCA#3hgzjY9%2?9GBP8*G3!ZX z-T4w+(6zymqwOxLp7Sk`zG9wROaIJqaz~58N{vH&)o{RBWS~Z;ByPUdiX>CDAeU3=!afWT+*5cK$~j=*Fxqw~ zYrq7MC|tX33nD;R4$J*GkO?{ui&acQTHeI?QVF0c=@b1b=;TIS3e1Z(i8B`Hc~qOr zIl0V0#e*og0;;NzWSZN$B^%vYvG^LvGKR5Me6d^r{*4U1gIR z4QXTK3Q`L7eGH=!M({oPnLE=(8{^k-1@I+?Xb@Y9^`qa+L3X4BZlEyL=V?OUdQ*Sv z&!f`1GBo*S5Hb_QeRl6Y(>@t!m4X<cTwlYl?v8b z)^WA1VyolOS?kMc4-sJ;Gh^at3ZJN)DL_$u0FX%nb`=cIA9o_|5pJzd&m{`*NLjamommq9&MV|+bS2<} zU9V%<)V652A{Ad=gVkGhdpZBGOc{HGZ%q1XZTL*BgbCUB4rE8|m02QPb?dHs`~=}% zW-OCQlKLVN>p%%X{{8T+X6BPwjFYF;Lr>2Q4VR! z`&aLkb7I(#?G5L!bm4IkvE@nDWD%)&I05~mjp@tM(CMlmkHONg6%(SdKHbYO%Ej^58?b6dC$Qr4pCLmd@MO*5aw1A=1z6lt03hc~w~D9h*30N-(iT*7R1s3Jz&R5U<; zRO?Xg4TgY6jOqqq=vO@U*x50{1@3Q{%I+TNI6WNRaU$xb&8Meg$=IH^4YW#m@AT;k z%r)i-E?_D|v0>Xmo!jDLM3r~p$qs7WKtqm75JMi{@{ND0HJl4O+KC7RNL`k0_qBbu zA6dd>zn4`^4`#2yRxA15rZx|T#3>PaO+>epP@YECX%^NVmZriu_<~;+Hg&Xhr|9<`XY{+@JI*O-8PUvqyV|rR4-qsnE>v2h4I_pOo-?oZXZ2ceKJ| zX?CXOO_T`sz|XAIgMb5yRUOKG=ILcQY9T;0PovU>J<~qywsR@@@&r-u-FZ7j-9&*9 z+oRr^J~o5{DC_=el7iTZ+WFzKRf5JrSj30l=I4kj`R7bZr|@Hz)@%mYD&0n1(WAgEo{%I!!PD&fnyGDB~8x)QL$ zkvnFZkMg}4TUPRuVJ?p|6ZQ|-Pvw~UDSC2WbTF3=_uO+LAbbi)n|L6{5a-^I8MD>{ z9AGORMV>NBLCDKWHt}3LJtR5jzB481zMX_KlwG*XINQrPIy2=y+0TihrRD=>MiIirXebLs}{ z^hodRirS>oo*0IuPRs@^6rwNsGd@(n#Co zWvi3I?N2j_PH%y^;Z@>YP$t?;(PLsZ{Z_ws(burKO}Hz!*u=NTG;lBMk{$B?KQ9o= zJNxmgD?*0iS4jMt;polSZlJ_m4ML5Hvefz}_j05nj;ymL>cU2NqkC)_D~?Tc6S5`m zLtg^F1E*lX+|mEsrzVn1J7jymVj?j_F3k9Ed8y1A3|A1q=Duq6ltX?>Mi7Qk+m>^D zA-Cv5o-8v*G|mxQMIhHW`3$skJR)nskp*x2Imxdyt0wAc0$OZS1yABZLCwLD-mAFA zP01hNN2|G&b$mzgHaM7ONqHItOiV;)3Ug+x-ftZ%m#4`C0D#X4WR8mc-@FLkAippE zf2K-=KV&GLQs*YXTgK#k9?)6CsCjU89z`H5G=r|zqgU!|X4?C)fw=|<{&@k456MI%ph>)x-8 z2}MqvLkK}}Z+|kYuw3Td#MJA;)5+KqSGO~nn5OLjT3?ps_s&ecGU=5HAx`cNoVFy! zm2LVKqxLf9e{Dy$J1VfMD>T~l18loutGGwtnl2Olkg9U{jZ=VPL7(RBt_BF^0mSjI zA(qgjfoxmClL#$55= z0V7#XKj)BsUXqh6^skQ7*f|NZl4gP*?S5|+7ZxZt=ygMNwYN|w|B~iH#_2HTUa7xN zx;J!CqnG|pujp0oiebmrwBqDjY zHg#x<(1Bl5vRhDa^x5a4C{sh7g_rFE%(Q65$7Pu4`#Wy|VDPWPC7MCN9txCcXcxwH zoMA`G!4p#h{%z%nwY`WbW>lzdt8`42ymJ}cDP`V9exkC0jsa0J9f*N9bC1-m)_o`T zY|+4nT@Dt0c}4*bvmNYoms^{lo4xAVUEDB(P>PyRg#y1|00dYPFJ<$f3|rq2=uBEi z5LJAM_ODUYzWauP!f<44E*hcMX~TDAlcO94h@ zpMGGK!O1sy27mp$3;@U%{5e7fZ^4Lw`g2goqZ;x$>o3#PbV3sn^V-0skahGkYrE=^ z*oXg-S2<$@kHRb;3p#@rS%=;hAm|YmC{Tq1HkXEf0@OM;{q5C}BIa@`yxN34f(ur% zh+;7~@bE}1Lte)p&Evb;$`Ik;o=_Y@5Qgsg#G_*FK`^CqG!1M2*rJKP_x;RmP5?5? zo&mw8TcqbkRWVKL?*L?Jo#U3^= zdWxa`&Nf1+yM2JUCMmLnhl_fPk`Jo|j4LvEJL1=w=%X7*;fd$T(b4bF73W5Ij43Cn z%@tBOJR4^zrda{_v>$Gr>`6Q_O7S@B%W1IMxt98r9gg+A_UHlbQX-lC)MXNQjgCEH zS2;JsgR`L+uC3pnqa?>31sBwt=$mHWURlPtkY!BXI~IfSav}A^GaD@(I&Ue2y$7y+u)GCbW z1U@3jT~hA+W}EI(H({(ZQXnOg_X}R+7?#B0A$h>VI&Zq)vg6IQd;w_KrSB_wI|0!9eieH6mv*U6C`IW-B`;lsc{P~u|I?ilOc!Rv6K*vvoCAf@1v^N;^C`S#SbMdE7wFvVVw_{}>~eS8JK43y;%T zo^q(zrt=pYaTJ11*^rRR;T~!>qn|{@t~WBqS+-BQG6+lh)BeW#SW}736auuk;b*td z0D!pkYP#?glCRF7NS{j5bb()^3j*`}q>zc#n>}#(x8TkKw*On*GzQ{`s--S=`vxJa z&D_>YF~@oKq{Dbx&L)(UkxVU-O~ zA1S+AF>*#F5FZhBU$kObr=-`+(?yA^we+{;>|T>!ccwjgcJMiE(nE<5$^*HA+wQ1T z(X(FHx5aD7eyb=#{1uyov(0V>r;?+^xaSa)o6XRbuX}nx&#Y0-^Z00}FvF?$uCW5g z7im|6`blOabz4_r6bGZ>XX}n`5RCV~VqXU+b9pSm+W4>34qIlQr%M*07sUuN|Tn7IJZN2hB$jTU0qJGA~II z8^wKA!X3(^7D(QGz1hQ8t22j?A!!rQt@BDGPzpvl-@ua=Cwjrw%75dWnS5GZnshQsH#yu1Jv%pwpeiE2>x!!;{ z`eLFX{G>%d;2aN-CA_!g7DK1>HXn@r1@JvAwBr5gr~Tj)!AEB`;!(<7!_?je&U9YT{YL(RwyX8G@CRQGF6A1wAIv|wPQ^udX)8{=ryLg+HFkj zoKQ|$T1-?r=&E_0lt8S_P9tDlw?~(zZr#k?(O}-0_R^g1hn?*vx^D2|G1qDWVy6IT zj2j0G8OYICPNdENLORWv*XwRtD-$-w4hR3@4IPL9sseGw*Px9O7_uT9g%GZwfK5E$ z6FK@mB&JGwAzNBZM=eyxmRS`6crh91&*DofjY3BfXaI*cSb=%lWh(+ze$z<(%azpJ z--TnFECgNe*c2^INr287QrltnIO3f)hut` zKx#8dPN!38QP(A`wIb^Q}aJjv})Q zd`*qF%6D;eRS3I4@m!i|?<7IGuTFp$Z?I@N(3qWuvF$wMmxEM-CEc48-S?bv>TXMi zCycA4f*Xm}!m%`S=$!|sy~@Al0w;TNldDu2-p0{48u0Yxz?$<|l+!h3xFG!X z=*}+Z+A?%kR!Z>j;cJH=QO{tiro{@*Nln6*tJwdW53fUGV^|ANeS(&R>xR@vtUoyS zcT-ry|2X&y9`d#6nZf!dbz7YO58y{^=LZ2~#?dH14 zjCff9S~w1*GK^F={ScbwpCo>jT}v0vM8qlKehKmJ!qk8{QrdQ!iQPT$1lNkq(bQof z5^F)vp`ZJf?=3U?q0uOap}>*Uq-0zsaG{Xxk3)&LO@=)(gxcz+s>6q!!8B#E-z3iE zb)1cjq|^Rij-)>hU<_`xFyb_C+wp&9IS&+*=roR|PK1Np-o9t51Y?Zr0rdnQP~T~L zrlYfkQ%$l8joT91m!H}XJ{tHuxZKP^U+Dk&(aCxojWcG)#s((wm(_;2Ea+gT_Fl$J zndAH`EYeYMz}G=+)V+i#+IJ(M2K9NsF7DTbW=Ma!aF-W8N2`Vaw#=PNkWG>xG%HBO}lR5X4T)$!Q>c_0&up247fRqOF<-oqNQegJ^Hi5j=g<2I41!M^k>kJXbYL=7Xg5)H7(CXZ%SSP-(3b|jyK^2L)X(0;GUVwclQPt(7gA%CWhIMx$@$I_g~Ak-eV;*+e0af^Aip-&>q*9mqWLy?~mubd5%7HgG+grm)58 zI+-ad*LV4B^s%`I*ADJifA{2DBKHGxhm6jOZ>ZDaN5T?nO3xFwbl%xsV4(+a+q*ZY zGdt#IIj@o_^cDauWEfc(oOiaOnK2|eQRs0rx}WL^EV#gmdO5~!tp*LyxdIytprZ;Z z3|;){=elqMXrXiU?iyGp990fX~oUIQjDjs?9Gdv}R9%{`7-RjV4;e@utw|Rf{ zPu|yNu8H$wHf6E~S^o;SEc382O;)QZlYCcCXe$i56FflawV1b8gWQa@by8(tpTmqO zUea#WPHXqozdtG~UPLj*kC3zXcICQ$ir-#=n?ytZiMuuQzlEFo_f}<)FW&x4GDHkD zgSy~SGH|?)$Vk(%2LE>|$3KCk146I#Q`JQgABeZOk}!h;pRf2O-!cl9VeYmjZM%)uPpL;2~6&_xPO3x!*h(~M4(P_s$4s3$$w;PzqRi2ZD%eKKZv^%HM z-)V`Ke`w>mV3jK-Xaz3$4DK2QF%YN}HCu)rU|xI=h=abrb!eSH=IVbl?ExZxqe{Na z|F%u*YmBsB*3c#5DS~H3chb~O=PB(@R0Vb6tel-Y`4(y=wjluEma98vQTL#GAq{=` zymSp+Qy$o36na9VRIsoxG@FWjY5Xw>G$8MDc&z9U%tt-%TB?gxM=!pfX4AU9n%mO>wT0Sncygl>nPpCfzJJO~#|>(_ezB|GAvV%d+3 zI@P;lO1OEJ0kq!UwJK_N+bD%a-DODx`}2nefoLX$*%69o*rUnI)zR7EKwzO*!sX}V zGV?Tc%^=fTfV>4K2-4~Pu+=Ob(T_Z`cQfy2WF8R@Z&?vQ_&rO>Sh|m8)}D#DNdhWf z!lW^ED0X)~An&B&2E&b)GaElAL`EgnPa{$2c#Rqg!@qc{z0=E8+!GEdyPvM3CP2LO zx<^~&ogUm5Nv)Kbizo=Em)cpS&)GWu6CIhnCrM#pJFb>XT=Gv(RDo9-Eb!MTmDLlQ~MGR-aG z_KVmaryX&CWx*(per$O&c~Pk0Y@o^N-I!KL9}Tmq^i-+A))WJVRlyw>F<<&Zr!Yy8 z3A)b7L>rd2S;{>$m+Q6h^TS}Tq6__s`Nzv*zw)2x?t@rXqh^ZThiY zD}=MUuO>^!A!<2Rj%>5$;u*J4)yhlHAXqpck1`lJ&>>Dv_nkeo4)tBt-eX z4>?r;J@S852=hLXuN3Igfld_yk#C)3dCqr(}cydPcV!Q zhXvVPhh-Awk;Vw<6m?1gnuP_l7+MN0?s z05VBM#8~Bu@w@{L>PcAdXzuX}qSRO~puoo6e`Ye7l|Pb)Kwz7!5J!v)6(CUS2mYex zkyqG&M(3c)N@Y*o=-*C0#MOYe9oN!6@{xK_e8q@2PvS))^Ez~r!Qn$%rC z&&hH#j@U?*G_ZBBYQy0V3pRkI9dWGYm%sZBvF;mUZ4UCERle`p(O$7iCw1ENoKu$ac{xRw|so9SXKL#=Nb79Hu*6rvx7ZOQ%=aKaA z-sKQgB?P20?Bb$_Fp|yr1idLw+ho4r9VKjDGC;5W)kk#q#z^TXgHw35=B!9Gd2LMt zxPlpZvHSMN3cgbO9_8(Y$|>-b*!JU*zvH?0yU*$AH}rq4g$4M`sv9wD#$x$? zou*Z+V)3}dCbHOXm1JGj>_E*pinUWt@5IS^#VQmCx}^^1*B+*LM--9MVaadMT($#l zw0l*Zfs6o>2>5aWkkYWvWz7zk83hm(Tb15_tN(O=bD zSz+&3W{v50^}nRu*(C@7xS<$FQX0qCv*R8-G%|JKFz(iR-&K&nOd%0g%TM?*7Ph{lGXMi{&>|2_YmV;1^G_(A{mEC)w~4h<~6sXuNb2ic40p{8SCX40w#x&(VC}Hr0p;u^Q zaR{z(Te+Q-SKI2;7|dMbhTe6^iO}T7wV7{RJjW2%g?;Y*?TPu#Zh1b_Gp8D_aB?88 z31rbVm~q4M^?E&3)yrRC$86F5AW3SG`0yOqb(BU)54|!fS^Yq|5impPx=^_b^jYi> z$`Q|%YbS0VE_Tl#WY#!kYz0bsYqjsqEN@a&WFUVsxH@QpOU;Bkk=cbO?bNb2Ky`NU z1tl{lp#AQNI&;&`&1Y2yM#+j%zJ^QfEgTRWI|o`Q40Pzw_O0C;qqhzI+@0n3NS}UD zRZF1N|J9N~L2In>92_K6sUx%$iSGvDrq=(O=7{FGfbj8Lj^$UJAgw+nsx-}fVdEYu zmQ+oF4~A}C{9yOuN zWUgEUT-$j+yQ_x{w!sdg^vjUdG%)2WuR&Po2Lsq&?1ORJE9ReQ@9RyOzP^7?rP=x3 z@d)D@%b$k88w~R!6vqdcC)c^G|<`E}sFn5u4!R~xCrKJETMqZ>s-hX$xx)fq`TwQEh zA>sSk3+ML|x_klyO!bTN&8Eu85BO!MtEBAIZo7$Cme<@%{ngHZofMOFYQy^O%9~^s zXauM9_nRZWM%+A5twIfLkQ%4_GvnMhP_A4)cS=sf6y!p5Go9;Sg7z;PkEZp9kL5h7N#P=sH=l`UU(<js`fE8qnU(9?Sj zPP-jjr*{FHV%sEU8Y@9gFH^qsI~PyZMuq8T4p%=wel_`bboEJ%gHhf!Vf{iotEajK zVW^!rS&PWygxX=>FYgRcAanQs(PBjYph-qT%67z8kpd{)DV<-o7`8I6hD%cXh;UTv z?-4tJt4REK(k!|^NAQ2X;a`*|LCv;)N#3`h4cGxnlP2Y)#<}DXUSniT1QHF$8;x>{ z&k>T3>GdhWih!SFIyE(SzbxERL{eaeW49ohJ%=v;GcvKOI&<7fCCS>JLS+p~v&A#s z$13F|6>%+LYDkY3)W9%i2*kJ}qBAX4iW z#5h#tUW-Ucj)dJOBjt;z@eo=#fCw4Jp(_U;G0Gj4DB`!hpI|!ziK(!=58gtm)v6ea zm#*Fa=zotl&K2md0&(XL1$(yJ8}kmuoKP+o48G8eQHKEABPiXU!fD%fK>(8j?L!1z zHEm3gnVzU9VvQ%$k?2IzGg0%y{IV=U!j^h2+;^xqpnq*F)t}Nhlt*3Qf>XDzqiq~O zgYHMW2%0HooH4*9A;uVmhHO-w%(vfbPKtQkN>OQupGG5oDoJ+_44lRn*Othf$db#C zqc!|A8BD=8IH*yf^3V{u-z1G&(sa2b6wO@gHY30#E5T)#@VAqwl#{SayBOddl2&{_~^##uJD;C|@NY&Yho4!X>#Rl)j^Z<^6q*fQ`y-T&AwkbDkjs)_^o$Mb-dGc2rQ*N z={UMG*jZX{J}q8b@-mvDcGvF|hOCp7i~~-x5ilm^{x=;{# z*9$ncXa$eVbhsV49L(tt`gt!?dz*&x2=4=e>MG(r(om=e+07iLU_3*dgnu%BZu5T2nP^uDLG>vqH`j+YM}YJhxT zZH8kMyny4kt1Qc)^U$hn4_x_duOhB_6@(EBx{9Kse0@}&3l}aaHm;T5r5m6HNnkp0 z4zVE*r-sjnJIWcf-z1IaB%>9H@fmPLfQzlHH4U5@!Ga2q$i? z3@;(~7{2Yfgda6X-WZcWSD2@9gjD>^8_CHs@PriletK#guRa*&O}tf5ZYf8^%o;@R za!^2zw{esV>mb?0=B7@rlJH_oD?j;(oZY$+8?PV_>nOid0?Ndn&U_inU6cBrq)F(@ zUCb!)^OAp)A^TBK;KI69P=ika@6q&P)LL=~u*ReW9hFzFF5^#XqvT^oDRc|gjIy|Z z-%--wJehO?Y+~38x2AP6;AVVc!M>T(o5nq}+Hjucm4Qz0I)pwMQtW6j3$D-8&kyf! zVT%ZgmnE*=@cUCx?@t2-hM$t36C(0$gPya^Y1xWOTZGy~b3_G9^Gx)Rf~@@0)mHjm z8Qi`#W9b=>HC+`7A)kvMm=8-|oVf#Clw?&GL}{pagYW(QasR z9q7OhyU`SNvSGFi7ih`)T>qk8_hsC)UzKxzymYfNl{73>YKGP|uB7vC#9(lIN2tp* zv?l}L7+&{9b@zKuZdR`Jqhk9n2B0k!dkaZJ?omqe!!}KRO=avcw$);H-WmH>Hhnd} zGlR;M2Z`2gCb~uc78G6tgnCi@lDb(V)~?Y8b{;;)B%hQb6d59}>QI86?)v*NvhzbW zjT@5043Ce`?xQPgoZ(90XJmZtXBou>gq?#p(0I(^%g{&4Zg=F}#5+Ln`BczY{e4q( zIMlui$-bIMm-EAgU^Mb^jJkJ(sxFK91YFA2YPapsauwD2%8kB0+ZjWWqCbCT;lxNS ze`H#N%@*Y6;3okl8pNlt53U+u|H9=zcXH;6%ZHV-mJ2iFsa>BuomS7fk#1;e8O&luniu{tnf67BxvSObO9B_$Bw7;Tw!L-JNiB)^3xv z)k<1hcE}URv))Psj(zLrM*psPfMUbmxT7z0dwXt$RLxOX_K_)yE9)^4VSu znYLg`?VltaIeXdI7YnOC)OCrxWnxU*`?{*3FY=B=b}(@VIc_verNrulpN7d2K-W|w*CT?~ zNgn$=?Wr3UxMimoRH&9atonfjo0Z!>EL%5d#jPbLBfp?%`mmx$5{Yv`S zk8T4X*<6ee)KU#bwqDK(MBY%mDzM1*4?_O|EtcX^^LZuM=>OI*`0~oWGE;ag@#E%1-3MMgtFhc{NG_T5mP-(WuIO6VF^gJ~`Yih__6WBi3Cd(^g>}4k;XPKQ@dRTNG_%{QEdqEI7 zW}#c7sEd7Rz8*(=Yl5cgeK_+FU8m)Hr-zDF+JUD6VuOI2mKkdZ|1(@3p|0=Af=KkR z=A6r}MU5SZCegbdFVta9Vl zOpBqCV-uTyfNX-#6IeYJtA2a~>8?en&Ar?fb0d5JR+x!N5?CH2fQ^RrkvpVZx(M|; zGXrK8DsF7~qm*^OT9t{AL7xgxNU{&(wbsbMU=DD-q@>4g8FWfB+6$m=S=&CIU4$VD zy%pnYzv|KnUD-ltM0$yCB&=%@Ax;LGggq*7iH@!U%<;LoTB%I#K82tNZlgt;C z8brX?!f|iZUV%{osG%plES;82oI?^G=eAK`pw>5hux?Kangi&IsQNNqv1p@dnpGgF zKO3#6!F0R6g|O(@j0UYQo)9Sm6g8RjqwI=Z*HKe*7op*iVfYhp!F%XWJ^@@OsMU%> zzM_M4=EJf|0?ur8`+D^$^ZKR)W82Eg?A>< z62^zV5-fL1Z7`+r(KgymrzM?Z)i`m?6zU|>B>t_V|e2cj* z6UhED#iGTAb`-l_C+{j~$cbZe)-qZto`b|!bY(drTV@kJ9CxmxE+{O||!(RQ!)K6Kx}>?2b!usXIxE6|=Yh|HI- ztgWLzeN(6*!v9`BCkterj{KK@?00bQ%&Y$iT`*Cd!#Hovsa-R-V?rfG+&j|Jb0&5C zq+QNSw@}3H?r!26>-cH`>fR<+Y~=~vr|H=sFxoa{^wI)WZRP$$YbgMnBvEKF9PQ;i zbeJGHvS2AZot!9n>VNAv+oFrw0h|;ELsZV~i##&W1md$ZYx1QiAO)fe7mjf-7Kl*x zTnFv2>GY5}#>~FMX`Ix0dM_~?%#=tzRC`Lk{Lg?~c1u06*0c~&G<=hIgY%;0x{OJv zo6&){Nz%JItwSK7??N%HIcC6CIRN%)&ES8iI;X|JvM7kgwr$(CZQHi(j?uAg+qP|+ z9ow0_&Oh9TTl-Y4^)3?FklxmLW_>XtIuLGb|KO>iw15fK#%8Yw3D|gJrCXwCxm|WC zTCB1&`?U07lFvTb!JYBLOOCV=(Lbp$-IYBk<8+sfE{V-__g*wXNC7Vu(QWTGU_#Y^ zv9L*d@&1lugfiPxB*vkJT1i<<_=QG&5nfmMD!{*XKym7>x`*3%PBr#QP3WQibnFWBy ztjyDiR)wKr)fr4(8vC8uH@pT(-i|y>(QvSCfMAUy=$^JYHT`&U^(|3GvhpNv&w{j z457%7w+;T}t|raOp08 zjT{6HDt9&Lbk#1H@5O!IyB^Uw(o{i6W3#hwhDy85W=Cp@@rjb@v_DDy7m#i>W#m0e zhY){q{aWS%)m@hGKIv_90p~zXyygH8o`d`&K1EE}?2;v#sg) z!bO**b~)k^^R0+s&Qf*plQ(mAs*rj4<*G=D@Jy3D!W}>%96RzB4CB-3IgT;@-1&vWn)TA4G8k*BTRY*or|3-;^iRcDVumR7J(GH-y)}7pAjDJvYa-Bl%85+o+w&7ZA z|E{O)!x{qxn{@9DB=!O4ST7g_`9MBu{^<|Zsu}A9vL5^$7Y2#n{ZNJe*otKR z$lBE*MLMTlcl{ttX4_+jMK%=HdN|-L!B$E<_j};?wWCkmC6GZn!u&N|OM9p>TC>a} z-^&jES%yVKp-zAv%S3DjuZ2w!o`hg`3(mjRNKWfZvoN;+GBfW>qtqW84G@aP71HD{ z0GlMaoWKxgeaZDb8>ON?KyAPf2kWuzxMHt1j~2Jm4Rx!|-;M&ZC*+)he6G+bw8z_o zMXAjt(J`*YXB^mBRCaQ4)(S-NlikCQogi%>uE?mb_&0*AZ_P~=ihy~dVt&FR@cr;( z%*e4(f2WDC%ev8JGGpHb6oXRXB80G8wbU1}PI+e6KM?G*Ue?BZJ$NJmmV0zT<~PeO z9yoxWVI*HAEEOMZe$>Ft`YIa8o8`=n^`O|l-CdZIcrz)3&s#yui8&$BU%9_weQSUf zZ1;n^!lle@9IHoXtD&A~vn@>OXwZyH&7*!MI3mf)&Bl z6cu^luW_RyU_ATF(&I^KFUPeG+gHXM#FO+Mp}N63F0n&ny&tWbMgPz)+e9; zG_bS>I(tv0PK^}1E1aZIPCyD3(=XP1y)<)ZBO5sof)-&dhOI*9bmds}$~wuH3ILRA zEDBZ|0ZJW_2c#LTO^{p-;N!>*Sb)@Cw=C740QkKBPE_I**3-5jNJ=sWlrG-giPhUNeX3^*) zwcbf8xlw!3K#>F# znDo{$+~_eEJtfo)Fv4YQci~rvh_$J;LEFXmEcoDO7~F)&!5rxdX40n}ixU3Iv3n4@ldp&>>kI_k`)F z==8?;(e2=#Hhy}|L~-{LM%DRidDe%5UXR#uAFCPVt;W~8{(Y=uE|u2V(w__961Nz2EgDn%6{g^GeZ45 z7eYri+Y6G;3M}O|-YF_00J`jB8%*l5)37IYfzgy~y(G9-g(vxO%q{|4E~R1SSFPho zJ=z+?Vxcdq01K}Mi1U7Nz9O}Q3Ik$LD5JR33E2h>)%b6;C~qLx^X~$fo~k5j zzs{OUCEqu|fbVaA;#4O_f5FQZ&JoVwK(Yn5ElTW(s zQGkwQc)L_5Wny7TX<=9@#o;k5;Es>oIJWCNWM`bXruT8OY=`@wW2GPp8UMM*rts>@ zIfiS08Jm42j1}nZX?TsVGtr^p(`|`sY+-bV6327ekGlGH6WSFnn#!9x$qeVv@-{(M!c@O<0GQN(HJZM|t2V8%? zB^HLR-x6wB7L`94$Xt1d$3CB(iEnqR2zL(Z8`75Bi8g!RA^KbBK~Wg(+1#0s7=q*0 zdRS`Bg?=zGzCh|>?!-MYHKx7;+QM9mM?F4Fal&+RBWwe)?*jng(TPQ_6E@66m^TZ6 zDa<|+f}}sKZ(LMgvi-*I~t!6%S-xd|T@mi4Tms;;ffX5WBAHrp?~RxGBTtF$-|;(hHu0*)S;jE-lhPF8 z{@&x+azpa!>W5=Mp!!ucZtOFDGQ+`+twL;rV2EVb#=$1b+oEaJlZ02J4+G;L=q=aP z+Qy+PA)#2wP?E*)wHTm4ixEET36$}A;H$*sdFsYo7Eo{8EJqn=O2D)r?Rwy>jCVnK z<|ok%DJKnrOrUw-cC6@Lq?jH4BgIWvBsiJgT!COaXu(F+7)#*Ze32nrp1##3XcA&? zT*G;4_FBB6a{~e%HY56C7xZM;7ryWWNf)-?APR+?c@sv*RJ{>)e$`gsp!w*di-80Y zJ)v>+*Nn|}C008v9VCL=V z|AUE8vzH#7@od_lQXiP>>E$Eii%FS=?~&oGenC6|M6-sAt>?fsF7qm|s8Gsqig&Pr z5|H!hclqna<82yH)V6T-raX&_q>ex|z8sl>2+V+k?ishD!5L`qr>1a_!9?qz$-G3c zpY_&*XlU7EyWqtJ+O==*sCN3)7e1twb;V$V-w!2g&{mO=tMj~wQdFyJ!`TmI2#JJ+ zEyK7Q8*E)Rvhr%XPpu3}*f|M!*jLAhgbUb;MRtAY4v+%2nG%Mi5Zy&RU9Hd4WH&QX zqSX-#vO~-_tj^7HGvG?|IjLm}@K1iyqfI@!B(_A0D;cRd@RwEDEUY z2hBOYgvDV58}>ytN@me;(VoG%t{Ud`yc_zU_qHx{Y`Y(zg?xn{24ft!I{No+^a+F7 zMk<|!vJo*T%6@YP&x|1+XaQVB$HF;lON&1V{o?81uAK%kxcn0#BtSP#i zd0Pkml{-g(df>X#{E_=dx0tM@-!-lY=Y9wk=7%&Fsd3jV;^3d_kRSgs8M1;r;d@)O zQsf;AG1A`)D$6@+;#65H-fCff=D_4-LcURf$4~Jsknjo6#y{+H7Z6bQ( zDsKt{6_Klmjq%T>S6r=*R}oI4Y2o3?tsp<2adp)&2A}a4lPD@{gcO>`F~Jlb<=7N# z1l{2svf6gr*Qy|F0fiTOyyD903waaOkEaU^c{WDTiSH#xttd=m(-uqXt;#>q zt0ZvTKaiP=+L!RTB_*u(9o_2q_Fk+ODf|!;+_QO*)q0w3f)~O z_e$x==&TC%Q_Cu>GLZ3z$e|JJ6dNGi;YToUcIoOh{N~PIO{;P zlO!fMVxLI-(f+C#GRgRf2pzB4ec&0YxT%Y!3Ydw`0wTJSd>l)iT&6@X5%P9_>WVzN zDUt6_Q9j9ZSgbbuEgNWELy28vyYA4e=AuunuF3T1uguS!pJ)gx_D!Nk>E(%fYiv^KPicpXzAyEl+kz+h_0ac2eZO{MS-XFXGr{Z0ZcWgd3idSU9d zIAw2OgPi5P`!0&~sl@+55AF~8xr@3?mc>%yENvy25&PAk!DCMbRl`-)7S!@H60!Wz zkHbf{iPl}sXF~*kuvZ9nC6{cp;lb^S49|+hRVpvt+W}xZOgTw_2?mca?seBELU*DX zf#qg#7BpkbIdp9fXnt;MD6WJ`YCqoVS{<2|m{uYBJ~B1?YCgsU-HizJa~-X#0Gq*c zQA~NZdZ}Bw9)Trgo?6pdE&4e)&gsA?gW8XaeJ{&F?dhb%w>^ZO@c+ZlvoQIn1A%go zsDfD-M}Po3j=4#xMN5|I4gq$H&~QQ)1f0ud(X+61oGa-Nuky}aqKPgHmFRgdt2{j9 zWM`N*cpta{vO+kV%`40xG7q_Q+ef>TzM7XrstG6XDkYZQA4^mG-McNCv$(QQWrO z@_U*#(H$1FmN3W*R(Cnl=5Tiv973yGX7!*sV*_aLv!elL4$c~l7GI9cbbbN!q8r$0 zhJ>iwiW3Kv=Khw<=r)Cs8cdL7;NkuDg+bPOB5GBmOijpMIoLBrc-(MX>Aj)Q4X3m&#Yv-W9E+ynpIOQ{%Nm4mPRp7jX!-rWK6 zDDe;~SY0~?JR#9wQg9}aL}?pLOcbuOqLS;z8L)`LV(KWfiZ1)w7+ttdT<2j>huK5s zn(Mq5_52JFW%XLCu!wOc7bGbWHV*pCidfjkr4IQDpWXrSDi0$*7ZAAyfy+7H&$EJ! z(TBVg#M-%0N@?QgK)|VCZxEqvTS__^i9U-_aoi7NZP`F3V=-Zb70gq#WX8`=)IzVZ z=c_BNS{8Oq2m2&7<&XQEyAzn(%RTr&668#ajECTW|7UC7<80z3kR zBcAEgr68=iZ(T~0trsdFDze}_zSq@JW~P73<88{fNR83-d%-Y^Ejn-2RfOva)dh?A z1AB0$$lLGfV%hhOA-fKN?ToB6(t`7 zC<;_PGv?M<}4cz z(cadIX{bO6%uYhb!NO6U83ptH<;Lq3$AN*u9PiP#h2EYzS(wj+a?U2sFq1@CDf`Uw zm+=*FBGO*1gpSKBXJLlY&Lpp`7%a7nSW)~2)@gPq@z&#j!vp)Bqi#hb2x4@YCf@>e zH&Udux)GkG&7fe_h2EVayJ7PTAGrp^1Qn{ao(FWCeFB|xvwHvLJI@(KD!Oc@&2bo$u@kxLF)xYHGU)Z)Hbe*36B6hEbQ7=L^c@}ml9TGlZS+w`*q->>mk_XDdKUCV#% z!A2Q4LA2KcgOJ@yw239;@2ITY5Odfk$7AkFK;&}$FpG1sZ;2P|IKY2?{g&8Oz8vpj zzu)~X=d%(!K!c-*dpzD*ZM(-695eDjaxIOna2Vi8QToLXHH{tY*=t}lzR^g$5w44b zC_YjVNJhQv$OI`)@TagB!Mh^cw+2z-z`wQ&idTs^L>_EIP4Io(OT$szMPHSgTX^9Hv=x`x7+cXhElBQU*81Pqk8>imy z@y$^xVHT}BlrrSpIn{wbJ8ZGt6cE?|e+i`s}Y}VnBgHHu@rTl{jXp2@I2>l$1FjpIwT;@Ri-DXnrc9kH~cckp^LBCRS76<5E%2Gb_%i+-6I!)1X(ZvS*tms1eCB7quLt$_pLR#wq zPuZ%fP9y4Rzc9{>$j-{4dpskJs7eu1?oH)eYj64_J6t3@1$4-8sGyAh&BxbCx&YGd z0|t|+ub~w4M0GK0UAsf|k|eo2zT(VmVjh_g0=R1?e+wP@vCGr>HvECzuOc+zxL`Ye7=bpx2*||x zBkN($d}&GRlZjDC%&SMy;)kQ&dtPUclDEtpW%MQ&VE}2kUsn zOV^sxbG%K!L4<3mC6EP*s6rJj`f8#+f7E9fr!@I$;?Z9m;$G!(;-l~TsPNXJw~j6J zX3m$aneLLi6Z+4cnu*Z3yJG=amtW`a@g-nION~jtfp$xT*2g%6zrLx*F%I+Ap9gB-%c?n9-9oJhwr4%kY zPGDFxNVt;*2k`IB1Rs06Jx2j7ww%l(*8&|xZr=VYwFb8-pSH*#9wy5hKCm;@nsFus zqQxR2UFq+%_Ep|K4!7#knthE%bp!;{-f)? zFu78+lf+%f=^-=jl$h;xDPy^W<7s?YE_H))l=pZ)oS&JGiP*;$W>-=Bc^+l$Ro9miQR{&ajI2nKxUCYA`!GOeNh61Zo$E?@z%)=JKG%~|rl5=R}t2UqlLWD)c ziuXQ$7>$=sGLOfg;+S}+!+BnAyz6cwDF*pLQ-+CEls$h;Orm@Nq@-56F!^7^qczcU z(j}&+@qg)dHZIE4n*JJW2bxz)aX>#L;%nDk4gx40x+N3HtNv&!Ou-cT8~T-g2P00o z`brogFzBQ`wnOmBxe^U}jqm_*G{iWgSqKHkmbg%4CI;g%sB^M+-nzfd8PnRSp$q=3 zn8aQayqw_REENvdxiL>c9QQZ&2l&{#4uTL#asbSp7it@Rj*$7l@0n>%hPxsuV;#>e z6d1h83khFK0_6r4Set7AD%$HDogN8$8=%sk=B4^M^q%An{G*q|1B(qNqTB9s&1!w* z6@zhA5_EaueyK#cu6%c!5~QL4L2~x!cDf#mTcNQ*{(8ed*v9{Rab5)SP0#D-=7th{ z0kkEmlYocyW5`sSX!9h1QkzFoP6Srn$XZ-fC{J%fInP#KVX0Lsn>&+IG5uHSuR<}* zyKOl;sM$q@$OKnWI@(H1TBxyelvpj{1QBK0+r6@nC@=(`$rAl9s^HW%X_drQ0Lb6G7s zo(lI!aN$Y$YWpjtYIuEihWZu>KoM(E)~eLin9Ak!-}}@kK30m^0lQOj55)9~KS_Ii zKM0c@v+8B0x9GXXa?sx{XS8Y!c=ene@Ze8XCh`fUA(h`Z9lJPpCG?Fyvn^^YKzyE7 zg;G?bM44N$km`EO%ndyLsak8SIFPCNrs4B&A?brdoF5-!u~Xq<2N&SP$jw!nX^#XM z^Qo4)y8!3;7TsasheW1T3mGa$j3z+)ULaSR^HTesC07$FHX9U@2&p`Dpv&^6b02zR z>8mLMtdn22|DvrMK=aFFZL+`iY}~ojLWao^1ftFRYD_D(%W%$Ge)$E!jE|?57yyV; zB2TTJB>h?A6K!>(C#-e*_w8#6wKoPK;*@To$)!c2gRLc!u`JJk^(yPY9&{g!LfFYK z()e^FOR*==7>qlrMpu2ve6k?hZM^)cQ86cFHKZR>4V=*C@FvEUl_xz0f`0{2NxCSI z{s3TP(7jtGypVXhn)3p_#rAswqiy}v@cp=QB0Gqo`YsF8(5`wF4T8q^H$h!=sv%{C z6QSz#9Dq1Xn~n3HFW8nQ=C89HAGqjR#a;JIw1z0Fm7JSFNpo}YG}_NF`sK)H|BybpQ^akC(t0xb1|4r7X}$~g_|^}cN`$t~ZT zTaTuzytsu!k7Mc`07GU~;i-ACK2&*$U+wfMSU?6fEwga_Jnxz|xI>qbFaLVNNR%ect)v=!?!DqCx~-#rDxd3S%X0Z0C%R{SAu`lA(I8h7}_gMC4C_J2X)GUphO+ zHrdbZFNb7Y(n=SdTbUMYT2X+F%V99)_RY>{*O-8B2M}~_GOqFr5M!Dgrwx(ca4hat z542GaDpPUS3wXg{!1DPopt6nvJy$TCWYmOf zf1-TRRRB+dR*VO5DTIv~xT1PD0+1j<89Uc30?$3}{KZ7m(HnJ1|47ljWx$U;u|C}W z@1+PWv<{sj!+Ds1-@aQ;TSVg8;wE|0Eqq223d}6zm(t5HC8q+jK$lwMHeu`0-K$30D%e3e2zZxUH7hI6K zPm6}1;_gv<&Bt%fd-`8b(m}8Ry z7R#GF_^$CF>05XLc(!-jv$Jv4|tAu zfSIuiFM|*#h2okIV`6oqNjq*A~#T6V@w zsU$3hBHm)pV*&%1W%T={65$HcM#(~C){5!84M)q75*sDS>Sfdu{n47ezvr}0_$Hxp zkNAM*%_UW^7fBqnEwJ7II*~x{R%dbV80u*4eYAhu8}bXQ zfw>mU03`o^jA5utZOo%_;>ytIN0&-0gbWKG~XXfGzS9*Lnn!_|1E4$-u{0{ghj2ndKMVFM z5D-`0$;7FH)_NF2z`~mneBrG|(W*WB>z`etA4w5lNGa}wSse6MD}u76=+wdf$yHeP zmb#9=$vltxU{JVmNM0v+d;ZK>_%6i*8TkWwvCkO1CuKvq+l%H<(&I8i zN^lm?hbM+BO)auQ2osZgotxGLEt$mNxDTAR5x&fkFWH;gC*(WjniLAoh$&vUn38MSe&&fNON-5;8}0P;VS% z0|9BIaOvUcE@a8HxMq$+xw)7OM1Cw1%sS;JAOTOYBr99*Y(ezoNjrXIq!>$fn#yHK zm*|CCzmFWUIX;os{$A)HZ6X=BbIvoKj+J1V*f8p<>W!Yhq0ew|$d+HabG6Yb*pRYM zQY<)6RBeYUyNTDB1lq&0QrEEC|DuFEmS?B$fa@l4a)k!JRn$9NZ$2O5tN`}niu(|T7 z5~j#E&4>aX)i5eu#o@AK;=5Ggjta))32XWKopX`qVEcm!=A>)}@~^y!zJj=2FZ)4X zOIq(^4vjqZyj~J2?tD8u#r8kFJ42C|nCs6?r$|J!4HF#$;DLX^P=8tnB~Vz_r$3aW z?v_&VHNKqx2EGVYs9C{Ykb>$49&6i(jv_lS6Fl-kEr0ovl{4)**!#0tBUuov$Ep-P z;E)ZFH1nRi1N_Oph3X3=SA7w-E(*%Caz{g#AJ^n^{-@8uY4J~&zS2xC_~sr2&Mpex z>l;*kFgX}gP|T=NLH+TVIU088^OXuQ2z>+uIHKc$@u!xOznA~NvLwbj?c zV48M!JlNzc&!#QNsIOsY;rs9-jBvo9St0juvOoUa03$d0_%LegGTX)%fV5CqOp3T< zfDs_9fB9f&ug~uNAkl%cjxF$Qy|El1&uPZFu0)595C2}yF}VZDAq9m{Wi+U}Y8DXi zav_zRbTh=zM$fRQ`gZe#8Q4JtG<#0i2N7O25bpM~mD#r_xf}Yp` zu37;{UXTh{9dQxvCizzlVv6yHIYNw1)6MjN(H;m$`dRRN)mNh6B7(2q@oY}1FL69q z`}at9!HP$F^6x@s^5R9jU-c-NDH&CklPKz)zpWvT%(`z6Y~xJoS8&$Izvz~0+&CkB zKj}n)=+}Fv39ks0s+XT2hM`v5n2wngd|>3 zuYz#ZChB>b#Y@W!ublBGX1fjUPG=Wn{czt6chtjZwoM=Lxj_4hMmBB}wKEnXP%wX- zRrNitT}FL|ZW9@;i(*h`x6PX90czi)S!;zXB3}H1{`juwI(cLX<6PP?-vXMDjr@qk zRl_N9tg6T-defCqUYndI`-0cmHxav7+x@7Uv1wT+lCv)R*vvrpsT=ChJQ3AHwu*)z z@22`Y+%g@1fE{xO!7bXwgFe5slQ(tEF+{_YdK7USG8vV>Ol@^Sp}hPniK-16Y$7fS zuICEter*@7c@sP>q5S5wiDP2e#%QroN{arO8et*DQI9zbLD?j<^;k?2MOCcI`~cM(O~g!ZASr;|Eo_ zx!TT`=nS97PK(bN^s9=tjj@d3JWaN=??h5EIdJe+SV^C0^s$>X4rB+kfwHtbuYaah z*lfR9srVO5^_aPNb$ez(Qke)~PhB=JInsmiG0@H>_N}o_`IQLr8P+>$(3cxlfFY$3opXz2$_GaieaE^XH7|m9%%Gm1v)=X_z#K_*zv8{t>9fm{uUJpNFoy6NLHjhT&0PP z)Fqn3SQ_n71fi1)JLmX_=2aOi03S%W5Q?+mUTEF*= z89gvN8Me9~E?C|EO|zN<5|e2?^LP|lq~IwlfJ;0T*)WvkFDpI&BN^iLU=8PFZG_x- z*L&d-M9w~|V&etd9IN6SoDSEHBQ=o*iu7z}ep;sHSv`&;{y3!mDHKoNW}A-Kkm(*j z*+Wa+6sw`ZtwGO=TiX)PE!6H7T8LjscKs|r`iM4>MOh#;D_9pQ!I(SUl9l{ zp2QmrIG3J0(Y~B$9r4gwa3vFW0K}_nH7wbuE%j{j9HNv&p2fs~Ve?91GFyKS>+4-~ zqR`D7!G8FHdYdC!WLr24V2i*&v}_(Rb25$*MVHTG3Br=fF?vp>T>mouW{p@?MoKdn zfhH7Xh}P18G%U3_8d+^}hJ@k7ZgabWYm{fm%N5B6A3(8U zV!4HwIhhT|95m_z7p4GS$dMQ(EN;5FiUz+K@KMGM|5uqm25W_z?Wvk=_nj7U3+ZBE#0a& z&1tOoZhk%dL!tdfD*p^%hHC~g@s^6)(=wW+RA?3y$F6_81>0`-%=GcN?hsN%))60WR30WzAW8debVZ|96)G9%YK^rQR_a=$HIPCU8$>+QBmMYiVDWV*Xzt;OEjoyR z)AFPWryGz+hx2xnI<>ZnzyqWmQU?a|DE@W`0$8DS3n^8O_}?O)Z2DOI0r6agRT#Ky zz6XdS^OuQ=S$l;u+d86xOkz;8`S3Y5=l;mwNIrLmTa(2ZFGf@S*e4k($F18e$F``* z@fly~eNNBMpA?>rf2$NMRBuTe#!z{&-L(fME4{RklP7a{K(fS^Hz}tZj^c}Cre}$$ zT$bKt?ef0XatYK<=xdWZEB3Q{wGu>-eVP~jwzIwkGa$wPpLje-^%jNCUbr3PO)9`) zFSpCbb}JeDnu-O(hbxa0ByZg7-&p5pgS-02E;kavd`6^W)_!aC|6s`1eRHc@) zc~$_M<}^&sg|h)Yh%dDEoB-?ZTL2-u0}D0;!mD7pSL--1G0PQhG)aOe-X+y@T+1ev zX6eH6QDDpaSa_atM5k#1v(y|c6%a)j2NaHSw^|@xaVlrL1inOS<^dG0=vy#8hV8Nt z$>SrG@Dj5lFAJ-$C{M)ox}9qBy4kx<_4&aaR7XEtLDDAB$4zy`={T%YA`@0jW5VqfzhLL9jGeCdW4KHBI_|99_f3%EZr@Vc}9+R;G4`t?NR)5!$XS5 zub+I%5?HDy6?T#Ag0EC@eFAs4UpJ~aPi%H1qG6H7rLci~a>ohj{443SqhH77N0$RF z4z&b`%kh>jNly8ktmjc)y#O?7f3`mP@OU#g`Ou=~VE#$Ns0JVY?p-OUS0(*?C`_$< zr_lNAzf}3+07r2%9doYZMa0W@r_Tq2J#g1^%u9ailZaC&zk^7qCnfC{ZCAPH>w?Yv zUF#-D2D8G2dE}YA^8GvkS2}xOjTFrg{@6)$n(Z}@Z+t^IkMa83+*)twxQe3g{V8(J z+s>%}bjuhMHruk`U;_vb)r9~ON(dK_}Wm($KpZkAtCHM3T4 zZx~Pz+4L!T+-%D32#&n0 z@Gkc`L((*^=#db97UpN*diA0Pq*K+nfvGwm%m2Z zQ*s=n<(WRE3o~DSA7-xtf4TQEP%O7=hyVrx3Og=LE<;qIz!DOCNiFQDc^4u}zGeK>E2A)BdLiebNL#lJ4^lDCilpF~6*Y;2 z7VYFOv;TSPr52_sOwyVlRIWY);0S0n>@dyNG9h1Ub$acaTItu5WwiksBCVCH;K$To zscb41qdcF6+DcQ&j1(vUfIZMDF*Z$q>!?OE%>aNcC^{x!-5X`q6T zX+VO8f!iW5-j9zH1<(BVkFtemF@8Uz%zuO%Pg99|+oxruhq7g*8{6D!499XsgXv}% zD)U0UYQ^Uxn@g9QWq{jV05weSLKq^~ zcvxm2DxdxRc5(G{4%k3cJ|g^Z(O}5htL4XgQQMq@z5((+U0%(OLd<=SB%@J0fb%$k!iTen24TF zJ`0FA0~T8pe_M+N4@CbOYm1hth}hoJ0D@Id0qsymqWzc6`cu(|juFV${ht0I$=bWc zUmFkx!_3{{#L$pwK+z{s>-C#Ly3JW6!zUm%VQ-)XOO&&lT5^0<4B^A6TkYORP8((} zLPFDVfMs1G7Co^Oj#Z>%qD`rq8q@+r9BIgpTPn*aijl=ZiD))-mIiIb-D-@X@_Pt7 zWmV6I44NWv8j9~nBU>t=Z?&84e4R#0BQF_NsV1j5qr5^05}%7xDrddtUCrm&XteFr z1NM{Ich`jkAd}?i-xl1iCI9^XAK+*&rV<#{A7tCm_gsqb_n02k2=F$(SDE`6ECV>bZNL=u^vC4#osq(n8CAJjB8ve&Q@S)6B{J~6hd4n9AXfNp-% z;WybQeeW#FIeg26;&48y?TmjpSqn1HA88;dw#Co3IO^Aabm{`Xf<04~<{A2fQSUwx z#>SWi3MfmaC~miVR4L*GI`rKnzubbz`lHRLQ_R2Pwj6ISVdZ2>*zccXnp2OJ-s3&d z49xU^XiwlW*49LdG5j!tf_ zfrE*PcuY=0uD(l&DkLW@-YfA(33W)G#@-@dg2imA+S9);Zs&ODTIt(QF~p%-=}=k` zl3BnrMqEbqpx#b|e0-JTe{LzaHb$W2MQsQ&y&&#%{H1!$L<4-qm)b9}$Eh{7;2lSO zpE3CNE#JCbd2)oIg0D3i?{W1!$@Ks_GS4FfM=ySme00*=ylXdDjL>qL+25T&JCP`@ zC4q-ke_|1aTRS~q$P_n~fPX}(En4!)Sq}qhw1d`lLeXyZ*}R}w`>vM?`j?Jx$+5{Nb;J45uEtHJF$J$d zTYczPkXKAZm*^Zx6wi*0xv!{5Q`CN&ZE~9?&KbYppgV!50Q>k9u*%o2yg&qBOK~#q zonuqF8CSiIG%4=`I9~M#+dro0IL_eVC9XYdl9AOmEk&*qL~3#Ll%<|$m+XBeaV<+Q zI{);`9?byE&DipiRl(*j2pd6k7^os(`$__;D zNC8AwKEA3vxT^(W+efIx2|f4@w6v$n>~%zYa74;rYS|qzYFQ~uJR7I3wv0tug|D8P7t-0 zsNZsLSYkOP639)hG2x;>XVD)u5|!Nr4#^_QQD#%IQX>$=P0B9Tk|w7RJX>qrEFwcO z0zHy5z;peRqgQXJxv`|g>gWhD0lKK7P8dQbsu^Z|aChILPQD~zN`~d$Y$~UNSMj?( z&y|_$0~ArMh0y)pf%mDZKZylJ#6U2IZpuU<&&{TyA&J(`ua5AKCt%KhC`(D#FC(mR zm90t+C4H4K)Qqzh(e7{<9uG5Nb9=-0j^?sSk%`#a5*zCQwKWCN`^74(1wiTex9n)% zOk!I`jeXyB<{{k)@!p$_n2AAgjX5rUy+*K|f*FYB|4#sR$$-v-MCxi@Z?4MqK4cfN z(()>UJn{n}vr|{RF{RE{xFyt1iHp~wyKL#{I*mL;0q+U;0jIYlTh+by(SaL~e=cYf zMay0;6^#N9VLumXAhGY0U3pjBk#NckW=Qxf1u9}tS@&zYxSbnL5?|*A8O{_>b#GGF zh88Nhs6!}In93*L!uo0f^vMIDeHJM^{AZIY!f9Efd8HjkY2ioApEzTbckLCt`U~9K z(JDo#G8|>-9lpK+8AYj53gcvgz;#_ms5=Uf>9UBids^Twt6qj82;dsjT;fv5C>X>3 z^tG$T-6-JCD?yx^*?XYel0XJFN6dhYBD>d1E^yna*qa%EhOul9SXZHACeM?oAS35u zS)RK%)$MlBu^=wvuQpb1MBs=TuZjX`bTDX*FgApl5fkkyRBiTiNX4{Xmd!!OuHb*v zDP=y7pfX0dXmD%z5hXuVwP~*ejo_=>!!u=D)C$5~dEQ_H#YI0Lv5Vl;uFkS#>-D@# z*|BDVNjpNoqw{vp*3DXeqFh06KTc`g{h(w@n5tikM*VQ(p-jJ;k{au3$|n2Y9?vRdE~U!D|2p({UGbxTPXs_Vo3 zt}6bCopAE5YwA0peep{3q@CCFHrz8!irMi$Z`^AVY#d%LZd=m{NIM7Y$h{{{Yparl z%R?7%i+)I@N}3Z-;9`oN&833ql}>7Q(lOU-?)aPM>F8#|uq2k%V@X@S*Nkb|={8em zZzkpM)pHR<4kF<4q5%R!C5XMaXH8h+y);VRUG85l?kOC-WAme8w^6Y)1|4_EG(=IA z(pwsezZi>3OGv*-Q|axRvf=b{QDnrTkB@FeV)dfux4!_C;)jNbJFuTU%6zJdrry_a zqX3dw0k2iH$Y&J;3r_vQg?O$(A!E64QzJ7`#DjoXOBNIWpAAd{{&M@V$Cy@^FbV=K zA5XvT4!FSIzaPX(H1u_*icts3e?$Y!;@=bf^z%M<2-%_tO`U|Cth)}T zJP9ggYfg^;!=B*CAy<-dnx7$E#<*;FgjdMr`45#qYQGdZf`$Btn%<5j9%$}lVy}H^ ze_WPKXrst}Nw7{#62u0=uVo_tEME3{(^*c~UzyHCfPb9zqs4MiNJa|qx5G6UIPaBJcM~x;`Hk3UF+sD-a}$;*+I6; zvm{(fLef0FOPkbvOvEi9Y)?bD42@FCUHC+?S$ODxvGow_-~8z_A0EjLL`H@iaRz-M z_Zj5rF>qX_FQz1W_bDBsD-=a+nJl2O<(elSzV0CmvlUXi5nki{nQ(XbI?1IXJm}Io zr~l`}6$oFRRM!*esFdjue)_p+fPw6!%~jKKnX>G$>gN^0z!mz<=*>##e4p-MS@g|f z;(l~+K!X$&ed)_bDr16O3p}KvrKH;Q2V}eQt_du)7r$X;I=qsHsfRqlF)V4DtbEQD zOrv8QrOTwfzH+L`h&1V}Hb3LZ8Fl@F3t2n3{KwG?J{|5~^tG+=GzcYZc$zKRZt#^< zt=s%k3e?;Uw5C)5cI!_O`!Ci_NB~5?+LXZRD|2iSPS_1#szDVD(>Ho%b%(k7X1`3( z#2i&ZDbRil$i!7*H;X*sWxYU(mJM}|HGsmG=VCoGl=kWtI0z$%hJ~w$z_!ME-fwWM zE&{aLoYgD+``MX*6(SG+Qn#Z9Ai4ga-yC5+lJ7gH-%|Y{C$CL}tC`yp8O3~2z z3phV+4Sa0ucU(5Z>{gkfl76C|QXs*3u(D#2x^nY~3YykPevz$pIH%fZGp$^0Sjv>{ zxbsx`T=IN}Cv%PeV?qV+RekglsY^2)dk}F5Q5psPv;N-WmzeWRDec}6;k0M>@)pm@ zY;?TJ4u1b%{A`FC02bQ#*$mdt)CtA#rJfsy>ae+v`v9?5+X&@$SJE%cg@E*}i4lBTh^)v5kTTo(z`dOiGH(3mNF z%3Rc6A`6{<1{A0YVge)8&_sBCr$AlyxLVG*B8l-vE;;dxxFMyZE&*cyF}__yvQ3;h z@HZ|hRS7J~Lv6$hMUm*i_ZyBM29M+)f#*0CYm7Z$#K&NuNX!n(^}VdIae)y!p{d#n z3P*$5N!TPd_y;!2($0pI-S!O7b1JZZsnDSY@635OxHgswAEkM#Gc&LVKb*=gTy}gD zbNmRc45*RxrFPWd<$&gOEo~J*#Q}<2d@a*;0B>MVBfm7W1A#+DPs1cdDCeL3nIT=^D={TUnG;*C9vjBxj)aD&c z7GTkO*k}7`e6$~xpz<6fg4d>!9Rs#kPyAYsq7{8L+_uHuF;Ww|?A&KCVV#jez*4YQ z3aOH%iGnl(PlIK_suoLH!V7PiZ_byJo1QT|>;f!xvi~5*N$g7*no!s8rrVF~djMlZ z0C`zIIFiA)u0#h1#Mz1vy`9%vGJESa_vJg@IR%x}SCLW+3B*U!Oh&_RK#gw087Fu@ zu$F+7j6hzcjh1G^*Aj5qMChF`c}@mEV5HdnS`F`tmJCc@bD#ImQzp!7|dx=xGD8S5)v?y zPnAzxW{TcN)Slu>s89&eIBN(nlXMF5CQwLo7hos9dxqHNMR-77)WD0t@NgLe6KFskK4A2H5!%;sx1CFLBkdK!_X_FW~X z8a`Ue1*?E2Rz4gDxf%k8vzVqQOQ74zq%W1os#V#axHew&CI~dyBui^H%om4@MeVH> znp$rew-mi0;Nmk_-f#`cuMY}MhFOCpvrOoXY_Iec3qHeV7dcJ4H{Eu^6WK2^%6-18 z`C+^k3M9eXEw*b8=h=ncgFRkq6{tWD>_e3BpY(@E?^|lE$rfueOyYo{qKD^o4{lJ3 z*y{{5m!b?&+%k1VAWM_>j$7HN3WL2P29wR-_6j{eoMBJuE>en%IGO%-5Gnhs;c31R zwm5==4-B(^*ceIr%zHYARQ`W_BC?v`AS?13zz<|5yMMtbXz|9tQWRX+dm%8z3wIZp z)yK$X-^UI4m$CR)H7dpUbrIrF!A}B$MCDA;30x`VneN+n`CeT={+R z45f&7&sFIC%_q3-eR|I|ch4}jez*r9O|_^Suzt+3T{c&263J4PO%K=tR-+h zFPyH<8c1h%m>e-rA6PC7S)CuN+KyWhXR~uyd_N5mM?rk_;g~BFP}Lxs1<_^G9f7c&Ws43QW-$tu-=Yo9!i4&FUBT_S3(5$BKk#i` ztWr!%UG~Ytb7dm&!dG3lZqy72Mr@Q~v!&Ta4v8A&8|T@oSujQez0eW-#^*-_5gjVo>}@!z09)~R z#RJcM#Q1EPn*h~2;?vpFV9Co-F5V7#N~7!HOAMgW-BY@R@^v9-b(U8s=$kA(TNzd1 zzs%t&HN2@3Ioa_}aEbtBiZR2Az~rIcIy21hwDvUZz6uGy9 z$)<1^us-3FGKo0S^GSqqHO-y7fZcG3+5X*4i%Uvqjro2)FYM|LAMicoIC;d>w}HvB zIu&A-IhZvMtaQo2;q{66`d!~Z^&$E6ddq9j?`~Z%K7I?n1C$PyLPwsnBxy}kmY+NA znjtem5`%F4IH!hQlLNU?$Ug)zgbKx0q_gOS6o?jpLseFpbrCa4&G z?-)M~U*BsJ#?5Yq48$sTBxyYD*>DtTH~c;UmG>ap0;Q74q8E>kaJ6!3YyIwXr!@MK z%fkQw43I&Z8Ha%b|NsBVl)wN00|1NvM27xQL`~NE1AiryvDykL2K@fEkoG~#tM>=J zm4k-zo5R6p;IdUHmXf!^c19PSQXM zoL>^a2cwE^p2tFC+tB;g_}@&KH}0Z*gHiB$yZNFo5@U3BP}np0|Fg(N1UejDO_*$# z4`*B!uDO9N`Pdrm7-@qxjtL!fv?P;%9~v0Pm>>3nR@jj9AeBl-)=H`wl(ihKeGTYd z>YC#XsOBxxOWh>PWJf`Pf@|B4R~pLX1q38vwBr0o*FqjmCd4>W{wTV$0JQU3P=E<{ zP9Rymb4wVx})yb?1f$>EV(tm$15+G>HM#HyZ<_P_21Z;`rY5U^Ldlkk9M;w@qN z>1Vz1?E`CFN2|o-p*iZO{6p#O@!g&^IqW$+H|Ta=2`C$0##kk*z|WQ0@)nfNm5W&% zUqaT-T#{_5hF-&;v1m^SXyft{xcnbKq(%#HW}f?--OcGV1y5w4g%Hwn(;+H_(4ORl z-bt9F+C4(%IssfNHUGe=0t8};QiwDC3~I69_-I;?-^3yp#|EVq?M&GEX1wSDVS$XD znqzmJ#A1caO0_c?ZoRi_j&*U~&fI0mxTa_(fZgNp`rEBI139zhxZfs&*TF!#g}r9n zH1_~(vc?R}eL-oSeXctyzfUhl4OHzBbhUyesZHQFP8CwYYPUy_#(TFpkq-he8Yev& zlNK#+f01UYXhVtnw3?%V2XlD|X)&+wQx9Tw5mmvW7Z6Tp%x&^xmOIr=&I$mJ&WuoD zte{sywCM0d`fwY#s1XXiU|N|chWJlY;qP;y$UI6YI>Yu&6tq$&p(|Ienzw*qeTaF9 zMELhLB_q#@4C7bvfuC2e15F^0|Lw%G4-(zp-jJc_hdbhXN0NO$=uF?K&2y35NVIkp z9@|}GeXOSUCaZk-XhI%+D09$A+QXZ8HxaX5D`fI5{AwUlHTHvb##^F4f_abd`>nlz zFlH+f^6F*!G{u;R27D&M3QU;Mp=iq!qIC`Z79CxXo6{;3fL1v@)7S!u9gwQLkIdi- z#ey-Fd@0XX5r@|`?|DEJT(~|Fe8@OWIGV+N1F`)p+5%9NZ6a}HfsiIeA9Sp%nM`3X zXJ)7zCo#gFayxtJuY3QE(5M-op0;{?1p|mi{C?6rtmiq9i_iUTjs-xKh~FtDOUBtN zc-?Fs;4RwC90<&3Mj?tdyplLw%hHu)2LZP!icx`r9p1@T;C0<_EI>vz>|8SfQx!cW z1pxLwhp!-cP-|Zb*GxX7kFqhYc1=?k2F&{dKB2aDEL?8mi~$ty(=bjEHk@?+@l=Zq{J|7DcJWTa0cRo6*>J0 zVCmZOzohO3@AX{3`aEcmHjCZd;fk(ETdaOryTU@9#a|}MWCxj}%LtvQAVa#9E6Uv> zX)7=|>@VAN@m!~T4;<`7Zj#WkKogaOUyYFX4uF-X=i-awESyB+%O`;HWGOvdCJ>Xq zoG|C|yRvV)EVhMVcu43!mA?OPh)7xsu=IAB2jR{=$tR1=+9jMd;HrM- z2%u}Z7rnd;q(-kJc-X>P_BYZAIK@$T>Op_h#}3e2))BHPs!?ei;|Wq|keu%4#w}t? zkvVLqFfL(|Q8#Vecvicy2Ye{rx<=E;$!TI=JD*npWtdj1X-Nrf%|B2cu^8zeZKr-l z7U=#@=c$X3+1vcpu~vt^a}OdU?3BEtAF&HNmy zS!H`GTQxv=an1+c~sA#}~!o9IwT>}+kq5+iDlR8D8 zTcADSbvNg82nlRvr2!`iVVR`;Os^yWf7nGm5eHiWkkY^f)czS? zvTq3GT(NHc06%`qo@CMKH3mYztT}M&L+$M*R}T7|@}K+6y?dNE3^$zP)mW;bI6c?3y;fm3JRkJbuRC8!5yIN}v+uVo>xANISw> zq+LuC5#)9FPHQreH+}@+jaYd-M`aN{_V2Csc$MU2)w{ozy!{^i&mtWYdA8GOA6-r^ zUtFZICl~l7t{3S2Z?aE&Ff$s@VPMAB5Atf9Rl|E424cr&!WY&!2RLS)3F##9yT|hP zN{s7(IRC|ToQN~dw_W%DzNfku#M-D3>8Lo#u%Gth*FeaR$ZJgJFpRKhl>onH74G7`ApG$Lx8USuu=x-CwfCA!^gd;tGpp zIu8NznpX+ZrN;UfP%tA`%<2QKZo`O)@ros^?+Q9moB%zBgXWSb3wxO0j1>l*pTso{ z%J6$Wj0W$eg-l()Oo{o;5J5kbpy2}AQs7>u$5pz#i71LVwUv+WVT2+D!w#kn7Rv3$ zkG8r|7t-A<>yB9C+)KMLWBPI+6Y8h^O71z=32C#ZbjgEy{Ko79qccVUgp)*qM;Pn` zechzyAI3FijZ&PQX|kBq?Hj1-Qr-a0Be$QDVH#h<+^bGs6UCD#Avq-Q!$%hR^)WhD z_RVXCVTKw+l_Af&k-~_duc4X3^5>(~9H^FuJlh5@?F8jFfX+8&SxBG5Eg^u>(d$IP zRH<4HY=X%i=9<}@hk>0rdY^VYKQHe@0cw0kL7hQ_uUi(2xW-=cnM)4>VkJCYMTtf2 zRnH1hXV5wqFj~F8iJO%>rdLIX&uks$cUR8rK2lHf90jWlJr=&{ik5yKIu^O)lWF+# zTI6V`%-T^nygd!UM8oa(4!@WQ!%W1j$K1GcXTCGY5be|>PZ^#&`*Eja6d$@KGi}xb zuoDQq;ItRBB9;6ht{%6yGos-RwK_Mg<%W^Drz+nbW1?dd^-+EQDXMPD8jf|EpyV&^qgc!W0Qr5mNr>boX-C zE+!u-o;q|UsF&}38ZXy$n}~T?U%)y4m8aI&l?0WxQAG+t>0FdzgqxTT#l|V)W;JB* z#mX8ji&&xPPF`>$@EHxCIQPFaAwwmjVKjkQW`c!FeUR#o;xzY{T7S#lGirZmnG)Ko^BtaQReH8z|vbOv&0||hOfqJu4Jt2~L^2&R< zECP;3EL%fCKqb>PjDx((dY;&RfD|i*9l|C~w(IAaM-mfLaB*yEjFo|?@DDEj4DktW z#8FAm)7iLaP9~EyezV>wq)P1lV{AXk=ZHxwD#&`GQ(BJ%QDkG=f@uhVSJiO1br^d6 zdnT>Obpe{X+gL7K7Qz1ZpS^@^W{61MuF!l?EE_odL_<(BpHG)V!o*yT3>qd8g}efC zy}3QBGCSEli|XVG38(nr_Z<$=%gbieA_=i=C$gQXgh3LV)6Ujxx|5D5-m+BUUM$3A zemGIr3+P-m{^gR{J`ZN`_Qtu6a}tn z=e;X?We90sTqb*ev_QFk$X9wu{Ojw2>wo zL?0pwR@SOB(SF@-mV?wj>-*#h9<8=f?d&v|*8$$rp8|wts+Fh5q+_&j!pMd+ktegZ zI-z>;f9MQk#G)`+vOXzKsz}YnOR$nYrg!l$3=h0*rq(WKa=?#8kU7w;b&P!&xYYug^O3{ z*I#wqOlH-S$Q6r7*6&cKeZ*c95@IAaOVVPcgyQ~Z6ZFId;jo=+V+sc6G_h!&=WXg9 zgN-};5_*7YKjbXXVX=yB(86(Ps@9=k0#41Nbh;sX`k}LlPZ+c1l&UN)PQL+Vm7t)t ze!Ph~7QB+t$rK(E*R7U_uvrpack|fuD=+2o^7_w3_#U9%>@wyo@E?90wjy!Y8^hJA zGqPwb0tzM6?hUjP;3;F|`544~VhE?u@=WyxeETuGl%u{oK!L}Vn_pm1DUYw?F?qRw zthh`---Slb0TAKmbl(N}tejcJTDx2AT5VCx3!O^4n}k(Di%jM`Mfhjn77DIBG(Bjm(Z#9jMjTOewvSkE)j;q~iXm=XJt zIA4MNvqM)x&0?w9q3z~1M|To*9rD$2a!KM*7*D1FOZiFjol_1(L9A^1*pwE(^AEdh zc{nC^wsuKS{m6`XfV7IS1`!fD%1!#wS9Z+Cw{?m-@VW~5*eV!nY_!PC&IWPCD0Jnv z(Q;~lhRtLdDnpt=0HAnhZbTX;XBnvJdDfheF{N>N0nUkugpb^V%Clti;7=#fvj7Yw z-_}Nh6;^f(;;Kzv1EjB6pqyMDZ8+UPJ|LRrcj6 z@QZvc0E&CmrtEuZ8?O{%TY+fFYx-7c`t*4BsFGM#K zG(dP=rTH>jpg25s;9Oq#O&yEJPSh2A2fWP-OSh`3rSa*q~ z%$QEq_ZxKikYsVvIv%#jEyO~ev015>0<`sKiaaJ@Bxs40xLl&q>vLF;Jy(lI%DW-9 zJS*jvyWAV=7)zB@25viaqXMa{PNps-{vTwpg8^p0OFKfWEs|76Gl<+ANR!F%uo#XD z4?B5tk&{dZzQfTiAjis=LYf4}_db3~Q}I2viGEzyZ9v~Ui=44Y#5ArVAnG4NzvxWh zk-N%ZaPo8tMDs%;Gd^dvX}^2<0#tthRAf;AwYLE?dg8lo z*BZKk*N>`lrP+~Ar|?J{Lnyz)TsF(%DHdybm~^lfm;QE}OmQ)o=S1P|F#2*vfZ01) zE7%3Im!@b6L>e0=Gy*TqT)UfYrkCuZdhB{p;IE0J99iCC8p?`J=qf>+o!s?8p{?!e zD|pVChW9XGxlD@hLn$7@*yY6!xMI);t!BkrgNuCxAGun#=|biem3Dl8!=#T?giHY> zYPJDAgzL~1kYBTsGt3Z$H@)tYM!UOXV~>Nndj**tA}pz~k1PoQD~t?TFEV^;Xr^`1?wt=Zv1k>aIkW(g>h<6RT{54abYe*6h<#!N;doEzpxqBRb$4Cz$)MbV#wdUzP#|gvYsd2+|)xn zG96uN8B(3~8)i!#=C_>3{q6*^3x$NpZ`x*o!H{L*(sc?|rn_`&;70U*q?J;AI8@_* z5>6_6UvFtf18QNDXs2JJFkg=55LNu)SVg6b94qAzqX7J?q!^k^h3=%Z;UhrVs%!D> zHBo{~Xa?tdU#qGDCUj0U^`~-mR3nFMmXGvjN%puv;5E*7=%PF8AZVBgs8@s^$pRnq z%8!BzG3Mh+xh@cVWXCyGsh&$Q*~py&E5f(QBF!xH=-I5{%W{PwsOg;G)di&Rv*6-i z*4}Ku#Q+Tfb?0fzO&~ll*wKAo^nCDxF{)^FFS#0J#>Ch&nkrV#INom5cnNQ~SP=^d z!+O!b@nf}kC8D4NnZzHkKeunRJ4K35l%muL}~k?L$L%A^PA5P zLowuR578gU2tB9FX>9Wp)_g>kG!Mtermu0MKje8gUco?eWVDZsQBpH;j|GkqXjQ00}21T z-!->@j?BBfYVsLacV#7r5J`B`#IZ``q5*^jFs>=DNp(vK@P=;=)D6!{;yh+8Y2|b5 zGglDbOp9Z9K;NGkv+4g`-As3#)rK}qKbzQtuFq9!q>Rx-xQeQNnKOqxQ%6$1O<)O4 zuKf>m8%V9rjgqY<6P^QhqY!UrL0Y zm_f0L$F&%BXj8RnxkE{aozxuV_Qnn}J1T}@ST1&NJ<=y8hk#SLAv3FScheN{7Z42) zKHjsC^B_Ujl!+<}&tsv0OBUZQSM|xAIG{Jn?%1epM^(#1GUk0c4*-f(kSI+8BrF7GTA5h+?P*T>r)BkR{UM{oL~l7OGV8HFmYrd!af4pL8exgm%8*cw2~i|P zxmNP#%v9-aN3SQ~;D=>mN5e#qk8;3|{nvfP5m#==7umK(5^;Stoh>BCC+OgChXA2U z&G#U3_8bvzBuRPL${FHF(d8JKT%T&{gmecpWjvA z2W|z<4Pq?(MI?R`eb(&lxQD-;1%>wUr81=KPKtOi2p(ahIWcxzgLowqGyOY5ck3c} z;?+;6>#lxS;ezdYTTYZ)-;lwQ+}tKDRaG7f&H_wKLlpWUMtIV`XpR{AqRpNpDx^Zt zs4Kr{vw7QRoGr4M)8;&s|Cg(xsG!sGo(i&;Arj>mPf13EfXUjOoJHb59i9MtN~Q^W zW>&Cna2Z|XCd1hLL8cY7ij@l?=lld;PimVcgK)U@lvKS)5~BBTEZKo3-4qVeAaABA z8J$;iD&LP0BFX2IHEEB>y+j9L+|AlN=)`qDljC`05Z+>uw4Erbg|)0&WX^BgB<&NI z?XaX*4~}}g0`s9M(XDpI1<%Q0IaVjdL4LtLr<_L2`WT+_j4$RDrh)L>Yv@I@E&7?T z(^YLRwmJCUT|B{s``ED!zG_$UYgh&F) z!2kdavO$_D$AJU?|NqI9zyJUP0E_=@`Pk9~GK$qYV%sB}w+z+tol^a>>1j|{^M?dy ze^o9;6Oo3c5Yl$yUD1u>&Ro_Vlp2eQu>67h^j%7m7GFPU3tIGWgM>DH{J|qKTEji6 z^R);_!1y-fThmOKMM0AOJ`eQ#n4CFx`MuA=oi0XNyBNIT3mFVD&P$%qF#hqBjf}FD zRp+|9W|ud# zu$B0Vx68+iR(cp5`TsF&SM{`ZAq^}=ltG@-IZtc3 zKKfHIc*^Ey00oZgoXa4#?!w3lpZTV72^16JX`U9S*tmGKitsFHCo6x@Jyx>dEe>~k zkM@D9{SsM_n>spBL>CuD%@QI!tFK?WH)JF=t84|_F6m`@ z#Nd*c1zivU7uzGTwxb=*)_i(k6cuV`AttrxdB#Gu7YH3bzPm&5(HTxWCH=Pu&6`*w z*Tk{7Aa+0fCzU59rCkr@u*J##Ro&*6-IEwvOOxa;L&x`bGbS~?q3RugIfX_M0B*(S z2dsVE0TH)Pp)%Gs*8emFlOb3uhb?7YuQU`%DvW>0$fmgLx*Dp(3WGsTIk4XGv`wT+ zB$cbI4KRfAVN&u%En1G~`QbTDmFG);II;)R_|)oHT&0)`V)6i2EiGpjS>`OU`m8+e z+msoXw~{W;VO)A4#o&$B73R^7FT$@Zx~1|7*~hSHwaWCkda^&Dx6h3TU}@qp8c zj=1a#&xb^Y5a31`r(p$Y!8Q;gg=xRQ=zc#0w%^W~Qa?W})uau0lM=VAbP^8rKt~rf zEe5c5@6SXi%}t9<6mr5SwnC&8Fw+hMl)OO|uK(omi{pcmkb#WB?v!eV4CUcC1Izr! zj^1$GFxB3vbKTbJ4vCK+Of*=!d;HM=HwE7AN#!^CS3`@g#YN=aF(K6gEAxIDFAcy5 z(xI^DpZU5c#{YEdMtxA$Aj5lep(pLV#eMmnm%8TtWay6`C?F)1Jnqg!dP#NG*|^Na z1O~^C?NVwKs-z*@dIb)S@w=tNeDvG0wHaM(6hh8 z`OzocqJ~dg8wyRt-EjNj;mw~4ZU5WrVe$o~TB_DQ7Mk_l^-^(>_^#>CAPLgD0*O&6 z&K6tam=*PWPzii-V<{x2_{$~8v1F-jhbhc*xEE*dAgmdANy2+pxe5AVoc4Y_ainJ5RjJX&dc1Xjl#kyz)?M%*^ z;%(50dAB#bA&q7acDAmM6APg_p?rR5s742w9+k6ZlXO=ZPoA3UK@BfWBXBFWcnT{! zu-?QcAFC|P8R9@~c%uzgIQzjSt$=uBPMgmP}zhd9ZXcutt$N(}di*&MMgWADP zWBRs!r8x|cACcFRA`=Q)p$_v&1&i{&?0RevX6^1qGI8}nZt0ha&=R2o`(T!~94DA{ zxewiff_0$N7IF_XBHJ10A;Adx%B*Pnss%)c>LQX#;-+^jwl|7%eL4=fs2ooB40U$K zs%tR&8&z5pm!dboDgZkw?gJTa$r7&PYlzC!J((lwaBr_phB3CK4Yv6S;a{pZX4=YQ z2Q_f9!BjP{PrRZ)#ZDcm{O=6$W-+;H0wUCK)Ju43>y;q zBqBcCt=Mz$J+;+70-fal=22G2^PsgwsfztUtId!L;t$4RABZO2i;ru6Xzv)Yi|@_h z_2Ej*f4tv4-i~^{@zNeyG8b;6Yl2$rOX<28rJ%`;jmf@1T$J*=$#GRGxJYV6*XRzf zzd*W_n=ZNa$E;|QC68+G%TD|Nk8sa-{OY& zh$#s&o!N$m%d}W(>6`xwD#Od46(ssk+|J|s&#{9g=A1YUvzc%97VvZtKQrby;fSCU zB0^{3Tdrk~3&4WsNA9x7$u*(^clVWXgO*HhAMt68PfY!aou<{^Z|eG%)d%j)wwxq5 z-%|}+u+DS}wQ#?C&rRoX(G5*HzXtUsX7Po0(la#yTH3MP0;o?UcFrbVu4eC;acr03 zKXfjVhC2uAu~rLP{w1b|=>8?onjS}fB2xmJmu&GtpYwBM1Q$Cb$6!gpdzlR&uKSG! zMc)8ah=V_K>4g3v?v==LE|%Ssr1{=I<w}u;!ZEp~d-eokmaT7``9}V5mO?h(jnjr8rM~tbp@>2$CYc!fY%433p zCIZCV@7s-m_D8F68ADyvx5I_HdnzOi8y9ewEyx}WX=0h5%8>38zC_7-C4a|A_U06h zu`h}UD_BKusnkaW9dGa&<(#Qp)-3S?Lf2p=sIo)*gvuLvCVjWJN9>=W%H@Gl8wE#T zjuCl!Ew)m+`-ymoODkd!->yT%IzwsBrnt!e=)wh&MbP?RTj^HwW=NUa{6 zL^&=Krp@7O2|2EbQz2kA#XRLrez`m83zcW=GGhSX&h>&mMZXU>!8jDTXr%T03b0t# zUrL_i_m=P>&=$nbU>cf9*32&Y%V^)kb4+`jAU+rDrptrCucMml)`{(@g{2Q=J7FRK z`kkuXvK)u}QhkdUX17Xk7x?q!8S6P;%C{sx#Tnec-t_2t@6h?E)Va(rARO<5KpW_O z-4!W8xL+n*a%hBa(O+VPv#j3+v~ZwyXW`M+Yb<=cnsO(yG*u z-o)q6ae|MX5e=nY>8orRwKG(w%%wrlj<8Ryh9|?ktsMfmq_GJ7{t1q+w)O(}kRBPh zTkf%3e|6i8*oZNsT}z$yL8@rZ@41(@j1Z(FM_m)15ml;t4nzneWd*wJO?FJkK@Dv0 zQwp|cK#g{Ayt!JM*23KDQXkJVkEOoU6sOe;RMACN)Ih*G6!3?MQfP6R2e1H-(xR{o zkVH+-X_20JN34)=43y4 zeCD0YpK7S^xe7|ATdRn)Ej}Q~;F2}VnMYUbJr0SQ4+Nd^H(TCFb0tF9dQ>zR} zKxwMGF%s)g_UGtR)CT1%f8mEKBrEXN2w28yUiBY#DhFHf-dP??r7ygEKYJg(^V{Pc zAaX_Yir0$JI01oLiR&oqa7lg$hSV+Yo(FcnRRYDsuJzJa2E!N$!RIIr;gq1Z`&o7` zRnt)ow7;Tz8zL$vdTvr>B8>MjFF@i&mBr_=u zo$?zL#P1!ii_~)I?D2lLAU}PHwv=y>aAb+Tdvb;NwRr3v;NK2R!t_1I1d4KAb_biO z^ehh<$bvToWm0co`yyT2i9Bw0uELYGC-j%4z`$m?R12biW>Z|9PyvG|Prp%mqg&cM z;tRna&iMAZtC&z`#0inng%`;`P(!V;@oP_9-4h&>0}4o2Z6B5Emf71*Zgl~;$U^); z5~|sRl>d5m%CW8y4Nh?h|L=7^S9(B4%@-ns@?g-h~-5k|Zi;2+~ zC?2dI!s0l^XK0xMA1879qqBBzO@$$UAYupP(1=oWBGLBQ7AhSPPBJiGGc%0V|EgXi zw0wpq5+=sMyT92;SjdSypGdm3hyPT{Axyyl01byhnla~r1ONa3$&|nV00RJv|8AMo z=Ir@PE!THO5ennY6xzc$XCTMG!>5symum;1TwZ9su$?+ zprwoT5HHen!BbRev>iVGy;CrdF$>Gtjs)@+APPx75oNCjInNe`=wqD^fZnCbSb~nI z8U*@R1$!n+hW{lW<3<-`{@Q62F23H+#=0K*E--1ijXeM_&ithOT{5pvHimz1K9bf9 z8`e%1?e~ai-@ZmT<`j&r%Yt6{Q+A^jSp7W+)sHUd$>B)ONc=^d^)t14D%bL)f#O&P-4uK*EOmx%spaPVC9eWJZOBn zwh}o7N*g~wA8K{}L(iAOd96RKAJx7n__8CXbS6bfWl*a<`~1oHqA!Y}#%OQWQK))@ zXF-o5vOB@1Rn9;=S0PYL7~XSO4?WTP8(8ECMKysyde41C5{#W0K8)l{j_=UR-{N5C zmrSKht~dfE3Hd@t3IJ_h->J^t?#UDUn=)&m>*YFK6Z=)V-z6RXpTk`DW5@rp*QjMX z)QMA|5}NFKL|J#tXu7Y)2BbVbXZkC_IyZ*lyRU*TP^G@3mx8Bh^eYrY&QyhmrEB5d z<2z>P(3#_npH8(xR~Q7eZCR$pF){#F9G+C|U3z+9Q*6Z-L?F_E z!1u>d*etU;uDWd`fJOS9eD`A~fU%(pp=tHWzO-H>T`RG%29?(S^fx3_C*tR9+{$XV z29;6qpt-i@+BHHthsEo&!{k^pfiMqpOM^%W+^kOZEjCKa1RSxdwFCf99dT~V>ba^` z{%|Ww82hNpe0FSHGlD{=I?HX%`Fh2Zjf>{CZ~9v%j`?!~(bi?C`>%%;P+c&-O!t-P ziH|yu*d*OXZIQ$Zf&}4nG&~MEKc$V=RWwX*@D*wl=r<;#y$F^>yWHMDX>Wx2H*g{} z0BR-R!CWE?DhZ=*a#uYQ3OA*F!L|W)STz385{x6}Je)Js?FFSiLnpM#Y7lE<*~rRg zvuFaB4kfe`DliNQu4SkSPe)CLgId0kW*Y0v^n_Utf+z~VvLSd*bGZf(XF}I`HH`)p zODS*@smQ(YfznsiG^X`QM=Tk5mvtyAK04ueQ-1I?0)i88Y>o4_v zn0-I2c*P3eVDj;r7s%IXWr#96_E%vTFe)WE9M?N7&Y<`z6`Z`DChFf_o_`$Q9q2y_ zcAf?Om~5v8X?MCZPlC^=9O|WG+bC(0rWt@Go99J!gtH)X*IeBbx|`2ou3zgqSING_ zlpYf7arDg!?Ypd(NQ)w##M`H|$3hv46I^nDD0J5B1+&*#m8>7;zAyP*AG6|i1FceD zRmikvuy0qk8KEc?c)2E9NZn1TvM`e+F#}VIJhxqGdw0qy?bfquxfjgpuNL|$kK*!g z06*>-n!U9STu#CcDq-DD`G0z6?7~A#9VooeeG&QAcHo9rFkOGq29kUcCQZ2;?Mk`} z&~Y+54R2@*XJCByA1eqSftCOlmac1QM3dwO*P_X$zeF}(Dr>{mp_H|Eg zMe~s?d7)f-8CTj$ma1146w$DR358~roG=o`k8>zzo#-!@O%=RqAdMtj|D2clTfMI%NF@He-Ut;Wz~;8UxLAUJ zybz}}4uy)z+t|@+E>D^@p_38bX%hT7pW_&eRW&%QTztjsKeb>1Q(W zg-KPoB7PARhze3y%u0HKD8SqXC59AegUzkWAQN3nBKp8!cA6GU=7Nyfooxx! zT%C*2$-Aj8GSw%HWuCoJ`GVJj2Or8sC|Pi;I_t0;m1tw^k*JyHH} z;mZiC_3b<7%8DMGrE0#&qLa%>CxX(*pP)uSnsa?Q#oyIq*T2p_Rf0{xQ~SFMwpL49 zNy`Bs>|B9rgB|`mY6%^@EF+;UD23v|q%(jIb?hd#_jy9TcMI$AGV$T%62+cgU=1by zDJDsB!;K)@@p8sSnGIh#hP<*Y*$;o1wD6Nc43d7wbI}m~KAB~0@|944<3z;7k9AsT zi#SKMEN^L4MFCsWX4T~IPU~xi*tdjIhHW6ptOq(D9up~{=<#6jGv#Tx5fp=Q5Fi$h zE$u4Y=oI?eNW-?IuiWq=^Hn2fp>DtUbLop~i|85My;ADYE^s>5?N5LeZv zhySzz=hu@hK1`1}jl~oKRi~mk`9etqr*lmkQ&Tv(|5g3M5OI`?NCE05ui3_!FM0O@1bW8 zFR7y49EU2F17D$5v9YskR?7hGP&FldJE{yP?*?@Sm9{q`*L1@o39Szn&G1CxITWw8 z2B@D;#sk4qR5>B@nz=O^FRI_vt(Rq2=P!4l7Qb#{lI+MeARsVq`iq{VpLgLXH3kz? zkD-=f(i(ZHumiXMa8&3OY{>u5HNL`Aat%9LVSqaGE55<(xc6UsN4d#R=M=9W>hKZX z=8*j##v9hcs)Z6_;$n|?h`|{UA(JLdi>KU3(b2P<1-Lc~Y_%zn_z%G9@M;FG1;AeT zwP>NEC3XImXDvs^deziq=-@)=v<=ZP*QN3BI&!M4rmIbCz36@kPw8az&4%s2F{KIS zcVKE_$n+SYMGsDv%u_2JE4V6uv4?LiXmC{gd1q5NrvXT{Tw&$Q@sNfIAM8BnIvWGt zth3O3=ESI=VH!xJflpy+6Wgd#dPnLnnD)TWZAcVyoW5?PSV*_s;PrsMTd^BstQ+64 zI5c%PfS@0WG-{Bj=Ski2?=Ez((3yEJd;McWxduvtzW%@=h4<$+clO7 zwg@efea27w4~oqCobrsG75})QP;Mf$KeH;0)U-)s5wN@VHubo_)e;gvzEQTPS=rQv z`I#yD2HX35dMk=fiA=$Ez$!p}x`jgkW>BWfW(;G{bnxF-mmkBSBwY2s003*mF*8R( z!i&J=`|D!R?GGjy^^xvbW@p+gP+o!wB30#@63f%T98w}z*Fl_GlXO?WeA+xRLX@uw zUa(hNT0g8p4Zo)5tCgWjQNqDbTk6ZX-~+&iNc7$h*-*v^>hx4wOk_2%bL6;UyXfPd z)kp*^eRhb76p|gyA7F%UYn+Y5B+)Vq^DOYSarc1U-+TQ4RF3vW%ZXrY3%3G$4d6$v zHz%`rCeSG>58IQ%0^5js4zd-bq{XCbPJzFBJjad5l={z=f1+Pt<$c>izt)AemEKXi{qD_!=+UiLdftS zvs~mkd3u6Mx%!>qb5=uGTL(Xi8fn_&Lx$kYdTTe9ZyY+iE_T<_gqkjY566`8*V~Z3 z6*Fvo_$g^=lE3e&m<{!{hEs8J-v5`y{JyV(WH8C7q{Xauct)@`;!T>wHIkoIjt`?^ z+y=Nm$#nY>ZX)CiVlwCbtJuT`+*l?u4Tj~QC_5?$5^71+Odwbl&~ z{80Mjv-}bWX8~7it>xUC>|8;~x`IH>dSYON*~vVyr;qlD9ghmpg#AOO;l&dS#p_x* z77zK=_kV~e<2B7JFsU%x96#~rJc<&0@P&z@ww*H!A?S+$AMuYDdwMp7q4rW()NT0? z4?H151f6E9^s(#O1g`nv5c-{KD)_sYh$>-o&8%lyl?FfkiZTw$0b23h7lUmtq z@nm>eMSGkRYJmU%4BA1OItPIQ1P}lJ{Dw3LL*POZ1Plm45C8xJ03!bvSFldV>%@wb zSZ^$#-Qt+1j5Psz+8oRRGh^{0`IcA6#PBfCEe1Q;REBhY=3045Nl++H%dlq!wiUv< z($x@aBZN(cSa-?P`|$46Y zhzy6Nru_Qc8i)$)lIZJ8;YU>CNXDkIsg(9q>k$Z6+4|P!-lte0)OYRJ01YlRuK1Mq z(z&}2`|U;_C}`P(ZQS2y4eD(vY9<^}FXk!av&3oJ1j9>4dF+7cKpCokNo_T(G3uwr$(C&9`mawr$(C zZQHhOyL-O7xG{@~`3EOzRaxiB%p|J{?Xu-r08e56q?I* z)+3;Z@+E$0*r14ACOnf6TlfM-O8lm!TV1au?)@74l!EQoM#|+}HS@BBcdR7RA0W(B z)c02T&@aeqqXID@Eh3zaW)xcyZsgy(5*~pXmq?xFOzU>gUTertQ}p(zLp458zcxp?uoYShi)51t^Ets<0!yr2WvlWV%2qP00fie|MZr3I5?prvHUvYrykUbLrM{>~(V~ zULjVvqtGIsdRi%r={SUrzyTVVR4pObq*`Yh1xQ9&p>a)az@P{B;5-i;>r{L@@FxCLTRaXRiNZyLFGFSALk(iN;VMkIE?C z)&sly5xJI(X_Wxdq`H}L(L`D{ySOzHpkvHHDm2ka%|Vyysg@p&+x6*Q*M4tcM}EoB z$bmjwjw)g>(HMmyV;_G6KKf{iEyC`Y``0&b_4fm<`V)`YI*UJ}^(r8!PLiv9!gOF6 zB3fPuB5(MoJ}PxNma8OAuJ!Pp;6@cw5E0~NlN+EiuMjVZ`X`Nvk2x6vSJg_)JogxS z1;?O`5WGD+Lha-;O?A}U(ih#pIqU8q-H#h5Y4kMCIm1ehV>fOm9^m_#AnB|Bg=-4s zz{6$f2kAwha5+Pg{|HMW_AF6G_W*AFOB9ZqO2QpJ7}vo9I&x%N(J-GWq`D(R5ZBM5 zgPpmMZO)n6YR88tmiYpY>IaHYRB*BCHDP0nADu!f+v79WF^1J}KJaXC$;c^$aSWqg zOHf&>uaE9+w^`GTh*>3x3i+`rDSKt;m_&p0yLQ;W-scJNL!nI6f`Ev}V6rq& z^tu*JzKwvd@iz3S;!M4Y1e?y#j(YhI6$E>b5w-Iw zBvMZ<2_BUa-u9JM;i#Wp=u&nA97TFpA4V!o0%+|%d;!$i*HV|du*a@k9{;#KnONqW&oH5gmA{*7nfzTS7M&yAg9#Wj>kr_ zyE_@4JQFG@gYPXSa^zV2{4ZzZ!EHTEOqQs z4GQC#S~b%y^VG!_NVK;qaz{oPj~Lm>GY{QZqiqkhiofDedc$4tv{w z>r7BRpl0caB|IFGv9<+_He2JhtNml8r!ry(?+#($??)ZfBEef>JaGh9q@@{z!`)t_ zRf`O>1~J{gSZY~TKJ!a%%ko;8dQXR~AfR#sUM7d0fLUfe#&8i(>qAT8Ki!)e!{L}E5&oCMq8f0;7FmpQ?5&;8izYwVi#+KI?8wZhIvqbSG3ksZ>WUwwQs>vm%q~H6xW6Tef&w zB;*;INZCL`scm{8?|9OOiRbdnx5rV2@DwcT8Yb_aGiyUwK2n-gM}*5v3Btkllnir< z1pBubC9W!Uc;CuvMb~PoQ}vrC(s!_oYb#*J2*U^H#SpdSq=VojRwK<)^NiFeh)>db zs^>fpt>eYX2P}=~Z?Nrw7S{q5_;t-Q4g9RbfhtvNqR;*gh~$TZoK z`a93%^F7{^!dHtCl#mH!3l3Cmm|LL(M0wmC zA%@7{qjTo2z+`C>Dx1NGt}u!41JG(mlfc;Jnz>t1p}A&_FiBXhe`1u?*KL$%9o5vV zcs(0`?#!>2!woNO0@0Ew%fP%7Sq1aI8ZS(x_jzluecdIIzsmrXPZSnuRNM&|jkdsK zgQ$%zp^3U6A{{X(w#a5Ii8unXptI@l!RW)^JFW7+fHY+ep_yztKV|=tPV`qZOKo&9 zmEn?=RmgO;F6To*laa9TG(Ntxx5^E=hDQ;gC`AWgix^aAi@dhx&@wmuO#Jr?cmqSxHr|-+k?jB>wd}QsL!|k5?JYhQT zWPh-@~cWsh(78 zfKgOq$P9-u0#*wtSi*p}Cf_W+fy)1gcHVOB`)iPOzut1Et;8z)yI!BTO4S@t{!jzW z)I^D0`*4+KR+KcdedER_bt9JvS37i#V$VY@lG2PU(exiJ6>brU#_Bh&4F1D0MPB0l zC8K3h@v6iQy1%?ZQ=rt?xFs-$?YX~BTrBt|6r0Qmde)b|CCmbmJ_?^bH}EB&ml927 z;B@bcZT0C|XEaC7u?C@N>40b3^QvSW1*4}cQ-?gT#E;PpFoLEURkMdZxl7>J<-(cJ znQ9M}C_l)oOPwNOOcxlQ0PsT0o3{TiE!t?+o{4vR zsik=bP&q{hP?2W^`Z-{$ zjyZyEQT{R?(f|!sj#TzYB!ZGB#2rhqLSCTcjzs!`$fH^;D>PG5O%A?-O*qm1KrVQ~ zlBqD2kHFbdVyRpa-k&6?hmlAFn;nGOGbYK8rS>Ba?P{*^CZ*zEwAYhJG6cSuQK9>@ z72|w}s}l!J%25_JAd*^r=S=8u>C~9uN2+FBl2aQ9%^M=x&fWXofZ>!7))w0(_Ww>8 zSsjBWbN2$JgpZf#5qcMnld8V1i_HH#`m;HO{9V;9s2D2s_>mEu+`; ze2}M8qWaHN=`0h!d;m>)R84U`HzJ?c?Fp#S!iRvnv%3|g|6$d4pG0~ED_w&Olt{7T z8-V@ZL?G@L)@V0nk^XMF>T)&OW^$vw39+haqAegQ2(Du(GwIsAtoyVKoY`1-YASgX zL==~7LWM-~mjNQb3G~l&XcTi6C*zK0a<*-zB`~L;^%zILH}3pB(28FQ1R}lntZ%hw zmZr--naUtz2(#=_J=EV#!&du z)Jf3B5SvwNW4f7xO8kP_a^UCIziL_qxbn^_Gh_q5cXcng1N5>~Ja~0%K(;AMLzV!$ zA@mD=7BGRvS(9v0SSK_%*FjnL^VGnk*8v7{Iu4vu{Rq!84UIPi248Y}pbap&Vj_T6 zo;Z)L-W2z|Xs#ZL<-D`Mm2vb3RDVI-HMee}(yN zQg}@Bv;kwzaC61$`P>zKacLLpQfklX;?pxFku-KS5;W3v^FisE)vxaMJvK>BGr%lV zE6z@Q;RTOM?>D8SHfWF@V)f>ZO?oxK3$C~pwrWtOBxw3$sQR2pH~|XJ9JfbDTW26_ zJiYzLc9Vxc;jOQ9uC;fifk~Kw)5jo=)85t{u5I|UG)|aPcW{k8kL(>J72V)nxzae) z@p@uC+wfR^ZQUvCuF?;ruKbWQ=?G3JlH*9HPD>`DlJg)Ij-)MtFAc0l4o)DO1Q z%fg(W}6_s`Qv?j*Rr5Re9u*1$tW(H2Cnq;(s$| ziepK@f7#9xCW~Hk3Vq^23q9oEjyUXkJ4Nihj{WOSPX=R%inP%wgJ`?FCgxnv?`8IU zeFqdI3i2{-sXNlFR-KoU$^UF^t)T!pbiF*n6 zJ|Op(s07Z}nO8)dF^foh`3hc;=Kpi65;^3!G|bVE?1MNH ziy_O0a4aJ1z;L%S-Q@En1`ZK1!O&b5%+zjpUT_jHOhR z5{UO-6;f0+-<9FbpVu`WBORdKLO&E$FsRoPW#3g^qqqgF@H|Ojv1a;IpZj*@7 z$CA>&{x8uQhT@bV5WG7;VD6`?fWrN37+SD#R@j2k!g1PXdQ@!^@%mY|GxLJ@NTJfW zBL=s_ii*{EunWPYdT$yegm>wPBH2i&ff=~b{E8eQTE<8!wubGyfB69)RvqBN1Cp*C zJ!SdI_k6_+;HOl9MJKbln&;!s_@XSLUUH%&I@N^jQrn>2%4t3ABe=-npONsD29ZZU zo~FTGuq>_OTAe+pDsnIjCJm$=>u&3g1AG@7%yQrm;mi*oNXGaaAH67{qAwlqUb311 z)>dO&fmgwgaa`({9$!`}PhCZ%!6?%J@^O1UYRRxJz=He!fkfR}QGOx<+vzHAJbFih z7{;Ynil5Q7QJZ}wHh^Nxc@}!m;J$E0LVtwizwqW!E{#AFXD(}Lgp|Cl4m&K8yxoHA zHIPK%w2MuZ#-PvVzEeXsc5%$g!=Fk-SB}w~kK7@<sp_h@#w9UswSE?CD@ z&UW%;ZR&y=!#j^^h5`o8;P@`7qU3u@-g>+ERy)``dM<-_`;abc>qhm~W}_MRb)J=E ztU_1DL#}YzHEbJo>UTvSOo2Y+4ox4N4% zUPY7|n;gK^@7=i&=h9(YvkR2AOpnG^`SAt)hLj+Q+K91;LzxB0r`+p-d z33@J6WWS9?t4aOWrY3q%UbTu{7{YCh$VE>jt{OzR{CMavd4be$p7Ku!9ZNYgZIAyv zin7opCV#Z8mjefbn}}o!GhrH05>M15tP&Hzo)ZOhcUUtRr{*~;CJTByp=yU`_;L2H zrFq*;JpAs|aRFiU03L`v2V9{q}LQ()^wRpwDCEM|X@64)sxS z*VN-`GmhE_OhJ!Nzfnfm^9xvbu77PZI=PW1s!L^EYFB^~6a<)5;OGjo9P6@g8z<8s zO8aSj;{(Xkk6yY7Ty+#O3v`%dG^|_U;2nV5#Bj=(4nOG_^GvH_g;6KI2PHH}b?d{f#&%(>@` zJ4+=|NDk8p))BF-!+)P**~u5H2B4K2BI;^T+dk$%0R;zJhDD^JJ#U-mUSzUEWy(pW z{23=<%)TFkrreoAZmd}AA|1l$T-l?9aKeI9Dr3>XL}WnIjIw~koCd#;48mK1Hy&$H z$O&tJ?CWxYJKI>7>WW}~<79?2Q&w`#>1~)%%goR^Q;A`-*R74fRibsXu0cgefTy2M zU1p9`92GIPqs!&(mcIzQpPb*CV5N7c82LHuEvuJOMHaSX?IFq%lc(HT0~26G8mePU zBFz?asm`dNH*#p@ZG(cRaq4F;+S-*&DzQmDJ`+djBiwC`6=9e0f(KWH+t!~cUC_j# z1lY^SYtqGLRbcxvOYh6bf998hmHnsK@Y~0;J!PWpD9?DKERyqprSFePeVVH|qi(7a z6H}R+&EMj|cFKex@9k#hW!HJX1w0D5c*@l(_|UL{G()Y~oWl5QD3#XWuRSX)*k?Lr zk%8+t+(Q=@S8~u?2Gz$>7lWH?qD=e+4P3>X%jI4fm>S@NDoph6)kxq1rhP^KUZG1l zPG!AGW?$@(vF4!}9^kssHHnRpS8yBQJM9_GlU^F$8#P`7EiQZv_IH|^uOd8@9?xoS z2_3<9$JS$#OgzQOrHCD0(KyVXe@1pJP|T$U0Z zTM6&?=@Lf1m4Txji6w`zal52_RYiBNZJVqVow|)pwU}ia$;xkUCVl8# zA-Y}YLl0j^B%GE}8+l^lefQcr5)f%a%f#=GY;vH0HXYh13_0_e-|}i0XIyU3^1hN! zo_Bjs5d|<}6na<#0A~M(Zi&5LlI~RA{DIBD5v&gkO8~rUO&UceP=eoH@F}N><;}Xm zXW)uz?F7@ZUDDOg(J$pqtPs7=gQbvt+F-e*46Ve*)#=kl2$nB*Nur=)5djSQ=s1$H zW|F6}vv+D|;kr6sF60*X?Wet!g{fKlniybMz-24KVH^>i1YB8*iv*C_gLAFd6$WhE zQ)X*wsr~WFuae7VXBWrdrUAo}zWR?z7h_Uyko@w=>isb7hoL~a^ahHYQl(uuQE*OU z3?)r0KjVcqBw@mKmM7irIifiKbMW1F6|_}S4fw_V&-w)I*h-j)O-O?119>8Lriy|j z3BE^xH?pEKNy6G9bS;9_?Vl|){@c?rNU;9m$mn#Zi7n>vFy2VB0_707uIsn{mWzcI zgm{NDK#6lD=n2<}BZ&b^b;@U;0a<(cCINW_>jskfIeSfoA;bcZP1vlXomJntNn!sU z4);_?>VdYHKHGHki+|t90CdLtMmF;p6RtPP=D-)u7k64CIYBC5&#w0%n%8~_yU5`% z79f~pn667zk`96R5KWM(jJ@Nxf534qw2fAu#V~=of4aOxZOfcz3AP_*h5fpRlby*jXT;acDxp8tMJqLyoi~ajAvC*GKPL-9elH zc`{4aZymmyE}!Cd@OuuPI#aqE2Uy~Fp363~pjg_#`r>qiK#5G~$CLTx zlsk$;#&g9>lx*1=OB!86us9z2Ifq6U05+<5KM9Jg3fJW_}XBAI8m=zSEjudTI z;Qr}y5nQ?f0iX%w>FcnRD6mX|PgV8Zp9nIK+1-T}?0=YTI+!2`{JTERDeyGkrlGP{ zl@T+f*Jj_MDAQ9JEDt4v$|GMfO#&QrUExI&4-;>iwe@KJAcIj>oo-43eg5nFjNV$j z63A?JToHj6rtd*`AR*@^G|xUtlOwXqaEaEYh};zXldY}{VYpSOnFAm0^gBNPF@*H# zt`!?O~$@IONXnGSiQIhn%r^FG`3XTTb}671A`m)L6ay9$un*quQjW1{z3G)EK|kKgb+?anl$=7S2|0A4hDR1Jd9fT6Aertt zWGt-J-4$jPrWb3lfoad+Rp;B(G2NomL?6Q~=BIekh&aMaGc=_C${xeCWJ|*N#s@(^ zGeOe2v=zWJw-@29t0sSAXUG<6En&!3+z1=*&EO7Y!8Lze;f%A7Qvo}KM_w8jgCPQB zuq{U>m1`TJAV2gk$zSjfnEH-(r?eTr(z*HjWVG66W4puqYQ$-n@xScu~-id$TpH#7y(pZdK}a)<+-p+p@c4 z%9VDme9V_vB>my7R5@EKTk3Dpxr+cZ;w{mB3=|#(eJn(+nqwnj@@-Ogjh9^B$D=^- zsu6dguY;Xp22-YH5#junU=Gc8w(ORZr`wS0^a!0Hv*PoK*ywF=+S--Zsbz|>w-#J4 zpRxNEIff`V0|hkg9dQsV8csmVx3PiRJDvP_2U4&k7Aa}bzQIzUZ9v1*t`oPtfA}e? zOlhC>F|edUKmHE0l&pQvSQbt{)Y0R|jWuM`?sxF;b3<7oQ6jdy$fE8%P)hDi<1W~M zsnrQTr({P_0L|;xmtfkU*&0RbWkY$F4;nHI>-Q}3dG|w(sB=H>A;p0eGhy8PLXT?` zdBm8p7+mVmEEkBbj9>i>zK|E7NI=7XCE?G{6c2Wd70T1K+r+yV|77wqIaQ*NqOaq# zZuGAY`;dSUO?j6sKqwppGd+R9F}63+9->e*)oq}K|K7Jf1b-%zO>&?ch-;pC9DsxD z?dSqZH0nISj4lGI1LFn(t9XU1Y+U#;uc2h0tuHkM7 zokK7Mh|&S0y+>ma$tTgi_eZTq$t!>MFTy#IylIYWNkhl+gK`#w_!8TER$$omGpQW8 z(j)3XEc$eyn*dBocQQkK|EXPW0;7to*c<$$lE1syD|1JxB-%T6E0cMA8VXxl^Sd?0 zg+Zn^rjK*o2OtD%I0|2vmUYO2vUK zf?C=en$+>m3YiKLH7UBBmbB)CmM>3_&^p=XiHT>87m?4;{WcI(p z;{QE$yK`KUvQh7>qpRIUK#-@%)_B}M9`%q?EeD%dfL(GpiFSbOuIYmhVJ~AM$B~pO zcl_A2FvDOn2Fa!*xN^pSNqU`d;r<6jZJ|?Hhc31kxNJU-tDcE4LgHW8wc?zR(cL=I zM^8k<-;-vMfNO8w1r%a}v1@oa_qiTLXw5G$KJ~Pod;-U&JNjIbv6hM zY^V~IIPWAw-~!-xjl~kR!gnvOOBct#FlilGO(`pIk1y%7!@1fsQQ~D z%Wyn<^a*l0%4m)+?CQ6|ikQ)N?o|Z}AVCENB(mwRx(>Y)Z-i{tD4<)QG|l7m{v3LA zByjm5?-Y{d$q!ySZ9(dwfoBMlm8op&4C@Wx-_mW9_qHJz?F;n{p z{iC8bg@Dy`iqQksF^_cX-L6f&{B9PHk~&W(?xF6@6@v8&dzE z_{AP4DvuAr1DSC9ijUot8_51Mx3}tarOYb%0<&`MXNpF4hTf7abZRFNlLkFLz0$3YaVZUsh!N+T;kpa_cZA_`XB!JD_%5cV}|Y~ zftp($Z=)wCT*UHyb@g*#M0nf)NF%r%o56Zd~Yr zA&tlY{mh$J6#cL<6Q1{Jzx7ft?MF&%vGO4*_h$4yO?9$@N(kb63$Rd3_M_9j@E?9- zzGVN$4SeCBkNMg&YROeG#sS^$@z=|Sh|yDp8C02pM(WT@jM7YRKqvsE8w+C{NU*c@ z|J&pxn?ftd85gQSi2Jm!Ih8Fb1ZuXW%~b% zVpL#^%@GZDpmDKqqK)h0N3K~Fvo_W9<7XIfSbO$pERMaGMMMqBmkrE%pg-k;@EN|A z4P6buTSnu)6?*>+ZAP7FUZOKqObQ2ADJl^J!=%F|jjg7Kzq9d)r( zYazzH$s21nqS-1Vg@NJ$D)T~DBw{De-5+hBV;~vdW)V1Mr{TAZJXxq&5)BQgO-y)T zPwXD7AH$fx_(zhsjMoJWk&%a}c6m~@xm5$sjLro0Ho^F+E(U)h(aRPQVY|??9-YB4 z0CjwMf>4)!5$UOMF@gu;VU+Ii99-AR83Gwc0KZOq0L$}pW_mpo;(cM9OgmkrGQ5BY zAO}XKfo8Rtz)-?SOS5zYiZCm>2v>q;n!G>ID47C)obr}!sw{pdaW*Twl{E zbOrs5VhDv}Sygn6yTmrOjRnd#IzttSvD3S!{RIyd1eUz+^KLT;#Y8X+J&Sq*Fo-N&pI)f zjqk$R)&8u!zGhz0sn|4J#8U*z&Wt5x;*R0(nIiAF`l7;^2R}?OgTb69Wx zs+?JPlK6K3(gkG@u-!Mr8OzH3cJAUt#G_E3^tCCfSG% zK{uYnH|QY+*^Qx}U(9 z>NkM=dwzg4Q%yJDND(ux!q~o2Zl~drq$QM{%QAH%fd+YO&~5*1?JS6i>@lkB6=US; zY&KoDnjf&L_|UujqT;Bnbl*1scKlg%kU;rEAR3xv1U#RR@GsZn z;a`aqp@sPOL$eDH=y`o)#*ftCvtPeTA6zZmX(Q9f zJ{1?<4iS`nKYoVNvDPOs&%eE5>j*QqZ76U5`S zIce}Xi1~ocb%v@g8oI$*cyIHHtXTCO{e5S+`nwv-1Sbh^QJ{2HkP*Xs`c8)(sV0Fr zM1872lQtx{osTE9P$*+hs1+)rDk*F6MAtNt?kyJ%hg&uTrT zPyA9;LQ2nmZ)EGSl8c4%TIVGQ8-mB33@CvkFvOo5RL~mz#I_g907GuZeZA?CJ`xH+ zewxXrCWfmDC>3hP($T6ZlrQ$h*FFB@m`HSY(1g$4!LHSLS2_Xx8@98=;hMFTg_5BQ zrqioHH^)^1Y-4krmSlb0c@rg{yalncXZDEXBDW^Dq{y$pvcQH#+dG@+>uM_-e$rb! zQ5DxQ0(s4q6eaG>|Ju2q3!YDg4E4(-+DN6vxZOBr6$~pY&@r67{uf z3Brzr5TIzbcumJ$Vko}1hAZH3rpSa+l1wrAi;1u9eqDByfMNFCb9|S2n-$Hst8(0R zC6laS`>}PnI4!JgZ|d4kO3nIJ4}DYJIFnXr*dH!QW+={6ZnIdLU9jIBFLx6CFSnQ| zMkj+)sF~kC6ACrfKfEwF>v@vTxs}_Wg%B zh>_8xtg$Ub4lu?o+NfA4g>kxZ)eSiYhIymd3f9)(kGuf@VZ?^z1-z(072g}&R;@+0 zjpK4ZsldB|1^9n|$I6=?U>+Rb)gd;Zfbpd=RkB7a{r?%BAp|ou!~Xxv`M)W#K?F3z z6#-_*OsZVH;j_jT^zuOH6FZP;;|=mc(-E{DsUW9m_9x-Jt7ENoJl&=o6uJBu5*?`% z_W+VAZI=NSjJZx9e&gp?nuhSE3cikp^~+l0V_LE$ruO)n0m;WHdwjRyFf#RrT<1+< zw2c+7kIEaitLjH_{S3fM&&*GhFc&<8$L}am@)zrBtTUC)!fVXmq}91iQAl|xUhg2c zeqDK<5;rl_qXMFF2$%F$4#GS1F1!1N+q9t5lwW30boi@08drBoyfQR&$bl7iyTbv4h(7Y zKU)WKOreBr{2!Hl)LRRKEoI26m#Vy-QP1U<~Y_bu~A zmBT-4M~hyr<*M1QJ_ucPvcdY)rfqTgTLEz!F+lJ(#&&%UhQIuHlpI}{f2trR(i% zPI6l50dFrIB8%H^z*hRh98t|T9f3JTvWr`0Di7IWY*LFZT9iUA5WF|!#b(7?{ogFL zL@Q(5uodleP+FashXLH`5V=HEA+* zzy}((A=WrWI^)+?jF#l(z&%=Nn?LYegG>{6~6E>Y^}si^SRybrARFzEfIwGUym zV3CB<&)D0-?@dd1{P04s>3%<9T3x8l6f`Kp>cq#n`!-DaVhn!xV|LH1?nX5SDu5ne zYB2wBptP?E0QEzMv2N8R`5CmQ3p(A=vGf-y;+F>r)oZcJxiIh@8x840^eT8Xj+~bC z?zJ;3UL=!1GtVw)@rsb0Y31m!6!I_}8J;c+*#~G)lGY2GA6OrsP6&1IP@HNztIoWsY^yfiS1U_^+nG_07*47%#Ob7XQ_xW8~^@~_i zl~y<&^!nv&9S^e`FDSw-PMzvy+H;MfWMW$BVQh5|Ybm)D;p7t|O>tp-9vRoQs0ksv zhB@r=5>{M1+-x9@_myaI=9>i%$C^$-cbxF+#h8J%w8`dmI1k#B^b7+VH!7^YGgN`S z3Xdh~j^C`+Zya7rq?ryK#a-%pX2WEoBK6Jm-^jq*kL1bBq3fuQk!kI(B_d-Jq{3>; z7v+K&fX-OZ8O1q$4_pj*gtE#mY=Vx#ogJ8RX)7o?R&fTCA*(un`{f}LBkz1Nf%dC2 zL@}4w|t`DK<*oS+2t*re<^?V7Kok@*@&kU%76j_EW5fIwCr4v} zMr%7YXLz}%7dUFl1GE7}xE~#dH*?Rt(fb94N5mrWdz>K8DvgoI6=2EA!jvItTX=X- zws49y9b(+rZ$x4I6X09$i^R^RmE=XoTPdaofu2@_hsZTT9qxa#);|5^q+sG7(Gxi} z2jgXE3_(go(G?~WttPl(uYMKrm}s%2K$rM7My}s(KK!$E?CqZ^i7Zj{z(9Hl4d0@w zv{{YrI2+GF8r3R77+jGVD_oq@vYoq3Z^@rBo*e5!J1$jN(&&+-gH_CdG1fbv`E1~~ za|*0X53DTOnk{}H%kKG49gLDjQk&@%85)RcWn6ncu*-mOC>Am%H_)#dgR^U``7z!a zQVNZp1*JoC3qx4=?J63ng%ikBX-+*%SYb*nt!H~EG^5Kr8Z}!?6}oIIcfPORQxBU6 zSw~Y`2k$6Ir&kApEoxfhNsYG(O3xEMc1P&}oh3gr#I3bpfzrHtO`G0W<2;MOMQ-xq z^H*E)Dw}M5jEG`|Z5qFrqVMgyeNs@xD3u@pbytim0z(0Nv2hkanMV&%n~UQ>0E`?) z<#QdTMj`hL%trr7B{PqY7*<3;_dda;=UW9xQEJ5P)HJ^*52UXS&~!G83$18G;O+AlerHyq2+& zLi~e$7PAgT(OQAVKsfsFY)C}7G!OH!jd2!FT(;|{HZgtBLCdhs*pMNP#N;@hLnBtm z30JeGkq-{nb7=7TOq6E;ibOGaR_+eZ0sk6GbO$7#Z@M0C@ZtZxF5vi7SIF_)JieCl zKb_-djh~!{P8la+MDH%=*2$|)iKweB84@_<6`0BP#|w`NSF z5@+$3HqDF4%_$gg!o_-SW|T|~z@BkA1q=9X>-QfRX@>sS>?9WV#se0AlDdb;rb~GG4G8TXibBL{k=bLwBq2R5Khk-F%JrI_4veL2IR1)C8C5dTh zG&l}WP9$h$1_78VkoQn_A6IYOURkzUK<-B;(|iT7M2wb3NSSzg%iensE6d1Afk%NH z2XXI|pEd7q7lrl^!+O(%SAWTN5Q|DntO_w?phx0Z5XA91xHeEAq`o10g#!8T+X2R# z8zronrQ?bSQEXq5jaEDSrnQwFcE~7vM5vm|cYEbu7+r9Ld%pxUPb^Y4|58 z*#01GSteCpyomLXaR_GWavw}f2^&Tv)5YB@eDi_?E2zwF4~wq?upNwB0dxnWSriO& z!ejekKcJ{G?vnE10*KCWohOh%Kv6(g>aY>!UaRd=cGIFgm11zmLkneSnV@gdqpl&p zv>y=Ye53u~Npkamequb>dKwfrB{+Lss2Z>`w++`op#ZZCnw^wmv7g`&{xys89}Iyb zTQyxTBe(1&PBYf`#ttw?3E2ao;Uwo6e`2C~;}{?;FM=9Pjo#MXW&?SUWP^t42GO^b zHr+9m>?Jm=XW-S3&Ux(#1(y>wRFD#xDm_6`)rG=)r4sh+p-ve4+2b%S7t+YreZPO% zxp$~sDfl4PdjL59N<(N%LK-ouw62lE?{P;$Ec1@Z8#}UDPnr!;b;98UNKT305X64J zo={5VrkqTXL{>MQY)Q*jee+bzCxul)7aZNx%vKU zY}0iiQQvM)`;kH{;k?-qh6qx}3442Iv@*qq$K%~Dsab6cY24533ru}Gq#0(^dS#2# zukQ{@2=8l@P4m^6Cj4e-0-K@dUaVfE_}rzQcL=+y1P}I&|cI{7(5C4gt(Bu zf0^pdhkv|E57YOrRN!h{%*J&^e%Ijj{s+RMCZ#OA-}1Om?=KH~EvyDvtnMUb>kKYb zf(|p^swu!R&w7Dk&LaJlsln0IBjnRf#Ea0buwy#)#624!YY#i)#J4(xU)3HV2AuGr zoM?C|I0xQ ze|w#YY5NKLcfa+}iT&_czXo;~xr|q2NUY5lOzDp_(!-=19Y&_94uMRWV1$o_Db7NN zmjx%VxMhZ0t~c_TyFQC0guzwzBXI{(0MPNCe+b%EJtZsGJ}89Zybl@svw8w~Wt0lK zCse)Z$Sc-k6?XSAWzd*X=<1&j1pWEoYBi2befN|{i;-_xfrilBy`BZC{0dijGCCBV zDSb6aEw3&{S@{Y_Ygk5(jow;rHd428J7vjbS;_fF1TuY<#Ozs(mPqmDds@?=wgYmq%t5RB9^8MQ3Np$s1WJvo7WdJKGRl}FnQ3{DO5#R`xA=&oPN}VL z%3bW|F8R|78=Fp{_2Lv51S4peX~yt4gk8$w5{nV!xv>ri7CwgF0hLB5xzL(YQdzne zY&&G`1rxS9>yKixUuE=O9bb67OETmUICMY_0cfKo9c(wtigB$JT*uE`o$p}5&F8hC zL3)(N+}l7i-;N1d4g{2K-c+btwf9}E(-$?x(4 zs!21S(JBohY~r0ovN;iNGn-Biik)bN=OQbbE`2Ck?4u7$gW3{Pm>R8+971TpKH;xy z{8)=GWs&N<^p{LsTi2BL)T(#jIidlCH)X70x6NGYleV9zQwV-FYcQ2ofW%wqGj~Lp z?9iKql~Sc;0;>l+{GV(EjfGJ+2|NAN(b z&^IiCdZERf@;^;!#Vi(!qw&aB*@u6shDqi)28`}r>yY$<7w~F1XZ}jY(K?~HMdj< z-;s9-msNg)l~;7Qx7hCO>j-nSTHRU6i9&+?{gF66V$x)xZKu}OMZ4C#Ws5N>Y(87) zYxxt-f=0jFa2-OnrW3+{9RW|oN3peJk$RYN_R(OjLk1~ukZwORTP5u`>1b%g;bJ9& zI;o}NQ*HTZstImR7la~Uu`w7SxkV%zJd-OniI_0K3UYWYf>)m)b`ncJ0qT&Ob>_NY;kS*%<#gGUjP<#op;wnE$KyS@pr; z`n;!=5&*ynz$Dz?A5ic2k@}u8L#}2(3IK7h^*6LS@O18%8&BJZ+;?mj1KZP(l>>6y%`u6;Z{)*F$%y&Xp|*rb%C@I%*&P6o3%6{xIK1*n4Q0YY(W#J)uU?RZfeR< z`?U%Hr{K<#*{*AZ&AWm09?|vkEQ=vOte!#wK1psRuKO(t&E{FF$~_twUMCa_Q`TXW zY59-M$<~xYhue&nyHNVt@Zb}*pAWdLYJ1ogC23ZRsj6d(%kMU^+gYhE77ara52blP z0IZSO#d3hp(~JArIx_U#^RAq!6MbmxtwUiuV}KLaAsr(!nt-Ym+5_@G1=|B-oH}+x zIVz(HD&FqXuVcuu=}nrs56k(pX~N{m-b-`J#MQy1CcskP4t6+b?Z)Vc)^FeOfsq&i zqw91(lLoydD9Kab*gjnE9w&)-R#;L5Gl5p266l3pMj!tD>_sTP8!jcQUikk>!AWXg zTRP0e!>#OwQRlF-yU^CB4&(k9{rKCKz7Wq3CYR}ZpU=~bAVgJ2~w%*_1ul^bh%E{Sb5HCXy?o>2o<&d_`G$vjd13dWi z5xJ)+LYaRet(tbD)YNDtg3ETDD4Ub0J(Dgoc8qS@c=ETzH2CL@n@nQpv)&*kZzRg% zvo#k&#g2z0>gKujLR}E#1-bK2$9SiRGi;Nj^8oE$^ck1(g=sp$1S9-2t-f_oVU?M^ z*Ac8rmYM<93Rgc^0HTH+tCQ>cHH0nnaVWIIds@xx3TGUgBc@Dr6*Zti)=r;w23 zj#w&&bWv46G*Xbp4vg{Jba7)@GvLJ@t_3D}mh8ONp>{5BNKb%13p-fQg)`HF!sj0Noh8M$Mtq#R4A8NA_{$CVAG*ij#IRATt;7VO+M+1wnTx~Wk zAtpak_w4;yNzgXUxdDb@0OWaI#TF#9QSGft7PJ+T;;H|>P&3*A$(S7}qbB-2 zsr2#44TN|$I>N6Nv>RrD49`z7!`8xHG$7l}8ZE`HD65BBtmx^`tp-D&VxCxU1N8VPT=++HBAuXJKkBTi zf-lH<(MTvNfd;26*)Koh27A_$zLP+lY3KNDb<;=W6eTapOmqSK+ijy58Oh_Lij^j& zWrkNPK=_#AUDqXg28=UU!LhI-F!Cxi$*H&aZ{Sm?kH)sHr1WDspg438Kw3e%tvaQa zX(Gx#C;yjGK{=G9em$PZA*@#?9*>2XtLWn+hvtwWCguExQNB0;7z$|+pXS6U#n(xe z;X2GB5f`ugd0~Oju`(tyJ;8HdW}u<3*wkVd#zd#tMX4Lq(hoMIR)5jBD%&5~jYy@+ zv9r)=AlLB2+UE{d^iGXGR|jxwr|~2P5|Rt&ZC#)#$r+F7Aa(=Y&vX%A@P;|yB?66p z#0LLL1N?0UzX^ul-d5}hfFW0c7LzV7mVQ-U>bpUmH{4;t)kj~E1es7X>B#-$SUOjL zVrM^4^4%*2&e6%{KOm>a3GQdG1>&c_0Ja}Gp?bS*KJK(CcogQ*f&%k+nO)DHoiQJL z1vPG}0+S&cL5=A~RgA2M9b#;YZIWg%v~K|54&~Co&=}laoHLol2*g>zGdcxUr$u?` zFU;yA-<^c`vJhi3;d!EtAj>GsP`1V2>}nysNG>1bG{?x(^Avngg?OjD=@kTq7Celb=-ThJYoAeNJu4 z){!E=z$A$<&>SZvy+<0?YRsn|tUXJt#-A;cVKm3*MAskxuhxZXDS4N35!r#23E_L* zy&(%g%ntC}SDn$WnK+tYBxS~gk^F)O!9GPs7DA^A1VyCY+T5YQ-g>90K!?6_=*-*z_v;Bpy zdE6%SzVFZ8zRXTOKQw7x)ZOA=u4g?!=A_L{o9RdA^ftW=ZDw^V_#uW(g|VB~!fK_Y zGJq^*iZ>doPPrCtrj#z&q~MTYu+B|}#?6J5GcfanFg-^y8N1(H&I+)JNgtJhu=u7P z{y6)Zu!Mcy5ts3O^)LB4Ywj!&XLkf}ANBq$LDjrH{Rh4;-orz@D5D}+yAjeM*4WwP z{iFOGjk0%;y$RhgLu_-m`C5Bx>zv-Z*!7Cm zvrhiqll&?n&3iJGne!a;r1~9s`VpE% z!*^99j((-~IZG)|5!RNoMV&XE(?iC)>KlKm8JcXU*x2FcV7rg`a{W$`LU+g)LUhnN z15ohy@Q%@WJidRm;}IOhIx{4KX>sZR$nX5b3%~Ep!R6iFc*^mp{ikNb^;rz2RPPjU zZXO2q61>NjK*2j{Y+^>IT@u4ny%1L@)`8H&1DbUWV!@Lck6TL&aerCuRJN+J!70T| zioHb30jS&y*9whPQzn$$-bkRO9XC6{>*xv4yKp{Gg9c4zsAU9eEG|MX|3KUy2PfjZ zwB@MK-p1Fi^q2S-%*++3w=%Sm#z=3bYYOnWl^t02V>ladzokCufE{NY28u%i!+y_W zJ*KO(;0(x-_3UVh`YX~#;Z)|#dG^3%`c!k262@<9xHLH*CNgem3ZQevyRNZXZM+7A zD@T&wN%lE6Wi2gbHX@P~DtH{DG>7v}^zuOt6OJD2(LlQ)U`aDDi^g)}llr6L zy7Bgo^}=YnOH5?OK|P8({!N&#^#s8e!>{F&9cl=B|DlI&Lhnr;%R1>dFaNf-^?C*I z6R(>-`Vgy3D}b=X!&uJ#+?q+$VVVJckmr}=-4o(t!Hh})=PRD>W2g#UqxAinu4Ax` zp2IIH=X1c&|9-tHAE-pBF48~jeKI_>{k!{Xe)GMsdk5|H*0~rz^ zEe#*hRw@Zb!k<)L3wOLzeP=Gf-?w^*@RdBaYLxd|DPmL~M~k+N5O)DU>J##3bh$yu z-X>v?H327&C`IlEB83c%tMYDdj|0INv15QeF>&nydRiR**yHVyjuoTVN-WUH9R6G8 zd|u@YOaL087sgQryc}`?)%HNTb@n9)3KTVG5$<2uh}@bea31g;u!1t^xy9hmbIp2& zAMQ3MRxj!UVb|H4yaaxj;^CZ}ZeEh>&Iz3z$|&-eV8KryFJt)t8ZNVB*=zj?W^)@c z)8T&Ph2dgUT96~N5detu0rkny8e1L*_1F&7rqI@~`UoX9Ydg@+V;AIt!!I^-pyNaj zhc`j#M4SSeDv^MZRXlpwWx8r^)4Be>p!l(irQV1t6F@;JIaZ|!{WSz-EZT56RUX^$ zd`*N6;uj1fA03oSwqd5%cF(LvVoMU?w@LBEA_W55jX9c2fAq-!pthxBkN3)$iaQ%z z6%;)w@a}JyoIM0jTS0_4Y=_K$mtn3OZ}HIn0UYWKIY(?uz>2Zz9ud~3PhA)Az z&Od3WC8N&snW_THU$JA_g8(Ymd;6K>Gssi=LbGh=e!< zJt2$q9*;*)os$PXKz=w=-`zpW$9F1^a#PuhSc!ol$^;vnB#IqDM>YLyr5P;K{`(oomXjKQjV7ShQv|Pbrwq;#{f~ zdHa4faX>9LGzaui^U?wneL|RKwc802H~t0J!Z6>gpZ!)%*RvqjV;inMrE7M@rZqvE z=6Xq&i#b`7@twpT3EqrX6$D(19V!tbLameh%POmmUi*wV7k@534y;NxetINdej^(a z68)QAP=2lH%d7RTGVgR5AB0AmvzxQ z@>31dg1T5YS~ZukB2pun61a(8#Qv0Q<#C=4_qlkX@AeKZRbi*cxZ1wXlq~;+l4@H` z@AxqY2dRky00XWRHS-{q!};#u9|4-bJJO2fTBFW4{)E;=&e8CY&=ces;L+(tY8Q{v zfTk4h4YAx!Bs5B%rp(?AYZ4m3q6wz~0&Y{F16EI^yOH*GaGpZ&h;2UEMzz%m!*zsi zVl~34s(#*Nd*Wr!xj!nXS4d03et?s<+D{AujyL3KN5t}xUn5qM3cJL`{#9Fx-dTz9 zS>i#c!EZ#Mu$yV|ekrwiM&~ds{N5jzJZ-r3y)^aw+)x~Re16|)ytTWjt-r_&c>gGk zX;3Q3MwPLnYXCRnu-nm93ytgaDnoP$_sy-92r{^Xc#}#7(b1>hhvhBSZ>r|*{NExE zq_-i3#iLjFmm$w=4h#UJkJsaf011i7mQV`nw~AT5^LR4pG|q9>@u#V%9>i}u3#ZZuk^&D#8K;AI%@>wBpUVFpr>dG?L#pBq!8 zcA{z<)69Ss2A9rfG9D z138o==ZljwOoThGMhHq}a+LRzADaXt)v~MtAS8pY83A$=;ZgNdFOKAkV-%*WCgG`y z_|8pO^59fWt8kxT93E~rXfp|<7vp;%48y)JN++Z=E1k}iZJX`=Uf;WFznBi=3&@`2 z&~KvznyhM;RWebf2|u);{CGPjf0Ty3W!xqJH+02B*MhtFm!P5>SZ&A#RUR{u>5RmgHLvHQZM z5r%YWho$nc0JyD=C*JgYl5e2m$o95my4crHZen=?{STW|&vn`mn~&jygocDQE1qxjxe8obelnSykq^O&%$W^hk;TE z`NSvEHp|##IZ%xL)QrbgXxf1qx2H8ThH;>llc^SwGa9XgFpk0f>899@>L^5el(f7R%Gs_4?F|G1&RWWdHBt{s;^MD6zGm z11MUmFuHIkB(0&aTMevKmvNYoLA`zJ=aC2CMoJO;aE~h2kWC+ky|m{@G|+UQ8D;&! zV#05oWIS(NEr;>r0<@< zM*;ifdO04x^J$q#OuCCe?R7~c!}5eO$KM$d5JLeDX}=9@i`>(MJltKERVHRgwi~G2 zBM)chT5SFM)4}67f@44H(_$J@<-;@s+GD(P*Y;k7c^p}ZiU^4)Giq$YYz}akr?bmn zd0`MqqJi~avo-p1o=RQ@B!Ru1LqGhnRe%4b34kdv+Z?xMK>{?wZ2lkN_iB1oO@4 z0*sD}1bJ5;ORSwB*EM`D{E3l?MNrV@Z`Fvr>|(sH1jt{uJ6MQhfl5IezDrh%xAk~r z)K0|S;$I(|jBhzLKLYdoc9vNR5qHUXzl$V;OG`R*KGaOj4aH@VkHl@*KMl{Q1*pIh zW}Qoq9bs^3PEw=lr}f{*1J6T_7g&uART-ZEfw8w(r-TSAnMmxAgcixUD7nzsttfGM zwh zZg5vo|15)^qQWeHCP}^PbDiF0l+OaxA{)T>6~dxrAqO}q;I{GHVJM~Kckj|}z&$F~ zl=2!tiBoaCJg&3u9Y>!ADo`53*MmxHk4a&r#Rq#5=Jn z-n#qN_b)I9T5{LG0kU}@u1phb9Qziei&8K(}~?*o`USd}BX zwv4t%V5f~xXe#LuoP}KIhjA>!k#E}ZYcMfFBBcYX%8(XqGAI4C- z`rPxnGUP)jLpmG3oyGZq!>ba92c|8sWX(ky&N(2Ox;1(`6pEz%g9vStv-=@^(k!Bp zXxF>|yKWzJYGqU~UN3nRJ~wqbXJpaUOCh4j7)0ZwVp8&qY+^yAhzzvR&elloZEG># z6%2KBM1tLP%(#YyR_WOWR!SL%BuV$(!p&J*x1r&S_`70h{LDH|#M|zyko!!YyVr4EuVe10W~lJ@Z-#q_trl;%{a7vgMfD-eav#i_vVtNav<-FTiRz4DWiyuk#Ay66J5d#U~zn!a@89 zWN(0$0Z*)OUA}p|=H#UNJUhpHe7MU%OKDh#ap5We^6q`$CH*jd7REd-`8kDYJHJN_ z^Of>T5*ak~Ha!LV@(!bEBC$NU-ecC+(|W2e$?qqgzgy@Ne0}Mj8(u$U1kCuozM`m) zE^+lTMD1zxg~qt6nRGRFr}parDo*X6KU}5GARik(X_|i2n?l?{Kw?#C-!F_#Ai^v> zls;T%%;KN)J!fHy%Pb-BJzv-gCb=~)NDZAa_~uw7u7P{RleG_7bz7&`JhqP(X<#%} zsH#VkwT^mB?TpXFFmw>>zsqr#NyrD z5vsES<-4kS7n2OwwI|$%J?sB3CADMY0J&B28kW3T!$ZLo#O*HMuDU_I?6^ZAMcq5@ zl-+pAQ_HBGfADJDG*Svk%hL`yhvWZOOL-C zZlZO`A7p6f=Vr^$`eb=^K1Bx4xuncxvG|!!QB5-db8(XMNH{;N$9nGxL;y{r?)RF< zJTRsknY=cs$p7gWU_SZNC4ikjJ^PqZufgR}brt)IU9@Y;5zm&_#gqQiUl}*U4yNVf$BAy2z!E_Y-F7EkkI#CdC{d%E3KT#Q%Zr>L zioRMPzAmP-HC=t-0bJKe(KuR@0a)*plOzYFlKe<8@7B2?&oT3mFg z6{J?#bKYh?e3&K6inNat;40+%OI*euZNj$>i3Fp_EO5bMgG4#Jz#c`z;nAS^Zt~r- zf%fO5`H`v&Hb_pX2F zPD?P_oe~}Cbj6Bn-ZV<-KPct7+m2Znqi<7t@aL-UZ*qkW`lOE@1H|WFPqo548L&WF z|FP%+7mvY{tvYyqs0&aJk71NvVZV=<8t4-`et|cFgtOi^h0!T{L1m_oU9TuKwP723 zj(=%eDPF9vfo+{qDnSwBZs9m#{n5tJ2ms=eHxC5tw5uJEP06m=l97SW71y(UK}SufPt?m2Nf!) zkojf;(KF%>4M{0G;`~to8~VugnK`WzNO$84DR+qIMn@E%5UQ~1m;}T8cbEJK+XTIC zGNn(_eMJXupnKtNeBc6372+?m(NI# zjb$wm;`D=ShK{N>>2C9Z6oKMp)3(pO;Uf_;Z5yE(ogKKWIBnIUAv5A>e@f?Dw11JI zj4fFYOPxB49x0P0cb)FZv?90IiXA>Rh&X9&_SS?oj z>XvsP)fLpCFo{fJ6q%8+vp)bz=u$y5g4Ip5j(IZ9C)af-_PA52L5 z)Tg{mKHMqSHTh}?q}~sADYV1|kH7z9MxAHXnp{b-SufC;^p9Q1Am!$g$#(`C>O2h! z5V4#qr3%*>>-JrmO|taQ_#p)F>b~jA?tB6JOse)|CNyDS+3|M{G}736BRhz z%l5@o)ahQ|GG0RB0r>m~0bv+Ip;>7zJv=;i(ae(Xylz?ufZSAZEl0woQg1BS(v zyXLi^X)91?#)9yEwdiuzr^GcRoeaO}QT=IKv*f?QxE_sH@T(3kRWf3#8lDMPHKiip zV_DwXTrcK$IQ}oYAN;cJw=9-XuNF*jrRJ|MXTWN;5-RvGvOTF&=xKzZY%#U@Bh`#A ztWpV?#Z`U8OkSNhS&LeyOmA(PGyC&n4^uR;N!TDti!61J9;zF1OS*MF9viN|5h8_q zo!mhIdy}him ztuDv{`YSL?J+xL>DJZEL>POTT@sYaxGlgYy2leloyR*I=KU4T7X$0@l6s5bXWH{IY zi}52~j+E=uk3);JB}9fI#!9=S{qGc0$%Ay9_K?%KJ`;<@-rv?$XwcqR&=64Vu~<^L zBI&fM*Y+$szCa7a$DYaT+R`UP0H{%rP$h8FS{oX>=d_wmmT+By=)0x3?V9NX{}>B?eP40$5*OB2rk}F z<^mey>NS4C@@FI;EEcSYc_>8FKs2XbXlhi&;XVeff_Y+d>7Z*^ zh~_gzi(DW9TT|0ZD$7#Gv#>h%dCbq1{@_*uf*eH z1>ZIGEOs++pnVhfO46m-4Um@h!uD&U?jd|qO)vc4Li>0&w80LJ=L*vCQ0xIQXRQZY z33e zDD+n(VQ_o(Y)wf!+R3h~IRID!K61-v7$*@F!+O+;wo_eXb(B$t*V(d9Tj8I%lKoq# zQ*=ZWMMFwPvX8+jUN#dG91cZZQA&^+>|3?om&>>yI7IJ9)+oOKx_$lN_mC@I0qY8C z)v8a4(G+kq%fLCS7y;-%N3k$?TUoA=?zIWo?}w}la|-W|PdLn`U=OhZZ_8W!ri-e4 zA_Yb_RdJ%SMG)i#01!WSYeDo8kp0wnjct~ZU{R8|ozG=UOMeDxT@G@R=1N*rQZqRq zyqz#HR}VL8TYkPXMh5Y>1F*2j`qQyDG{;_!X+}3a(1rEe8vmYI-2_sBB{*AM?vkA1 zKtR}x7BuZt(-$^jT8`^oTD_loC2xh!&lxJt1u(t{aU0J)`gVy3Bc!1<^@jZ>v)Igt zD@{v1le)!*Ver&O_&&s5&pcFLHDOtaS&3rrFyuE?l>X z3J%&!>^fAWg9KjaQctbk2t>KpsD#8m3Z1suol@Wsrw+1&)MC;0e0y)66n|ITst8h|Sw3UwOX6jf-*0vzhRiv1a%>XzHfgpI zD4V_n=in0UPA}D$U4BT&;=#YeG&R#!B|fs$R~NAXqjrPG;dhmu$ayg4BWD5{h<89b zQUbUNgN5-AQjm+QNj_JcM7#7s#1u!>c4hXrFi7PJ5waf@`ai8cdA@|UppBc9Imvxz)Jxr@Q8c49H5!$nmYb(~y|O`59k zTrk>D)qiZodOZLkNSQcXCR=mpma<2Cj)E3ZA=^8x*3`&}Ow;Vz@fuY2Vh`PS2H;%U z9#9SMM`aTl(macTQwW6;gHKkPzY)DBv%XVP-Aa>LH1c-;I-|NepduMijgnHAMXd!^SYPHK z(8)rB)u^o?m^Op`ER<_KEAHewf!w#OxI>6)NNr?3R*4)eE%G^D;QVCKVH+N&NGiHImt3Zjoaa&NH zktz_!qhsa|0iH1Gy{Zl9QUkwo#qIK!FHW*`^^1|w^zP-88beh_NI`rre?c)sD;m1S zk$?r5igh1rbo8zkli?|9^S^271X;7-idF>OL^4N7Rua!xyWg1~tjUC6@+(fQB-Cm?z+&+}RDnqe0EgdVE6h%S{Od^|GEWV&pNrMR1d} zd|?<&p&wNPF`~VoRR7Gaki+j(cRH9711SdjK7Deb`TgiJaspWj2v^4HxZ%84ywna5 zVey*ay*(FJt>(WCtT>ygb0^O6=j}UT%q_~N z?5abWUpd9hN_bK6N{{hM7wN@}YW6j9@6@PG3tM?HBsO-Z`-yUmK#mIFplZUV2Ipwa zOX*`~CZu9TS4{Fvul4seP4`j<_m>|nhW=QHR&0@mLhYf6Sbe$-XPC45im;9wwEz2# zDxJC-6s!NdBsIHAiq*_M=aS_*j?oA6?bJm_3gr9PjOZL9Qx5-ckyh}_%dPn$`J&0 zr`TNyqr@sM^eB6c1CoD&uvq;I(K{Xh0z_qu&raTIlV()qE#-s}rq5`|VCp_b#W2H# ze>Viy)=xw$sF*gR`XSCLe&uk{=;soQ!BSUYpzn$>Sfs@3za;pc5;T#5u-u9L*d8a zvOm^Rffl~Awi_MLJMk6J>psgM<5Deqx>qveE4^QI#`SZIu2ekv;2@_}GzQrpS}GQt zr)>0rXKes-0N&>isFP~7VFE4QhaWzCU((s$91&J)XDrB)vk{%ewWF^wY?>@&zOpdadSQiqB0;Cr4R>P4%ubVM zyoyoZt)m!^XtnO(frsQ2-P=l>HqkIJI~e#HKwv>CZ@Z=aehs;z6~Ntfrx_?IGAmWUU&akn|q>GWo3Yq!A^ zTOT^&Saak4%j;b@7KAylpmnq-JNf1{!c1}Hv7RV;ns$5K=0 zr}DaH+TJ3?UCJ7N=YN+mscm&XQjIcTa)En{>UNTHqF0cnw615r;-<+9a~5xI0E751 zIE=O_;0j&(EJu}DNwWUR^fbe}eOTmFt&skeRvK^>2$9nX3N_e2}q zk~ML(YBsmtfndiiv9A~n*gcTX-tC^D%U1nBY4E<)b2xK%bRFdvk(A)TLHUD!o-+%e z;lVv->!tBG?%I~`6}>-rxV&V#p{7$uHy6iW$gVSTu^(7WUc@_x1!{pnDIpaF?IIwR zB~Kes@?Ub$8r1E*;wtdICyy?YEHypJ6(P3!*YOClf6E1ciYC==!J zvAKeHc9SUC{0_t=VrB;G>>%#{;jeqHo=W%chrV$H=pGX!^~m9u%fM@D<^QuhoF(B) zsPlSm{e$7ur5BXB=4y$i*J*lZ>w>E+JBq?z{WcJ4>p&fHk1*YMLn21qav6eg45CqD zcPh@|*j`m|K~IC7THcsZ5>J_Mr)iu3ei(dhsrSVIp}EOoX%flJL4}r~Fr_DLg?}i`c-^SLuF_2B^`<3BdP| z@CkW2#W*7h%JZNn6N4fD`s?$301+|9Art@h0JJ3^0!5NV-X;v|45^y`R%#@F9UrTf zyP>+%u^3t|P#5;#QZIXCB_a$ zy5vzTQrZ~ZhxorWZmv+>U|McMF|{Jlvi9(t5^Fn*MKr1JirsKdENIStc zVH<}H^+PCAW(;sB8*}sejGrVjMutJ+vnox_5No?!^E>yk0)fg&y4o` znhWW{H1L;PuJqb}-t2loUHU=^wk9p0$S_`oU{x-FXmB~fb>s;W=5A|pz&4qXSqk%0 z0M4Y$*}5$J(l+K+t6@C;MUkox0B1bm~`+81jibwoUjr4tX6E5o+T^|vrlCK5g`uowrQEk zK>zd0o%{?R8gYoaaLTWh-cL66B^%fSg(d@y^qX;9O#MU>u~SmZKW{ z$Ms9hR;Xx^=L>jcW>PU3yrfBY7)?|#kY^oio2(O{+X;HK<2Vy z6Pz%xw8>=sS3liEA)Cuo9pdC4Y^br?(dBMwh)64;#4<^P>BK|v${di$c~5;?)pfFU ztC?+BkFiK*+LEd-4;Rwgb#cJwD`cmla+5Xgs)ujlY!K{`8-d(gSX7oC93!0*c`V;E zC8&`PX#PP=p=KB!;p`2rq*pibN~I947r1qRn8R&frtqJTZXsCFx1ogNtW%Y=I$$N) z(?F*Y!|;tf%V%FVs;}j)(+}d%30qkl zRZq+ApM#l;bNg?I?A#3LJtf@En4`M5;$Mg`0p?B^C7d`)z91^kC^dQeGjcj#^h`DN zKO1~k-IdNH&KKMm#AGR`9=BHYgR2WQ6p_Tx94t|FrQgZ6C;2Qj9kbN zp+^@uv<~&cz%(UQ#kS)$Tf`CPuY4^#8+)k^&IF8|ylr&nKK5WmVF&X~`UOsC_uSuc zxZsO8Zs&NP8UT3Y3-OEW&hC37iM#YtCIgr*ceQ}hD02^}B}_H{|S zn`gspS60z((R_zUZ}o_W$oUK+CKQyKs;W2O2&IFk-v(Sro;c-6s;a^`LFTaVzAAjX z4P-WVTyN=oknjU8gQup!(g^+&CCCiERe5e?s%Kpm+$}|BG9@tZxfkZPPBCB-&$-UG zuOzS@GZuT{*9UH1w>fL3wG$+$&C?n+P-H;-+P_|syzJ0kC=i#x*Rv2zI zkew!gJHKJ;HPw*OC58TBX?t5z2$@|x57@agNw7ln_|n1mz>jmqvc`3 zV8*y!!(|Ss(`Hx%T#a5mZ`gmN$^lqwzk{KbpcW9Crn#Bp&3HgAEKmk*0}2bryy(4_ zybIT$FL~k%>%g_J?d6$99yvQEba?axnV5Sxq6Ps%sOw67S<<_wf)qBYZ*xUXW%lI< zBf;Cg`T+%gI6=} z{&o!~qOw_=ev=qAA}YCH#8&B@SU~EFmHs;%gkB)lpNo@UB+=EZ!@V5GSW^|HCilEu zUto%uU2)~g!JOjXk)LG}2II)|R$WLxzG8Mswz&s5QQrVkt6oJ5fn~TaQ`mGQ zgj!dI2*kVUe+&aWa?g7`oAKowbnt=D*xAjD2e$3t=Dy0uI4Ha~?YD~;tM{HuNe7K| z6d>RCJHJ}bhPsC*6pG$=k4T7wURw%g>{eG)JF(>>pIvWo<92`i0DWnJ$U?idgV%En z>Szg&%;CAkZ36I6O#*n9NgF*d7M%^d?z2wR+@p`ZW9o?^cNB&>TEv~&TsaO3J2C2~ z#!gN`s&!Sm)CgE&0q{oldsy&hxylySK#zm&2_BPdwul^>$X<2 zxasQd;{agUviI^ic)vdrQ-^9^wP2ziz}bH5 zr|_Y|NvTwXWP2XB=MvgN$JpB7fcT4fyf4u#8}bI{3WCw>B5n}t`??eRSyAKv8;$2o zpCzs1C#nq4X-9O<%$eBfT;TIf@bFKrYJc0@vIn_g{lv)h}&V{65698b_NIs^btLF zX_!)*P|{GU6iVU~7_<_tJP)#CTwdOKOBLHW=++R$OI|*)TUo0H`dZvzLn&5#mkDV$ z5gL6ydIeq2t?wGwH4l3#p?q!1&jp|*a4J~uYyFdt`E^ZsL_Hb=0Bw5$9eAK2aw z5i*GXT<~_zrQC|&*SAaU!?m7NB5Q!5d^9 zYOdO$u)de!Ebtq@Wy^+l4l>5e?@465TGs=@@4nWDiDA&TFXj7yyPsxSABCKdy)>rb zXU)kml8hnX;cS|(c6w)EyN91U)9!glr+fA+%EfEgv7BHEHUA4?jHDs~S zu^AH&euq7$AdK+h-Z!b7{e(FJ4;jbl=;O?LQHx^~`vg=#1@Vk9rz zd`@F&6e6oF;JMy`HD%GI?cd4brbFF>JqLPy=-+c2G8Wh zyw}JN!UrzRG@hKJz`Dd{DH^?;#jZpV_Y&ew2%Zk}N_2V7g9HLH^T0w2&)R6BaD{4`Hyx$xDR z)0g!aH1D-BkZA>|Tj8@xPLXcKWdfmfMvSfuOw)&dQv0t9<*tQdlX_zjlbbIF1u~i} zWe9$6bGPB^C>2N;c1Od@*;pneA5uQ^4QGP>bKhAy54-*G0_(_w*-2WJjqDh=`*JsY z(?z`b{`!P`mw8;h=!9JLxyWhHY@Jh(U`?=~+qP}nwr$(C-92p^)3$9*+qP}nzWs09 zec9OO%#2gatT_=@=XJh-qA}>;z*}>sa5x$E7gtlg;6R%UzpewoUu;Rr^2H22}lmK zSq6EC3smq#{zPIVF;|xq(pz;$zgR*#Wb%X=)I^9`xZ6u?YGlyRbXB<1!n(g&d1W5z ziH0HaA}Ot7+di|DITm|g#eysc%g5=-iF{?gTxF6?<|kg$%qWSN=aMwv2(40AIW=y^ zSSSZqoY(N?kQA!iad(HIk_H^_3jIl8nA1=U0Q|W|UAe~LF9o`tYrG5>v0-Tkh?`Rl zx9E#PhE-2{?rM-=luIdfZ1Zw?)lfT^<=C>M_{ejel9Ro@D!8ZnCz1rsMoDgkX|Ic? zD>P5u9>SVX;}F_c;weyixIe0-h62iN9Hp|_yk!QSFP!TQYjE8T$!G<*35RSW z$$*)6s*I(PmzmUJ{u`?pgc3?I3@C*z-uG1I^PM^DN6mtl9pw~~SVS7bYUYJf;%qL@ zNO!_X9h)k`e*Td^DbbdjEw4A>~X#7t4K)V5oLJeN-rl4*!r~`IXV8+@s9*a!zb;`^|$CD z+Jg~QaNc2Td-NAtIW7WBVs)Z^1G81Nz^8V~jek+E?3j9S|CM^UmqkP64p)v>^qX00 zKhgNER;xv}u7zcjpwd-cGcRs$LcqBeW|;&cf$`O84pp3EmJ9vWXKQqN9dbVJq-yTa z^Ly!q%82I#<@LADX9c-T*af~JFqrRUUMFk3wCta@oK5ee?oXn!{l>{`Y`_wS2SK?j zCGgpi4{b{2?>Y;k&=&X7>3W{yCNvkdrqpvNsxU`FVb@ug1&Zkh2q%$ycm>qNYP}vN zpvcbqN(i~H|P+(sKZs$A(5GYG3^(c;Hkpch<-qTx_9G&oG%PjO^NPRvAmMGm{qDHssnx(qD zIWVmtQe&RjL&P(S{GCYSq5w5Ai4QY$$Ef`gPEVk@uKN&Upu8og`g`Nt>ZTkl=0{Lx zap!xx9|y!b{ZlAh9p!qD=1%{0S;J*?X#@nu`Uf~pYtSGUFF_U9J9+Jb#Ue)oUt;tn zYm)VsgG5>GOABvu7Za$&aFBn=Ug8^sA-?$5FB{`0DlvAssM#SV)uA6s{Y0vtH50;T zy__T#ZysO>4+L{i?`SWj&H?c8M?brcReB<7eKSyVs)}ZA`j{s;+1Su`&+nnG2A`pd zi5KAkBp($`X-Q_S6&f>+0alOG+j;6<^cho!+qSn8Eajw_08j*P8zwpgT=y04Lmc7} z$L;>2uLQi~JahAf*A|VZF^~8Sw^1!85nk>?A}YXJ389KpHx9&+cWX3?s1U8|z-Q~{ z8Yo?qyMDrO&f*aA{#!3R2$DnJ^yjU?Q06seoaF)t<0Q6A%JYGY8{HDeda*oVH2hR+ zHV9{)`&}w>c}=lhQR!IvdT9om8wc~@%9@y~@XOe=t^-21;M%N${GTZ?A0u?o6IuCL z^;lDX?22(H`iUSU^Ev{p(?*QX<-jl?>h&5|U0$*3;wTS&#(T(!7dU;gfl3Fvi8aNg z5zh+pkGoPN*iHi2{)ee}Lg<!+EbsDH60LRxw=6xZcb9 zBfz`J5-Hywj1NXOcq^f=AgX(=4OVmx0inbW>N;>;P&Tc zu!5w@xWPH+A0a^GOJV5Z;3a|fQMa#1pZc~xAV2{X$BUYkSX_-I_P>HrZX z_}QFUTDwc2P+$G%mW{H+GE8K3wQ3~E_h(EXo+L(%$&t{($+VkJPte8Am2MnG=it3j zz6kzO6T_4Hh&*9s8IMtX&~0t^-Z|f2C)JMJh%E;m41*fj_WEbrLALlU%m;FwCk~YL zGUG`8cC(eFIyOg5gYHPw_ZYU~-FOQU$04=Y8x*Lm`?1da`y*!g5)>5S{;_7kDExD* z`Z7DP-L=b4tgxOhL?r|Pqcm6m<`ypSW)cFR#p~9f4p%_TmB(njaeSa670`V)p+e#8~bw16HnTHWuBfZ;hcH!3q^`r|Z? zO=yh}vxfkTr%N=jncP6S2P@w-ShmPMv#C$kuPHA%xnQ~SL-9*iMTG_fkbr@mjjBo} zlBQUEvlS?Ql)w4y02_`_KYN9x7Eh5^=tknjl;-2m=xM^1U2wR;oHw7b|M)5cE5yf7a{)sUpgCg*A0T{v1ZJFHB;qG9WhUJTY)&$4`HM1-nOrZF{$ z^YA6|5OErU&%)PpmO#9RtxXNTm5GClf|Zpa7UF^=oKs!~$^)ek|EbOOU%zzszgSbt z9})QL<$TOL^2W_PqTkDS9x|mxsNJ$QMKHPIbWq94i`eZAc;J-1cTX&DQu#69lVIxf zJ78QKA!f#@ldX2S*{*Y9%-x08+KJ>RGyi!~jupj92ciDqW$QG1;^n>stCAxWl1QTH zf=?e0t5cdf{~`=(tO}Kpg=chLz+J7zVsGho64S`&On7V?^P3Cw&0aSM3-ZXY;0_Oy zBEBlX3rGiX-=Vg0*@oO^j(5G>8{8a2MHgSdWXl!Z^TM^jnR+X>-mzP?mp&yGo#|z@ z;$|mN4|q4EUYwc~^ez{7m8(f_W{!g%yCLmJH;!blf{i#Lm}lV0Phol1&}SKR`#uBj ziugxZ4*V`xj4^id+41O4lNqhD6XvPj*H4WYo62Xlvi-t$m3ePQo1jEKa=uWzo)1&@#(CYa&kR>!_k_dKUXH*vEW5W$@!NlR{M>g&eVx{YBRjRrew&Z_ z$k>9>Rl_dX-|%c6piQ*xe`B?!O>{ez_zEi|Xt}v{Iz$MKryirat)+mSsP&CrxbA_k zo3b--6~z3#XzEXWcQnmPHeSuW;j-}3I}ruoKOUJ>a3H@smGkSx^Fya=Ko?nV@XHh4 z*b5exHG(u4@Z(XT5p?F~1Hdmh-=*GPnvs_(_{`>a%HBUWJni_a8M}7gkcm5Uuz@11 zRW?gAKRnnA$@h616;o}WyT|wzKmW}yPh3OR+phf}6qP~7D{HuNte7`7a<)2%ugJ}4 z&7P<|b2a0AD(ewlyI=!Q393$X+4L$~rJm9UF&Krga+--T@n@52P+H^L*sqJP>tA5K z2b!l8h5?nkraO=5>O=Z|UI+H)Drwx`N4cc6wUuSOiWMV)~AKB6vFms3PdcBRxId(et0 zi$un;>_X-E(7_m2PZ6ViL!H+BXR}v^UQgQRp9ZK_Cdt_5Ry)#HO{RMlU$VC~Z;}@g z^kpwqHNJo3K=fRdoq&RA)MnonWZgTjZJhhsIaPZMy0xQK7lDiMBdIdA(2hdZf=guj2l<33Nxi5vaG!_ckn=mP;`NH=YEtReo(>o>gh-QiNm`);G+25q?^e-nB#(Z zuW6?n`FTLrk7ueA8}FGc^q8T>y-dyismz2nA#dV2dgdMud}y3dL<#|SK~K2#4CM4o zxsKtEv7~i@BFHR~dz0eEP|m^!tFeow9H-;3LqDEEhjUtsTj$uo86Mfc-#=qE(JaMq zL%UUvUrFdmKSnO)S<$c~Y^IIL9MNQ5&T6<`>Gko%sG+`HJ0PqVkA4^pab7+DAr#pW zX%S8~i6Ff9WC~X0%J9TxFqv zJ`^S1LN@lwGl?4p0$|Q+c})mGNyCf+?1Gc#6njF9CDO1a+3GDHiv*|nli0oc4BK;Z ze22>FE+ItN^CpxlDs?XFO|=ro3E^_rf%zW`r#FN1XvPYrFB911Zjp~l3AIkiqbTHV z&d)nym14KLH$Rw8#t4~w5HRzAeD$c_VmMU514iS;zIY(${-7};G0|1JI2XBodvK{i zsn|FRaK4kjhB$Da%LD8gxh`r}v`gOyFq7uTMR)rWXD~3T(>#8~`jaj6Ky_^-LS8@V zi1Xa_Lzuq*V`S%4?&O(?8+v2BfiCj+EE1zdD`4xl#!mHd{{?8$###&I)^UBqoqs@g zS_%1zQbDXp8HG8_UJ2u?CR1H}{sKw8Z_9gD`GiiGnHGeE+r@g~NL*-64fj#MibaYetkyUjB%w}?^t&uwrt9zj1 zBd~>ou^Ivg0d(TWG(B0=`|))(^esi2I{NH)fHpTDs{LGguf7HJq>gro>m1$e4{U zgAQ)xZ3F(aF!~N%Ab7wddt2_9XK8Kcr@2kA2;~u+zS>-_ifL`xdX~!-TMp~w->fn( zX+Un=M*`J8A&qD@>1Vz!+llOPsD@(G(~WBI=L+%BUaLMMp0S}*STDF0HZ{{BPw8?9 z7~TO(3k10XCW0T?Y`W9+O-M3W!V#S5*gAq3^)REQLTHJC2jZL_s5~$uP?n4$sDjrA|_{o6jCOa=>NrJr{DkfR2R|>uI$lhQOH7)aw^;3@}?|m&|uE^zS%R= z8aMuC{?0D4ZN6@92y8|4k+3zL_4x*xDI?UcFBqzNS4{!BOUhx zW~5$Y2U4Uq@_{3Iv5WLtOmUA$erpGs9_&OxXtauRF69_7$!MMpnk_aNRYTPATW@~Vw%f=T!3S@!Dtl(Oj8jH2d6UyPijcL7M+!^_XN zJRaflVK>6^FqYQ%{*4@q&pNBU_7KG?uA0*h`uU8``nw=+Z9O2`;Yc__CdyX*{j0p< zd~OX4j$3bMbl1V&i==RNL;l~nZ!LztD2^=-PlaPu`KC^pApr-PlLQ$CY%U1s zutLPUDM`FaHp3y5P}#Ou!3Z7eXpP}sk7UI?-}KFPIUg0bteb10a3qwj_~DS?0+Yz+%wA^{i{RP)V!KzWAYr0P8u{ zYA7}wr&{JHdwK1w+DXn|{E3e;Iq6C6l;l{+!V34jn?JmT2m=sLS|bVWRN%v6l_YHs zuNsBPpBbPUPn*dQiOOLK=95w`wR0jB96R~6H0}8s+J%p4kG)$GKO})gmn(r|=|mFu zYz=UF>#N}`jOf?=V0aqz-lT?-3tCHQOG^Ap%|~6QlUB-DgD7b^n*M4Y1>UmPH9=DL zMncJj#;c;KVE*u9p9mcc8Ygx%7J_(cOJM;zAALr#15T3?VkeI|{LsP8(^q{7b6b9N z#I5tMzS%@eH1)4p^&qCyKb!=V&EaXn#)w{V6qKW>a~p zNwLO$hpx1m+Y_kr04;lSaLUIyV7Cu1WShc?zOD9bJg^@gjZC7!YbAs=q2X@T;J zuFdQ1DePR`4Ty*=oXHF*wQ!C-dq1sXYi&NlW-jc(g{g@qWBBnU2?t zX!Y_BYXP`Z^0{hMg;4^e*XS|a8d4h{&vU~1YCm|`QY!%Izxa!Mqcn|1astt|@K4`| zY}69b$G6RT2-WCr7JkS$s*;=3GVG{PVaGq%z!I!v<}HVrSNFvvxS&?wfu|@jcgI?w zCM8~q=)J)Up>M|}Wp$7GJ`ObsG@gRF#X2In=5xAR{Y2U!&+sOb=-tRTr#Gq!t?5VZ z$W_u22Y?2zyqhcTaHd5PA}rmuo}!~I{v9&CSl+bd#s0&77DiE`~PZU>(qSN~qdeJ?iJe^;4#O(5K7e8qG$ z`&(Q;ii3kv@@ZweQgP25C)l`aK7_|WHt#}_rCV2fms^GbbFm~x;}}ce&Ltr`w0P&h zR~VidI-ZMJ9u0VaNJisb^a?a%*iMcq>xQKatlSP>F$x<=s~(%bR1Qub!rtZ8+!4^R z;MdBCYiVfH0U3?CuWAz859K`JFZH09yGaKUyjaW?!JTZ;3)7wIlX@o$`@z8@=Gdks zj&B7uX%ZfYNLJScEMbdHgBEB6U`l(P4>bSU9w^#HjpOp!Z%o~ETX#T~09|7%cik_X4;8>do3Sm zlPI}gSLUS|%njbZ&^Qr&%|glt)vNY+`^v;fp($48CL)Le!e&xoYO<^>-u6FZ!mld76BZ^yv}!;RSBe4v+)QsSp7zr70$A&(A16oN zG4fAI%mc|0TNidcHMS_oaI3e&OxU+(y7-Xo$56EH%O0S%&1YYlt7(|ptpG1jWU7z7 zlFo$L1vu=XEJA3b7d@Yow3=X?FLRS~geMBFfV55I8eO@T+O;;p(l8?2U!S6`^B&r5 zL0Mdf0{wF^AuUqKmDBEFz-#SEMJ)_a%Q!^FLn6aLhxm0R{NXN;$oO*T?!}g!AFtjO@*3W9=s7(Cvr*IbB2(NV9}a)y4bP;NVH{{spOBV|q|kd@>&|bd z7?nLGA6}F9!RD4J{U#b#H4q7YqCX_^r{{|euWOJg3v{0Iyh`5W5yD$_`26uX;*iX- zUTqOwWh<{O2(VF&S@kSNRm$U&S19C=e^2wGVG8%2@Y3-gpv^g0V zuYt&~1S>D9cn9o$Cq0c|z>DPF(o$7%Ij4|ra;)@S1Y|KPa2;A|{(EzyYB*ENqF#gZ z`&>C*qo993H<#&i?C^UzqBy2yV#QM2P*e7RF^#|tOD&HOJgo?h0#W?FjiWu>Zd_<} z>dFu=!Vhts1plx%Y;C;s{bT<}9h_Za!mr}JrYF3G_mQRTr5&A%i{&S1hm52|_KAes zH9p4TzL(umfU|1z&i~&K-enD1Nc#|uYQ<56E>)#=e5I`jy)<&S7>+;?ZCCxD60zNe zX&vm?m>IVt869{hP*rN^^YGlfUj}j=#C3m)3E`ONReC1Pu<$@#IpEJ=3{c@>ZM>4~ zo8WJP&noleYZf;I<8ZN`>kShSjyhB;Z`_J@)I;bw^6@eDrr$x&E)jRS+f*EMw`Mp3 zKJeu2w(?NNNcXVe`L-AC!EWi^3g69;V`yOWekL)7^P47Z3G}vG>_>Ha>s4hP6A&E3 zGHBKrQ7XZ?lcHTNR@E7L6|BFFbw65=8crj@ScFbv`;0mfWQiYLjhA`Y&i!Mi@t1WQ z@vC;iK~8MZ0Z`VfkOUR3Dz*7U1U!EW}uZ)k|riD$oQUE;_o|{9xWN&$h3L(=* z56aGM{t!mCPWEbBTrTdFm~T*~I$v*Zj}l$jyyGVVIl59`7|v8;$oN~iR6Oob*^Xc<{DFq zgmFXX*r_puN|J6uJ|5jv5blqygobrmWpUw(1DKFkANO*M-a)kuMd$TQpFY`+{K(xh zz&wPQZSECL6@}ZV1NyGD7Rbv2>B3rsp?akOE*=1#8qFp{-;_O^#tFMQb;3mvu67m)HlH^#k0PD5va+0yWerRBSbIxYBWJ31MF|pW*D^xJ&{20J(Bu-JGknmopeNHm z#y_scXYq#5y19yPZ1v?kmHW{E=^03mk4I0L2OQEJwj6`LsfG=9>-*|DO`fbPwQpTd zxm?`Y=KY7?!|9D4fPiMS591IUb>ki4VQk)0t@$k%v@P$tbwV%zk?7>jZ5WEeKTcKf z>HvS{fC=cf@NR9Gr5t6__<8+*Yk~N_PG?a1!YU3pMx;pZnb~#>qVBh!+7xO~Tbc@RFm<^WpTIvI4 zz*syF&!-Ae0$_@4b!;(4rJe<1TaSu)#Yk*$_Z4Rk$;IJU7lH7~Ab~#L7Cl=^a+1@T zku^_?nSZnY8^RA`)u8Nxda8g^yX-11u?BXhJ3k2&Y)T?$*A1TxT^5Rsk?j&I54KXh zNU5A5p^q#`SCz+!l9?EuKrdWAk-C|W3QU-J;`lQ3H5$x}xwz&^D#0$bPCBoA#X>Z# zooi;F7q|y(F5;61eu_9Y`yus8sdZ38M5;);RI!KTEH-K4#iv4L;!tT?zrDqU!6Hemg+S`BmP%nQTa4k~QQC*8?HH!k`i&>mjI|rgbq!LQPaQWm6ivKz zzM?iJ8KiuSpt`NheBRZxE}<`zs41FceM9*TcW5whj3ME$;lRVfL;)9O#WY81(2Fuq zwYS?B=2Td4#K^~ZRWMUg@$uX>CafJw+wLR7<(vz1&vf@v6|{bK7Lz^GA+Li`FGrz5 zb#a9(H!04bU34i6Bw-gAm&t(FK4Iisb)xS`TiUi1WtT#4Nv$cg`B>{8G8+=)aqVzXm%AI)fZJW&!T`Dya4Z7R(8j zT8@Ad+3Eqvt^00#qs~92%#B}WB8|k^AhACx&Z@=Y8zwxEb;xj$NDmRsDwEcd52vcKTNQ+Fx_O?RdJzd4v?5W|Yp!?L#l3e_;0H2p zl}B@%*aoWGFjFK<)@?^Uy?v1(k^6-$s$$BM;@^I+988dQ++>#?BX%`l|ESNpZ5~Q+ zwogLSCKwg1L!^T-iH9*XRQvfVz?itW zA;#XtoWBUr2@T0&s5D2vF8p+`{5S)8Arzq|etEogjZXHnX+La`HC?X@?q}ic@-m$* z_QqUD3qj?)=u*KEg(;SWDlVZymoWahSXTB32cb2x%2h+qSLgKl;ISXYj7XLj8L0LI z{x}o{leGWQ6ntzKzNxK`If{3?j7NWg%ZLB4{1xTg{V^s`f(esTwx_3Sad=gn$p=x4 zl(!@wsIVNp>tSHMUNakJKZxKq4bRjEI1tcr&SFSLezhx_y)zJ_ z)%~3{??RkWnbHyT4+)T9t9HfTZ6{y&Ai!$-xvYu6J_M}-57<0z{aeH)tdHg&yzsx# z85f*p5_U>c%CXhbm(s6-DdUQtckJF2Fy9eem(i=?S}v74xNudnDcyiYk+JlNK8IsB z{ffxfm@81XL{Yu?g!VH*LBn@IIU2{s7<`g0)!eQlmMAY>S~>(lx~W zvP`7e|MjcdDxGaX0AX$%CqO_|dcN``zzWsXtcA=p@~|nq4TbEJjK(L@LU=0fImOSa*`A193~8=7)?q!JzbFac#7u%v z|B{01&)$>i7+)dQrT2vStSY7vkv*mqTBTt;E|_XC7zbnoRQ+=HDx#>MAUx|~AZKhH zzhUuYB2Eb2{rN}pFm@9^g>bWZ#4#Hr zh5}4zk(s^#(8n!4Ek5puiJP>1^mZsw8Mn=(4{FUKIn5*%bt@_OG@5kkX^|B#hUUF4 zlWyd%)2YQJb#sY+@5|ww8FBu%CR>N3D$}l%l7&FM;%#iRL)myy6VU>AwD{36;R1V@ zsBc-wKd?#*_xx*1b8F(j9EhqoD)G_u4BL>xcaSDk-YtbR!x^DqCK?pIV(7=}9cEF7 z+59mtf#NH8BE^kIjuZV?2nWICSTP&;4z27Ff~P8v$3x1esP<6ox8%l!3yV2@b1XLHESN$>(x0MOQ{A+a^b2ojmmhF zoaJHcZKoQX^ph$a+ayh^Ks6$N*aywg=R#a!?vQ&Cho-yV@afhvOZJ3Cde*fwx$=%- zLl3&_V)_6dkE|Ymb+F`r0e9TY^Dy16ViUyXPINUyHKsmKQdT#NkZdOGK4FTO73b;r zVo5rTJTmCT=zCqo?}IFM+1mr!qCdI{JeK^V7XJxN*t@#Y3FE^Td

)(#WTzn@8fk|`Z%Mmd> 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 From 7d5dc34b3e64a4fa34eaeda9a42f62054c826dbf Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 6 Feb 2017 14:58:54 +0000 Subject: [PATCH 189/204] fix the set-password form for new (admin-created) users --- .../PasswordResetController.coffee | 7 ++++- .../PasswordResetControllerTests.coffee | 31 ++++++++++++------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee index ec5371f0f2..452193aeb4 100644 --- a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee +++ b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee @@ -53,7 +53,12 @@ module.exports = if req.body.login_after UserGetter.getUser user_id, {email: 1}, (err, user) -> return next(err) if err? - AuthenticationController.doLogin {email:user.email, password: password}, req, res, next + # AuthenticationController.doLogin {email:user.email, password: password}, req, res, next + AuthenticationController.afterLoginSessionSetup req, user, (err) -> + if err? + logger.err {err, email: user.email}, "Error setting up session after setting password" + return next(err) + res.json {redir: AuthenticationController._getRedirectFromSession(req) || "/project"} else res.sendStatus 200 else diff --git a/services/web/test/UnitTests/coffee/PasswordReset/PasswordResetControllerTests.coffee b/services/web/test/UnitTests/coffee/PasswordReset/PasswordResetControllerTests.coffee index 89c6479734..d11507361c 100644 --- a/services/web/test/UnitTests/coffee/PasswordReset/PasswordResetControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/PasswordReset/PasswordResetControllerTests.coffee @@ -145,18 +145,27 @@ describe "PasswordResetController", -> done() @PasswordResetController.setNewUserPassword @req, @res - it "should login user if login_after is set", (done) -> - @UserGetter.getUser = sinon.stub().callsArgWith(2, null, { email: "joe@example.com" }) - @PasswordResetHandler.setNewUserPassword.callsArgWith(2, null, true, @user_id = "user-id-123") - @req.body.login_after = "true" - @AuthenticationController.doLogin = (options, req, res, next)=> - @UserGetter.getUser.calledWith(@user_id).should.equal true - expect(options).to.deep.equal { - email: "joe@example.com", - password: @password - } + describe 'when login_after is set', -> + + beforeEach -> + @UserGetter.getUser = sinon.stub().callsArgWith(2, null, { email: "joe@example.com" }) + @PasswordResetHandler.setNewUserPassword.callsArgWith(2, null, true, @user_id = "user-id-123") + @req.body.login_after = "true" + @res.json = sinon.stub() + @AuthenticationController.afterLoginSessionSetup = sinon.stub().callsArgWith(2, null) + @AuthenticationController._getRedirectFromSession = sinon.stub().returns('/some/path') + + it "should login user if login_after is set", (done) -> + @PasswordResetController.setNewUserPassword @req, @res + @AuthenticationController.afterLoginSessionSetup.callCount.should.equal 1 + @AuthenticationController.afterLoginSessionSetup.calledWith( + @req, + {email: 'joe@example.com'} + ).should.equal true + @AuthenticationController._getRedirectFromSession.callCount.should.equal 1 + @res.json.callCount.should.equal 1 + @res.json.calledWith({redir: '/some/path'}).should.equal true done() - @PasswordResetController.setNewUserPassword @req, @res describe "renderSetPasswordForm", -> From 6a161b4071055ed050cf3d59f930a9fe55a7c064 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Mon, 6 Feb 2017 16:35:52 +0000 Subject: [PATCH 190/204] remove commented out code --- .../coffee/Features/PasswordReset/PasswordResetController.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee index 452193aeb4..618e9e0a7d 100644 --- a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee +++ b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee @@ -53,7 +53,6 @@ module.exports = if req.body.login_after UserGetter.getUser user_id, {email: 1}, (err, user) -> return next(err) if err? - # AuthenticationController.doLogin {email:user.email, password: password}, req, res, next AuthenticationController.afterLoginSessionSetup req, user, (err) -> if err? logger.err {err, email: user.email}, "Error setting up session after setting password" From d00619ff3d3ff672c46295cc860faed445b1c24e Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 7 Feb 2017 15:23:44 +0100 Subject: [PATCH 191/204] Keep the cursor in the same position on screen when the editor resizes --- .../coffee/ide/editor/directives/aceEditor.coffee | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee index 93775fd78f..9205cb7b87 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor.coffee @@ -167,10 +167,22 @@ define [ if arg == "/" ace.require("ace/ext/searchbox").Search(editor, true) + getCursorScreenPosition = () -> + session = editor.getSession() + cursorPosition = session.selection.getCursor() + sessionPos = session.documentToScreenPosition(cursorPosition.row, cursorPosition.column) + screenPos = editor.renderer.textToScreenCoordinates(sessionPos.row, sessionPos.column) + return sessionPos.row * editor.renderer.lineHeight - session.getScrollTop() + if attrs.resizeOn? for event in attrs.resizeOn.split(",") scope.$on event, () -> + previousScreenPosition = getCursorScreenPosition() editor.resize() + # Put cursor back to same vertical position on screen + newScreenPosition = getCursorScreenPosition() + session = editor.getSession() + session.setScrollTop(session.getScrollTop() + newScreenPosition - previousScreenPosition) scope.$watch "theme", (value) -> editor.setTheme("ace/theme/#{value}") From 11a104ef9653a43154b22570bc62a65f25d32445 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 7 Feb 2017 15:55:00 +0100 Subject: [PATCH 192/204] Move spelling marker to back marker layer where it is updated properly by Ace --- .../aceEditor/spell-check/HighlightedWordManager.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee index 470909a9ed..d5eb11b9e4 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee @@ -21,7 +21,7 @@ define [ highlight.row, highlight.column, highlight.row, highlight.column + highlight.word.length ) - highlight.markerId = @editor.getSession().addMarker range, "spelling-highlight", null, true + highlight.markerId = @editor.getSession().addMarker range, "spelling-highlight", 'text', false @highlights.rows[highlight.row] ||= [] @highlights.rows[highlight.row].push highlight From f6743b839fb8a8dd8460d1be17931be6ba07d2ba Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 7 Feb 2017 16:45:45 +0100 Subject: [PATCH 193/204] Reflow review panel as editor pane changes size --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 320952f746..36c56890cc 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -29,9 +29,11 @@ define [ $scope.$on "layout:pdf:linked", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) + $scope.$broadcast "review-panel:layout" $scope.$on "layout:pdf:resize", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) + $scope.$broadcast "review-panel:layout" $scope.$on "expandable-text-area:resize", (event) -> $timeout () -> From 123300cdfbd4fc84c73bbc1963e4e8ad92ab2f34 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 8 Feb 2017 11:08:26 +0100 Subject: [PATCH 194/204] Clear highlighted word manager on session change --- .../aceEditor/spell-check/HighlightedWordManager.coffee | 3 +++ .../directives/aceEditor/spell-check/SpellCheckManager.coffee | 2 ++ 2 files changed, 5 insertions(+) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee index d5eb11b9e4..5014559562 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/HighlightedWordManager.coffee @@ -12,6 +12,9 @@ define [ class HighlightedWordManager constructor: (@editor) -> + @reset() + + reset: () -> @highlights = rows: [] addHighlight: (highlight) -> diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee index e84ce1d785..049f1f3388 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee @@ -22,6 +22,8 @@ define [ @closeContextMenu() @editor.on "changeSession", (e) => + @highlightedWordManager.reset() + if @$scope.spellCheckEnabled and @$scope.spellCheckLanguage and @$scope.spellCheckLanguage != "" @runSpellCheckSoon(200) From 87aea41bedb4291b450a55c50f313cb61a3065b2 Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 8 Feb 2017 11:32:19 +0100 Subject: [PATCH 195/204] Abort any inprogress spell checks when switching document --- .../aceEditor/spell-check/SpellCheckManager.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee index 049f1f3388..759b1d2b70 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/spell-check/SpellCheckManager.coffee @@ -23,6 +23,8 @@ define [ @editor.on "changeSession", (e) => @highlightedWordManager.reset() + if @inProgressRequest? + @inProgressRequest.abort() if @$scope.spellCheckEnabled and @$scope.spellCheckLanguage and @$scope.spellCheckLanguage != "" @runSpellCheckSoon(200) @@ -185,7 +187,8 @@ define [ if not words.length displayResult highlights else - @apiRequest "/check", {language: language, words: words}, (error, result) => + @inProgressRequest = @apiRequest "/check", {language: language, words: words}, (error, result) => + delete @inProgressRequest if error? or !result? or !result.misspellings? return null mispelled = [] @@ -242,4 +245,4 @@ define [ callback null, data error: (xhr, status, error) -> callback error - $.ajax options + return $.ajax options From 85c2910738dd105e01f828451245e546fa934af8 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 09:49:51 +0100 Subject: [PATCH 196/204] Don't animate review panel entries on toggle and resize --- .../controllers/ReviewPanelController.coffee | 4 ++-- .../review-panel/directives/reviewPanelSorted.coffee | 10 +++++++--- .../public/stylesheets/app/editor/review-panel.less | 6 ++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 36c56890cc..c36c881e3c 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -33,7 +33,7 @@ define [ $scope.$on "layout:pdf:resize", (event, state) -> $scope.reviewPanel.layoutToLeft = (state.east?.size < 220 || state.east?.initClosed) - $scope.$broadcast "review-panel:layout" + $scope.$broadcast "review-panel:layout", false $scope.$on "expandable-text-area:resize", (event) -> $timeout () -> @@ -154,7 +154,7 @@ define [ return if !reviewPanelOpen? $timeout () -> $scope.$broadcast "review-panel:toggle" - $scope.$broadcast "review-panel:layout" + $scope.$broadcast "review-panel:layout", false regenerateTrackChangesId = (doc) -> old_id = getChangeTracker(doc.doc_id).getIdSeed() diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee index 2bd66c723e..4028406713 100644 --- a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -6,7 +6,11 @@ define [ link: (scope, element, attrs) -> previous_focused_entry_index = 0 - layout = () -> + layout = (animate = true) -> + if animate + element.removeClass("no-animate") + else + element.addClass("no-animate") sl_console.log "LAYOUT" if scope.ui.reviewPanelOpen PADDING = 8 @@ -101,9 +105,9 @@ define [ scope.$applyAsync () -> layout() - scope.$on "review-panel:layout", () -> + scope.$on "review-panel:layout", (e, animate = true) -> scope.$applyAsync () -> - layout() + layout(animate) scope.$watch "reviewPanel.rendererData.lineHeight", () -> layout() diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 1bac7faf6f..65875af6ac 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -184,6 +184,9 @@ color: #FFF; cursor: pointer; transition: top 0.3s, left 0.1s, right 0.1s; + .no-animate & { + transition: none; + } &-focused { left: 0px; @@ -277,6 +280,9 @@ border-radius: 3px; background-color: #FFF; transition: top 0.3s, left 0.1s, right 0.1s; + .no-animate & { + transition: none; + } &-insert { border-color: @rp-green; From d7c40fa6efd1cefa5a73d442d5aa427810732701 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 10:05:48 +0100 Subject: [PATCH 197/204] Run comments through same URL linking filter as chat --- services/web/app/views/project/editor/review-panel.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.pug b/services/web/app/views/project/editor/review-panel.pug index 43a854b591..c09f2a1e0b 100644 --- a/services/web/app/views/project/editor/review-panel.pug +++ b/services/web/app/views/project/editor/review-panel.pug @@ -201,7 +201,7 @@ script(type='text/ng-template', id='commentEntryTemplate') span.rp-entry-user( style="color: hsl({{ comment.user.hue }}, 70%, 40%);", ) {{ comment.user.name }}:  - | {{ comment.content }} + span(ng-bind-html="comment.content | linky:'_blank'") textarea.rp-comment-input( expandable-text-area ng-if="comment.editing" @@ -272,7 +272,7 @@ script(type='text/ng-template', id='resolvedCommentEntryTemplate') style="color: hsl({{ comment.user.hue }}, 70%, 40%);" ng-if="$first || comment.user.id !== thread.messages[$index - 1].user.id" ) {{ comment.user.name }}:  - | {{ comment.content }} + span(ng-bind-html="comment.content | linky:'_blank'") .rp-entry-metadata | {{ comment.timestamp | date : 'MMM d, y h:mm a' }} .rp-comment.rp-comment-resolver From f590b9c97a9e366a237add19ce7d9df094a11232 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 10:09:35 +0100 Subject: [PATCH 198/204] Scroll when long words would overflow comment entry --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 65875af6ac..657a9f4ffe 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -423,6 +423,7 @@ .rp-comment-content { margin: 0; color: @rp-type-darkgrey; + overflow-x: auto; // Long words, like links can overflow without this. } .rp-comment-resolver { From a9c89635bdcafc4b4a912b0e4ac760f5435c44d2 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 10:16:16 +0100 Subject: [PATCH 199/204] Also scroll long deletes and insertions if would overflow --- services/web/public/stylesheets/app/editor/review-panel.less | 1 + 1 file changed, 1 insertion(+) diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 657a9f4ffe..e39df0fbc6 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -345,6 +345,7 @@ // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0). // This is needed to ensure that IE makes the element fill the available space. flex: 1 0 1px; + overflow-x: auto; .rp-state-overview & { margin-left: 0; From 4728077cca93eadb8c8775b5c4375b2c89a55b6d Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 11:50:32 +0100 Subject: [PATCH 200/204] Add track changes feature flag into model --- services/web/app/coffee/models/User.coffee | 1 + services/web/config/settings.defaults.coffee | 1 + 2 files changed, 2 insertions(+) diff --git a/services/web/app/coffee/models/User.coffee b/services/web/app/coffee/models/User.coffee index 44cea29a70..e4097aaa67 100644 --- a/services/web/app/coffee/models/User.coffee +++ b/services/web/app/coffee/models/User.coffee @@ -37,6 +37,7 @@ UserSchema = new Schema compileGroup: { type:String, default: Settings.defaultFeatures.compileGroup } templates: { type:Boolean, default: Settings.defaultFeatures.templates } references: { type:Boolean, default: Settings.defaultFeatures.references } + trackChanges: { type:Boolean, default: Settings.defaultFeatures.trackChanges } } featureSwitches : { track_changes: { type: Boolean } diff --git a/services/web/config/settings.defaults.coffee b/services/web/config/settings.defaults.coffee index 8e503801f9..b24c2568ab 100644 --- a/services/web/config/settings.defaults.coffee +++ b/services/web/config/settings.defaults.coffee @@ -179,6 +179,7 @@ module.exports = settings = compileGroup: "standard" references: true templates: true + trackChanges: true plans: plans = [{ planCode: "personal" From e99c9a2065e1ededcf2d42639106ee74d0c31cf8 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 12:09:47 +0100 Subject: [PATCH 201/204] Enable track changes for beta users --- .../app/coffee/Features/Project/ProjectEditorHandler.coffee | 6 +++--- services/web/public/coffee/ide/editor/EditorManager.coffee | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee index 37878fae09..3af40bf162 100644 --- a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee @@ -22,7 +22,7 @@ module.exports = ProjectEditorHandler = trackChangesVisible = false for member in members - if member.privilegeLevel == "owner" and member.user?.featureSwitches?.track_changes + if member.privilegeLevel == "owner" and (member.user?.featureSwitches?.track_changes or member.user?.betaProgram) trackChangesVisible = true {owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members) @@ -37,8 +37,8 @@ module.exports = ProjectEditorHandler = compileGroup:"standard" templates: false references: false - trackChanges: true # TODO: Set this to false to make track changes a paid feature - trackChangesVisible: trackChangesVisible # TODO: Get this from the beta flag when going to public beta + trackChanges: false + trackChangesVisible: trackChangesVisible }) return result diff --git a/services/web/public/coffee/ide/editor/EditorManager.coffee b/services/web/public/coffee/ide/editor/EditorManager.coffee index 3b6672fae8..e01a12cb8b 100644 --- a/services/web/public/coffee/ide/editor/EditorManager.coffee +++ b/services/web/public/coffee/ide/editor/EditorManager.coffee @@ -11,7 +11,7 @@ define [ open_doc_name: null opening: true trackChanges: false - wantTrackChanges: window.trackChangesEnabled + wantTrackChanges: false } @$scope.$on "entity:selected", (event, entity) => @@ -37,6 +37,10 @@ define [ @$scope.$watch "editor.wantTrackChanges", (value) => return if !value? @_syncTrackChangesState(@$scope.editor.sharejs_doc) + + @$scope.$watch "project.features.trackChanges", (trackChangesFeature) => + return if !trackChangesFeature? + @$scope.editor.wantTrackChanges = window.trackChangesEnabled and trackChangesFeature autoOpenDoc: () -> open_doc_id = From 1d58efbca07a11cd493a58aa3c61769f6f9764f8 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 12:42:53 +0100 Subject: [PATCH 202/204] Don't enable for beta users just yet --- .../web/app/coffee/Features/Project/ProjectEditorHandler.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee index 3af40bf162..5da582aa4c 100644 --- a/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEditorHandler.coffee @@ -22,7 +22,7 @@ module.exports = ProjectEditorHandler = trackChangesVisible = false for member in members - if member.privilegeLevel == "owner" and (member.user?.featureSwitches?.track_changes or member.user?.betaProgram) + if member.privilegeLevel == "owner" and member.user?.featureSwitches?.track_changes trackChangesVisible = true {owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members) From bf5f5f832dee8a951b6c81674d54ded0d592d300 Mon Sep 17 00:00:00 2001 From: James Allen Date: Mon, 13 Feb 2017 14:39:43 +0100 Subject: [PATCH 203/204] Use correct flag for determining mini panel visibility --- .../ide/review-panel/controllers/ReviewPanelController.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 1358acfce6..d46ef404bc 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -148,7 +148,7 @@ define [ entries = $scope.reviewPanel.entries[$scope.editor.open_doc_id] or {} Object.keys(entries).length ), (nEntries) -> - $scope.reviewPanel.hasEntries = nEntries > 0 and $scope.project.features.trackChanges + $scope.reviewPanel.hasEntries = nEntries > 0 and $scope.project.features.trackChangesVisible $scope.$watch "ui.reviewPanelOpen", (reviewPanelOpen) -> return if !reviewPanelOpen? From 61ef158f76a464e3bcd356dd55f4c10868aab134 Mon Sep 17 00:00:00 2001 From: James Allen Date: Tue, 14 Feb 2017 09:38:58 +0100 Subject: [PATCH 204/204] Don't show review panel if user doesn't have track changes --- .../review-panel/controllers/ReviewPanelController.coffee | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index d46ef404bc..5cdf7c672c 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -41,6 +41,11 @@ define [ $scope.$watch "ui.pdfLayout", (layout) -> $scope.reviewPanel.layoutToLeft = (layout == "flat") + + $scope.$watch "project.features.trackChangesVisible", (visible) -> + return if !visible? + if !visible + $scope.ui.reviewPanelOpen = false $scope.commentState = adding: false