Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-jupyter-docprovider for 
openSUSE:Factory checked in at 2025-01-31 16:02:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter-docprovider (Old)
 and      /work/SRC/openSUSE:Factory/.python-jupyter-docprovider.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-jupyter-docprovider"

Fri Jan 31 16:02:21 2025 rev:2 rq:1241237 version:1.1.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-jupyter-docprovider/python-jupyter-docprovider.changes
    2024-11-08 12:04:24.294041863 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-jupyter-docprovider.new.2316/python-jupyter-docprovider.changes
  2025-01-31 16:02:45.211899993 +0100
@@ -1,0 +2,6 @@
+Wed Jan 29 15:46:06 UTC 2025 - Ben Greiner <[email protected]>
+
+- Update to 1.1.0
+  * New subpackage version for jupyter-collaboration 3.1.0
+
+-------------------------------------------------------------------

Old:
----
  jupyter_docprovider-1.0.0.tar.gz

New:
----
  jupyter_docprovider-1.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-jupyter-docprovider.spec ++++++
--- /var/tmp/diff_new_pack.UeH0QQ/_old  2025-01-31 16:02:45.611916041 +0100
+++ /var/tmp/diff_new_pack.UeH0QQ/_new  2025-01-31 16:02:45.611916041 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-jupyter-docprovider
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,9 +16,9 @@
 #
 
 
-%define distversion 1
+%define distversion 1.1
 Name:           python-jupyter-docprovider
-Version:        1.0.0
+Version:        1.1.0
 Release:        0
 Summary:        Jupyter extension integrating collaborative shared models
 License:        BSD-3-Clause
@@ -70,7 +70,6 @@
 #%%check
 # tests are in the python-jupyter-collaboration metapackage
 
-
 %files %{python_files}
 %{python_sitelib}/jupyter_docprovider
 %{python_sitelib}/jupyter_docprovider-%{version}.dist-info

++++++ jupyter_docprovider-1.0.0.tar.gz -> jupyter_docprovider-1.1.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jupyter_docprovider-1.0.0/PKG-INFO 
new/jupyter_docprovider-1.1.0/PKG-INFO
--- old/jupyter_docprovider-1.0.0/PKG-INFO      2020-02-02 01:00:00.000000000 
+0100
+++ new/jupyter_docprovider-1.1.0/PKG-INFO      2020-02-02 01:00:00.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.3
 Name: jupyter-docprovider
-Version: 1.0.0
+Version: 1.1.0
 Summary: JupyterLab/Jupyter Notebook 7+ extension integrating collaborative 
shared models.
 Project-URL: Documentation, 
https://jupyterlab-realtime-collaboration.readthedocs.io/
 Project-URL: Repository, https://github.com/jupyterlab/jupyter-collaboration
@@ -64,7 +64,6 @@
         
             # Copyright (c) Jupyter Development Team.
             # Distributed under the terms of the Modified BSD License.
-License-File: LICENSE
 Classifier: Framework :: Jupyter
 Classifier: Framework :: Jupyter :: JupyterLab
 Classifier: Framework :: Jupyter :: JupyterLab :: 4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/_version.py 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/_version.py
