anchor.diff:      };
     jquery =
       fetchzip {
  -      url = "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz";
  -      sha256 = "1j6y18miwzafdj8kfpwbmbn9qvgnbnpc7l4arqrhqj33m04xrlgi";
  +      url = "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz";
  +      sha256 = "0yi9ql493din1qa1s923nd5zvd0klk1sx00xj1wx2yambmq86vm9";
       };
     moment =
       fetchzip {
  -      url = "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz";
  -      sha256 = "12gb3p0rz5wyjwykv9g0pix7dd352lx1z7rzdjsf2brhwc4ffyip";
  +      url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
  +      sha256 = "0ifzzla4zffw23g3xvhwx3fj3jny6cjzxfzl1x0317q8wa0c7w5i";
       };
     requirejs =
       fetchzip {
  -      url = "https://registry.npmjs.org/requirejs/-/requirejs-2.3.4.tgz";
  -      sha256 = "0q6mkj0iv341kks06dya6lfs2kdw0n6vc7n4a7aa3ia530fk9vja";
  +      url = "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz";
  +      sha256 = "165hkli3qcd59cjqvli9r5f92i0h7czkmhcg1cgwamw2d0b7xibz";
       };
   
   in
   
   buildPythonPackage rec {
     pname = "jupyterhub";
  -  version = "1.1.0";
  -  disabled = pythonOlder "3.5";
  +  version = "1.3.0";
  +  disabled = pythonOlder "3.6";
   
     src = fetchPypi {
       inherit pname version;
  -    sha256 = "1mqknz0rxqzx4nc57vscvfh2d4znzlzpy83ancqxdaq3b8i70al5";
  +    sha256 = "13pf6qhimpaxj20871ff5rvwwan59320cdhhrn9cfh6314971zq5";
     };
   
     # Most of this only applies when building from source (e.g. js/css assets are
  
positive.code: { lib
  , buildPythonPackage
  , fetchPypi
  , fetchzip
  , alembic
  , ipython
  , jinja2
  , python-oauth2
  , prometheus_client
  , async_generator
  , pamela
  , sqlalchemy
  , tornado
  , traitlets
  , requests
  , notebook
  , pythonOlder
  , nodePackages
  , oauthlib
  , certipy
  , jupyter-telemetry
  }:
  
  let
    # js/css assets that setup.py tries to fetch via `npm install` when building
    # from source.
    bootstrap =
      fetchzip {
        url = "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz";
        sha256 = "0r7s54bbf68ri1na9bbabyf12mcpb6zk5ja2q6z82aw1fa4xi3yd";
      };
    font-awesome =
      fetchzip {
  
negative.code:       "'${nodePackages.configurable-http-proxy}/bin/configurable-http-proxy'"
  
      substituteInPlace setup.py --replace \
        "'npm'" "'true'"
  
      declare -A deps
      deps[bootstrap]=${bootstrap}
  