--- old/jupyter_docprovider-1.0.0/jupyter_docprovider/_version.py       
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/jupyter_docprovider/_version.py       
2020-02-02 01:00:00.000000000 +0100
@@ -1 +1 @@
-__version__ = "1.0.0"
+__version__ = "1.1.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/package.json 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/package.json
--- old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/package.json 
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/package.json 
2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@jupyter/docprovider-extension",
-  "version": "3.0.0",
+  "version": "3.1.0",
   "description": "JupyterLab - Collaborative Shared Models",
   "keywords": [
     "jupyter",
@@ -53,8 +53,8 @@
     "watch:labextension": "jupyter labextension watch ."
   },
   "dependencies": {
-    "@jupyter/collaborative-drive": "^3.0.0",
-    "@jupyter/docprovider": "^3.0.0",
+    "@jupyter/collaborative-drive": "^3.1.0",
+    "@jupyter/docprovider": "^3.1.0",
     "@jupyter/ydoc": "^2.0.0 || ^3.0.0",
     "@jupyterlab/application": "^4.2.0",
     "@jupyterlab/apputils": "^4.2.0",
@@ -128,7 +128,7 @@
       }
     },
     "_build": {
-      "load": "static/remoteEntry.df025193a26e76919ed8.js",
+      "load": "static/remoteEntry.2870ff42f76951af28a0.js",
       "extension": "./extension",
       "style": "./style"
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/240.dd1dbd559d6c95c85b3f.js
   2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[240],{68:(e,t,n)=>{n.d(t,{A:()=>a});var
 o=n(758),r=n.n(o),s=n(935),i=n.n(s)()(r());i.push([e.id,"/* 
-----------------------------------------------------------------------------\n|
 Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the 
Modified BSD 
License.\n|----------------------------------------------------------------------------
 */\n\n.jp-timelineSliderWrapper .jp-sliderContainer{\n  display: flex;\n  
align-items: center;\n}\n\n.jp-Slider {\n  height: 
4.5px\n}\n\n#jp-slider-status-bar {\n  display: 
flex;\n}\n\n.jp-timestampDisplay {\n  display: flex;\n  flex-direction: row;\n  
align-items: center;\n  gap: 6px;\n}\n\n.jp-restoreBtnContainer {\n  width: 
192px;\n}\n\n.jp-ToolbarButtonComponent.jp-restoreBtn {\n  cursor: pointer;\n  
color: var(--jp-layout-color2);\n  width: 100%;\n  background: 
var(--jp-accept-color-normal)\n}\n",""]);con
 st a=i},935:e=>{e.exports=function(e){var t=[];return 
t.toString=function(){return this.map((function(t){var n="",o=void 
0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media 
".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," 
{")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,r,s){"string"==typeof
 e&&(e=[[null,e,void 0]]);var i={};if(o)for(var a=0;a<this.length;a++){var 
c=this[a][0];null!=c&&(i[c]=!0)}for(var l=0;l<e.length;l++){var 
d=[].concat(e[l]);o&&i[d[0]]||(void 0!==s&&(void 
0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," 
{").concat(d[1],"}")),d[5]=s),n&&(d[2]?(d[1]="@media ".concat(d[2]," 
{").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports 
(".concat(d[4],") 
{").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},758:e=>{e.exports=function(e){return
 e[1]}},591:e=>{var t=[];function n(e){for(var 
n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;br
 eak}return n}function o(e,o){for(var s={},i=[],a=0;a<e.length;a++){var 
c=e[a],l=o.base?c[0]+o.base:c[0],d=s[l]||0,h="".concat(l," 
").concat(d);s[l]=d+1;var 
u=n(h),p={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==u)t[u].references++,t[u].updater(p);else{var
 
m=r(p,o);o.byIndex=a,t.splice(a,0,{identifier:h,updater:m,references:1})}i.push(h)}return
 i}function r(e,t){var n=t.domAPI(t);return 
n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else
 n.remove()}}e.exports=function(e,r){var s=o(e=e||[],r=r||{});return 
function(e){e=e||[];for(var i=0;i<s.length;i++){var 
a=n(s[i]);t[a].references--}for(var c=o(e,r),l=0;l<s.length;l++){var 
d=n(s[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}s=c}}},128:e=>{var
 t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var 
n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof 
window.HTMLI
 FrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return 
t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably 
means that the value for the 'insert' parameter is 
invalid.");o.appendChild(n)}},51:e=>{e.exports=function(e){var 
t=document.createElement("style");return 
e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},855:(e,t,n)=>{e.exports=function(e){var
 
t=n.nc;t&&e.setAttribute("nonce",t)}},740:e=>{e.exports=function(e){if("undefined"==typeof
 document)return{update:function(){},remove:function(){}};var 
t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var 
o="";n.supports&&(o+="@supports (".concat(n.supports,") 
{")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 
0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," 
{")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var 
s=n.sourceMap;s&&"undefined"!=typeof btoa&&(o+="\n/*# 
sourceMappingURL=data:application/json;base64,".concat
 (btoa(unescape(encodeURIComponent(JSON.stringify(s))))," 
*/")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},656:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},240:(e,t,n)=>{n.r(t),n.d(t,{ForkManager:()=>K,IForkManagerToken:()=>J,JUPYTER_COLLABORATION_FORK_EVENTS_URI:()=>q,NotebookCellServerExecutor:()=>l,ROOM_FORK_URL:()=>p,TimelineWidget:()=>B,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>w,YDrive:()=>k,requestAPI:()=>m,requestDocSession:()=>f,requestDocumentTimeline:()=>v,requestUndoRedo:()=>g});var
 o=n(560);class r extends 
o.WebsocketProvider{constructor(e){super(e.url,e.roomID,e.awareness.doc,{awareness:e.awareness}),this._isDisposed=!1,this._awareness=e.awareness,this._user=e.user,this._user.ready.then((()=>this._onUserChanged(this._user))).catch((e=>console
 .error(e))),this._user.userChanged.connect(this._onUserChanged,this)}get 
isDisposed(){return 
this._isDisposed}dispose(){this._isDisposed||(this._user.userChanged.disconnect(this._onUserChanged,this),this._isDisposed=!0,this.destroy())}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}var
 s=n(123),i=n(672),a=n(943),c=n(624);class l{constructor(e){var 
t;this._serverSettings=null!==(t=e.serverSettings)&&void 
0!==t?t:a.ServerConnection.makeSettings()}async 
runCell({cell:e,notebook:t,notebookConfig:n,onCellExecuted:o,onCellExecutionScheduled:r,sessionContext:l,sessionDialogs:d,translator:h}){var
 u,p,m;const 
f=(h=null!=h?h:c.nullTranslator).load("jupyterlab");switch(e.model.type){case"markdown":e.rendered=!0,e.inputHidden=!1,o({cell:e,success:!0});break;case"code":if(l){if(l.isTerminating){await(0,s.showDialog)({title:f.__("Kernel
 Terminating"),body:f.__("The kernel for %1 appears to be terminating. You can 
not run any cell for now.",null===(u=l.session)||void 0===u
 ?void 0:u.path),buttons:[s.Dialog.okButton()]});break}if(l.pendingInput)return 
await(0,s.showDialog)({title:f.__("Cell not executed due to pending 
input"),body:f.__("The cell has not been executed to avoid kernel deadlock as 
there is another pending input! Submit your pending input and try 
again."),buttons:[s.Dialog.okButton()]}),!1;if(l.hasNoKernel&&await 
l.startKernel()&&d&&await d.selectKernel(l),l.hasNoKernel)return 
e.model.sharedModel.transact((()=>{e.model.clearExecution()})),!0;const 
n=null===(m=null===(p=null==l?void 0:l.session)||void 0===p?void 
0:p.kernel)||void 0===m?void 
0:m.id,c=i.URLExt.join(this._serverSettings.baseUrl,`api/kernels/${n}/execute`),h=e.model.sharedModel.getId(),v=t.sharedModel.getState("document_id"),g={method:"POST",body:JSON.stringify({cell_id:h,document_id:v})};r({cell:e});let
 y=!1;try{y=(await 
a.ServerConnection.makeRequest(c,g,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw
 t}return o({cell:e,success:y}),!0}
 e.model.sharedModel.transact((()=>{e.model.clearExecution()}),!1)}return 
Promise.resolve(!0)}}const 
d="api/collaboration/session",h="api/collaboration/undo_redo",u="api/collaboration/timeline",p="api/collaboration/fork";async
 function m(e="",t={}){const 
n=a.ServerConnection.makeSettings(),o=i.URLExt.join(n.baseUrl,e);let 
r;try{r=await a.ServerConnection.makeRequest(o,t,n)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}let s=await 
r.text();if(s.length>0)try{s=JSON.parse(s)}catch(e){console.error("Not a JSON 
response body.",r)}if(!r.ok)throw new 
a.ServerConnection.ResponseError(r,s.message||s);return s}async function 
f(e,t,n){const 
o=a.ServerConnection.makeSettings(),r=i.URLExt.join(o.baseUrl,d,encodeURIComponent(n)),s={method:"PUT",body:JSON.stringify({format:e,type:t})};let
 c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}let l=await 
c.text();if(l.length>0)try{l=JSON.parse(l)}catch(e){console.log("Not a JSON 
response bo
 dy.",c)}if(!c.ok)throw new 
a.ServerConnection.ResponseError(c,l.message||l);return l}async function 
v(e,t,n){const o=a.ServerConnection.makeSettings();let 
r=i.URLExt.join(o.baseUrl,u,n);r=r.concat(`?format=${e}&&type=${t}`);const 
s={method:"GET"};let c;try{c=await 
a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}return c}async function g(e,t,n,o){const 
r=a.ServerConnection.makeSettings();let 
s=i.URLExt.join(r.baseUrl,h,encodeURIComponent(e));s=s.concat(`?action=${t}&&steps=${n}&&forkRoom=${o}`);const
 c={method:"PUT"};let l;try{l=await 
a.ServerConnection.makeRequest(s,c,r)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}let d=await 
l.text();if(d.length>0)try{d=JSON.parse(d)}catch(e){console.log("Not a JSON 
response body.",l)}if(!l.ok)throw new 
a.ServerConnection.ResponseError(l,d.message||d);return d}var 
y=n(602),_=n(262);class 
w{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document
 provider closed:",e.rea
 son),(0,s.showErrorMessage)(this._trans.__("Document session 
error"),e.reason,[s.Dialog.okButton()]),this._sharedModel.dispose())},this._onSync=e=>{e&&(this._yWebsocketProvider&&(this._yWebsocketProvider.off("sync",this._onSync),this._sharedModel.ydoc.getMap("state").set("document_id",this._yWebsocketProvider.roomname)),this._ready.resolve())},this._ready=new
 
_.PromiseDelegate,this._isDisposed=!1,this._path=e.path,this._contentType=e.contentType,this._format=e.format,this._serverUrl=e.url,this._sharedModel=e.model,this._awareness=e.model.awareness,this._yWebsocketProvider=null,this._trans=e.translator;const
 
t=e.user;t.ready.then((()=>{this._onUserChanged(t)})).catch((e=>console.error(e))),t.userChanged.connect(this._onUserChanged,this),this._connect().catch((e=>console.warn(e)))}get
 isDisposed(){return this._isDisposed}get ready(){return 
this._ready.promise}get contentType(){return this._contentType}get 
format(){return this._format}dispose(){var e,t,n;this.isDisposed||(this._isDispo
 sed=!0,null===(e=this._yWebsocketProvider)||void 
0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void
 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 
0===n||n.destroy(),this._disconnect(),y.Signal.clearData(this))}async 
reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await 
f(this._format,this._contentType,this._path);this._yWebsocketProvider=new 
o.WebsocketProvider(this._serverUrl,`${e.format}:${e.type}:${e.fileId}`,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:e.sessionId},awareness:this._awareness}),this._yWebsocketProvider.on("sync",this._onSync),this._yWebsocketProvider.on("connection-close",this._onConnectionClosed)}async
 connectToForkDoc(e,t){this._disconnect(),this._yWebsocketProvider=new 
o.WebsocketProvider(this._serverUrl,e,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:t},awareness:this._awareness})}get
 wsProvider(){return this._yWebsocketProvider}_disconnect
 (){var e,t,n;null===(e=this._yWebsocketProvider)||void 
0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void
 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 
0===n||n.destroy(),this._yWebsocketProvider=null}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}const
 S="true"===i.PageConfig.getOption("disableRTC");class k extends 
a.Drive{constructor(e,t,n){super({name:"RTC"}),this._onCreate=(e,t)=>{var 
n,o;if("string"==typeof e.format)try{const r=new 
w({url:i.URLExt.join(this.serverSettings.wsUrl,"api/collaboration/room"),path:e.path,format:e.format,contentType:e.contentType,model:t,user:this._user,translator:this._trans}),s=((null===(n=this._globalAwareness)||void
 0===n?void 
0:n.getLocalState())||{}).documents||[];s.includes(e.path)||(s.push(`${this.name}:${e.path}`),null===(o=this._globalAwareness)||void
 0===o||o.setLocalStateField("documents",s));const 
a=`${e.format}:${e.contentType}:${e.pa
 th}`;this._providers.set(a,r),t.changed.connect((async(n,o)=>{var 
r;if(!o.stateChange)return;const 
s=o.stateChange.filter((e=>"hash"===e.name));if(0===s.length)return;s.length>1&&console.error("Unexpected
 multiple changes to hash value in a single transaction");const 
i=s[0],a=null!==(r=t.state.path)&&void 0!==r?r:e.path,c=await 
this.get(a,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...c,hash:i.newValue},oldValue:{hash:i.oldValue}})})),t.disposed.connect((()=>{var
 t,n;const 
o=this._providers.get(a);o&&(o.dispose(),this._providers.delete(a));const 
r=((null===(t=this._globalAwareness)||void 0===t?void 
0:t.getLocalState())||{}).documents||[],s=r.indexOf(`${this.name}:${e.path}`);s>-1&&r.splice(s,1),null===(n=this._globalAwareness)||void
 0===n||n.setLocalStateField("documents",r)}))}catch(t){console.error(`Failed 
to open websocket connection for 
${e.path}.\n:${t}`)}},this._ydriveFileChanged=new 
y.Signal(this),this._user=e,this._trans=t,this._globalAwareness=n,this._
 providers=new Map,this.sharedModelFactory=new 
b(this._onCreate),super.fileChanged.connect(((e,t)=>{this._ydriveFileChanged.emit(t)}))}get
 providers(){return 
this._providers}dispose(){this.isDisposed||(this._providers.forEach((e=>e.dispose())),this._providers.clear(),super.dispose())}async
 get(e,t){if(t&&t.format&&t.type){const 
n=`${t.format}:${t.type}:${e}`,o=this._providers.get(n);if(o){const[n]=await 
Promise.all([super.get(e,{...t,content:!1}),o.ready]);return{...n,format:t.format}}}return
 super.get(e,t)}async save(e,t={}){if(t.format&&t.type){const 
n=`${t.format}:${t.type}:${e}`;if(this._providers.get(n)){const 
n={type:t.type,format:t.format,content:!1};return this.get(e,n)}}return 
super.save(e,t)}get fileChanged(){return this._ydriveFileChanged}}class 
b{constructor(e){this._onCreate=e,this.collaborative=!S,this.documentFactories=new
 Map}registerDocumentFactory(e,t){if(this.documentFactories.has(e))throw new 
Error(`The content type ${e} already exists`);this.documentFactories.set
 (e,t)}createNew(e){if("string"==typeof 
e.format){if(this.collaborative&&e.collaborative&&this.documentFactories.has(e.contentType)){const
 t=this.documentFactories.get(e.contentType)(e);return 
this._onCreate(e,t),t}}else console.warn(`Only defined format are supported; 
got ${e.format}.`)}}var 
C=n(345),T=n.n(C),E=n(591),x=n.n(E),R=n(740),U=n.n(R),D=n(128),$=n.n(D),N=n(855),P=n.n(N),j=n(51),I=n.n(j),L=n(656),M=n.n(L),F=n(68),W={};W.styleTagTransform=M(),W.setAttributes=P(),W.insert=$().bind(null,"head"),W.domAPI=U(),W.insertStyleElement=I(),x()(F.A,W),F.A&&F.A.locals&&F.A.locals;var
 A=n(597);const 
O=({apiURL:e,provider:t,contentType:n,format:o,documentTimelineUrl:r})=>{const[i,a]=(0,C.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[c,l]=(0,C.useState)(i.timestamps.length-1),[d,h]=(0,C.useState)(!1),[u,p]=(0,C.useState)(!1),m=(0,C.useRef)(!0),y=(0,C.useRef)(!0),_=(0,C.useRef)(null);function
 w(e){try{const t=new URL(e).pathname,n=t.lastIndexOf(r);if(-1===n)throw new 
Error(
 `API segment "${r}" not found in URL.`);return 
t.slice(n+r.length)}catch(e){return console.error("Invalid URL or unable to 
extract filename:",e),""}}return 
T().createElement("div",{className:"jp-sliderContainer"},T().createElement("div",{onClick:()=>{!async
 function(r){try{if(m.current){const i=await v(o,n,r);if(!i.ok)throw 
404===i.status?new Error("Not found"):503===i.status?new Error("WebSocket 
closed"):new Error(`Failed to fetch data: ${i.statusText}`);const c=await 
i.text();let d={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return 
c&&(s.Notification.warning("Document is now in read-only mode. Changes will not 
be 
saved.",{autoClose:2500}),d=JSON.parse(c),a(d),l(d.timestamps.length-1),t.connectToForkDoc(d.forkRoom,d.sessionId),_.current=await
 f(o,n,w(e))),h(!0),m.current=!1,d}}catch(e){console.error("Error fetching 
data:",e)}}(w(e))},className:"jp-mod-highlighted",title:"Document 
Timeline"},T().createElement(A.historyIcon.react,{marginRight:"4px"})),d&&T().createElement("div
 
",{className:"jp-timestampDisplay"},T().createElement("input",{type:"range",min:0,max:i.timestamps.length-1,value:c,onChange:async
 e=>{const t=parseInt(e.target.value),n=Math.abs(t-c);try{const 
e=function(e){return 
e<c?"undo":"redo"}(t);if(l(t),y.current&&(p(!0),y.current=!1),!_.current)return 
void console.error("Session is not initialized");await 
g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,e,n,i.forkRoom)}catch(e){console.error("Error
 fetching or applying 
updates:",e)}},className:"jp-Slider"}),T().createElement("div",null,T().createElement("strong",null,w(e).split("/").pop(),"
 ")," 
"),u&&T().createElement("div",{className:"jp-restoreBtnContainer"},T().createElement("button",{onClick:async()=>{if(!_.current)return
 void console.error("Session is not initialized");const e=await 
g(`${_.current.format}:${_.current.type}:${_.current.fileId}`,"restore",0,i.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),h(!1),m.current=!0):s.Notific
 ation.error(e.status,{autoClose:4e3})},className:"jp-ToolbarButtonComponent 
jp-restoreBtn"},"Restore version"," ",(e=>{const t=new 
Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}
 
${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`})(i.timestamps[c])))))};class
 B extends 
s.ReactWidget{constructor(e,t,n,o,r){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.documentTimelineUrl=r,this.addClass("jp-timelineSliderWrapper")}render(){return
 
C.createElement(O,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format,documentTimelineUrl:this.documentTimelineUrl})}updateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}const
 J=new _.Token("@jupyter/docprovider:IForkManagerToken"),q="https://sche
 ma.jupyter.org/jupyter_collaboration/fork/v1";class 
K{constructor(e){this._disposed=!1,this._forkAddedSignal=new 
y.Signal(this),this._forkDeletedSignal=new 
y.Signal(this);const{drive:t,eventManager:n}=e;this._drive=t,this._eventManager=n,this._eventManager.stream.connect(this._handleEvent,this)}get
 isDisposed(){return this._disposed}get forkAdded(){return 
this._forkAddedSignal}get forkDeleted(){return 
this._forkDeletedSignal}dispose(){var 
e;this._disposed||(null===(e=this._eventManager)||void 
0===e||e.stream.disconnect(this._handleEvent),this._disposed=!0)}async 
createFork(e){const{rootId:t,title:n,description:o,synchronize:r}=e,s={method:"PUT",body:JSON.stringify({title:n,description:o,synchronize:r})},a=i.URLExt.join(p,t);return
 await m(a,s)}async getAllForks(e){const t=i.URLExt.join(p,e);return await 
m(t,{method:"GET"})}async 
deleteFork(e){const{forkId:t,merge:n}=e,o=i.URLExt.join(p,t),r=i.URLExt.objectToQueryString({merge:n});await
 m(`${o}${r}`,{method:"DELETE"})}getProvider(e){
 const{documentPath:t,format:n,type:o}=e,r=this._drive;if(r){const e=r.name;let 
s=t;return 
t.startsWith(e)&&(s=t.slice(e.length+1)),r.providers.get(`${n}:${o}:${s}`)}}_handleEvent(e,t){if(t.schema_id===q)switch(t.action){case"create":this._forkAddedSignal.emit(t);break;case"delete":this._forkDeletedSignal.emit(t)}}}}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/544.20c789155db30fb50597.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/544.20c789155db30fb50597.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/544.20c789155db30fb50597.js
   2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/544.20c789155db30fb50597.js
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[544],{544:(e,t,o)=>{o.r(t),o.d(t,{default:()=>S});var
 
r,a=o(909),n=o(200),i=o(256),s=o(313),l=o(922),d=o(710),c=o(154),u=o(480),p=o(614),v=o(678),g=o(697),h=o(975),b=o(907),w=o(473);!function(e){e.openPath="filebrowser:open-path"}(r||(r={}));const
 m="The file %1 has been opened with two different views. This is not 
supported. Please close this view; otherwise, some of your edits may not be 
saved properly.",y={id:"@jupyter/docprovider-extension:drive",description:"The 
default collaborative drive 
provider",provides:h.ICollaborativeDrive,requires:[v.ITranslator],optional:[h.IGlobalAwareness],activate:(e,t,o)=>{const
 r=t.load("jupyter_collaboration"),a=new 
b.YDrive(e.serviceManager.user,r,o);return 
e.serviceManager.contents.addDrive(a),a}},f={id:"@jupyter/docprovider-extension:yfile",description:"Plugin
 to register the shared model factory for the content type 'file'
 
",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[],activate:(e,t)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new
 
g.YFile))}},x={id:"@jupyter/docprovider-extension:ynotebook",description:"Plugin
 to register the shared model factory for the content type 
'notebook'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[p.ISettingRegistry],activate:(e,t,o)=>{let
 r=!0;o&&o.load("@jupyterlab/notebook-extension:tracker").then((e=>{const 
t=e=>{var t;const o=null==e?void 
0:e.get("experimentalEnableDocumentWideUndoRedo").composite;r=null===(t=!o)||void
 
0===t||t};t(e),e.changed.connect((e=>t(e)))})),t.sharedModelFactory.registerDocumentFactory("notebook",(()=>new
 
g.YNotebook({disableDocumentWideUndoRedo:r})))}},I={id:"@jupyter/docprovider-extension:statusBarTimeline",description:"Plugin
 to add a timeline slider to the status 
bar",autoStart:!0,requires:[l.IStatusBar,h.ICollaborativeDrive],activate:async(e,t,o)=>{try{let
 r=null,a=null;const n=async(t,r)=>{if(o){t=t.sli
 
ce(o.name.length+1),a&&(a.dispose(),a=null);const[n,s]=r.split(":"),l=o.providers.get(`${n}:${s}:${t}`),d=w.URLExt.join(e.serviceManager.serverSettings.baseUrl,"api/collaboration/timeline",t);a=new
 b.TimelineWidget(d,l,l.contentType,l.format);const 
c=document.getElementById("jp-slider-status-bar");c&&!a.isAttached&&i.Widget.attach(a,c)}};e.shell.currentChanged&&e.shell.currentChanged.connect((async(e,t)=>{const
 o=t.newValue;a&&(a.dispose(),a=null),o&&"context"in o&&(await 
o.context.ready,await 
n(o.context.path,o.context.model.sharedModel.getState("document_id")))})),t&&(r||(r=new
 
i.Widget,r.addClass("jp-StatusBar-GroupItem"),r.addClass("jp-mod-highlighted"),r.id="jp-slider-status-bar",t.registerStatusItem("jp-slider-status-bar",{item:r,align:"left",rank:4,isActive:()=>{const
 t=e.shell.currentWidget;return!!t&&"context"in 
t}})))}catch(e){console.error("Failed to activate statusBarTimeline 
plugin:",e)}}},_={id:"@jupyter/docprovider-extension:defaultFileBrowser",description:"The
 defaul
 t file browser factory 
provider",provides:s.IDefaultFileBrowser,requires:[h.ICollaborativeDrive,s.IFileBrowserFactory],optional:[a.IRouter,a.JupyterFrontEnd.ITreeResolver,a.ILabShell,v.ITranslator],activate:async(e,t,o,r,a,n,i)=>{const{commands:s}=e,l=(null!=i?i:v.nullTranslator).load("jupyterlab");e.serviceManager.contents.addDrive(t);const
 
d=o.createFileBrowser("filebrowser",{auto:!1,restore:!1,driveName:t.name});return
 
d.node.setAttribute("role","region"),d.node.setAttribute("aria-label",l.__("File
 Browser 
Section")),k.restoreBrowser(d,s,r,a,n),d}},j={id:"@jupyter/docprovider-extension:logger",description:"A
 logging plugin for debugging 
purposes.",autoStart:!0,optional:[c.ILoggerRegistry,d.IEditorTracker,u.INotebookTracker,v.ITranslator],activate:(e,t,o,r,a)=>{const
 
i=(null!=a?a:v.nullTranslator).load("jupyter_collaboration"),s="https://schema.jupyter.org/jupyter_collaboration/session/v1";if(!t)return
 void e.serviceManager.events.stream.connect(((e,t)=>{var o,r;t.schema_id===s&&(
 console.debug(`[${t.room}(${t.path})] ${null!==(o=t.action)&&void 0!==o?o:""}: 
${null!==(r=t.msg)&&void 
0!==r?r:""}`),"WARNING"===t.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(m,t.path),buttons:[n.Dialog.okButton()]}))}));const
 l=new Map,d=(e,o)=>{const 
r=t.getLogger(o.context.path);l.set(o.context.localPath,r),o.disposed.connect((e=>{l.delete(e.context.localPath)}))};o&&o.widgetAdded.connect(d),r&&r.widgetAdded.connect(d),(async()=>{var
 t,o;const{events:r}=e.serviceManager;for await(const e of 
r.stream)if(e.schema_id===s){const 
r=l.get(e.path);null==r||r.log({type:"text",level:e.level.toLowerCase(),data:`[${e.room}]
 ${null!==(t=e.action)&&void 0!==t?t:""}: ${null!==(o=e.msg)&&void 
0!==o?o:""}`}),"WARNING"===e.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(m,e.path),buttons:[n.Dialog.warnButton({label:i.__("Ok")})]})}})()}};var
 k;!function(e){e.restoreBrowser=async function(e,t,o,a,n){const 
i="jp-mod-restoring";if(e.addClass(i),!o)return await e.model.restore(
 e.id),await e.model.refresh(),void e.removeClass(i);const 
s=async()=>{o.routed.disconnect(s);const l=await(null==a?void 
0:a.paths);(null==l?void 0:l.file)||(null==l?void 0:l.browser)?(await 
e.model.restore(e.id,!1),l.file&&await 
t.execute(r.openPath,{path:l.file,dontShowBrowser:!0}),l.browser&&await 
t.execute(r.openPath,{path:l.browser,dontShowBrowser:!0})):(await 
e.model.restore(e.id),await e.model.refresh()),e.removeClass(i),(null==n?void 
0:n.isEmpty("main"))&&t.execute("launcher:create")};o.routed.connect(s)}}(k||(k={}));const
 
S=[y,f,x,_,j,{id:"@jupyter/docprovider-extension:notebook-cell-executor",description:"Add
 notebook cell executor that uses REST API instead of kernel protocol over 
WebSocket.",autoStart:!0,provides:u.INotebookCellExecutor,activate:e=>"true"===w.PageConfig.getOption("serverSideExecution")?new
 
b.NotebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:u.runCell})},I]}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/576.21a3c1a9ebaebb58d346.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/576.21a3c1a9ebaebb58d346.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/576.21a3c1a9ebaebb58d346.js
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/576.21a3c1a9ebaebb58d346.js
   2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1 @@
+(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[576],{907:e=>{var
 t,s,n=e.exports={};function r(){throw new Error("setTimeout has not been 
defined")}function o(){throw new Error("clearTimeout has not been 
defined")}function c(e){if(t===setTimeout)return 
setTimeout(e,0);if((t===r||!t)&&setTimeout)return 
t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(s){try{return 
t.call(null,e,0)}catch(s){return 
t.call(this,e,0)}}}!function(){try{t="function"==typeof 
setTimeout?setTimeout:r}catch(e){t=r}try{s="function"==typeof 
clearTimeout?clearTimeout:o}catch(e){s=o}}();var a,i=[],l=!1,h=-1;function 
u(){l&&a&&(l=!1,a.length?i=a.concat(i):h=-1,i.length&&d())}function 
d(){if(!l){var e=c(u);l=!0;for(var 
t=i.length;t;){for(a=i,i=[];++h<t;)a&&a[h].run();h=-1,t=i.length}a=null,l=!1,function(e){if(s===clearTimeout)return
 clearTimeout(e);if((s===o||!s)&&clearTimeout)return 
s=clearTimeout,clearTimeout(e);try{return s(e)}catch(t){try{return s
 .call(null,e)}catch(t){return s.call(this,e)}}}(e)}}function 
f(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new 
Array(arguments.length-1);if(arguments.length>1)for(var 
s=1;s<arguments.length;s++)t[s-1]=arguments[s];i.push(new 
f(e,t)),1!==i.length||l||c(d)},f.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw
 new Error("process.binding is not 
supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new 
Error("process.chdir is not supported")},n.umask=function(){return 
0}},576:(e,t,s)=>{"use 
strict";s.r(t),s.d(t,{WebsocketProvider:()=>Ce,messageAuth:()=>_e,messageAwareness:()=>ve,messageQueryAwareness:()=>ye,messageSync:()=>me});var
 n=s(206);const r=()=>new Map,o=(e,t,s)=>
 {let n=e.get(t);return void 0===n&&e.set(t,n=s()),n},c=()=>new 
Set,a=String.fromCharCode,i=(String.fromCodePoint,a(65535),/^\s*/g),l=/([A-Z])/g,h=(e,t)=>(e=>e.replace(i,""))(e.replace(l,(e=>`${t}${(e=>e.toLowerCase())(e)}`))),u="undefined"!=typeof
 TextEncoder?new TextEncoder:null,d=u?e=>u.encode(e):e=>{const 
t=unescape(encodeURIComponent(e)),s=t.length,n=new Uint8Array(s);for(let 
e=0;e<s;e++)n[e]=t.codePointAt(e);return n};let f="undefined"==typeof 
TextDecoder?null:new 
TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});f&&1===f.decode(new 
Uint8Array).length&&(f=null);let p=new class{constructor(){this.map=new 
Map}setItem(e,t){this.map.set(e,t)}getItem(e){return 
this.map.get(e)}},g=!0;try{"undefined"!=typeof 
localStorage&&localStorage&&(p=localStorage,g=!1)}catch(e){}const 
b=p,w=Array.from,m=(Array.isArray,Object.assign,Object.keys),y=e=>m(e).length,v=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_=(Object.freeze,(e,t)=>{if(null==e||null==t)return((e,t)=>e===t)(e,t);if(e.constructor!==t
 .constructor)return!1;if(e===t)return!0;switch(e.constructor){case 
ArrayBuffer:e=new Uint8Array(e),t=new Uint8Array(t);case 
Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let 
s=0;s<e.length;s++)if(e[s]!==t[s])return!1;break;case 
Set:if(e.size!==t.size)return!1;for(const s of 
e)if(!t.has(s))return!1;break;case Map:if(e.size!==t.size)return!1;for(const s 
of e.keys())if(!t.has(s)||!_(e.get(s),t.get(s)))return!1;break;case 
Object:if(y(e)!==y(t))return!1;for(const s in 
e)if(!v(e,s)||!_(e[s],t[s]))return!1;break;case 
Array:if(e.length!==t.length)return!1;for(let 
s=0;s<e.length;s++)if(!_(e[s],t[s]))return!1;break;default:return!1}return!0});var
 I=s(907);const S=void 
0!==I&&I.release&&/node|io\.js/.test(I.release.name)&&"[object 
process]"===Object.prototype.toString.call(void 
0!==I?I:0),U="undefined"!=typeof window&&"undefined"!=typeof document&&!S;let 
A;"undefined"!=typeof navigator&&/Mac/.test(navigator.platform);const 
k=[],C=e=>(()=>{if(void 0===A)if(S){A=r();const e=I.argv;let t
 =null;for(let s=0;s<e.length;s++){const 
n=e[s];"-"===n[0]?(null!==t&&A.set(t,""),t=n):null!==t?(A.set(t,n),t=null):k.push(n)}null!==t&&A.set(t,"")}else"object"==typeof
 
location?(A=r(),(location.search||"?").slice(1).split("&").forEach((e=>{if(0!==e.length){const[t,s]=e.split("=");A.set(`--${h(t,"-")}`,s),A.set(`-${h(t,"-")}`,s)}}))):A=r();return
 A})().has(e),L=e=>{return void 
0===(t=S?I.env[e.toUpperCase().replaceAll("-","_")]:b.getItem(e))?null:t;var 
t},T=e=>C("--"+e)||null!==L(e);var 
M;T("production"),S&&(M=I.env.FORCE_COLOR,["true","1","2"].includes(M))||!C("--no-colors")&&!T("no-color")&&(!S||I.stdout.isTTY)&&(!S||C("--color")||null!==L("COLORTERM")||(L("TERM")||"").includes("color"));const
 E=U?e=>{let t="";for(let s=0;s<e.byteLength;s++)t+=a(e[s]);return 
btoa(t)}:e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"),O=U?e=>{const
 t=atob(e),s=(n=t.length,new Uint8Array(n));var n;for(let 
e=0;e<t.length;e++)s[e]=t.charCodeAt(e);return s}:e=>{const t=Buffer.from(e,"
 base64");return s=t.buffer,n=t.byteOffset,r=t.byteLength,new 
Uint8Array(s,n,r);var s,n,r},R=new Map,x="undefined"==typeof 
BroadcastChannel?class{constructor(e){var 
t;this.room=e,this.onmessage=null,this._onChange=t=>t.key===e&&null!==this.onmessage&&this.onmessage({data:O(t.newValue||"")}),t=this._onChange,g||addEventListener("storage",t)}postMessage(e){b.setItem(this.room,E(new
 Uint8Array(e)))}close(){var 
e;e=this._onChange,g||removeEventListener("storage",e)}}:BroadcastChannel,B=e=>o(R,e,(()=>{const
 t=c(),s=new x(e);return 
s.onmessage=e=>t.forEach((t=>t(e.data,"broadcastchannel"))),{bc:s,subs:t}})),D=(e,t,s=null)=>{const
 
n=B(e);n.bc.postMessage(t),n.subs.forEach((e=>e(t,s)))},N=Date.now,j=Math.floor,P=(Math.ceil,Math.abs,Math.imul,Math.round,Math.log10,Math.log2,Math.log,Math.sqrt,(e,t)=>e<t?e:t),H=(Number.isNaN,Math.pow),$=(Math.sign,128),z=127;class
 W{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const 
F=()=>new W,V=e=>{let t=e.cpos;for(let s=0;s<e.bufs.l
 ength;s++)t+=e.bufs[s].length;return t},G=e=>{const t=new Uint8Array(V(e));let 
s=0;for(let n=0;n<e.bufs.length;n++){const 
r=e.bufs[n];t.set(r,s),s+=r.length}return t.set(new 
Uint8Array(e.cbuf.buffer,0,e.cpos),s),t},J=(e,t)=>{const 
s=e.cbuf.length;e.cpos===s&&(e.bufs.push(e.cbuf),e.cbuf=new 
Uint8Array(2*s),e.cpos=0),e.cbuf[e.cpos++]=t},Y=(e,t)=>{for(;t>z;)J(e,$|z&t),t=j(t/128);J(e,z&t)},q=new
 Uint8Array(3e4),Q=q.length/3,X=u&&u.encodeInto?(e,t)=>{if(t.length<Q){const 
s=u.encodeInto(t,q).written||0;Y(e,s);for(let t=0;t<s;t++)J(e,q[t])}else 
Z(e,d(t))}:(e,t)=>{const 
s=unescape(encodeURIComponent(t)),n=s.length;Y(e,n);for(let 
t=0;t<n;t++)J(e,s.codePointAt(t))},Z=(e,t)=>{Y(e,t.byteLength),((e,t)=>{const 
s=e.cbuf.length,n=e.cpos,r=P(s-n,t.length),o=t.length-r;var 
c,a;e.cbuf.set(t.subarray(0,r),n),e.cpos+=r,o>0&&(e.bufs.push(e.cbuf),e.cbuf=new
 Uint8Array((c=2*s)>(a=o)?c:a),e.cbuf.set(t.subarray(r)),e.cpos=o)})(e,t)};new 
DataView(new ArrayBuffer(4));const K=Number.MAX_SAFE_INTEGER,ee=(Number
 .MIN_SAFE_INTEGER,Number.isInteger,Number.isNaN,Number.parseInt,e=>new 
Error(e)),te=ee("Unexpected end of array"),se=ee("Integer out of Range");class 
ne{constructor(e){this.arr=e,this.pos=0}}const re=e=>new 
ne(e),oe=e=>((e,t)=>{const s=new 
Uint8Array(e.arr.buffer,e.pos+e.arr.byteOffset,t);return 
e.pos+=t,s})(e,ae(e)),ce=e=>e.arr[e.pos++],ae=e=>{let t=0,s=1;const 
n=e.arr.length;for(;e.pos<n;){const 
n=e.arr[e.pos++];if(t+=(n&z)*s,s*=128,n<$)return t;if(t>K)throw se}throw 
te},ie=f?e=>f.decode(oe(e)):e=>{let t=ae(e);if(0===t)return"";{let 
s=String.fromCodePoint(ce(e));if(--t<100)for(;t--;)s+=String.fromCodePoint(ce(e));else
 for(;t>0;){const 
n=t<1e4?t:1e4,r=e.arr.subarray(e.pos,e.pos+n);e.pos+=n,s+=String.fromCodePoint.apply(null,r),t-=n}return
 decodeURIComponent(escape(s))}},le=(e,t)=>{Y(e,0);const 
s=n.encodeStateVector(t);Z(e,s)},he=(e,t,s)=>{Y(e,1),Z(e,n.encodeStateAsUpdate(t,s))},ue=(e,t,s)=>{try{n.applyUpdate(t,oe(e),s)}catch(e){console.error("Caught
 error while handling a Yjs updat
 e",e)}},de=ue;class 
fe{constructor(){this._observers=r()}on(e,t){o(this._observers,e,c).add(t)}once(e,t){const
 s=(...n)=>{this.off(e,s),t(...n)};this.on(e,s)}off(e,t){const 
s=this._observers.get(e);void 
0!==s&&(s.delete(t),0===s.size&&this._observers.delete(e))}emit(e,t){return 
w((this._observers.get(e)||r()).values()).forEach((e=>e(...t)))}destroy(){this._observers=r()}}class
 pe extends 
fe{constructor(e){super(),this.doc=e,this.clientID=e.clientID,this.states=new 
Map,this.meta=new Map,this._checkInterval=setInterval((()=>{const 
e=N();null!==this.getLocalState()&&15e3<=e-this.meta.get(this.clientID).lastUpdated&&this.setLocalState(this.getLocalState());const
 
t=[];this.meta.forEach(((s,n)=>{n!==this.clientID&&3e4<=e-s.lastUpdated&&this.states.has(n)&&t.push(n)})),t.length>0&&ge(this,t,"timeout")}),j(3e3)),e.on("destroy",(()=>{this.destroy()})),this.setLocalState({})}destroy(){this.emit("destroy",[this]),this.setLocalState(null),super.destroy(),clearInterval(this._checkInterval)}getLo
 calState(){return this.states.get(this.clientID)||null}setLocalState(e){const 
t=this.clientID,s=this.meta.get(t),n=void 
0===s?0:s.clock+1,r=this.states.get(t);null===e?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:n,lastUpdated:N()});const
 
o=[],c=[],a=[],i=[];null===e?i.push(t):null==r?null!=e&&o.push(t):(c.push(t),_(r,e)||a.push(t)),(o.length>0||a.length>0||i.length>0)&&this.emit("change",[{added:o,updated:a,removed:i},"local"]),this.emit("update",[{added:o,updated:c,removed:i},"local"])}setLocalStateField(e,t){const
 
s=this.getLocalState();null!==s&&this.setLocalState({...s,[e]:t})}getStates(){return
 this.states}}const ge=(e,t,s)=>{const n=[];for(let s=0;s<t.length;s++){const 
r=t[s];if(e.states.has(r)){if(e.states.delete(r),r===e.clientID){const 
t=e.meta.get(r);e.meta.set(r,{clock:t.clock+1,lastUpdated:N()})}n.push(r)}}n.length>0&&(e.emit("change",[{added:[],updated:[],removed:n},s]),e.emit("update",[{added:[],updated:[],removed:n},s]))},be=(e,t,s=e.states)=>{co
 nst n=t.length,r=F();Y(r,n);for(let o=0;o<n;o++){const 
n=t[o],c=s.get(n)||null,a=e.meta.get(n).clock;Y(r,n),Y(r,a),X(r,JSON.stringify(c))}return
 G(r)};var we=s(907);const 
me=0,ye=3,ve=1,_e=2,Ie=[];Ie[me]=(e,t,s,n,r)=>{Y(e,me);const 
o=((e,t,s,n)=>{const r=ae(e);switch(r){case 
0:((e,t,s)=>{he(t,s,oe(e))})(e,t,s);break;case 1:ue(e,s,n);break;case 
2:de(e,s,n);break;default:throw new Error("Unknown message type")}return 
r})(t,e,s.doc,s);n&&1===o&&!s.synced&&(s.synced=!0)},Ie[ye]=(e,t,s,n,r)=>{Y(e,ve),Z(e,be(s.awareness,Array.from(s.awareness.getStates().keys())))},Ie[ve]=(e,t,s,n,r)=>{((e,t,s)=>{const
 n=re(t),r=N(),o=[],c=[],a=[],i=[],l=ae(n);for(let t=0;t<l;t++){const 
t=ae(n);let s=ae(n);const 
l=JSON.parse(ie(n)),h=e.meta.get(t),u=e.states.get(t),d=void 
0===h?0:h.clock;(d<s||d===s&&null===l&&e.states.has(t))&&(null===l?t===e.clientID&&null!=e.getLocalState()?s++:e.states.delete(t):e.states.set(t,l),e.meta.set(t,{clock:s,lastUpdated:r}),void
 0===h&&null!==l?o.push(t):void 0!==h&&null===l
 
?i.push(t):null!==l&&(_(l,u)||a.push(t),c.push(t)))}(o.length>0||a.length>0||i.length>0)&&e.emit("change",[{added:o,updated:a,removed:i},s]),(o.length>0||c.length>0||i.length>0)&&e.emit("update",[{added:o,updated:c,removed:i},s])})(s.awareness,oe(t),s)},Ie[_e]=(e,t,s,n,r)=>{((e,t,s)=>{0===ae(e)&&s(0,ie(e))})(t,s.doc,((e,t)=>Se(s,t)))};const
 Se=(e,t)=>console.warn(`Permission denied to access 
${e.url}.\n${t}`),Ue=(e,t,s)=>{const 
n=re(t),r=F(),o=ae(n),c=e.messageHandlers[o];return 
c?c(r,n,e,s,o):console.error("Unable to compute 
message"),r},Ae=e=>{if(e.shouldConnect&&null===e.ws){const t=new 
e._WS(e.url);t.binaryType="arraybuffer",e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=s=>{e.wsLastMessageReceived=N();const
 n=Ue(e,new 
Uint8Array(s.data),!0);V(n)>1&&t.send(G(n))},t.onerror=t=>{e.emit("connection-error",[t,e])},t.onclose=t=>{e.emit("connection-close",[t,e]),e.ws=null,e.wsconnecting=!1,e.wsconnected?(e.wsconnected=!1,e.synced=!1,ge(e.awareness,Array.from(e.aware
 
ness.getStates().keys()).filter((t=>t!==e.doc.clientID)),e),e.emit("status",[{status:"disconnected"}])):e.wsUnsuccessfulReconnects++,setTimeout(Ae,P(100*H(2,e.wsUnsuccessfulReconnects),e.maxBackoffTime),e)},t.onopen=()=>{e.wsLastMessageReceived=N(),e.wsconnecting=!1,e.wsconnected=!0,e.wsUnsuccessfulReconnects=0,e.emit("status",[{status:"connected"}]);const
 
s=F();if(Y(s,me),le(s,e.doc),t.send(G(s)),null!==e.awareness.getLocalState()){const
 
s=F();Y(s,ve),Z(s,be(e.awareness,[e.doc.clientID])),t.send(G(s))}},e.emit("status",[{status:"connecting"}])}},ke=(e,t)=>{const
 
s=e.ws;e.wsconnected&&s&&s.readyState===s.OPEN&&s.send(t),e.bcconnected&&D(e.bcChannel,t,e)};class
 Ce extends fe{constructor(e,t,s,{connect:n=!0,awareness:r=new 
pe(s),params:o={},WebSocketPolyfill:c=WebSocket,resyncInterval:a=-1,maxBackoffTime:i=2500,disableBc:l=!1}={}){for(super();"/"===e[e.length-1];)e=e.slice(0,e.length-1);const
 h=(e=>((e,t)=>{const s=[];for(const n in e)s.push(t(e[n],n));return 
s})(e,((e,t)=>`${encodeUR
 
IComponent(t)}=${encodeURIComponent(e)}`)).join("&"))(o);this.maxBackoffTime=i,this.bcChannel=e+"/"+t,this.url=e+"/"+t+(0===h.length?"":"?"+h),this.roomname=t,this.doc=s,this._WS=c,this.awareness=r,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.disableBc=l,this.wsUnsuccessfulReconnects=0,this.messageHandlers=Ie.slice(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=n,this._resyncInterval=0,a>0&&(this._resyncInterval=setInterval((()=>{if(this.ws&&this.ws.readyState===WebSocket.OPEN){const
 
e=F();Y(e,me),le(e,s),this.ws.send(G(e))}}),a)),this._bcSubscriber=(e,t)=>{if(t!==this){const
 t=Ue(this,new 
Uint8Array(e),!1);V(t)>1&&D(this.bcChannel,G(t),this)}},this._updateHandler=(e,t)=>{if(t!==this){const
 
t=F();Y(t,me),((e,t)=>{Y(e,2),Z(e,t)})(t,e),ke(this,G(t))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:s},n)=>{const
 o=e.concat(t).concat(s),c=F();Y(c,ve),Z(c,be(r,o)),ke(this,G(c))},this.
 _exitHandler=()=>{ge(this.awareness,[s.clientID],"app closed")},S&&void 
0!==we&&we.on("exit",this._exitHandler),r.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval((()=>{this.wsconnected&&3e4<N()-this.wsLastMessageReceived&&this.ws.close()}),3e3),n&&this.connect()}get
 synced(){return this._synced}set 
synced(e){this._synced!==e&&(this._synced=e,this.emit("synced",[e]),this.emit("sync",[e]))}destroy(){0!==this._resyncInterval&&clearInterval(this._resyncInterval),clearInterval(this._checkInterval),this.disconnect(),S&&void
 
0!==we&&we.off("exit",this._exitHandler),this.awareness.off("update",this._awarenessUpdateHandler),this.doc.off("update",this._updateHandler),super.destroy()}connectBc(){if(this.disableBc)return;var
 
e,t;this.bcconnected||(e=this.bcChannel,t=this._bcSubscriber,B(e).subs.add(t),this.bcconnected=!0);const
 s=F();Y(s,me),le(s,this.doc),D(this.bcChannel,G(s),this);const 
n=F();Y(n,me),he(n,this.doc),D(this.bcChannel,G(n),this);const r=F();Y(r,ye),D(t
 his.bcChannel,G(r),this);const 
o=F();Y(o,ve),Z(o,be(this.awareness,[this.doc.clientID])),D(this.bcChannel,G(o),this)}disconnectBc(){const
 e=F();Y(e,ve),Z(e,be(this.awareness,[this.doc.clientID],new 
Map)),ke(this,G(e)),this.bcconnected&&(((e,t)=>{const 
s=B(e);s.subs.delete(t)&&0===s.subs.size&&(s.bc.close(),R.delete(e))})(this.bcChannel,this._bcSubscriber),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),null!==this.ws&&this.ws.close()}connect(){this.shouldConnect=!0,this.wsconnected||null!==this.ws||(Ae(this),this.connectBc())}}}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/576.c6f9c48a57817d3bad8c.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/576.c6f9c48a57817d3bad8c.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/576.c6f9c48a57817d3bad8c.js
   2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/576.c6f9c48a57817d3bad8c.js
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[576],{288:e=>{var
 t,s,n=e.exports={};function r(){throw new Error("setTimeout has not been 
defined")}function o(){throw new Error("clearTimeout has not been 
defined")}function c(e){if(t===setTimeout)return 
setTimeout(e,0);if((t===r||!t)&&setTimeout)return 
t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(s){try{return 
t.call(null,e,0)}catch(s){return 
t.call(this,e,0)}}}!function(){try{t="function"==typeof 
setTimeout?setTimeout:r}catch(e){t=r}try{s="function"==typeof 
clearTimeout?clearTimeout:o}catch(e){s=o}}();var a,i=[],l=!1,h=-1;function 
u(){l&&a&&(l=!1,a.length?i=a.concat(i):h=-1,i.length&&d())}function 
d(){if(!l){var e=c(u);l=!0;for(var 
t=i.length;t;){for(a=i,i=[];++h<t;)a&&a[h].run();h=-1,t=i.length}a=null,l=!1,function(e){if(s===clearTimeout)return
 clearTimeout(e);if((s===o||!s)&&clearTimeout)return 
s=clearTimeout,clearTimeout(e);try{return s(e)}catch(t){try{return s
 .call(null,e)}catch(t){return s.call(this,e)}}}(e)}}function 
f(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new 
Array(arguments.length-1);if(arguments.length>1)for(var 
s=1;s<arguments.length;s++)t[s-1]=arguments[s];i.push(new 
f(e,t)),1!==i.length||l||c(d)},f.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw
 new Error("process.binding is not 
supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new 
Error("process.chdir is not supported")},n.umask=function(){return 
0}},576:(e,t,s)=>{"use 
strict";s.r(t),s.d(t,{WebsocketProvider:()=>Ce,messageAuth:()=>_e,messageAwareness:()=>ve,messageQueryAwareness:()=>ye,messageSync:()=>me});var
 n=s(206);const r=()=>new Map,o=(e,t,s)=>
 {let n=e.get(t);return void 0===n&&e.set(t,n=s()),n},c=()=>new 
Set,a=String.fromCharCode,i=(String.fromCodePoint,a(65535),/^\s*/g),l=/([A-Z])/g,h=(e,t)=>(e=>e.replace(i,""))(e.replace(l,(e=>`${t}${(e=>e.toLowerCase())(e)}`))),u="undefined"!=typeof
 TextEncoder?new TextEncoder:null,d=u?e=>u.encode(e):e=>{const 
t=unescape(encodeURIComponent(e)),s=t.length,n=new Uint8Array(s);for(let 
e=0;e<s;e++)n[e]=t.codePointAt(e);return n};let f="undefined"==typeof 
TextDecoder?null:new 
TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});f&&1===f.decode(new 
Uint8Array).length&&(f=null);let p=new class{constructor(){this.map=new 
Map}setItem(e,t){this.map.set(e,t)}getItem(e){return 
this.map.get(e)}},g=!0;try{"undefined"!=typeof 
localStorage&&localStorage&&(p=localStorage,g=!1)}catch(e){}const 
b=p,w=Array.from,m=(Array.isArray,Object.assign,Object.keys),y=e=>m(e).length,v=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),_=(e,t)=>{if(null==e||null==t)return((e,t)=>e===t)(e,t);if(e.constructor!==t.constructor)re
 turn!1;if(e===t)return!0;switch(e.constructor){case ArrayBuffer:e=new 
Uint8Array(e),t=new Uint8Array(t);case 
Uint8Array:if(e.byteLength!==t.byteLength)return!1;for(let 
s=0;s<e.length;s++)if(e[s]!==t[s])return!1;break;case 
Set:if(e.size!==t.size)return!1;for(const s of 
e)if(!t.has(s))return!1;break;case Map:if(e.size!==t.size)return!1;for(const s 
of e.keys())if(!t.has(s)||!_(e.get(s),t.get(s)))return!1;break;case 
Object:if(y(e)!==y(t))return!1;for(const s in 
e)if(!v(e,s)||!_(e[s],t[s]))return!1;break;case 
Array:if(e.length!==t.length)return!1;for(let 
s=0;s<e.length;s++)if(!_(e[s],t[s]))return!1;break;default:return!1}return!0};var
 I=s(288);const S=void 
0!==I&&I.release&&/node|io\.js/.test(I.release.name)&&"[object 
process]"===Object.prototype.toString.call(void 
0!==I?I:0),U="undefined"!=typeof window&&"undefined"!=typeof document&&!S;let 
A;"undefined"!=typeof navigator&&/Mac/.test(navigator.platform);const 
k=[],C=e=>(()=>{if(void 0===A)if(S){A=r();const e=I.argv;let t=null;for(let s=
 0;s<e.length;s++){const 
n=e[s];"-"===n[0]?(null!==t&&A.set(t,""),t=n):null!==t?(A.set(t,n),t=null):k.push(n)}null!==t&&A.set(t,"")}else"object"==typeof
 
location?(A=r(),(location.search||"?").slice(1).split("&").forEach((e=>{if(0!==e.length){const[t,s]=e.split("=");A.set(`--${h(t,"-")}`,s),A.set(`-${h(t,"-")}`,s)}}))):A=r();return
 A})().has(e),L=e=>{return void 
0===(t=S?I.env[e.toUpperCase().replaceAll("-","_")]:b.getItem(e))?null:t;var 
t},T=e=>C("--"+e)||null!==L(e);var 
M;T("production"),S&&(M=I.env.FORCE_COLOR,["true","1","2"].includes(M))||!C("--no-colors")&&!T("no-color")&&(!S||I.stdout.isTTY)&&(!S||C("--color")||null!==L("COLORTERM")||(L("TERM")||"").includes("color"));const
 E=U?e=>{let t="";for(let s=0;s<e.byteLength;s++)t+=a(e[s]);return 
btoa(t)}:e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("base64"),R=U?e=>{const
 t=atob(e),s=(n=t.length,new Uint8Array(n));var n;for(let 
e=0;e<t.length;e++)s[e]=t.charCodeAt(e);return s}:e=>{const 
t=Buffer.from(e,"base64");return 
 s=t.buffer,n=t.byteOffset,r=t.byteLength,new Uint8Array(s,n,r);var 
s,n,r},O=new Map,x="undefined"==typeof 
BroadcastChannel?class{constructor(e){var 
t;this.room=e,this.onmessage=null,this._onChange=t=>t.key===e&&null!==this.onmessage&&this.onmessage({data:R(t.newValue||"")}),t=this._onChange,g||addEventListener("storage",t)}postMessage(e){b.setItem(this.room,E(new
 Uint8Array(e)))}close(){var 
e;e=this._onChange,g||removeEventListener("storage",e)}}:BroadcastChannel,B=e=>o(O,e,(()=>{const
 t=c(),s=new x(e);return 
s.onmessage=e=>t.forEach((t=>t(e.data,"broadcastchannel"))),{bc:s,subs:t}})),D=(e,t,s=null)=>{const
 
n=B(e);n.bc.postMessage(t),n.subs.forEach((e=>e(t,s)))},N=Date.now,j=Math.floor,P=(Math.ceil,Math.abs,Math.imul,Math.round,Math.log10,Math.log2,Math.log,Math.sqrt,(e,t)=>e<t?e:t),H=(Number.isNaN,Math.pow),$=(Math.sign,128),z=127;class
 W{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const 
F=()=>new W,V=e=>{let t=e.cpos;for(let s=0;s<e.bufs.length;s++)t+=e.b
 ufs[s].length;return t},G=e=>{const t=new Uint8Array(V(e));let s=0;for(let 
n=0;n<e.bufs.length;n++){const r=e.bufs[n];t.set(r,s),s+=r.length}return 
t.set(new Uint8Array(e.cbuf.buffer,0,e.cpos),s),t},J=(e,t)=>{const 
s=e.cbuf.length;e.cpos===s&&(e.bufs.push(e.cbuf),e.cbuf=new 
Uint8Array(2*s),e.cpos=0),e.cbuf[e.cpos++]=t},Y=(e,t)=>{for(;t>z;)J(e,$|z&t),t=j(t/128);J(e,z&t)},q=new
 Uint8Array(3e4),Q=q.length/3,X=u&&u.encodeInto?(e,t)=>{if(t.length<Q){const 
s=u.encodeInto(t,q).written||0;Y(e,s);for(let t=0;t<s;t++)J(e,q[t])}else 
Z(e,d(t))}:(e,t)=>{const 
s=unescape(encodeURIComponent(t)),n=s.length;Y(e,n);for(let 
t=0;t<n;t++)J(e,s.codePointAt(t))},Z=(e,t)=>{Y(e,t.byteLength),((e,t)=>{const 
s=e.cbuf.length,n=e.cpos,r=P(s-n,t.length),o=t.length-r;var 
c,a;e.cbuf.set(t.subarray(0,r),n),e.cpos+=r,o>0&&(e.bufs.push(e.cbuf),e.cbuf=new
 Uint8Array((c=2*s)>(a=o)?c:a),e.cbuf.set(t.subarray(r)),e.cpos=o)})(e,t)};new 
DataView(new ArrayBuffer(4));const 
K=Number.MAX_SAFE_INTEGER,ee=(Number.MIN_SAFE_INTEGE
 R,Number.isInteger,Number.isNaN,Number.parseInt,e=>new 
Error(e)),te=ee("Unexpected end of array"),se=ee("Integer out of Range");class 
ne{constructor(e){this.arr=e,this.pos=0}}const re=e=>new 
ne(e),oe=e=>((e,t)=>{const s=new 
Uint8Array(e.arr.buffer,e.pos+e.arr.byteOffset,t);return 
e.pos+=t,s})(e,ae(e)),ce=e=>e.arr[e.pos++],ae=e=>{let t=0,s=1;const 
n=e.arr.length;for(;e.pos<n;){const 
n=e.arr[e.pos++];if(t+=(n&z)*s,s*=128,n<$)return t;if(t>K)throw se}throw 
te},ie=f?e=>f.decode(oe(e)):e=>{let t=ae(e);if(0===t)return"";{let 
s=String.fromCodePoint(ce(e));if(--t<100)for(;t--;)s+=String.fromCodePoint(ce(e));else
 for(;t>0;){const 
n=t<1e4?t:1e4,r=e.arr.subarray(e.pos,e.pos+n);e.pos+=n,s+=String.fromCodePoint.apply(null,r),t-=n}return
 decodeURIComponent(escape(s))}},le=(e,t)=>{Y(e,0);const 
s=n.encodeStateVector(t);Z(e,s)},he=(e,t,s)=>{Y(e,1),Z(e,n.encodeStateAsUpdate(t,s))},ue=(e,t,s)=>{try{n.applyUpdate(t,oe(e),s)}catch(e){console.error("Caught
 error while handling a Yjs update",e)}},de=ue;cl
 ass 
fe{constructor(){this._observers=r()}on(e,t){o(this._observers,e,c).add(t)}once(e,t){const
 s=(...n)=>{this.off(e,s),t(...n)};this.on(e,s)}off(e,t){const 
s=this._observers.get(e);void 
0!==s&&(s.delete(t),0===s.size&&this._observers.delete(e))}emit(e,t){return 
w((this._observers.get(e)||r()).values()).forEach((e=>e(...t)))}destroy(){this._observers=r()}}class
 pe extends 
fe{constructor(e){super(),this.doc=e,this.clientID=e.clientID,this.states=new 
Map,this.meta=new Map,this._checkInterval=setInterval((()=>{const 
e=N();null!==this.getLocalState()&&15e3<=e-this.meta.get(this.clientID).lastUpdated&&this.setLocalState(this.getLocalState());const
 
t=[];this.meta.forEach(((s,n)=>{n!==this.clientID&&3e4<=e-s.lastUpdated&&this.states.has(n)&&t.push(n)})),t.length>0&&ge(this,t,"timeout")}),j(3e3)),e.on("destroy",(()=>{this.destroy()})),this.setLocalState({})}destroy(){this.emit("destroy",[this]),this.setLocalState(null),super.destroy(),clearInterval(this._checkInterval)}getLocalState(){retur
 n this.states.get(this.clientID)||null}setLocalState(e){const 
t=this.clientID,s=this.meta.get(t),n=void 
0===s?0:s.clock+1,r=this.states.get(t);null===e?this.states.delete(t):this.states.set(t,e),this.meta.set(t,{clock:n,lastUpdated:N()});const
 
o=[],c=[],a=[],i=[];null===e?i.push(t):null==r?null!=e&&o.push(t):(c.push(t),_(r,e)||a.push(t)),(o.length>0||a.length>0||i.length>0)&&this.emit("change",[{added:o,updated:a,removed:i},"local"]),this.emit("update",[{added:o,updated:c,removed:i},"local"])}setLocalStateField(e,t){const
 
s=this.getLocalState();null!==s&&this.setLocalState({...s,[e]:t})}getStates(){return
 this.states}}const ge=(e,t,s)=>{const n=[];for(let s=0;s<t.length;s++){const 
r=t[s];if(e.states.has(r)){if(e.states.delete(r),r===e.clientID){const 
t=e.meta.get(r);e.meta.set(r,{clock:t.clock+1,lastUpdated:N()})}n.push(r)}}n.length>0&&(e.emit("change",[{added:[],updated:[],removed:n},s]),e.emit("update",[{added:[],updated:[],removed:n},s]))},be=(e,t,s=e.states)=>{const
 n=t.length,r
 =F();Y(r,n);for(let o=0;o<n;o++){const 
n=t[o],c=s.get(n)||null,a=e.meta.get(n).clock;Y(r,n),Y(r,a),X(r,JSON.stringify(c))}return
 G(r)};var we=s(288);const 
me=0,ye=3,ve=1,_e=2,Ie=[];Ie[me]=(e,t,s,n,r)=>{Y(e,me);const 
o=((e,t,s,n)=>{const r=ae(e);switch(r){case 
0:((e,t,s)=>{he(t,s,oe(e))})(e,t,s);break;case 1:ue(e,s,n);break;case 
2:de(e,s,n);break;default:throw new Error("Unknown message type")}return 
r})(t,e,s.doc,s);n&&1===o&&!s.synced&&(s.synced=!0)},Ie[ye]=(e,t,s,n,r)=>{Y(e,ve),Z(e,be(s.awareness,Array.from(s.awareness.getStates().keys())))},Ie[ve]=(e,t,s,n,r)=>{((e,t,s)=>{const
 n=re(t),r=N(),o=[],c=[],a=[],i=[],l=ae(n);for(let t=0;t<l;t++){const 
t=ae(n);let s=ae(n);const 
l=JSON.parse(ie(n)),h=e.meta.get(t),u=e.states.get(t),d=void 
0===h?0:h.clock;(d<s||d===s&&null===l&&e.states.has(t))&&(null===l?t===e.clientID&&null!=e.getLocalState()?s++:e.states.delete(t):e.states.set(t,l),e.meta.set(t,{clock:s,lastUpdated:r}),void
 0===h&&null!==l?o.push(t):void 0!==h&&null===l?i.push(t):null!
 
==l&&(_(l,u)||a.push(t),c.push(t)))}(o.length>0||a.length>0||i.length>0)&&e.emit("change",[{added:o,updated:a,removed:i},s]),(o.length>0||c.length>0||i.length>0)&&e.emit("update",[{added:o,updated:c,removed:i},s])})(s.awareness,oe(t),s)},Ie[_e]=(e,t,s,n,r)=>{((e,t,s)=>{0===ae(e)&&s(0,ie(e))})(t,s.doc,((e,t)=>Se(s,t)))};const
 Se=(e,t)=>console.warn(`Permission denied to access 
${e.url}.\n${t}`),Ue=(e,t,s)=>{const 
n=re(t),r=F(),o=ae(n),c=e.messageHandlers[o];return 
c?c(r,n,e,s,o):console.error("Unable to compute 
message"),r},Ae=e=>{if(e.shouldConnect&&null===e.ws){const t=new 
e._WS(e.url);t.binaryType="arraybuffer",e.ws=t,e.wsconnecting=!0,e.wsconnected=!1,e.synced=!1,t.onmessage=s=>{e.wsLastMessageReceived=N();const
 n=Ue(e,new 
Uint8Array(s.data),!0);V(n)>1&&t.send(G(n))},t.onerror=t=>{e.emit("connection-error",[t,e])},t.onclose=t=>{e.emit("connection-close",[t,e]),e.ws=null,e.wsconnecting=!1,e.wsconnected?(e.wsconnected=!1,e.synced=!1,ge(e.awareness,Array.from(e.awareness.getStates()
 
.keys()).filter((t=>t!==e.doc.clientID)),e),e.emit("status",[{status:"disconnected"}])):e.wsUnsuccessfulReconnects++,setTimeout(Ae,P(100*H(2,e.wsUnsuccessfulReconnects),e.maxBackoffTime),e)},t.onopen=()=>{e.wsLastMessageReceived=N(),e.wsconnecting=!1,e.wsconnected=!0,e.wsUnsuccessfulReconnects=0,e.emit("status",[{status:"connected"}]);const
 
s=F();if(Y(s,me),le(s,e.doc),t.send(G(s)),null!==e.awareness.getLocalState()){const
 
s=F();Y(s,ve),Z(s,be(e.awareness,[e.doc.clientID])),t.send(G(s))}},e.emit("status",[{status:"connecting"}])}},ke=(e,t)=>{const
 
s=e.ws;e.wsconnected&&s&&s.readyState===s.OPEN&&s.send(t),e.bcconnected&&D(e.bcChannel,t,e)};class
 Ce extends fe{constructor(e,t,s,{connect:n=!0,awareness:r=new 
pe(s),params:o={},WebSocketPolyfill:c=WebSocket,resyncInterval:a=-1,maxBackoffTime:i=2500,disableBc:l=!1}={}){for(super();"/"===e[e.length-1];)e=e.slice(0,e.length-1);const
 h=(e=>((e,t)=>{const s=[];for(const n in e)s.push(t(e[n],n));return 
s})(e,((e,t)=>`${encodeURIComponent(t)}=$
 
{encodeURIComponent(e)}`)).join("&"))(o);this.maxBackoffTime=i,this.bcChannel=e+"/"+t,this.url=e+"/"+t+(0===h.length?"":"?"+h),this.roomname=t,this.doc=s,this._WS=c,this.awareness=r,this.wsconnected=!1,this.wsconnecting=!1,this.bcconnected=!1,this.disableBc=l,this.wsUnsuccessfulReconnects=0,this.messageHandlers=Ie.slice(),this._synced=!1,this.ws=null,this.wsLastMessageReceived=0,this.shouldConnect=n,this._resyncInterval=0,a>0&&(this._resyncInterval=setInterval((()=>{if(this.ws&&this.ws.readyState===WebSocket.OPEN){const
 
e=F();Y(e,me),le(e,s),this.ws.send(G(e))}}),a)),this._bcSubscriber=(e,t)=>{if(t!==this){const
 t=Ue(this,new 
Uint8Array(e),!1);V(t)>1&&D(this.bcChannel,G(t),this)}},this._updateHandler=(e,t)=>{if(t!==this){const
 
t=F();Y(t,me),((e,t)=>{Y(e,2),Z(e,t)})(t,e),ke(this,G(t))}},this.doc.on("update",this._updateHandler),this._awarenessUpdateHandler=({added:e,updated:t,removed:s},n)=>{const
 
o=e.concat(t).concat(s),c=F();Y(c,ve),Z(c,be(r,o)),ke(this,G(c))},this._exitHandler=()=
 >{ge(this.awareness,[s.clientID],"app closed")},S&&void 
 >0!==we&&we.on("exit",this._exitHandler),r.on("update",this._awarenessUpdateHandler),this._checkInterval=setInterval((()=>{this.wsconnected&&3e4<N()-this.wsLastMessageReceived&&this.ws.close()}),3e3),n&&this.connect()}get
 > synced(){return this._synced}set 
 >synced(e){this._synced!==e&&(this._synced=e,this.emit("synced",[e]),this.emit("sync",[e]))}destroy(){0!==this._resyncInterval&&clearInterval(this._resyncInterval),clearInterval(this._checkInterval),this.disconnect(),S&&void
 > 
 >0!==we&&we.off("exit",this._exitHandler),this.awareness.off("update",this._awarenessUpdateHandler),this.doc.off("update",this._updateHandler),super.destroy()}connectBc(){if(this.disableBc)return;var
 > 
 >e,t;this.bcconnected||(e=this.bcChannel,t=this._bcSubscriber,B(e).subs.add(t),this.bcconnected=!0);const
 > s=F();Y(s,me),le(s,this.doc),D(this.bcChannel,G(s),this);const 
 >n=F();Y(n,me),he(n,this.doc),D(this.bcChannel,G(n),this);const 
 >r=F();Y(r,ye),D(this.bcChannel,G(
 r),this);const 
o=F();Y(o,ve),Z(o,be(this.awareness,[this.doc.clientID])),D(this.bcChannel,G(o),this)}disconnectBc(){const
 e=F();Y(e,ve),Z(e,be(this.awareness,[this.doc.clientID],new 
Map)),ke(this,G(e)),this.bcconnected&&(((e,t)=>{const 
s=B(e);s.subs.delete(t)&&0===s.subs.size&&(s.bc.close(),O.delete(e))})(this.bcChannel,this._bcSubscriber),this.bcconnected=!1)}disconnect(){this.shouldConnect=!1,this.disconnectBc(),null!==this.ws&&this.ws.close()}connect(){this.shouldConnect=!0,this.wsconnected||null!==this.ws||(Ae(this),this.connectBc())}}}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/618.28407d2343b911e61b63.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/618.28407d2343b911e61b63.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/618.28407d2343b911e61b63.js
   2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/618.28407d2343b911e61b63.js
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[618],{68:(e,t,n)=>{n.d(t,{A:()=>a});var
 o=n(758),r=n.n(o),s=n(935),i=n.n(s)()(r());i.push([e.id,"/* 
-----------------------------------------------------------------------------\n|
 Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the 
Modified BSD 
License.\n|----------------------------------------------------------------------------
 */\n\n.jp-timelineSliderWrapper .jp-sliderContainer{\n  display: flex;\n  
align-items: center;\n}\n\n.jp-Slider {\n  height: 
4.5px\n}\n\n#jp-slider-status-bar {\n  display: 
flex;\n}\n\n.jp-timestampDisplay {\n  display: flex;\n  flex-direction: row;\n  
align-items: center;\n  gap: 6px;\n}\n\n.jp-restoreBtnContainer {\n  width: 
192px;\n}\n\n.jp-ToolbarButtonComponent.jp-restoreBtn {\n  cursor: pointer;\n  
color: var(--jp-layout-color2);\n  width: 100%;\n  background: 
var(--jp-accept-color-normal)\n}\n",""]);con
 st a=i},935:e=>{e.exports=function(e){var t=[];return 
t.toString=function(){return this.map((function(t){var n="",o=void 
0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media 
".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," 
{")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,r,s){"string"==typeof
 e&&(e=[[null,e,void 0]]);var i={};if(o)for(var a=0;a<this.length;a++){var 
c=this[a][0];null!=c&&(i[c]=!0)}for(var l=0;l<e.length;l++){var 
d=[].concat(e[l]);o&&i[d[0]]||(void 0!==s&&(void 
0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," 
{").concat(d[1],"}")),d[5]=s),n&&(d[2]?(d[1]="@media ".concat(d[2]," 
{").concat(d[1],"}"),d[2]=n):d[2]=n),r&&(d[4]?(d[1]="@supports 
(".concat(d[4],") 
{").concat(d[1],"}"),d[4]=r):d[4]="".concat(r)),t.push(d))}},t}},758:e=>{e.exports=function(e){return
 e[1]}},591:e=>{var t=[];function n(e){for(var 
n=-1,o=0;o<t.length;o++)if(t[o].identifier===e){n=o;br
 eak}return n}function o(e,o){for(var s={},i=[],a=0;a<e.length;a++){var 
c=e[a],l=o.base?c[0]+o.base:c[0],d=s[l]||0,h="".concat(l," 
").concat(d);s[l]=d+1;var 
u=n(h),p={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==u)t[u].references++,t[u].updater(p);else{var
 
m=r(p,o);o.byIndex=a,t.splice(a,0,{identifier:h,updater:m,references:1})}i.push(h)}return
 i}function r(e,t){var n=t.domAPI(t);return 
n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else
 n.remove()}}e.exports=function(e,r){var s=o(e=e||[],r=r||{});return 
function(e){e=e||[];for(var i=0;i<s.length;i++){var 
a=n(s[i]);t[a].references--}for(var c=o(e,r),l=0;l<s.length;l++){var 
d=n(s[l]);0===t[d].references&&(t[d].updater(),t.splice(d,1))}s=c}}},128:e=>{var
 t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var 
n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof 
window.HTMLI
 FrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return 
t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably 
means that the value for the 'insert' parameter is 
invalid.");o.appendChild(n)}},51:e=>{e.exports=function(e){var 
t=document.createElement("style");return 
e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},855:(e,t,n)=>{e.exports=function(e){var
 
t=n.nc;t&&e.setAttribute("nonce",t)}},740:e=>{e.exports=function(e){if("undefined"==typeof
 document)return{update:function(){},remove:function(){}};var 
t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var 
o="";n.supports&&(o+="@supports (".concat(n.supports,") 
{")),n.media&&(o+="@media ".concat(n.media," {"));var r=void 
0!==n.layer;r&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," 
{")),o+=n.css,r&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var 
s=n.sourceMap;s&&"undefined"!=typeof btoa&&(o+="\n/*# 
sourceMappingURL=data:application/json;base64,".concat
 (btoa(unescape(encodeURIComponent(JSON.stringify(s))))," 
*/")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},656:e=>{e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},618:(e,t,n)=>{n.r(t),n.d(t,{NotebookCellServerExecutor:()=>l,TimelineWidget:()=>A,WebSocketAwarenessProvider:()=>r,WebSocketProvider:()=>g,YDrive:()=>w,requestDocSession:()=>p,requestDocumentTimeline:()=>m,requestUndoRedo:()=>f});var
 o=n(560);class r extends 
o.WebsocketProvider{constructor(e){super(e.url,e.roomID,e.awareness.doc,{awareness:e.awareness}),this._isDisposed=!1,this._awareness=e.awareness,this._user=e.user,this._user.ready.then((()=>this._onUserChanged(this._user))).catch((e=>console.error(e))),this._user.userChanged.connect(this._onUserChanged,this)}get
 isDisposed(){return this._isDisposed}dispose(){thi
 
s._isDisposed||(this._user.userChanged.disconnect(this._onUserChanged,this),this._isDisposed=!0,this.destroy())}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}var
 s=n(200),i=n(473),a=n(354),c=n(678);class l{constructor(e){var 
t;this._serverSettings=null!==(t=e.serverSettings)&&void 
0!==t?t:a.ServerConnection.makeSettings()}async 
runCell({cell:e,notebook:t,notebookConfig:n,onCellExecuted:o,onCellExecutionScheduled:r,sessionContext:l,sessionDialogs:d,translator:h}){var
 u,p,m;const 
f=(h=null!=h?h:c.nullTranslator).load("jupyterlab");switch(e.model.type){case"markdown":e.rendered=!0,e.inputHidden=!1,o({cell:e,success:!0});break;case"code":if(l){if(l.isTerminating){await(0,s.showDialog)({title:f.__("Kernel
 Terminating"),body:f.__("The kernel for %1 appears to be terminating. You can 
not run any cell for now.",null===(u=l.session)||void 0===u?void 
0:u.path),buttons:[s.Dialog.okButton()]});break}if(l.pendingInput)return 
await(0,s.showDialog)({title:f.__("Cell not 
 executed due to pending input"),body:f.__("The cell has not been executed to 
avoid kernel deadlock as there is another pending input! Submit your pending 
input and try 
again."),buttons:[s.Dialog.okButton()]}),!1;if(l.hasNoKernel&&await 
l.startKernel()&&d&&await d.selectKernel(l),l.hasNoKernel)return 
e.model.sharedModel.transact((()=>{e.model.clearExecution()})),!0;const 
n=null===(m=null===(p=null==l?void 0:l.session)||void 0===p?void 
0:p.kernel)||void 0===m?void 
0:m.id,c=i.URLExt.join(this._serverSettings.baseUrl,`api/kernels/${n}/execute`),h=e.model.sharedModel.getId(),v=t.sharedModel.getState("document_id"),y={method:"POST",body:JSON.stringify({cell_id:h,document_id:v})};r({cell:e});let
 g=!1;try{g=(await 
a.ServerConnection.makeRequest(c,y,this._serverSettings)).ok}catch(t){if(o({cell:e,success:!1}),e.isDisposed)return!1;throw
 t}return 
o({cell:e,success:g}),!0}e.model.sharedModel.transact((()=>{e.model.clearExecution()}),!1)}return
 Promise.resolve(!0)}}const d="api/collaboration/se
 ssion",h="api/collaboration/undo_redo",u="api/collaboration/timeline";async 
function p(e,t,n){const 
o=a.ServerConnection.makeSettings(),r=i.URLExt.join(o.baseUrl,d,encodeURIComponent(n)),s={method:"PUT",body:JSON.stringify({format:e,type:t})};let
 c;try{c=await a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}let l=await 
c.text();if(l.length>0)try{l=JSON.parse(l)}catch(e){console.log("Not a JSON 
response body.",c)}if(!c.ok)throw new 
a.ServerConnection.ResponseError(c,l.message||l);return l}async function 
m(e,t,n){const o=a.ServerConnection.makeSettings();let 
r=i.URLExt.join(o.baseUrl,u,n);r=r.concat(`?format=${e}&&type=${t}`);const 
s={method:"GET"};let c;try{c=await 
a.ServerConnection.makeRequest(r,s,o)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}return c}async function f(e,t,n,o){const 
r=a.ServerConnection.makeSettings();let 
s=i.URLExt.join(r.baseUrl,h,encodeURIComponent(e));s=s.concat(`?action=${t}&&steps=${n}&&forkRoom=${o}`);co
 nst c={method:"PUT"};let l;try{l=await 
a.ServerConnection.makeRequest(s,c,r)}catch(e){throw new 
a.ServerConnection.NetworkError(e)}let d=await 
l.text();if(d.length>0)try{d=JSON.parse(d)}catch(e){console.log("Not a JSON 
response body.",l)}if(!l.ok)throw new 
a.ServerConnection.ResponseError(l,d.message||d);return d}var 
v=n(602),y=n(262);class 
g{constructor(e){this._onConnectionClosed=e=>{1003===e.code&&(console.error("Document
 provider closed:",e.reason),(0,s.showErrorMessage)(this._trans.__("Document 
session 
error"),e.reason,[s.Dialog.okButton()]),this._sharedModel.dispose())},this._onSync=e=>{e&&(this._yWebsocketProvider&&(this._yWebsocketProvider.off("sync",this._onSync),this._sharedModel.ydoc.getMap("state").set("document_id",this._yWebsocketProvider.roomname)),this._ready.resolve())},this._ready=new
 
y.PromiseDelegate,this._isDisposed=!1,this._path=e.path,this._contentType=e.contentType,this._format=e.format,this._serverUrl=e.url,this._sharedModel=e.model,this._awareness=e.model.a
 wareness,this._yWebsocketProvider=null,this._trans=e.translator;const 
t=e.user;t.ready.then((()=>{this._onUserChanged(t)})).catch((e=>console.error(e))),t.userChanged.connect(this._onUserChanged,this),this._connect().catch((e=>console.warn(e)))}get
 isDisposed(){return this._isDisposed}get ready(){return 
this._ready.promise}get contentType(){return this._contentType}get 
format(){return this._format}dispose(){var 
e,t,n;this.isDisposed||(this._isDisposed=!0,null===(e=this._yWebsocketProvider)||void
 
0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void
 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 
0===n||n.destroy(),this._disconnect(),v.Signal.clearData(this))}async 
reconnect(){this._disconnect(),this._connect()}async _connect(){const e=await 
p(this._format,this._contentType,this._path);this._yWebsocketProvider=new 
o.WebsocketProvider(this._serverUrl,`${e.format}:${e.type}:${e.fileId}`,this._sharedModel.ydoc,{di
 
sableBc:!0,params:{sessionId:e.sessionId},awareness:this._awareness}),this._yWebsocketProvider.on("sync",this._onSync),this._yWebsocketProvider.on("connection-close",this._onConnectionClosed)}async
 connectToForkDoc(e,t){this._disconnect(),this._yWebsocketProvider=new 
o.WebsocketProvider(this._serverUrl,e,this._sharedModel.ydoc,{disableBc:!0,params:{sessionId:t},awareness:this._awareness})}get
 wsProvider(){return this._yWebsocketProvider}_disconnect(){var 
e,t,n;null===(e=this._yWebsocketProvider)||void 
0===e||e.off("connection-close",this._onConnectionClosed),null===(t=this._yWebsocketProvider)||void
 0===t||t.off("sync",this._onSync),null===(n=this._yWebsocketProvider)||void 
0===n||n.destroy(),this._yWebsocketProvider=null}_onUserChanged(e){this._awareness.setLocalStateField("user",e.identity)}}const
 _="true"===i.PageConfig.getOption("disableRTC");class w extends 
a.Drive{constructor(e,t,n){super({name:"RTC"}),this._onCreate=(e,t)=>{var 
n,o;if("string"==typeof e.format)try{const r=new
  
g({url:i.URLExt.join(this.serverSettings.wsUrl,"api/collaboration/room"),path:e.path,format:e.format,contentType:e.contentType,model:t,user:this._user,translator:this._trans}),s=((null===(n=this._globalAwareness)||void
 0===n?void 
0:n.getLocalState())||{}).documents||[];s.includes(e.path)||(s.push(`${this.name}:${e.path}`),null===(o=this._globalAwareness)||void
 0===o||o.setLocalStateField("documents",s));const 
a=`${e.format}:${e.contentType}:${e.path}`;this._providers.set(a,r),t.changed.connect((async(t,n)=>{if(!n.stateChange)return;const
 
o=n.stateChange.filter((e=>"hash"===e.name));if(0===o.length)return;o.length>1&&console.error("Unexpected
 multiple changes to hash value in a single transaction");const r=o[0],s=await 
this.get(e.path,{content:!1});this._ydriveFileChanged.emit({type:"save",newValue:{...s,hash:r.newValue},oldValue:{hash:r.oldValue}})})),t.disposed.connect((()=>{var
 t,n;const 
o=this._providers.get(a);o&&(o.dispose(),this._providers.delete(a));const 
r=((null===(t=this.
 _globalAwareness)||void 0===t?void 
0:t.getLocalState())||{}).documents||[],s=r.indexOf(`${this.name}:${e.path}`);s>-1&&r.splice(s,1),null===(n=this._globalAwareness)||void
 0===n||n.setLocalStateField("documents",r)}))}catch(t){console.error(`Failed 
to open websocket connection for 
${e.path}.\n:${t}`)}},this._ydriveFileChanged=new 
v.Signal(this),this._user=e,this._trans=t,this._globalAwareness=n,this._providers=new
 Map,this.sharedModelFactory=new 
b(this._onCreate),super.fileChanged.connect(((e,t)=>{this._ydriveFileChanged.emit(t)}))}get
 providers(){return 
this._providers}dispose(){this.isDisposed||(this._providers.forEach((e=>e.dispose())),this._providers.clear(),super.dispose())}async
 get(e,t){if(t&&t.format&&t.type){const 
n=`${t.format}:${t.type}:${e}`,o=this._providers.get(n);if(o){const[n]=await 
Promise.all([super.get(e,{...t,content:!1}),o.ready]);return{...n,format:t.format}}}return
 super.get(e,t)}async save(e,t={}){if(t.format&&t.type){const 
n=`${t.format}:${t.type}:${e}`;if(t
 his._providers.get(n)){const n={type:t.type,format:t.format,content:!1};return 
this.get(e,n)}}return super.save(e,t)}get fileChanged(){return 
this._ydriveFileChanged}}class 
b{constructor(e){this._onCreate=e,this.collaborative=!_,this.documentFactories=new
 Map}registerDocumentFactory(e,t){if(this.documentFactories.has(e))throw new 
Error(`The content type ${e} already 
exists`);this.documentFactories.set(e,t)}createNew(e){if("string"==typeof 
e.format){if(this.collaborative&&e.collaborative&&this.documentFactories.has(e.contentType)){const
 t=this.documentFactories.get(e.contentType)(e);return 
this._onCreate(e,t),t}}else console.warn(`Only defined format are supported; 
got ${e.format}.`)}}var 
C=n(345),S=n.n(C),k=n(591),x=n.n(k),T=n(740),D=n.n(T),E=n(128),$=n.n(E),R=n(855),U=n.n(R),P=n(51),N=n.n(P),j=n(656),W=n.n(j),I=n(68),M={};M.styleTagTransform=W(),M.setAttributes=U(),M.insert=$().bind(null,"head"),M.domAPI=D(),M.insertStyleElement=N(),x()(I.A,M),I.A&&I.A.locals&&I.A.locals;var
 L=n(46
 0);const 
F=({apiURL:e,provider:t,contentType:n,format:o})=>{const[r,i]=(0,C.useState)({roomId:"",timestamps:[],forkRoom:"",sessionId:""}),[a,c]=(0,C.useState)(r.timestamps.length-1),[l,d]=(0,C.useState)(!1),[h,u]=(0,C.useState)(!1),v=(0,C.useRef)(!0),y=(0,C.useRef)(!0),g=(0,C.useRef)(null);function
 _(e){try{const t=new URL(e).pathname.split("/");return 
t.slice(4-t.length).join("/")}catch(e){return console.error("Invalid 
URL:",e),""}}return 
S().createElement("div",{className:"jp-sliderContainer"},S().createElement("div",{onClick:()=>{!async
 function(r){try{if(v.current){const a=await m(o,n,r);if(!a.ok)throw 
404===a.status?new Error("Not found"):503===a.status?new Error("WebSocket 
closed"):new Error(`Failed to fetch data: ${a.statusText}`);const l=await 
a.text();let h={roomId:"",timestamps:[],forkRoom:"",sessionId:""};return 
l&&(s.Notification.warning("Document is now in read-only mode. Changes will not 
be 
saved.",{autoClose:2500}),h=JSON.parse(l),i(h),c(h.timestamps.length-1),t.conne
 ctToForkDoc(h.forkRoom,h.sessionId),g.current=await 
p(o,n,_(e))),d(!0),v.current=!1,h}}catch(e){console.error("Error fetching 
data:",e)}}(_(e))},className:"jp-mod-highlighted",title:"Document 
Timeline"},S().createElement(L.historyIcon.react,{marginRight:"4px"})),l&&S().createElement("div",{className:"jp-timestampDisplay"},S().createElement("input",{type:"range",min:0,max:r.timestamps.length-1,value:a,onChange:async
 e=>{const t=parseInt(e.target.value),n=Math.abs(t-a);try{const 
e=function(e){return 
e<a?"undo":"redo"}(t);if(c(t),y.current&&(u(!0),y.current=!1),!g.current)return 
void console.error("Session is not initialized");await 
f(`${g.current.format}:${g.current.type}:${g.current.fileId}`,e,n,r.forkRoom)}catch(e){console.error("Error
 fetching or applying 
updates:",e)}},className:"jp-Slider"}),S().createElement("div",null,S().createElement("strong",null,_(e).split("/").pop(),"
 ")," 
"),h&&S().createElement("div",{className:"jp-restoreBtnContainer"},S().createElement("button",{onClic
 k:async()=>{if(!g.current)return void console.error("Session is not 
initialized");const e=await 
f(`${g.current.format}:${g.current.type}:${g.current.fileId}`,"restore",0,r.forkRoom);200===e.code?(s.Notification.success(e.status,{autoClose:4e3}),t.reconnect(),d(!1),v.current=!0):s.Notification.error(e.status,{autoClose:4e3})},className:"jp-ToolbarButtonComponent
 jp-restoreBtn"},"Restore version"," ",(e=>{const t=new 
Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}
 
${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`})(r.timestamps[a])))))};class
 A extends 
s.ReactWidget{constructor(e,t,n,o){super(),this.apiURL=e,this.provider=t,this.contentType=n,this.format=o,this.addClass("jp-timelineSliderWrapper")}render(){return
 
C.createElement(F,{key:this.apiURL,apiURL:this.apiURL,provider:this.provider,contentType:this.contentType,format:this.format})}upd
 
ateContent(e,t){this.apiURL=e,this.provider=t,this.contentType=this.provider.contentType,this.format=this.provider.format,this.update()}}}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/703.17b6b904d18a75a9f3c6.js
   2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[]).push([[703],{703:(e,t,o)=>{o.r(t),o.d(t,{default:()=>D});var
 
r,a=o(180),n=o(123),i=o(256),s=o(920),l=o(295),d=o(243),c=o(343),u=o(977),p=o(227),v=o(624),g=o(0),h=o(236),b=o(132),w=o(672);!function(e){e.openPath="filebrowser:open-path"}(r||(r={}));const
 m="api/collaboration/timeline",y="The file %1 has been opened with two 
different views. This is not supported. Please close this view; otherwise, some 
of your edits may not be saved 
properly.",f={id:"@jupyter/docprovider-extension:drive",description:"The 
default collaborative drive 
provider",provides:h.ICollaborativeDrive,requires:[v.ITranslator],optional:[h.IGlobalAwareness],activate:(e,t,o)=>{const
 r=t.load("jupyter_collaboration"),a=new 
b.YDrive(e.serviceManager.user,r,o);return 
e.serviceManager.contents.addDrive(a),a}},x={id:"@jupyter/docprovider-extension:yfile",description:"Plugin
 to register the shared model factor
 y for the content type 
'file'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[],activate:(e,t)=>{t.sharedModelFactory.registerDocumentFactory("file",(()=>new
 
g.YFile))}},I={id:"@jupyter/docprovider-extension:ynotebook",description:"Plugin
 to register the shared model factory for the content type 
'notebook'",autoStart:!0,requires:[h.ICollaborativeDrive],optional:[p.ISettingRegistry],activate:(e,t,o)=>{let
 r=!0;o&&o.load("@jupyterlab/notebook-extension:tracker").then((e=>{const 
t=e=>{var t;const o=null==e?void 
0:e.get("experimentalEnableDocumentWideUndoRedo").composite;r=null===(t=!o)||void
 
0===t||t};t(e),e.changed.connect((e=>t(e)))})),t.sharedModelFactory.registerDocumentFactory("notebook",(()=>new
 
g.YNotebook({disableDocumentWideUndoRedo:r})))}},k={id:"@jupyter/docprovider-extension:statusBarTimeline",description:"Plugin
 to add a timeline slider to the status 
bar",autoStart:!0,requires:[l.IStatusBar,h.ICollaborativeDrive],activate:async(e,t,o)=>{try{let
 r=null,a=null;const
  
n=async(t,r)=>{if(r&&"RTC"===t.split(":")[0]&&o){t=t.slice(o.name.length+1),a&&(a.dispose(),a=null);const[n,s]=r.split(":"),l=o.providers.get(`${n}:${s}:${t}`),d=w.URLExt.join(e.serviceManager.serverSettings.baseUrl,m,t);a=new
 b.TimelineWidget(d,l,l.contentType,l.format,m);const 
c=document.getElementById("jp-slider-status-bar");c&&!a.isAttached&&i.Widget.attach(a,c)}};e.shell.currentChanged&&e.shell.currentChanged.connect((async(e,t)=>{const
 o=t.newValue;a&&(a.dispose(),a=null),o&&"context"in o&&(await 
o.context.ready,await 
n(o.context.path,o.context.model.sharedModel.getState("document_id")))})),t&&(r||(r=new
 
i.Widget,r.addClass("jp-StatusBar-GroupItem"),r.addClass("jp-mod-highlighted"),r.id="jp-slider-status-bar",t.registerStatusItem("jp-slider-status-bar",{item:r,align:"left",rank:4,isActive:()=>{const
 t=e.shell.currentWidget;if(t&&t.context&&"string"==typeof 
t.context.path){const 
e=t.context.path;return!!t.context.model.sharedModel.getState("document_id")&&"RTC"===e.split(":")[
 0]}return!1}})))}catch(e){console.error("Failed to activate statusBarTimeline 
plugin:",e)}}},_={id:"@jupyter/docprovider-extension:defaultFileBrowser",description:"The
 default file browser factory 
provider",provides:s.IDefaultFileBrowser,requires:[h.ICollaborativeDrive,s.IFileBrowserFactory],optional:[a.IRouter,a.JupyterFrontEnd.ITreeResolver,a.ILabShell,v.ITranslator],activate:async(e,t,o,r,a,n,i)=>{const{commands:s}=e,l=(null!=i?i:v.nullTranslator).load("jupyterlab");e.serviceManager.contents.addDrive(t);const
 
d=o.createFileBrowser("filebrowser",{auto:!1,restore:!1,driveName:t.name});return
 
d.node.setAttribute("role","region"),d.node.setAttribute("aria-label",l.__("File
 Browser 
Section")),C.restoreBrowser(d,s,r,a,n),d}},j={id:"@jupyter/docprovider-extension:logger",description:"A
 logging plugin for debugging 
purposes.",autoStart:!0,optional:[c.ILoggerRegistry,d.IEditorTracker,u.INotebookTracker,v.ITranslator],activate:(e,t,o,r,a)=>{const
 i=(null!=a?a:v.nullTranslator).load("jupyte
 
r_collaboration"),s="https://schema.jupyter.org/jupyter_collaboration/session/v1";if(!t)return
 void e.serviceManager.events.stream.connect(((e,t)=>{var 
o,r;t.schema_id===s&&(console.debug(`[${t.room}(${t.path})] 
${null!==(o=t.action)&&void 0!==o?o:""}: ${null!==(r=t.msg)&&void 
0!==r?r:""}`),"WARNING"===t.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(y,t.path),buttons:[n.Dialog.okButton()]}))}));const
 l=new Map,d=(e,o)=>{const 
r=t.getLogger(o.context.path);l.set(o.context.localPath,r),o.disposed.connect((e=>{l.delete(e.context.localPath)}))};o&&o.widgetAdded.connect(d),r&&r.widgetAdded.connect(d),(async()=>{var
 t,o;const{events:r}=e.serviceManager;for await(const e of 
r.stream)if(e.schema_id===s){const 
r=l.get(e.path);null==r||r.log({type:"text",level:e.level.toLowerCase(),data:`[${e.room}]
 ${null!==(t=e.action)&&void 0!==t?t:""}: ${null!==(o=e.msg)&&void 
0!==o?o:""}`}),"WARNING"===e.level&&(0,n.showDialog)({title:i.__("Warning"),body:i.__(y,e.path),buttons:[n.Dialog.warnB
 utton({label:i.__("Ok")})]})}})()}};var C;!function(e){e.restoreBrowser=async 
function(e,t,o,a,n){const i="jp-mod-restoring";if(e.addClass(i),!o)return await 
e.model.restore(e.id),await e.model.refresh(),void e.removeClass(i);const 
s=async()=>{o.routed.disconnect(s);const l=await(null==a?void 
0:a.paths);(null==l?void 0:l.file)||(null==l?void 0:l.browser)?(await 
e.model.restore(e.id,!1),l.file&&await 
t.execute(r.openPath,{path:l.file,dontShowBrowser:!0}),l.browser&&await 
t.execute(r.openPath,{path:l.browser,dontShowBrowser:!0})):(await 
e.model.restore(e.id),await e.model.refresh()),e.removeClass(i),(null==n?void 
0:n.isEmpty("main"))&&t.execute("launcher:create")};o.routed.connect(s)}}(C||(C={}));const
 S={id:"@jupyter/docprovider-extension:notebook-cell-executor",description:"Add 
notebook cell executor that uses REST API instead of kernel protocol over 
WebSocket.",autoStart:!0,provides:u.INotebookCellExecutor,activate:e=>"true"===w.PageConfig.getOption("serverSideExecution")?new
 b.Not
 
ebookCellServerExecutor({serverSettings:e.serviceManager.serverSettings}):Object.freeze({runCell:u.runCell})},T={id:"@jupyter/docprovider-extension:forkManager",autoStart:!0,requires:[h.ICollaborativeDrive],provides:b.IForkManagerToken,activate:(e,t)=>{const
 o=e.serviceManager.events;return new 
b.ForkManager({drive:t,eventManager:o})}},D=[f,x,I,_,j,S,k,T]}}]);
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.2870ff42f76951af28a0.js
   2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1 @@
+var _JUPYTERLAB;(()=>{"use strict";var 
e,r,t,o,a,n,i,l,u,s,d,f,p,c,v,h,b,y,m,g,j,w,P,S={496:(e,r,t)=>{var 
o={"./index":()=>Promise.all([t.e(260),t.e(401),t.e(703)]).then((()=>()=>t(703))),"./extension":()=>Promise.all([t.e(260),t.e(401),t.e(703)]).then((()=>()=>t(703))),"./style":()=>t.e(944).then((()=>()=>t(944)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw
 new Error('Module "'+e+'" does not exist in container.')})),t.R=void 
0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new 
Error("Container initialization failed as it has already been initialized with 
a different share scope");return 
t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},k={};function x(e){var 
r=k[e];if(void 0!==r)return r.exports;var t=k[e]={id:e,exports:{}};return 
S[e](t,t.exports,x),t.exports}x.m=S,x.c=k,x.n=e=>{var 
r=e&&e.__esModule?()=>e.default:()=>e;return 
x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in 
r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[
 
t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>e+"."+{240:"dd1dbd559d6c95c85b3f",444:"12adfae9a2b50e91531f",576:"21a3c1a9ebaebb58d346",703:"17b6b904d18a75a9f3c6",944:"b85c55dff0f14165f872"}[e]+".js?v="+{240:"dd1dbd559d6c95c85b3f",444:"12adfae9a2b50e91531f",576:"21a3c1a9ebaebb58d346",703:"17b6b904d18a75a9f3c6",944:"b85c55dff0f14165f872"}[e],x.g=function(){if("object"==typeof
 globalThis)return globalThis;try{return this||new Function("return 
this")()}catch(e){if("object"==typeof window)return 
window}}(),x.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupyter/docprovider-extension:",x.l=(t,o,a,n)=>{if(e[t])e[t].push(o);else{var
 i,l;if(void 0!==a)for(var 
u=document.getElementsByTagName("script"),s=0;s<u.length;s++){var 
d=u[s];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+a){i=d;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("d
 ata-webpack",r+a),i.src=t),e[t]=[o];var 
f=(r,o)=>{i.onerror=i.onload=null,clearTimeout(p);var a=e[t];if(delete 
e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(o))),r)return 
r(o)},p=setTimeout(f.bind(null,void 
0,{type:"timeout",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),l&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof
 
Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var
 e={},r={};x.I=(t,o)=>{o||(o=[]);var 
a=r[t];if(a||(a=r[t]={}),!(o.indexOf(a)>=0)){if(o.push(a),e[t])return 
e[t];x.o(x.S,t)||(x.S[t]={});var 
n=x.S[t],i="@jupyter/docprovider-extension",l=(e,r,t,o)=>{var 
a=n[e]=n[e]||{},l=a[r];(!l||!l.loaded&&(!o!=!l.eager?o:i>l.from))&&(a[r]={get:t,from:i,eager:!!o})},u=[];return"default"===t&&(l("@jupyter/collaborative-drive","3.1.0",(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),l("@jupyter/docprovid
 
er-extension","3.1.0",(()=>Promise.all([x.e(260),x.e(401),x.e(703)]).then((()=>()=>x(703))))),l("@jupyter/docprovider","3.1.0",(()=>Promise.all([x.e(260),x.e(262),x.e(240)]).then((()=>()=>x(240))))),l("y-websocket","1.5.4",(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576)))))),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var
 e;x.g.importScripts&&(e=x.g.location+"");var 
r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var
 t=r.getElementsByTagName("script");if(t.length)for(var 
o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new 
Error("Automatic publicPath is not supported in this 
browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),t=e=>{var
 
r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];return
 t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r(
 t[3]))),o},o=(e,r)=>{e=t(e),r=t(r);for(var o=0;;){if(o>=e.length)return 
o<r.length&&"u"!=(typeof r[o])[0];var a=e[o],n=(typeof 
a)[0];if(o>=r.length)return"u"==n;var i=r[o],l=(typeof 
i)[0];if(n!=l)return"o"==n&&"n"==l||"s"==l||"u"==n;if("o"!=n&&"u"!=n&&a!=i)return
 a<i;o++}},a=e=>{var 
r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var
 
o=1,n=1;n<e.length;n++)o--,t+="u"==(typeof(l=e[n]))[0]?"-":(o>0?".":"")+(o=2,l);return
 t}var i=[];for(n=1;n<e.length;n++){var 
l=e[n];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" 
"+i.pop():a(l))}return u();function u(){return 
i.pop().replace(/^\((.+)\)$/,"$1")}},n=(e,r)=>{if(0 in e){r=t(r);var 
o=e[0],a=o<0;a&&(o=-o-1);for(var i=0,l=1,u=!0;;l++,i++){var 
s,d,f=l<e.length?(typeof 
e[l])[0]:"";if(i>=r.length||"o"==(d=(typeof(s=r[i]))[0]))return!u||("u"==f?l>o&&!a:""==f!=a);if("u"==d){if(!u||"u"!=f)return!1}else
 if(u)if(f==d)if(l<=o){if(s!=e[l])return!1}else{if(a?s>e[l]:s<e[l]
 )return!1;s!=e[l]&&(u=!1)}else 
if("s"!=f&&"n"!=f){if(a||l<=o)return!1;u=!1,l--}else{if(l<=o||d<f!=a)return!1;u=!1}else"s"!=f&&"n"!=f&&(u=!1,l--)}}var
 p=[],c=p.pop.bind(p);for(i=1;i<e.length;i++){var 
v=e[i];p.push(1==v?c()|c():2==v?c()&c():v?n(v,r):!c())}return!!c()},i=(e,r)=>e&&x.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t,a)=>{var
 
i=a?u(e[r]):e[r];return(r=Object.keys(i).reduce(((e,r)=>!n(t,r)||e&&!o(e,r)?e:r),0))&&i[r]},d=(e,r,t)=>{var
 a=t?u(e[r]):e[r];return 
Object.keys(a).reduce(((e,r)=>!e||!a[e].loaded&&o(e,r)?r:e),0)},f=(e,r,t,o)=>"Unsatisfied
 version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" 
(required "+a(o)+")",p=(e,r,t,o,n)=>{var i=e[t];return"No satisfying version 
("+a(o)+")"+(n?" for eager consumption":"")+" of shared module "+t+" found in 
shared scope "+r+".\nAvailable versions: "+Object.keys(i).map((e=>e+" from 
"+i[e].from)).join(", ")},c=e=>{throw new Error(e)},v=e=>{"undefined"!=
 typeof 
console&&console.warn&&console.warn(e)},b=(e,r,t)=>t?t():((e,r)=>c("Shared 
module "+r+" doesn't exist in shared scope 
"+e))(e,r),y=(h=e=>function(r,t,o,a,n){var i=x.I(r);return 
i&&i.then&&!o?i.then(e.bind(e,r,x.S[r],t,!1,a,n)):e(r,x.S[r],t,o,a,n)})(((e,r,t,o,a,n)=>{if(!i(r,t))return
 b(e,t,n);var u=s(r,t,a,o);return u?l(u):n?n():void 
c(p(r,e,t,a,o))})),m=h(((e,r,t,o,a,u)=>{if(!i(r,t))return b(e,t,u);var 
s=d(r,t,o);return 
n(a,s)||v(f(r,t,s,a)),l(r[t][s])})),g={},j={123:()=>m("default","@jupyterlab/apputils",!1,[1,4,4,3]),624:()=>m("default","@jupyterlab/translation",!1,[1,4,3,3]),672:()=>m("default","@jupyterlab/coreutils",!1,[1,6,3,3]),0:()=>m("default","@jupyter/ydoc",!1,[1,3,0,0,,"a3"]),132:()=>m("default","@jupyter/docprovider",!1,[1,3,1,0],(()=>Promise.all([x.e(262),x.e(240)]).then((()=>()=>x(240))))),180:()=>m("default","@jupyterlab/application",!1,[1,4,3,3]),227:()=>m("default","@jupyterlab/settingregistry",!1,[1,4,3,3]),236:()=>m("default","@jupyter/collaborative-drive"
 
,!1,[1,3,1,0],(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),243:()=>m("default","@jupyterlab/fileeditor",!1,[1,4,3,3]),256:()=>m("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),295:()=>m("default","@jupyterlab/statusbar",!1,[1,4,3,3]),343:()=>m("default","@jupyterlab/logconsole",!1,[1,4,3,3]),920:()=>m("default","@jupyterlab/filebrowser",!1,[1,4,3,3]),977:()=>m("default","@jupyterlab/notebook",!1,[1,4,3,3]),262:()=>m("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>m("default","react",!1,[1,18,2,0]),560:()=>y("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),597:()=>m("default","@jupyterlab/ui-components",!1,[1,4,3,3]),602:()=>m("default","@lumino/signaling",!1,[1,2,0,0]),943:()=>m("default","@jupyterlab/services",!1,[1,7,3,3]),206:()=>m("default","yjs",!1,[1,13,5,40])},w={206:[206],240:[345,560,597,602,943],260:[123,624,672],262:[262],401:[0,132,180,227,236,243,256,295,343,920,977]},P={},x.f.consumes=(e,r)=
 >{x.o(w,e)&&w[e].forEach((e=>{if(x.o(g,e))return r.push(g[e]);if(!P[e]){var 
 >t=r=>{g[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()}};P[e]=!0;var 
 >o=r=>{delete g[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var 
 >a=j[e]();a.then?r.push(g[e]=a.then(t).catch(o)):t(a)}catch(e){o(e)}}}))},(()=>{var
 > e={552:0};x.f.j=(r,t)=>{var o=x.o(e,r)?e[r]:void 
 >0;if(0!==o)if(o)t.push(o[2]);else 
 >if(/^(2(06|60|62)|401)$/.test(r))e[r]=0;else{var a=new 
 >Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=x.p+x.u(r),i=new 
 >Error;x.l(n,(t=>{if(x.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var 
 >a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading
 > chunk "+r+" failed.\n("+a+": 
 >"+n+")",i.name="ChunkLoadError",i.type=a,i.request=n,o[1](i)}}),"chunk-"+r,r)}};var
 > r=(r,t)=>{var o,a,[n,i,l]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in 
 >i)x.o(i,o)&&(x.m[o]=i[o]);l&&l(x)}for(r&&r(t);u<n.length;u++)a=n[u],x.o(e,a)&&e[a]&&e[a][0](),e[a]=0},t=self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_
 
jupyter_docprovider_extension||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x.nc=void
 0;var E=x(496);(_JUPYTERLAB=void 
0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupyter/docprovider-extension"]=E})();
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/remoteEntry.df025193a26e76919ed8.js
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.df025193a26e76919ed8.js
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/remoteEntry.df025193a26e76919ed8.js
   2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/remoteEntry.df025193a26e76919ed8.js
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-var _JUPYTERLAB;(()=>{"use strict";var 
e,r,t,o,a,n,i,l,u,d,f,s,c,p,v,h,b,y,m,g,j,w,P,k={496:(e,r,t)=>{var 
o={"./index":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./extension":()=>Promise.all([t.e(823),t.e(544)]).then((()=>()=>t(544))),"./style":()=>t.e(944).then((()=>()=>t(944)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw
 new Error('Module "'+e+'" does not exist in container.')})),t.R=void 
0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new 
Error("Container initialization failed as it has already been initialized with 
a different share scope");return 
t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},S={};function x(e){var 
r=S[e];if(void 0!==r)return r.exports;var t=S[e]={id:e,exports:{}};return 
k[e](t,t.exports,x),t.exports}x.m=k,x.c=S,x.n=e=>{var 
r=e&&e.__esModule?()=>e.default:()=>e;return 
x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in 
r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},x.f={},x.e=e
 
=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>e+"."+{206:"84c5901f15f0fa0bd745",262:"0cc35b53ffb65372f245",444:"12adfae9a2b50e91531f",544:"20c789155db30fb50597",576:"c6f9c48a57817d3bad8c",618:"28407d2343b911e61b63",823:"7ffe7ee89772c5a0cfc8",944:"b85c55dff0f14165f872"}[e]+".js?v="+{206:"84c5901f15f0fa0bd745",262:"0cc35b53ffb65372f245",444:"12adfae9a2b50e91531f",544:"20c789155db30fb50597",576:"c6f9c48a57817d3bad8c",618:"28407d2343b911e61b63",823:"7ffe7ee89772c5a0cfc8",944:"b85c55dff0f14165f872"}[e],x.g=function(){if("object"==typeof
 globalThis)return globalThis;try{return this||new Function("return 
this")()}catch(e){if("object"==typeof window)return 
window}}(),x.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@jupyter/docprovider-extension:",x.l=(t,o,a,n)=>{if(e[t])e[t].push(o);else{var
 i,l;if(void 0!==a)for(var 
u=document.getElementsByTagName("script"),d=0;d<u.length;d++){var 
f=u[d];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==
 
r+a){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[o];var
 s=(r,o)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete 
e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(o))),r)return 
r(o)},c=setTimeout(s.bind(null,void 
0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),l&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof
 
Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var
 e={},r={};x.I=(t,o)=>{o||(o=[]);var 
a=r[t];if(a||(a=r[t]={}),!(o.indexOf(a)>=0)){if(o.push(a),e[t])return 
e[t];x.o(x.S,t)||(x.S[t]={});var 
n=x.S[t],i="@jupyter/docprovider-extension",l=(e,r,t,o)=>{var 
a=n[e]=n[e]||{},l=a[r];(!l||!l.loaded&&(!o!=!l.eager?o:i>l.from))&&(a[r]={get:t,from:i,eager:!!o})},u=[];ret
 
urn"default"===t&&(l("@jupyter/collaborative-drive","3.0.0",(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),l("@jupyter/docprovider-extension","3.0.0",(()=>Promise.all([x.e(823),x.e(544)]).then((()=>()=>x(544))))),l("@jupyter/docprovider","3.0.0",(()=>Promise.all([x.e(262),x.e(618),x.e(823)]).then((()=>()=>x(618))))),l("y-websocket","1.5.4",(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576)))))),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var
 e;x.g.importScripts&&(e=x.g.location+"");var 
r=x.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var 
t=r.getElementsByTagName("script");if(t.length)for(var 
o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new 
Error("Automatic publicPath is not supported in this 
browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})(),t=e=>{var
 
r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=t[1]?r(t[1]):[];
 return 
t[2]&&(o.length++,o.push.apply(o,r(t[2]))),t[3]&&(o.push([]),o.push.apply(o,r(t[3]))),o},o=(e,r)=>{e=t(e),r=t(r);for(var
 o=0;;){if(o>=e.length)return o<r.length&&"u"!=(typeof r[o])[0];var 
a=e[o],n=(typeof a)[0];if(o>=r.length)return"u"==n;var i=r[o],l=(typeof 
i)[0];if(n!=l)return"o"==n&&"n"==l||"s"==l||"u"==n;if("o"!=n&&"u"!=n&&a!=i)return
 a<i;o++}},a=e=>{var 
r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var
 
o=1,n=1;n<e.length;n++)o--,t+="u"==(typeof(l=e[n]))[0]?"-":(o>0?".":"")+(o=2,l);return
 t}var i=[];for(n=1;n<e.length;n++){var 
l=e[n];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" 
"+i.pop():a(l))}return u();function u(){return 
i.pop().replace(/^\((.+)\)$/,"$1")}},n=(e,r)=>{if(0 in e){r=t(r);var 
o=e[0],a=o<0;a&&(o=-o-1);for(var i=0,l=1,u=!0;;l++,i++){var 
d,f,s=l<e.length?(typeof 
e[l])[0]:"";if(i>=r.length||"o"==(f=(typeof(d=r[i]))[0]))return!u||("u"==s?l>o&&!a:""==s!=a);if("u"==f){if(!u||"
 u"!=s)return!1}else 
if(u)if(s==f)if(l<=o){if(d!=e[l])return!1}else{if(a?d>e[l]:d<e[l])return!1;d!=e[l]&&(u=!1)}else
 
if("s"!=s&&"n"!=s){if(a||l<=o)return!1;u=!1,l--}else{if(l<=o||f<s!=a)return!1;u=!1}else"s"!=s&&"n"!=s&&(u=!1,l--)}}var
 c=[],p=c.pop.bind(c);for(i=1;i<e.length;i++){var 
v=e[i];c.push(1==v?p()|p():2==v?p()&p():v?n(v,r):!p())}return!!p()},i=(e,r)=>e&&x.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),d=(e,r,t,a)=>{var
 
i=a?u(e[r]):e[r];return(r=Object.keys(i).reduce(((e,r)=>!n(t,r)||e&&!o(e,r)?e:r),0))&&i[r]},f=(e,r,t)=>{var
 a=t?u(e[r]):e[r];return 
Object.keys(a).reduce(((e,r)=>!e||!a[e].loaded&&o(e,r)?r:e),0)},s=(e,r,t,o)=>"Unsatisfied
 version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" 
(required "+a(o)+")",c=(e,r,t,o,n)=>{var i=e[t];return"No satisfying version 
("+a(o)+")"+(n?" for eager consumption":"")+" of shared module "+t+" found in 
shared scope "+r+".\nAvailable versions: "+Object.keys(i).map
 ((e=>e+" from "+i[e].from)).join(", ")},p=e=>{throw new 
Error(e)},v=e=>{"undefined"!=typeof 
console&&console.warn&&console.warn(e)},b=(e,r,t)=>t?t():((e,r)=>p("Shared 
module "+r+" doesn't exist in shared scope 
"+e))(e,r),y=(h=e=>function(r,t,o,a,n){var i=x.I(r);return 
i&&i.then&&!o?i.then(e.bind(e,r,x.S[r],t,!1,a,n)):e(r,x.S[r],t,o,a,n)})(((e,r,t,o,a,n)=>{if(!i(r,t))return
 b(e,t,n);var u=d(r,t,a,o);return u?l(u):n?n():void 
p(c(r,e,t,a,o))})),m=h(((e,r,t,o,a,u)=>{if(!i(r,t))return b(e,t,u);var 
d=f(r,t,o);return 
n(a,d)||v(s(r,t,d,a)),l(r[t][d])})),g={},j={200:()=>m("default","@jupyterlab/apputils",!1,[1,4,3,5]),473:()=>m("default","@jupyterlab/coreutils",!1,[1,6,2,5]),678:()=>m("default","@jupyterlab/translation",!1,[1,4,2,5]),154:()=>m("default","@jupyterlab/logconsole",!1,[1,4,2,5]),256:()=>m("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",0]),313:()=>m("default","@jupyterlab/filebrowser",!1,[1,4,2,5]),480:()=>m("default","@jupyterlab/notebook",!1,[1,4,2,5]),614:()=>m("default","@j
 
upyterlab/settingregistry",!1,[1,4,2,5]),697:()=>m("default","@jupyter/ydoc",!1,[1,2,0,1]),710:()=>m("default","@jupyterlab/fileeditor",!1,[1,4,2,5]),907:()=>m("default","@jupyter/docprovider",!1,[1,3,0,0],(()=>Promise.all([x.e(262),x.e(618)]).then((()=>()=>x(618))))),909:()=>m("default","@jupyterlab/application",!1,[1,4,2,5]),922:()=>m("default","@jupyterlab/statusbar",!1,[1,4,2,5]),975:()=>m("default","@jupyter/collaborative-drive",!1,[1,3,0,0],(()=>Promise.all([x.e(262),x.e(444)]).then((()=>()=>x(444))))),262:()=>m("default","@lumino/coreutils",!1,[1,2,0,0]),345:()=>m("default","react",!1,[1,18,2,0]),354:()=>m("default","@jupyterlab/services",!1,[1,7,2,5]),460:()=>m("default","@jupyterlab/ui-components",!1,[1,4,2,5]),560:()=>y("default","y-websocket",!1,[1,1,3,15],(()=>Promise.all([x.e(576),x.e(206)]).then((()=>()=>x(576))))),602:()=>m("default","@lumino/signaling",!1,[1,2,0,0]),206:()=>m("default","yjs",!1,[1,13,5,40])},w={206:[206],262:[262],544:[154,256,313,480,614,697,710,907
 
,909,922,975],618:[345,354,460,560,602],823:[200,473,678]},P={},x.f.consumes=(e,r)=>{x.o(w,e)&&w[e].forEach((e=>{if(x.o(g,e))return
 r.push(g[e]);if(!P[e]){var t=r=>{g[e]=0,x.m[e]=t=>{delete 
x.c[e],t.exports=r()}};P[e]=!0;var o=r=>{delete g[e],x.m[e]=t=>{throw delete 
x.c[e],r}};try{var 
a=j[e]();a.then?r.push(g[e]=a.then(t).catch(o)):t(a)}catch(e){o(e)}}}))},(()=>{var
 e={552:0};x.f.j=(r,t)=>{var o=x.o(e,r)?e[r]:void 
0;if(0!==o)if(o)t.push(o[2]);else if(/^(206|262|823)$/.test(r))e[r]=0;else{var 
a=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=a);var n=x.p+x.u(r),i=new 
Error;x.l(n,(t=>{if(x.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var 
a=t&&("load"===t.type?"missing":t.type),n=t&&t.target&&t.target.src;i.message="Loading
 chunk "+r+" failed.\n("+a+": 
"+n+")",i.name="ChunkLoadError",i.type=a,i.request=n,o[1](i)}}),"chunk-"+r,r)}};var
 r=(r,t)=>{var o,a,[n,i,l]=t,u=0;if(n.some((r=>0!==e[r]))){for(o in 
i)x.o(i,o)&&(x.m[o]=i[o]);l&&l(x)}for(r&&r(t);u<n.length;u++)a=n[u],x.o(e,a)&&e[a]&&e[a][0]
 
(),e[a]=0},t=self.webpackChunk_jupyter_docprovider_extension=self.webpackChunk_jupyter_docprovider_extension||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x.nc=void
 0;var E=x(496);(_JUPYTERLAB=void 
0===_JUPYTERLAB?{}:_JUPYTERLAB)["@jupyter/docprovider-extension"]=E})();
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/third-party-licenses.json
 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/third-party-licenses.json
--- 
old/jupyter_docprovider-1.0.0/jupyter_docprovider/labextension/static/third-party-licenses.json
     2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/jupyter_docprovider/labextension/static/third-party-licenses.json
     2020-02-02 01:00:00.000000000 +0100
@@ -2,19 +2,19 @@
   "packages": [
     {
       "name": "@jupyter/collaboration",
-      "versionInfo": "3.0.0",
+      "versionInfo": "3.1.0",
       "licenseId": "BSD-3-Clause",
       "extractedText": ""
     },
     {
       "name": "@jupyter/collaborative-drive",
-      "versionInfo": "3.0.0",
+      "versionInfo": "3.1.0",
       "licenseId": "BSD-3-Clause",
       "extractedText": ""
     },
     {
       "name": "@jupyter/docprovider",
-      "versionInfo": "3.0.0",
+      "versionInfo": "3.1.0",
       "licenseId": "BSD-3-Clause",
       "extractedText": ""
     },
@@ -26,7 +26,7 @@
     },
     {
       "name": "lib0",
-      "versionInfo": "0.2.97",
+      "versionInfo": "0.2.98",
       "licenseId": "MIT",
       "extractedText": "The MIT License (MIT)\n\nCopyright (c) 2019 Kevin 
Jahns <[email protected]>.\n\nPermission is hereby granted, free of 
charge, to any person obtaining a copy\nof this software and associated 
documentation files (the \"Software\"), to deal\nin the Software without 
restriction, including without limitation the rights\nto use, copy, modify, 
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, 
and to permit persons to whom the Software is\nfurnished to do so, subject to 
the following conditions:\n\nThe above copyright notice and this permission 
notice shall be included in all\ncopies or substantial portions of the 
Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, 
EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 
EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES 
OR OTHER\nLIABILITY
 , WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF 
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE\nSOFTWARE.\n"
     },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/package.json 
new/jupyter_docprovider-1.1.0/packages/docprovider/package.json
--- old/jupyter_docprovider-1.0.0/packages/docprovider/package.json     
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/package.json     
2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@jupyter/docprovider",
-  "version": "3.0.0",
+  "version": "3.1.0",
   "description": "JupyterLab - Document Provider",
   "homepage": "https://github.com/jupyterlab/jupyter-collaboration";,
   "bugs": {
@@ -41,7 +41,7 @@
     "watch": "tsc -b --watch"
   },
   "dependencies": {
-    "@jupyter/collaborative-drive": "^3.0.0",
+    "@jupyter/collaborative-drive": "^3.1.0",
     "@jupyter/ydoc": "^2.0.0 || ^3.0.0",
     "@jupyterlab/apputils": "^4.2.0",
     "@jupyterlab/cells": "^4.2.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/TimelineSlider.tsx 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/TimelineSlider.tsx
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/TimelineSlider.tsx   
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/TimelineSlider.tsx   
2020-02-02 01:00:00.000000000 +0100
@@ -13,18 +13,21 @@
   private provider: IForkProvider;
   private contentType: string;
   private format: string;
+  private documentTimelineUrl: string;
 
   constructor(
     apiURL: string,
     provider: IForkProvider,
     contentType: string,
-    format: string
+    format: string,
+    documentTimelineUrl: string
   ) {
     super();
     this.apiURL = apiURL;
     this.provider = provider;
     this.contentType = contentType;
     this.format = format;
+    this.documentTimelineUrl = documentTimelineUrl;
     this.addClass('jp-timelineSliderWrapper');
   }
 
@@ -36,6 +39,7 @@
         provider={this.provider}
         contentType={this.contentType}
         format={this.format}
+        documentTimelineUrl={this.documentTimelineUrl}
       />
     );
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/__tests__/forkManager.spec.ts
 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/__tests__/forkManager.spec.ts
--- 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/__tests__/forkManager.spec.ts
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/__tests__/forkManager.spec.ts
        2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,96 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
+import {
+  ForkManager,
+  JUPYTER_COLLABORATION_FORK_EVENTS_URI
+} from '../forkManager';
+import { Event } from '@jupyterlab/services';
+import { Signal } from '@lumino/signaling';
+import { requestAPI } from '../requests';
+jest.mock('../requests');
+
+const driveMock = {
+  name: 'rtc',
+  providers: new Map()
+} as ICollaborativeDrive;
+const stream = new Signal({});
+const eventManagerMock = {
+  stream: stream as any
+} as Event.IManager;
+
+describe('@jupyter/docprovider', () => {
+  let manager: ForkManager;
+  beforeEach(() => {
+    manager = new ForkManager({
+      drive: driveMock,
+      eventManager: eventManagerMock
+    });
+  });
+  describe('forkManager', () => {
+    it('should have a type', () => {
+      expect(ForkManager).not.toBeUndefined();
+    });
+    it('should be able to create instance', () => {
+      expect(manager).toBeInstanceOf(ForkManager);
+    });
+    it('should be able to create new fork', async () => {
+      await manager.createFork({
+        rootId: 'root-uuid',
+        synchronize: true,
+        title: 'my fork label',
+        description: 'my fork description'
+      });
+      expect(requestAPI).toHaveBeenCalledWith(
+        'api/collaboration/fork/root-uuid',
+        {
+          method: 'PUT',
+          body: JSON.stringify({
+            title: 'my fork label',
+            description: 'my fork description',
+            synchronize: true
+          })
+        }
+      );
+    });
+    it('should be able to get all forks', async () => {
+      await manager.getAllForks('root-uuid');
+      expect(requestAPI).toHaveBeenCalledWith(
+        'api/collaboration/fork/root-uuid',
+        {
+          method: 'GET'
+        }
+      );
+    });
+    it('should be able to get delete forks', async () => {
+      await manager.deleteFork({ forkId: 'fork-uuid', merge: true });
+      expect(requestAPI).toHaveBeenCalledWith(
+        'api/collaboration/fork/fork-uuid?merge=true',
+        {
+          method: 'DELETE'
+        }
+      );
+    });
+    it('should be able to emit fork added signal', async () => {
+      const listener = jest.fn();
+      manager.forkAdded.connect(listener);
+      const data = {
+        schema_id: JUPYTER_COLLABORATION_FORK_EVENTS_URI,
+        action: 'create'
+      };
+      stream.emit(data);
+      expect(listener).toHaveBeenCalledWith(manager, data);
+    });
+    it('should be able to emit fork deleted signal', async () => {
+      const listener = jest.fn();
+      manager.forkDeleted.connect(listener);
+      const data = {
+        schema_id: JUPYTER_COLLABORATION_FORK_EVENTS_URI,
+        action: 'delete'
+      };
+      stream.emit(data);
+      expect(listener).toHaveBeenCalledWith(manager, data);
+    });
+  });
+});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/component.tsx 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/component.tsx
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/component.tsx        
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/component.tsx        
2020-02-02 01:00:00.000000000 +0100
@@ -19,13 +19,15 @@
   provider: IForkProvider;
   contentType: string;
   format: string;
+  documentTimelineUrl: string;
 };
 
 export const TimelineSliderComponent: React.FC<Props> = ({
   apiURL,
   provider,
   contentType,
-  format
+  format,
+  documentTimelineUrl
 }) => {
   const [data, setData] = useState({
     roomId: '',
@@ -74,7 +76,6 @@
           setData(data);
           setCurrentTimestampIndex(data.timestamps.length - 1);
           provider.connectToForkDoc(data.forkRoom, data.sessionId);
-
           sessionRef.current = await requestDocSession(
             format,
             contentType,
@@ -147,16 +148,21 @@
   function determineAction(currentTimestamp: number): 'undo' | 'redo' {
     return currentTimestamp < currentTimestampIndex ? 'undo' : 'redo';
   }
-
   function extractFilenameFromURL(url: string): string {
     try {
       const parsedURL = new URL(url);
       const pathname = parsedURL.pathname;
-      const segments = pathname.split('/');
 
-      return segments.slice(4 - segments.length).join('/');
+      const apiIndex = pathname.lastIndexOf(documentTimelineUrl);
+      if (apiIndex === -1) {
+        throw new Error(
+          `API segment "${documentTimelineUrl}" not found in URL.`
+        );
+      }
+
+      return pathname.slice(apiIndex + documentTimelineUrl.length);
     } catch (error) {
-      console.error('Invalid URL:', error);
+      console.error('Invalid URL or unable to extract filename:', error);
       return '';
     }
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/forkManager.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/forkManager.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/forkManager.ts       
1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/forkManager.ts       
2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
+import { URLExt } from '@jupyterlab/coreutils';
+import { Event } from '@jupyterlab/services';
+import { ISignal, Signal } from '@lumino/signaling';
+
+import { requestAPI, ROOM_FORK_URL } from './requests';
+import {
+  IAllForksResponse,
+  IForkChangedEvent,
+  IForkCreationResponse,
+  IForkManager
+} from './tokens';
+import { IForkProvider } from './ydrive';
+
+export const JUPYTER_COLLABORATION_FORK_EVENTS_URI =
+  'https://schema.jupyter.org/jupyter_collaboration/fork/v1';
+
+export class ForkManager implements IForkManager {
+  constructor(options: ForkManager.IOptions) {
+    const { drive, eventManager } = options;
+    this._drive = drive;
+    this._eventManager = eventManager;
+    this._eventManager.stream.connect(this._handleEvent, this);
+  }
+
+  get isDisposed(): boolean {
+    return this._disposed;
+  }
+  get forkAdded(): ISignal<ForkManager, IForkChangedEvent> {
+    return this._forkAddedSignal;
+  }
+  get forkDeleted(): ISignal<ForkManager, IForkChangedEvent> {
+    return this._forkDeletedSignal;
+  }
+
+  dispose(): void {
+    if (this._disposed) {
+      return;
+    }
+    this._eventManager?.stream.disconnect(this._handleEvent);
+    this._disposed = true;
+  }
+  async createFork(options: {
+    rootId: string;
+    synchronize: boolean;
+    title?: string;
+    description?: string;
+  }): Promise<IForkCreationResponse | undefined> {
+    const { rootId, title, description, synchronize } = options;
+    const init: RequestInit = {
+      method: 'PUT',
+      body: JSON.stringify({ title, description, synchronize })
+    };
+    const url = URLExt.join(ROOM_FORK_URL, rootId);
+    const response = await requestAPI<IForkCreationResponse>(url, init);
+    return response;
+  }
+
+  async getAllForks(rootId: string) {
+    const url = URLExt.join(ROOM_FORK_URL, rootId);
+    const init = { method: 'GET' };
+    const response = await requestAPI<IAllForksResponse>(url, init);
+    return response;
+  }
+
+  async deleteFork(options: { forkId: string; merge: boolean }): Promise<void> 
{
+    const { forkId, merge } = options;
+    const url = URLExt.join(ROOM_FORK_URL, forkId);
+    const query = URLExt.objectToQueryString({ merge });
+    const init = { method: 'DELETE' };
+    await requestAPI(`${url}${query}`, init);
+  }
+  getProvider(options: {
+    documentPath: string;
+    format: string;
+    type: string;
+  }): IForkProvider | undefined {
+    const { documentPath, format, type } = options;
+    const drive = this._drive;
+    if (drive) {
+      const driveName = drive.name;
+      let docPath = documentPath;
+      if (documentPath.startsWith(driveName)) {
+        docPath = documentPath.slice(driveName.length + 1);
+      }
+      const provider = drive.providers.get(`${format}:${type}:${docPath}`);
+      return provider as IForkProvider | undefined;
+    }
+    return;
+  }
+
+  private _handleEvent(_: Event.IManager, emission: Event.Emission) {
+    if (emission.schema_id === JUPYTER_COLLABORATION_FORK_EVENTS_URI) {
+      switch (emission.action) {
+        case 'create': {
+          this._forkAddedSignal.emit(emission as any);
+          break;
+        }
+        case 'delete': {
+          this._forkDeletedSignal.emit(emission as any);
+          break;
+        }
+        default:
+          break;
+      }
+    }
+  }
+
+  private _disposed = false;
+  private _drive: ICollaborativeDrive | undefined;
+  private _eventManager: Event.IManager | undefined;
+  private _forkAddedSignal = new Signal<ForkManager, IForkChangedEvent>(this);
+  private _forkDeletedSignal = new Signal<ForkManager, 
IForkChangedEvent>(this);
+}
+
+export namespace ForkManager {
+  export interface IOptions {
+    drive: ICollaborativeDrive;
+    eventManager: Event.IManager;
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/index.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/index.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/index.ts     
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/index.ts     
2020-02-02 01:00:00.000000000 +0100
@@ -13,3 +13,5 @@
 export * from './ydrive';
 export * from './yprovider';
 export * from './TimelineSlider';
+export * from './tokens';
+export * from './forkManager';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/requests.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/requests.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/requests.ts  
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/requests.ts  
2020-02-02 01:00:00.000000000 +0100
@@ -14,6 +14,8 @@
 const DOC_FORK_URL = 'api/collaboration/undo_redo';
 const TIMELINE_URL = 'api/collaboration/timeline';
 
+export const ROOM_FORK_URL = 'api/collaboration/fork';
+
 /**
  * Document session model
  */
@@ -36,6 +38,45 @@
   sessionId: string;
 }
 
+/**
+ * Call the API extension
+ *
+ * @param endPoint API REST end point for the extension
+ * @param init Initial values for the request
+ * @returns The response body interpreted as JSON
+ */
+export async function requestAPI<T = any>(
+  endPoint = '',
+  init: RequestInit = {}
+): Promise<T> {
+  // Make request to Jupyter API
+  const settings = ServerConnection.makeSettings();
+  const requestUrl = URLExt.join(settings.baseUrl, endPoint);
+
+  let response: Response;
+  try {
+    response = await ServerConnection.makeRequest(requestUrl, init, settings);
+  } catch (error) {
+    throw new ServerConnection.NetworkError(error as any);
+  }
+
+  let data: any = await response.text();
+
+  if (data.length > 0) {
+    try {
+      data = JSON.parse(data);
+    } catch (error) {
+      console.error('Not a JSON response body.', response);
+    }
+  }
+
+  if (!response.ok) {
+    throw new ServerConnection.ResponseError(response, data.message || data);
+  }
+
+  return data;
+}
+
 export async function requestDocSession(
   format: string,
   type: string,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/tokens.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/tokens.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/tokens.ts    
1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/tokens.ts    
2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+import { Token } from '@lumino/coreutils';
+import { IDisposable } from '@lumino/disposable';
+import { ISignal } from '@lumino/signaling';
+import { IForkProvider } from './ydrive';
+export interface IForkInfo {
+  description?: string;
+  root_roomid: string;
+  synchronize: boolean;
+  title?: string;
+}
+
+export interface IForkCreationResponse {
+  fork_info: IForkInfo;
+  fork_roomid: string;
+  sessionId: string;
+}
+
+export interface IAllForksResponse {
+  [forkId: string]: IForkInfo;
+}
+
+export interface IForkChangedEvent {
+  fork_info: IForkInfo;
+  fork_roomid: string;
+  username?: string;
+}
+
+/**
+ * Interface representing a Fork Manager that manages forked documents and
+ * provides signals for fork-related events.
+ *
+ * @interface IForkManager
+ * @extends IDisposable
+ */
+export interface IForkManager extends IDisposable {
+  /**
+   * Get the fork provider of a given document.
+   *
+   * @param options.documentPath - The document path including the
+   * drive prefix.
+   * @param options.format - Format of the document.
+   * @param options.type - Content type of the document.
+   * @returns The fork provider of the document.
+   */
+  getProvider(options: {
+    documentPath: string;
+    format: string;
+    type: string;
+  }): IForkProvider | undefined;
+
+  /**
+   * Creates a new fork for a given document.
+   *
+   * @param options.rootId - The ID of the root document to fork.
+   * @param options.synchronize - A flag indicating whether the fork should be 
kept
+   * synchronized with the root document.
+   * @param options.title - An optional label for the fork.
+   * @param options.description - An optional description for the fork.
+   *
+   * @returns A promise that resolves to an `IForkCreationResponse` if the fork
+   * is created successfully, or `undefined` if the creation fails.
+   */
+  createFork(options: {
+    rootId: string;
+    synchronize: boolean;
+    title?: string;
+    description?: string;
+  }): Promise<IForkCreationResponse | undefined>;
+
+  /**
+   * Retrieves all forks associated with a specific document.
+   *
+   * @param documentId - The ID of the document for which forks are to be 
retrieved.
+   *
+   * @returns A promise that resolves to an `IAllForksResponse` containing 
information about all forks.
+   */
+  getAllForks(documentId: string): Promise<IAllForksResponse>;
+
+  /**
+   * Deletes a specified fork and optionally merges its changes.
+   *
+   * @param options - Options for deleting the fork.
+   * @param options.forkId - The ID of the fork to be deleted.
+   * @param options.merge - A flag indicating whether changes from the fork 
should be merged back into the root document.
+   *
+   * @returns A promise that resolves when the fork is successfully deleted.
+   */
+  deleteFork(options: { forkId: string; merge: boolean }): Promise<void>;
+
+  /**
+   * Signal emitted when a new fork is added.
+   *
+   * @event forkAdded
+   * @type ISignal<IForkManager, IForkChangedEvent>
+   */
+  forkAdded: ISignal<IForkManager, IForkChangedEvent>;
+
+  /**
+   * Signal emitted when a fork is deleted.
+   *
+   * @event forkDeleted
+   * @type ISignal<IForkManager, IForkChangedEvent>
+   */
+  forkDeleted: ISignal<IForkManager, IForkChangedEvent>;
+}
+
+/**
+ * Token providing a fork manager instance.
+ */
+export const IForkManagerToken = new Token<IForkManager>(
+  '@jupyter/docprovider:IForkManagerToken'
+);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider/src/ydrive.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider/src/ydrive.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider/src/ydrive.ts    
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider/src/ydrive.ts    
2020-02-02 01:00:00.000000000 +0100
@@ -206,7 +206,8 @@
         // A change in hash signifies that a save occurred on the server-side
         // (e.g. a collaborator performed the save) - we want to notify the
         // observers about this change so that they can store the new hash 
value.
-        const model = await this.get(options.path, { content: false });
+        const newPath = sharedModel.state.path ?? options.path;
+        const model = await this.get(newPath as string, { content: false });
 
         this._ydriveFileChanged.emit({
           type: 'save',
@@ -308,7 +309,6 @@
       // the `sharedModel` will be the default one.
       return;
     }
-
     if (this.documentFactories.has(options.contentType)) {
       const factory = this.documentFactories.get(options.contentType)!;
       const sharedModel = factory(options);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/package.json 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/package.json
--- old/jupyter_docprovider-1.0.0/packages/docprovider-extension/package.json   
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider-extension/package.json   
2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "name": "@jupyter/docprovider-extension",
-  "version": "3.0.0",
+  "version": "3.1.0",
   "description": "JupyterLab - Collaborative Shared Models",
   "keywords": [
     "jupyter",
@@ -53,8 +53,8 @@
     "watch:labextension": "jupyter labextension watch ."
   },
   "dependencies": {
-    "@jupyter/collaborative-drive": "^3.0.0",
-    "@jupyter/docprovider": "^3.0.0",
+    "@jupyter/collaborative-drive": "^3.1.0",
+    "@jupyter/docprovider": "^3.1.0",
     "@jupyter/ydoc": "^2.0.0 || ^3.0.0",
     "@jupyterlab/application": "^4.2.0",
     "@jupyterlab/apputils": "^4.2.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/filebrowser.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/filebrowser.ts
--- 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/filebrowser.ts 
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/filebrowser.ts 
    2020-02-02 01:00:00.000000000 +0100
@@ -158,35 +158,38 @@
         documentPath: string,
         documentId: string
       ) => {
-        if (drive) {
-          // Remove 'RTC:' from document path
-          documentPath = documentPath.slice(drive.name.length + 1);
-          // Dispose of the previous timelineWidget if it exists
-          if (timelineWidget) {
-            timelineWidget.dispose();
-            timelineWidget = null;
-          }
+        if (documentId && documentPath.split(':')[0] === 'RTC') {
+          if (drive) {
+            // Remove 'RTC:' from document path
+            documentPath = documentPath.slice(drive.name.length + 1);
+            // Dispose of the previous timelineWidget if it exists
+            if (timelineWidget) {
+              timelineWidget.dispose();
+              timelineWidget = null;
+            }
 
-          const [format, type] = documentId.split(':');
-          const provider = drive.providers.get(
-            `${format}:${type}:${documentPath}`
-          ) as unknown as IForkProvider;
-          const fullPath = URLExt.join(
-            app.serviceManager.serverSettings.baseUrl,
-            DOCUMENT_TIMELINE_URL,
-            documentPath
-          );
-
-          timelineWidget = new TimelineWidget(
-            fullPath,
-            provider,
-            provider.contentType,
-            provider.format
-          );
-
-          const elt = document.getElementById('jp-slider-status-bar');
-          if (elt && !timelineWidget.isAttached) {
-            Widget.attach(timelineWidget, elt);
+            const [format, type] = documentId.split(':');
+            const provider = drive.providers.get(
+              `${format}:${type}:${documentPath}`
+            ) as unknown as IForkProvider;
+            const fullPath = URLExt.join(
+              app.serviceManager.serverSettings.baseUrl,
+              DOCUMENT_TIMELINE_URL,
+              documentPath
+            );
+
+            timelineWidget = new TimelineWidget(
+              fullPath,
+              provider,
+              provider.contentType,
+              provider.format,
+              DOCUMENT_TIMELINE_URL
+            );
+
+            const elt = document.getElementById('jp-slider-status-bar');
+            if (elt && !timelineWidget.isAttached) {
+              Widget.attach(timelineWidget, elt);
+            }
           }
         }
       };
@@ -222,8 +225,22 @@
             align: 'left',
             rank: 4,
             isActive: () => {
-              const currentWidget = app.shell.currentWidget;
-              return !!currentWidget && 'context' in currentWidget;
+              const currentWidget = app.shell
+                .currentWidget as DocumentWidget | null;
+
+              if (
+                currentWidget &&
+                currentWidget.context &&
+                typeof currentWidget.context.path === 'string'
+              ) {
+                const documentPath = currentWidget.context.path;
+                const documentId =
+                  currentWidget.context.model.sharedModel.getState(
+                    'document_id'
+                  ) as string;
+                return !!documentId && documentPath.split(':')[0] === 'RTC';
+              }
+              return false;
             }
           });
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/forkManager.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/forkManager.ts
--- 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/forkManager.ts 
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/forkManager.ts 
    2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
+import {
+  ForkManager,
+  IForkManager,
+  IForkManagerToken
+} from '@jupyter/docprovider';
+
+import {
+  JupyterFrontEnd,
+  JupyterFrontEndPlugin
+} from '@jupyterlab/application';
+
+export const forkManagerPlugin: JupyterFrontEndPlugin<IForkManager> = {
+  id: '@jupyter/docprovider-extension:forkManager',
+  autoStart: true,
+  requires: [ICollaborativeDrive],
+  provides: IForkManagerToken,
+  activate: (app: JupyterFrontEnd, drive: ICollaborativeDrive) => {
+    const eventManager = app.serviceManager.events;
+    const manager = new ForkManager({ drive, eventManager });
+    return manager;
+  }
+};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/index.ts 
new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/index.ts
--- old/jupyter_docprovider-1.0.0/packages/docprovider-extension/src/index.ts   
2020-02-02 01:00:00.000000000 +0100
+++ new/jupyter_docprovider-1.1.0/packages/docprovider-extension/src/index.ts   
2020-02-02 01:00:00.000000000 +0100
@@ -16,6 +16,7 @@
   statusBarTimeline
 } from './filebrowser';
 import { notebookCellExecutor } from './executor';
+import { forkManagerPlugin } from './forkManager';
 
 /**
  * Export the plugins as default.
@@ -27,7 +28,8 @@
   defaultFileBrowser,
   logger,
   notebookCellExecutor,
-  statusBarTimeline
+  statusBarTimeline,
+  forkManagerPlugin
 ];
 
 export default plugins;

Reply via email to