changeset 368:6979ebaae833

merge
author Alain Mazy <alain@mazy.be>
date Wed, 01 Apr 2020 22:45:01 +0200
parents ecdd754e16ba (current diff) 12f88a12d146 (diff)
children 8f7e9ebf7c96
files Sphinx/source/faq/log.rst
diffstat 55 files changed, 616 insertions(+), 279 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/_templates/layout.html	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/_templates/layout.html	Wed Apr 01 22:45:01 2020 +0200
@@ -17,7 +17,7 @@
     </p>
     <p>
 
-      &copy; Copyright 2015-2020, University Hospital of Liège and Osimis, Belgium, and the Orthanc community<br/>
+      &copy; Copyright 2015-2020, University Hospital of Liège and Osimis S.A., Belgium, and the Orthanc community<br/>
       The Orthanc Book is licensed under
       <a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative 
         Commons CC-BY-SA 4.0</a>.<br/>
--- a/Sphinx/source/conf.py	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/conf.py	Wed Apr 01 22:45:01 2020 +0200
@@ -295,3 +295,8 @@
 
 # If true, do not generate a @detailmenu in the "Top" node's menu.
 #texinfo_no_detailmenu = False
+
+
+linkcheck_timeout=3
+linkcheck_retries=2
+linkcheck_workers=15
--- a/Sphinx/source/contributing.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/contributing.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -13,7 +13,7 @@
     on `Facebook <https://www.facebook.com/orthancdicom/>`__ and
     `Twitter <https://twitter.com/OrthancServer>`__).
   - Answer our `survey
-    <http://www.orthanc-server.com/static.php?page=blog#survey>`_.
+    <https://www.orthanc-server.com/static.php?page=blog#survey>`_.
   - Improve and translate the `Wikipedia pages
     <https://en.wikipedia.org/wiki/Orthanc_(software)>`_ about Orthanc.
   - Cite the `reference paper about Orthanc
@@ -22,8 +22,10 @@
   - Answer questions posted to the `mailing list
     <https://groups.google.com/forum/#!forum/orthanc-users>`_.
   - Improve the text of the `Orthanc Book and REST API documentation
-    <https://bitbucket.org/sjodogne/orthanc-book/>`_ (check out the
-    instructions provided in the README).
+    <https://hg.orthanc-server.com/orthanc-book/file/tip>`__ (check
+    out the instructions provided in the `README file
+    <https://hg.orthanc-server.com/orthanc-book/file/tip/README.md>`__,
+    and send us a :ref:`simple patch <hg-patch>`).
   - Provide documentation and use cases (inside the dedicated `GitHub
     repository <https://github.com/jodogne/OrthancContributed>`_, via
     pull requests).
@@ -49,7 +51,7 @@
     :ref:`dedicated FAQ entry <cla>`.
   - Interface Orthanc with other software (e.g. 3D Slicer,
     Matlab/Octave, Python, Horos, dicompyler...). Check the `already
-    supported frameworks <http://www.orthanc-server.com/static.php?page=resources>`_.
+    supported frameworks <https://www.orthanc-server.com/static.php?page=resources>`_.
   - Develop :ref:`C/C++ plugins extending the Orthanc core <plugins>`.  Here are some ideas
     of possible plugins:
   
@@ -60,7 +62,7 @@
       REST API or HL7 messages, instead of reading them from some
       folder on the filesystem.
     + Have a look at the TODO file containing our `official roadmap
-      <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__.
+      <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__.
 
   - Always remember that he **recommended way of contributing to the
     source code of Orthanc is by creating C/C++ plugins**. If the
--- a/Sphinx/source/developers/coding-style.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/developers/coding-style.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -12,7 +12,7 @@
 <https://en.wikipedia.org/wiki/Indent_style#Allman_style>`__", with
 some adaptations that are described below. A compliant Eclipse
 formatter is `available in the Orthanc distribution
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/EclipseCodingStyle.xml>`__.
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/EclipseCodingStyle.xml>`__.
 
 Licensing
 ---------
--- a/Sphinx/source/developers/creating-plugins.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/developers/creating-plugins.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -13,23 +13,28 @@
 <plugins>`.
 
 Orthanc plugins must use the `plugin SDK
-<http://sdk.orthanc-server.com/>`__ and must be written in C or
+<https://sdk.orthanc-server.com/>`__ and must be written in C or
 C++. They must also fullfil the terms of the `GPLv3 license
 <http://www.gnu.org/licenses/quick-guide-gplv3.en.html>`__ that is
-used by the core of Orthanc. Here are some resources about creating
-plugins:
+used by the core of Orthanc.
+
+For developers who are more familiar with Python, it is also possible
+to create plugins using this simpler language. Check out the
+:ref:`dedicated Python plugin <python-plugin>`.
+
+Here are some resources about creating C/C++ plugins:
 
 * Sample code for plugins can be found `in the official Orthanc
   repository
-  <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/>`__
+  <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/>`__
   (in the ``Plugins/Samples`` folder).
 
 * A tutorial showing how to implement a basic WADO server is
   `available on CodeProject
-  <http://www.codeproject.com/Articles/797118/Implementing-a-WADO-Server-using-Orthanc>`__.
+  <https://www.codeproject.com/Articles/797118/Implementing-a-WADO-Server-using-Orthanc>`__.
 
 * Marco Barnig provides `tutorial lessons to create Orthanc plugins
-  <https://github.com/mbarnig/RadioLogic/wiki#orthanc-plugin-development>`__
+  <https://github.com/mbarnig/RadioLogic/wiki#user-content-orthanc-plugin-development>`__
   as part of his `RadioLogic project
   <https://github.com/mbarnig/RadioLogic/>`__.
   
@@ -37,7 +42,7 @@
 core <coding-style>`, although this is of course not required.
 
 Do not hesitate to `contact us
-<http://www.orthanc-server.com/static.php?page=contact>`__ if you wish
+<https://www.orthanc-server.com/static.php?page=contact>`__ if you wish
 your plugin to be **indexed** in :ref:`the dedicated part of the
 Orthanc Book <plugins-contributed>`!
 
@@ -73,9 +78,9 @@
 that is part of the Orthanc source distribution:
 
 * `Plugins/Include/orthanc/OrthancCPlugin.h
-  <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 
-`Online documentation <http://sdk.orthanc-server.com/>`__ for this C
+`Online documentation <https://sdk.orthanc-server.com/>`__ for this C
 header is available, as generated by `Doxygen
 <https://en.wikipedia.org/wiki/Doxygen>`__.
 
@@ -87,8 +92,8 @@
 ``HAS_ORTHANC_EXCEPTION`` is set to ``0``:
 
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.h
-  <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp
-  <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
 * `Plugins/Samples/Common/OrthanPluginException.h
-  <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginException.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginException.h>`__
--- a/Sphinx/source/developers/db-versioning.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/developers/db-versioning.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -4,10 +4,10 @@
 ===================
 
 Orthanc stores the index of the DICOM instances as an embedded `SQLite
-database <http://www.sqlite.org/>`_. The schema of this database has
-evolved across the versions of Orthanc, making the database
-incompatible between versions. This page clarifies which versions of
-Orthanc are compatible with other versions.
+database <https://www.sqlite.org/index.html>`_. The schema of this
+database has evolved across the versions of Orthanc, making the
+database incompatible between versions. This page clarifies which
+versions of Orthanc are compatible with other versions.
 
 Recent versions (post-0.3.1)
 ----------------------------
--- a/Sphinx/source/developers/repositories.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/developers/repositories.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -70,12 +70,20 @@
 Locally cloning one of those Mercurial repositories (say, the main
 ``orthanc`` repository) is as simple as typing::
 
-  $ hg clone https://hg.orthanc-server.com/orthanc
+  $ hg clone https://hg.orthanc-server.com/orthanc/
 
 You can then use separate tools such as `TortoiseHg
 <https://en.wikipedia.org/wiki/TortoiseHg>`__ to browse the code with
 richer features than the Web interface.
 
+.. highlight:: text
+
+You might have to set up a host fingerprint in the Mercurial
+configuration. Add the following lines to your ``~/.hgrc`` file::
+
+  [hostfingerprints]
+  hg.orthanc-server.com = fc:45:10:18:69:4d:a6:2b:22:fa:c0:81:f4:ee:eb:8e:ba:ae:54:90
+
 
 Note for Microsoft Windows
 ..........................
@@ -112,7 +120,7 @@
 Orthanc repositories (through SSH). Core developers can clone a
 repository with write access as follows::
 
-  $ hg clone ssh://hg@hg.orthanc-server.com/public/orthanc
+  $ hg clone ssh://hg@hg.orthanc-server.com/public/orthanc/
 
 
 .. _hg-contributing:
@@ -136,6 +144,9 @@
 both the University Hospital of Liège and the Osimis company to act as
 the official guardians of the whole Orthanc ecosystem.
 
+Also, make sure to read our :ref:`FAQ if submitting code
+<submitting_code>`.
+
 
 .. _hg-patch:
 
@@ -214,7 +225,7 @@
 by typing the following commands on their side::
 
   $ cd /tmp
-  $ hg clone https://hg.orthanc-server.com/orthanc
+  $ hg clone https://hg.orthanc-server.com/orthanc/
   $ cd /tmp/orthanc
   $ hg unbundle /tmp/contribution.bundle
   $ hg up -c default
--- a/Sphinx/source/developers/stone.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/developers/stone.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -4,10 +4,10 @@
 ================
 
 This section of the Orthanc Book will document `Stone of Orthanc
-<http://www.orthanc-server.com/static.php?page=stone>`__. This is
+<https://www.orthanc-server.com/static.php?page=stone>`__. This is
 work-in-progress.
 
 For the time being, documentation is provided through various sample
 applications that can be found in the `source distribution
-<https://bitbucket.org/sjodogne/orthanc-stone/src/default/Applications/Samples/>`__.
+<https://hg.orthanc-server.com/orthanc-stone/file/tip/Applications/Samples>`__.
 
--- a/Sphinx/source/dicom-guide.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/dicom-guide.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -7,18 +7,18 @@
 
 
 This section of the Orthanc Book provides a **gentle, informal,
-high-level introduction to DICOM**. We will try and map
-DICOM's own concepts to a modern terminology that should hopefully be
-more easy to understand for software engineers diving for the first
-time into DICOM. Once the concepts of this page are understood,
-interested readers are invited to read a more formal textbook about
-DICOM, such as the so-called "`Practical introduction and survival
-guide <http://www.springer.com/us/book/9783642108495>`__", or to read
-the full `DICOM specification
+high-level introduction to DICOM**. We will try and map DICOM's own
+concepts to a modern terminology that should hopefully be more easy to
+understand for software engineers diving for the first time into
+DICOM. Once the concepts of this page are understood, interested
+readers are invited to read a more formal textbook about DICOM, such
+as the so-called "`Practical introduction and survival guide
+<https://www.springer.com/us/book/9783642108495>`__", or to read the
+full `DICOM specification
 <http://dicom.nema.org/medical/dicom/current/output/html/>`__.
 
 All the DICOM concepts that are defined in this introduction are
-illustrated with `Orthanc <http://www.orthanc-server.com/>`__, a
+illustrated with `Orthanc <https://www.orthanc-server.com/>`__, a
 lightweight, yet powerful standalone DICOM server for healthcare and
 medical research. As Orthanc is free and open-source software, it is a
 good companion to learn DICOM.
@@ -128,7 +128,7 @@
 <https://en.wikipedia.org/wiki/Medical_ultrasound>`__).
 
 `As written in its DICOM conformance statement
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/DicomConformanceStatement.txt>`__,
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/DicomConformanceStatement.txt>`__,
 the Orthanc software can receive, store and send any kind of DICOM
 images (i.e. all the standard transfer syntaxes are
 supported). Furthermore, Orthanc can :ref:`convert most uncompressed
@@ -617,11 +617,12 @@
    authentication and :ref:`SSL encryption <https>`. The :ref:`Orthanc
    Explorer <orthanc-explorer>` interface can transparently use this
    peer mechanism to send DICOM files over HTTP(S).
-2. Resort to the `DICOMweb standard <http://www.dicomweb.org/>`__,
-   that is an extension to the DICOM standard specifying how to access
-   the content of a remote DICOM server through HTTP(S). Because the
-   peer mechanism is bound to Orthanc, DICOMweb offers a less
-   expressive, but more generic access to remote servers.
-   Importantly, a `DICOMweb plugin to Orthanc
-   <http://www.orthanc-server.com/static.php?page=dicomweb>`__ is
+2. Resort to the `DICOMweb standard
+   <https://www.dicomstandard.org/dicomweb/>`__, that is an extension
+   to the DICOM standard specifying how to access the content of a
+   remote DICOM server through HTTP(S). Because the peer mechanism is
+   bound to Orthanc, DICOMweb offers a less expressive, but more
+   generic access to remote servers.  Importantly, a `DICOMweb plugin
+   to Orthanc
+   <https://www.orthanc-server.com/static.php?page=dicomweb>`__ is
    freely available.
--- a/Sphinx/source/faq/compiling-old.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/compiling-old.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -7,7 +7,7 @@
 This page summarizes the GNU/Linux build instructions that were used
 **up to Orthanc 0.7.0 (inclusive)**.  Instructions for Orthanc above
 0.7.0 can be found directly `inside the source package
-<https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_.
+<https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`_.
 
 Static linking
 --------------
@@ -61,7 +61,7 @@
     $ cmake -DSTATIC_BUILD:BOOL=OFF -DSTANDALONE_BUILD:BOOL=ON -DUSE_DYNAMIC_JSONCPP:BOOL=ON -DDEBIAN_USE_GTEST_SOURCE_PACKAGE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DDCMTK_LIBRARIES="wrap;oflog"
 
 This is the configuration from the `official Debian package
-<http://anonscm.debian.org/cgit/debian-med/orthanc.git/tree/debian/orthanc.init>`_.
+<https://salsa.debian.org/med-team/orthanc/-/blob/master/debian/orthanc.init>`_.
 
 Dynamic Linking on Fedora 18 and 19
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -71,15 +71,14 @@
     $ cmake -DSTATIC_BUILD:BOOL=OFF -DSTANDALONE_BUILD:BOOL=ON -DUSE_DYNAMIC_GOOGLE_LOG:BOOL=ON -DUSE_DYNAMIC_JSONCPP:BOOL=ON -DCMAKE_BUILD_TYPE=Debug
 
 This is the configuration from the `official Fedora package
-<http://pkgs.fedoraproject.org/cgit/orthanc.git/tree/orthanc.spec?h=f18>`_.
+<https://src.fedoraproject.org/rpms/orthanc/blob/master/f/orthanc.spec>`_.
 
 Static Linking on CentOS 6.3 and 6.4
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 You have to build and install `CMake 2.8 from source
-<https://cmake.org/download/>`_, or you can use
-the cmake28 package from `EPEL
-<https://admin.fedoraproject.org/pkgdb/package/rpms/cmake28/>`_. The
+<https://cmake.org/download/>`_, or you can use the cmake28 package
+from `EPEL <https://src.fedoraproject.org/rpms/cmake28>`_. The
 ``STATIC_BUILD=ON`` option will then work::
 
     $ /usr/local/bin/cmake -DSTATIC_BUILD:BOOL=ON -DCMAKE_BUILD_TYPE=Debug
--- a/Sphinx/source/faq/compiling.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/compiling.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -7,7 +7,7 @@
 ---------------
 
 * Orthanc >= 0.7.1: See the `build instructions
-  <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_
+  <https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`_
   inside the source package.
 * Orthanc <= 0.7.0: See the :ref:`compiling-old`.
 
@@ -30,7 +30,7 @@
 -----------------------
 
 See the `build instructions for Windows
-<https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ inside
+<https://hg.orthanc-server.com/orthanc/file/default/INSTALL>`_ inside
 the source package.
 
 Under OS X
@@ -39,7 +39,7 @@
 The mainline of Orthanc can compile under Apple OS X, with the XCode
 compiler, since June 24th, 2014. See the `build instructions for
 Darwin
-<https://bitbucket.org/sjodogne/orthanc/src/default/DarwinCompilation.txt>`_
+<https://hg.orthanc-server.com/orthanc/file/default/DarwinCompilation.txt>`_
 inside the source package.
 
 Performance warning
@@ -64,7 +64,7 @@
 the third-party dependencies directly inside the Orthanc
 executable. This is the meaning of the ``-DSTATIC_BUILD=ON`` option,
 as described in the `INSTALL
-<https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ file of Orthanc.
+<https://hg.orthanc-server.com/orthanc/file/default/INSTALL>`_ file of Orthanc.
 
 Such a static linking is very desirable under Windows, since the
 Orthanc binaries do not depend on any external DLL, which results in a
--- a/Sphinx/source/faq/crash.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/crash.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -64,7 +64,7 @@
 above <segfault-plugin>` is available as the ``crash.cpp`` file, here
 is a sample debug session::
 
-  $ wget http://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc
   $ chmod +x ./Orthanc
   $ gcc -fPIC -shared ./crash.cpp -I ~/orthanc/Plugins/Include -o crash.so
   $ ulimit -c unlimited
--- a/Sphinx/source/faq/debugging.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/debugging.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -45,7 +45,7 @@
 to debug Orthanc without compiling from sources. Here is a sample
 debug session::
 
-  $ wget http://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc
   $ chmod +x ./Orthanc
   $ gdb ./Orthanc Configuration.json
   (gdb) catch throw
@@ -67,13 +67,13 @@
 plugins precompiled using the LSB are also available at the following
 locations:
 
-* `Orthanc core <http://lsb.orthanc-server.com/orthanc/debug/>`__
-* `DICOMweb plugin <http://lsb.orthanc-server.com/plugin-dicom-web/debug/>`__
-* `MySQL plugin <http://lsb.orthanc-server.com/plugin-mysql/debug/>`__
-* `Orthanc Web viewer <http://lsb.orthanc-server.com/plugin-webviewer/debug/>`__
-* `PostgreSQL plugin <http://lsb.orthanc-server.com/plugin-postgresql/debug/>`__
-* `Transfers accelerator plugin <http://lsb.orthanc-server.com/plugin-transfers/debug/>`__
-* `Whole-slide imaging <http://lsb.orthanc-server.com/whole-slide-imaging/debug/>`__
+* `Orthanc core <https://lsb.orthanc-server.com/orthanc/debug/>`__
+* `DICOMweb plugin <https://lsb.orthanc-server.com/plugin-dicom-web/debug/>`__
+* `MySQL plugin <https://lsb.orthanc-server.com/plugin-mysql/debug/>`__
+* `Orthanc Web viewer <https://lsb.orthanc-server.com/plugin-webviewer/debug/>`__
+* `PostgreSQL plugin <https://lsb.orthanc-server.com/plugin-postgresql/debug/>`__
+* `Transfers accelerator plugin <https://lsb.orthanc-server.com/plugin-transfers/debug/>`__
+* `Whole-slide imaging <https://lsb.orthanc-server.com/whole-slide-imaging/debug/>`__
   
 
 Docker
--- a/Sphinx/source/faq/dicom.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/dicom.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -7,7 +7,7 @@
 computer network are related to the configuration of these
 modalities. As preliminary debugging actions, you should:
 
-* Make sure you use the `most recent version <http://www.orthanc-server.com/download.php>`_ of Orthanc.
+* Make sure you use the `most recent version <https://www.orthanc-server.com/download.php>`_ of Orthanc.
 * Make sure the two computers can "ping" each other.
 * Turn off all the firewalls on the two computers (especially on Microsoft Windows).
 * Make sure the remote computer has `DICOM TLS encryption
--- a/Sphinx/source/faq/features.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/features.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -234,10 +234,10 @@
 registry** below:
 
 * ``Metadata 4200`` is used by the plugin for :ref:`whole-slide imaging <wsi>`.
-* ``Attachment 9997`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store series information.
-* ``Attachment 9998`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store instance information.
-* ``Attachment 9999`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store annotations.
-* ``Attachments 10000-13999`` are used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store reduced quality images.
+* ``Attachment 9997`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store series information.
+* ``Attachment 9998`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store instance information.
+* ``Attachment 9999`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store annotations.
+* ``Attachments 10000-13999`` are used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store reduced quality images.
 
 
 Jobs
--- a/Sphinx/source/faq/https.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/https.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -40,6 +40,6 @@
 
 Some interesting references about this topic can be found `here
 <http://www.devsec.org/info/ssl-cert.html>`__, `here
-<http://www.akadia.com/services/ssh_test_certificate.html>`__, and
+<https://www.akadia.com/services/ssh_test_certificate.html>`__, and
 `here
-<http://stackoverflow.com/questions/991758/how-to-get-an-openssl-pem-file-from-key-and-crt-files>`__.
+<https://stackoverflow.com/questions/991758/how-to-get-pem-file-from-key-and-crt-files>`__.
--- a/Sphinx/source/faq/improving-interface.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/improving-interface.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -43,10 +43,10 @@
 funding for this development). In the meantime, you can also contact a
 company that provides **commercial support on the top of Orthanc** and
 that might have developed an advanced user interface. Currently,
-`Osimis <http://osimis.io/>`_ is the only company ensuring such
+`Osimis <https://www.osimis.io/>`_ is the only company ensuring such
 corporate services, but others might show up in the future. A `contact
-form <http://www.orthanc-server.com/orthanc-pro.php>`_ is available on
-the official Web page of Orthanc.
+form <https://www.orthanc-server.com/orthanc-pro.php>`_ is available
+on the official Web page of Orthanc.
 
 **Update (2017-10-03):** A team of Master students from `ULiège
 <https://www.uliege.be/>`__ is currently working on creating a
--- a/Sphinx/source/faq/licensing.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/licensing.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -68,14 +68,14 @@
 
 The following table provides a simple summary of the most common
 situations, and indicates whether the use is accepted ("Yes"),
-prevented ("No"), or restricted ("Dual licensing"):
+forbidden ("No"), or restricted ("Dual licensing"):
 
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------+
 |                                                     | Mode of distribution of the third-party system, or of the third-party plugin/script        |
 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
 | Usage of the Orthanc ecosystem                      | Permissive    | GPLv3 | AGPLv3 | Internal use | Proprietary software   | Proprietary cloud |
-|                                                     | (MIT, BSD,    |       |        |              | distributed to clients | platform          |
-|                                                     | Apache...)    |       |        |              |                        |                   |
+|                                                     | (MIT, BSD,    |       |        |              | distributed to clients | platform or Web   |
+|                                                     | Apache...)    |       |        |              |                        | portal            |
 +=====================================================+===============+=======+========+==============+========================+===================+
 | Using Orthanc as such, even if some AGPL-licensed   | N/A           | N/A   | N/A    | Yes          | Yes                    | Yes               |
 | plugin is installed                                 |               |       |        |              |                        |                   |
@@ -92,6 +92,8 @@
 | is hosted by an Orthanc server where some           |               |       |        |              |                        |                   |
 | AGPL-licensed plugin is installed                   |               |       |        |              |                        |                   |
 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
+| Creating a :ref:`Python script <python-plugin>`     | No            | No    | Yes    | Yes          | Dual licensing         | Dual licensing    |
++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
 | Using a modified version of the GPL-licensed        | No            | Yes   | Yes    | Yes          | Dual licensing         | Yes               |
 | code of Orthanc, or using a modified version of     |               |       |        |              |                        |                   |
 | some GPL-licensed plugin, or reusing their original |               |       |        |              |                        |                   |
@@ -113,9 +115,9 @@
   its global architecture.
 
 * If your use case falls in a "**Dual licensing**" cell, please get in
-  touch with `Osimis <http://osimis.io/>`__, the commercial partner of
-  the Orthanc project that is the only entity entitled to grant a
-  `license exception
+  touch with `Osimis <https://www.osimis.io/>`__, the commercial
+  partner of the Orthanc project that is the only entity entitled to
+  grant a `license exception
   <https://www.fsf.org/blogs/rms/selling-exceptions>`__ to your
   company for the Orthanc core and its :ref:`associated official
   plugins <plugins-official>`.
@@ -146,7 +148,7 @@
   sells **CE-approved** versions of a Web viewer plugin.
 
 * You are kindly invited to cite the `reference paper about Orthanc
-  <https://link.springer.com/article/10.1007%2Fs10278-018-0082-y>`__
+  <https://link.springer.com/article/10.1007/s10278-018-0082-y>`__
   in your scientific work.
 
 * This is our own simplified, technical interpretation of the GPLv3+
@@ -232,23 +234,19 @@
 the same e-mail address: ``orthanc-legal@osimis.io``.
 
 
+.. _submitting_code:
+
 Submitting code
 ^^^^^^^^^^^^^^^
 
 Once the CLA onboarding process has succeeded, use `Mercurial
 <https://en.wikipedia.org/wiki/Mercurial>`__ to fork the official
-repository of interest from BitBucket. Here are the location of those
-repositories:
-
-* The `Orthanc server <https://bitbucket.org/sjodogne/orthanc/src>`__.
+repository of interest from BitBucket. All the repositories are
+centralized on our `self-hosted Mercurial server
+<https://hg.orthanc-server.com/>`__.
 
-* The `official plugins <https://bitbucket.org/sjodogne/>`__ originating from the University Hospital of Liège.
-
-* The `official plugins <https://bitbucket.org/osimis/>`__ originating from Osimis.
-
-Once you have finished modifying the code in your forked repository,
-issue a `pull request
-<https://confluence.atlassian.com/bitbucket/tutorial-learn-about-bitbucket-pull-requests-774243385.html>`__.
+A :ref:`dedicated page <repositories>` explains how to submit
+:ref:`simple patches <hg-patch>` or :ref:`full branches <hg-bundle>`.
 
 **Some words of warning:**
 
@@ -272,11 +270,11 @@
   should be focused on one very specific issue or feature. Large
   architectural changes are reserved for the core development team of
   Orthanc, as we must follow our `long-term roadmap
-  <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__.
+  <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__.
 
 * Unit testing is mandatory. Integration tests should be submitted to
   the `dedicated repository
-  <http://bitbucket.org/sjodogne/orthanc-tests/>`__.
+  <https://hg.orthanc-server.com/orthanc-tests/file/tip>`__.
 
 * In the case of a doubt wrt. a potential contribution, please discuss
   it on the `Orthanc Users
--- a/Sphinx/source/faq/log.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/log.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -44,7 +44,7 @@
 Under Windows, if you used the official installer:
 
 1. Download the `precompiled command-line version
-   <http://www.orthanc-server.com/download-windows.php>`__ of Orthanc.
+   <https://www.orthanc-server.com/download-windows.php>`__ of Orthanc.
 
 2. Stop the Orthanc service. The actual process depends on your
    version of Windows.
--- a/Sphinx/source/faq/matlab.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/matlab.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -12,7 +12,7 @@
 
 Both Matlab and Octave have access to HTTP servers thanks to their
 built-in `urlread() function
-<http://nl.mathworks.com/help/matlab/ref/urlread.html>`__.  Once must
+<https://nl.mathworks.com/help/matlab/ref/urlread.html>`__.  Once must
 simply install a Matlab/Octave library to decode JSON files.  The
 `JSONLab toolkit <https://github.com/fangq/jsonlab>`__ works perfectly
 to this end.
--- a/Sphinx/source/faq/orthanc-ids.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/orthanc-ids.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -41,7 +41,7 @@
 
 The actual implementation of the hashing is carried on by the
 `DicomInstanceHasher class
-<https://bitbucket.org/sjodogne/orthanc/src/default/Core/DicomFormat/DicomInstanceHasher.cpp>`_.
+<https://hg.orthanc-server.com/orthanc/file/default/Core/DicomFormat/DicomInstanceHasher.cpp>`_.
 
 
 The "Inexistent Tag" error
--- a/Sphinx/source/faq/orthanc-storage.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/orthanc-storage.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -59,9 +59,9 @@
 database schema is kept as simple as possible, and can be found in the
 following two files of the source code of Orthanc:
 `PrepareDatabase.sql
-<https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/OrthancServer/Database/PrepareDatabase.sql>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/OrthancServer/Database/PrepareDatabase.sql>`__
 and `InstallTrackAttachmentsSize.sql
-<https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/OrthancServer/Database/InstallTrackAttachmentsSize.sql>`__.
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/OrthancServer/Database/InstallTrackAttachmentsSize.sql>`__.
 
 
 Direct access
--- a/Sphinx/source/faq/proprietary.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/proprietary.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -49,7 +49,7 @@
 Finally, if you need to complement the commercial services of your
 official supplier, please note that you can also contact a company
 that provides **commercial support on the top of Orthanc**. Currently,
-`Osimis <http://osimis.io/>`_ is the only company ensuring such
+`Osimis <https://www.osimis.io/>`_ is the only company ensuring such
 corporate services, but others might show up in the future. A `contact
-form <http://www.orthanc-server.com/orthanc-pro.php>`_ is available on
-the official Web page of Orthanc.
+form <https://www.orthanc-server.com/orthanc-pro.php>`_ is available
+on the official Web page of Orthanc.
--- a/Sphinx/source/faq/rest-samples.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/rest-samples.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -10,11 +10,11 @@
   dedicated section <rest-advanced>`.
 * Many working examples written in Python are `available in the source
   distribution
-  <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/>`__.
+  <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/>`__.
 * If you cannot find an example for some feature in this manual or in
   the Python examples, please check the `publicly available
   integration tests
-  <https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__
+  <https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__
   that span most of the REST API.
 * Samples for the deprecated APIs are available below.
 
@@ -50,7 +50,7 @@
 
 *Note:* This API has been superseded by the ``/modalities/.../query``
 URI. Please check the ``test_rest_query_retrieve`` `integration test
-<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__.
+<https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__.
 
 
 Using Orthanc to Ease WADO Querying (Deprecated)
@@ -85,4 +85,4 @@
 
 *Note:* This API has been superseded by the ``/modalities/.../query``
 URI. Please check the ``test_rest_query_retrieve`` `integration test
-<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__.
+<https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__.
--- a/Sphinx/source/faq/supported-images.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/supported-images.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -5,7 +5,7 @@
 
 Orthanc can **receive/store/send** any kind of standard DICOM files
 (cf. the `DICOM conformance statement
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/DicomConformanceStatement.txt>`__).
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/DicomConformanceStatement.txt>`__).
 Note that the ``UnknownSopClassAccepted`` :ref:`configuration option
 <configuration>` can be set to `true` if interfacing with modalities
 that are producing non-standard SOP classes.
@@ -32,7 +32,7 @@
 also be displayed from Orthanc Explorer.
 
 Other type of encodings are available in the `Web viewer plugin
-<http://www.orthanc-server.com/static.php?page=web-viewer>`__, that
+<https://www.orthanc-server.com/static.php?page=web-viewer>`__, that
 mostly supports whatever is supported by the well-known `GDCM toolkit
 <https://sourceforge.net/projects/gdcm/>`__ by Mathieu Malaterre. Note
 however that multiframe (notably cine) DICOM instances are currently
--- a/Sphinx/source/faq/transcoding.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/transcoding.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -13,7 +13,7 @@
 
 Adding support for transcoding is one of the features that is pending
 on `our roadmap
-<https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__, and for which 
+<https://hg.orthanc-server.com/orthanc/file/default/TODO>`__, and for which 
 we are looking for industrial sponsors.
 
 
@@ -108,7 +108,7 @@
 ``OrthancPluginRegisterOnStoredInstanceCallback()`` function). A
 sample Lua script that converts every incoming DICOM file to the
 JPEG2k transfer syntax is `part of the Orthanc sources
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/AutomatedJpeg2kCompression.lua>`__.
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/AutomatedJpeg2kCompression.lua>`__.
 
 
 Finally, as a fourth solution, it is possible to **combine two Orthanc
--- a/Sphinx/source/faq/troubleshooting.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/troubleshooting.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -5,7 +5,7 @@
 
 As a general rule, when you encounter an issue, always make sure that
 you use the `most recent version
-<http://www.orthanc-server.com/download.php>`__ of Orthanc.
+<https://www.orthanc-server.com/download.php>`__ of Orthanc.
 
 Also make a search on the `Orthanc Users discussion group
 <https://groups.google.com/forum/#!forum/orthanc-users>`__, and make a
@@ -65,14 +65,14 @@
 
 * **Orthanc slows down if storing many files**: The default database
   engine that is built in Orthanc is `SQLite
-  <https://www.sqlite.org/>`__. As SQLite is above all a lightweight
-  database engine, it is not designed to `store very large datasets
-  <https://www.sqlite.org/whentouse.html>`__. If you are sure that you
-  have properly disabled run-time debug assertions (cf. above), but
-  still experience degradation in performance over time, you should
-  seriously consider switching to a more scalable database engine. To
-  this end, you can notably check out the :ref:`official PostgreSQL
-  plugin <postgresql>`.
+  <https://www.sqlite.org/index.html>`__. As SQLite is above all a
+  lightweight database engine, it is not designed to `store very large
+  datasets <https://www.sqlite.org/whentouse.html>`__. If you are sure
+  that you have properly disabled run-time debug assertions
+  (cf. above), but still experience degradation in performance over
+  time, you should seriously consider switching to a more scalable
+  database engine. To this end, you can notably check out the
+  :ref:`official PostgreSQL plugin <postgresql>`.
 
   As a rule of thumb, the performance of the default SQLite engine
   built in Orthanc should run fine up to about 50,000 DICOM instances.
@@ -94,9 +94,9 @@
 
   - As an alternative, you can disable IPv6 support. This is a
     Windows-specific problem that is discussed `here
-    <http://superuser.com/questions/43823/google-chrome-is-slow-to-localhost>`__
+    <https://superuser.com/questions/43823/google-chrome-is-slow-to-localhost>`__
     and `here
-    <http://stackoverflow.com/questions/1726585/firefox-and-chrome-slow-on-localhost-known-fix-doesnt-work-on-windows-7>`__.
+    <https://stackoverflow.com/questions/1726585/firefox-and-chrome-slow-on-localhost-known-fix-doesnt-work-on-windows-7>`__.
 
 * If you experience **slow DICOM transfers under GNU/Linux**, please
   read the `following bug report
@@ -106,7 +106,7 @@
   advantage of this patch, you need to statically link Orthanc against
   DCMTK by using the ``-DUSE_SYSTEM_DCMTK=OFF`` flag `when invoking
   CMake
-  <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`__.
+  <https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`__.
 
 Checking DICOM file integrity
 -----------------------------
@@ -136,9 +136,9 @@
 * If **Orthanc crashes when handling one large DICOM file**, this most
   probably indicates a memory allocation error. Indeed, the `official
   Windows binaries
-  <http://www.orthanc-server.com/download-windows.php>`__ are compiled
+  <https://www.orthanc-server.com/download-windows.php>`__ are compiled
   using a 32bit compiler. As a consequence, Orthanc only has access to
   less than 4GB of RAM. If this is an important limitation for you,
   precompiled command-line versions of Orthanc for Windows 64bit are
   available courtesy of `Osimis
-  <http://www.osimis.io/en/download.html>`__.
+  <https://www.osimis.io/en/download.html>`__.
--- a/Sphinx/source/faq/video.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/video.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -20,10 +20,10 @@
 distinction is also discussed in :ref:`another FAQ entry
 <supported-images>`.
 
-If you also want to **play** the videos, the `Osimis WebViewer plugin
-<https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ is able to play
-H.264 (MPEG4) videos and 2D+t (cine) sequences but not MPEG2 videos that
-currently can not be played by Web browsers. 
+If you also want to **play** the videos, the :ref:`Osimis Web Viewer
+plugin <osimis_webviewer>` is able to play H.264 (MPEG4) videos and
+2D+t (cine) sequences but not MPEG2 videos that currently can not be
+played by Web browsers.
 
 If your video is a 2D+t (cine) sequence, Orthanc can also display it inside 
 a Web browser by at least 2 different means:
@@ -32,7 +32,7 @@
    Explorer <orthanc-explorer>` is able to display the individual
    frames and manually navigate between them through keyboard.
 2. The official `Web viewer plugin
-   <http://www.orthanc-server.com/static.php?page=web-viewer>`__ will
+   <https://www.orthanc-server.com/static.php?page=web-viewer>`__ will
    allow you to use the mouse scroll wheel to display the successive
    frames of the video.
 
--- a/Sphinx/source/faq/viewers.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/viewers.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -14,24 +14,24 @@
 <mailto:s.jodogne@orthanc-labs.com>`__ about other compatible FOSS):
 
 * `Open Health Imaging Foundation (OHIF) <https://docs.ohif.org/>`__.
-* `Horos <https://www.horosproject.org/>`__.
-* `Gingko CADx <https://www.ginkgo-cadx.com/>`__ (a
+* `Horos <https://horosproject.org/>`__.
+* `Gingko CADx <http://ginkgo-cadx.com/en/>`__ (a
   :ref:`configuration guide <ginkgo-cadx>` is available).
 * `3D Slicer <https://www.slicer.org/>`__.
 * `medInria <https://med.inria.fr/>`__.
 * `Aeskulap <https://github.com/pipelka/aeskulap>`__.
-* `OsiriX <http://www.osirix-viewer.com/>`__ (note however that the
+* `OsiriX <https://www.osirix-viewer.com/>`__ (note however that the
   openness of this particular software is `currently subject to
   discussion
-  <http://blog.purview.net/an-open-letter-to-the-osirix-community>`__).
+  <https://www.purview.net/blog/an-open-letter-to-the-osirix-community>`__).
 
 Make also sure to check out the following extensions to Orthanc:
 
-* `Orthanc Web viewer plugin <http://www.orthanc-server.com/static.php?page=web-viewer>`__.
+* `Orthanc Web viewer plugin <https://www.orthanc-server.com/static.php?page=web-viewer>`__.
 * `Osimis Web viewer plugin (Advanced version of the Orthanc Web viewer)
   <https://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__.
-* `ImageJ extension <http://www.orthanc-server.com/static.php?page=imagej>`__.
-* `Stone of Orthanc <http://www.orthanc-server.com/static.php?page=stone>`__.
+* `ImageJ extension <https://www.orthanc-server.com/static.php?page=imagej>`__.
+* `Stone of Orthanc <https://www.orthanc-server.com/static.php?page=stone>`__.
 * `dwv-orthanc-plugin
   <https://github.com/ivmartel/dwv-orthanc-plugin>`__ by Yves
   Martelli, that embeds `dwv
--- a/Sphinx/source/faq/why-orthanc.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/why-orthanc.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -1,10 +1,9 @@
 Why "Orthanc"?
 ==============
 
-The spelling "`Orthanc
-<https://en.wikipedia.org/wiki/Orthanc#Orthanc>`__" originates from
-`J.R.R. Tolkien <https://en.wikipedia.org/wiki/J._R._R._Tolkien>`__'s
-work.
+The spelling "`Orthanc <https://en.wikipedia.org/wiki/Isengard>`__"
+originates from `J.R.R. Tolkien
+<https://en.wikipedia.org/wiki/J._R._R._Tolkien>`__'s work.
 
 Orthanc is the black tower of Isengard that houses one of the
 **palantíri**. A `palantír
--- a/Sphinx/source/faq/worklist.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/faq/worklist.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -24,10 +24,10 @@
 distribution of Orthanc to serve the worklists stored in some folder
 on the filesystem. This sample plugin mimics the behavior of the
 ``wlmscpfs`` command-line tool from the `DCMTK software
-<http://support.dcmtk.org/docs/wlmscpfs.html>`__.
+<https://support.dcmtk.org/docs/wlmscpfs.html>`__.
 
 For more complex or integrated workflows where you must implement a
 custom MWL plugin, please check the `documentation of the part of the
 Orthanc plugin SDK
-<http://sdk.orthanc-server.com/group__DicomCallbacks.html#ga23080c4e871b8428ede61d9841c10d76>`__
+<https://sdk.orthanc-server.com/group__DicomCallbacks.html#ga23080c4e871b8428ede61d9841c10d76>`__
 that is related to the management of worklists.
--- a/Sphinx/source/index.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/index.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -8,7 +8,7 @@
 
 This site documents Orthanc. If you want to access more general
 information about Orthanc, please go to the `official Web site
-<http://www.orthanc-server.com>`_.
+<https://www.orthanc-server.com>`_.
 
 
 Contents
--- a/Sphinx/source/plugins.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -70,7 +70,7 @@
 
 * `AWS S3 storage plugin
   <https://github.com/radpointhq/orthanc-s3-storage>`__: This plugin
-  by `Radpoint <https://www.radpoint.pl/>`__ makes Orthanc store its
+  by `Radpoint <https://radpoint.pl/>`__ makes Orthanc store its
   DICOM files into an `Amazon S3 bucket
   <https://en.wikipedia.org/wiki/Amazon_S3>`__.
 * `DWV Orthanc Plugin
@@ -80,7 +80,7 @@
   Web viewer of DICOM images.
 * Another Web viewer is provided courtesy of `Emsy Chan
   <https://groups.google.com/d/msg/orthanc-users/EC5Z2KaM4Hs/MG3KkzhCDAAJ>`__.
-* `VPI Reveal <http://www.vpireveal.com/>`__ provides a plugin to
+* `VPI Reveal <https://www.vpireveal.com/>`__ provides a plugin to
   "write the DICOM records in a normal Windows-readable file hierarchy
   (patient-study-series-DICOM file) at a location called
   ``VPIStorage`` that can then be imported into VPI Reveal."  `Check
@@ -97,5 +97,5 @@
   might contain plugins that are not tracked in this list.
 
 *Remark:* Do not hesitate to `contact us
-<http://www.orthanc-server.com/static.php?page=contact>`__ if you have
+<https://www.orthanc-server.com/static.php?page=contact>`__ if you have
 developed a plugin so that we can promote it in the list above!
--- a/Sphinx/source/plugins/authorization.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/authorization.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -13,8 +13,8 @@
 set to ``403`` (Forbidden).
 
 The `source code of this plugin
-<https://bitbucket.org/osimis/orthanc-authorization>`__ is freely
-available under the terms of the AGPLv3 license.
+<https://hg.orthanc-server.com/orthanc-authorization/file/tip>`__ is
+freely available under the terms of the AGPLv3 license.
 
 
 Compilation
@@ -183,7 +183,7 @@
   the cache entry will never expire.
 
 **Note:** The source code of the plugin contains a `basic example
-<https://bitbucket.org/osimis/orthanc-authorization/src/default/Resources/TestService.js>`__
+<https://hg.orthanc-server.com/orthanc-authorization/file/tip/Resources/TestService.js>`__
 of such a Web service written in node.js.
 
 
--- a/Sphinx/source/plugins/dicomweb.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/dicomweb.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -15,11 +15,11 @@
 into a **DICOMweb client**.
 
 For general information, check out the `official homepage of the
-plugins <http://www.orthanc-server.com/static.php?page=dicomweb>`__.
+plugins <https://www.orthanc-server.com/static.php?page=dicomweb>`__.
 
 The full standard is not implemented yet, the supported features are
 `tracked in the repository
-<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Status.txt>`__.
+<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Status.txt>`__.
 
 
 Compilation
@@ -39,16 +39,16 @@
 The compilation will produce a shared library ``OrthancDicomWeb`` that
 contains the DICOMweb plugin. Pre-compiled binaries for Microsoft
 Windows `are also available
-<http://www.orthanc-server.com/browse.php?path=/plugin-dicom-web>`__,
+<https://www.orthanc-server.com/browse.php?path=/plugin-dicom-web>`__,
 and are included in the `Windows installers
 <https://www.orthanc-server.com/download-windows.php>`__.  A package
 for `Apple's Mac OS X
-<http://localhost/~jodogne/orthanc/static.php?page=download-mac>`__ is
-available courtesy of `Osimis <http://osimis.io/>`__.
+<https://www.orthanc-server.com/static.php?page=download-mac>`__ is
+available courtesy of `Osimis <https://www.osimis.io/>`__.
 
 *Remark:* Some older build instructions are also available in the
 `source distribution
-<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/BuildInstructions.txt>`__.
+<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/BuildInstructions.txt>`__.
 
 
 Installation
@@ -388,8 +388,8 @@
 
 Here is a direct link to the DICOMweb client running on our demo
 server:
-`http://demo.orthanc-server.com/dicom-web/app/client/index.html
-<http://demo.orthanc-server.com/dicom-web/app/client/index.html>`__
+`https://demo.orthanc-server.com/dicom-web/app/client/index.html
+<https://demo.orthanc-server.com/dicom-web/app/client/index.html>`__
 
 
 
@@ -399,7 +399,8 @@
 Once your Orthanc server is properly configured (see above), you can
 make REST calls to the API of the DICOMweb server. For demonstration
 purpose, this section makes the assumption that the ``VIX`` dataset
-provided by `OsiriX <http://www.osirix-viewer.com/datasets/>`__ has
+provided by `OsiriX
+<https://www.osirix-viewer.com/resources/dicom-image-library/>`__ has
 been uploaded to Orthanc.
 
 WADO-URI
@@ -536,7 +537,8 @@
 <https://en.wikipedia.org/wiki/Percent-encoding>`__.
 
 An user-friendly reference of the features available in QIDO-RS and
-WADO-RS `can be found on this site <http://www.dicomweb.org/>`__.
+WADO-RS `can be found on this site
+<https://www.dicomstandard.org/dicomweb/>`__.
 
 
 Sending DICOM resources to a STOW-RS server
@@ -649,12 +651,12 @@
 
 Samples of how to call DICOMweb services from standalone applications
 are available for `Python
-<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/Samples/Python/>`__
+<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/Samples/Python>`__
 and for `JavaScript
-<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/Samples/JavaScript>`__.
+<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/Samples/JavaScript>`__.
 
 Integration tests are `available separately
-<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Plugins/DicomWeb/Run.py>`__,
+<https://hg.orthanc-server.com/orthanc-tests/file/tip/Plugins/DicomWeb/Run.py>`__,
 and provide samples for more advanced features of the REST API (such
 as dynamically adding/updating/removing remote DICOMweb servers using
 HTTP PUT and DELETE methods).
--- a/Sphinx/source/plugins/google-cloud-platform.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/google-cloud-platform.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -11,8 +11,8 @@
 ------------
 
 Osimis freely provides the `source code
-<https://bitbucket.org/osimis/orthanc-gcp/src>`__ of a plugin to
-interface Orthanc with the Healthcare API of `Google Cloud Platform
+<https://hg.orthanc-server.com/orthanc-gcp/file/tip/>`__ of a plugin
+to interface Orthanc with the Healthcare API of `Google Cloud Platform
 (GCP) <https://en.wikipedia.org/wiki/Google_Cloud_Platform>`__ through
 `DICOMweb <https://www.dicomstandard.org/dicomweb/>`__.
 
@@ -58,7 +58,7 @@
 The compilation produces a shared library
 ``OrthancGoogleCloudPlatform`` that contains the GCP
 plugin. Pre-compiled binaries for Microsoft Windows `are available
-<http://www.orthanc-server.com/browse.php?path=/plugin-google-cloud>`__,
+<https://www.orthanc-server.com/browse.php?path=/plugin-google-cloud>`__,
 and are included in the `Windows installers
 <https://www.orthanc-server.com/download-windows.php>`__.
 
@@ -125,14 +125,14 @@
 ^^^^^^^^^^^^^^^
 
 As explained on the `Google documentation
-<https://cloud.google.com/docs/authentication/#service_accounts>`__,
-*"a service account is a Google account that represents an
-application, as opposed to representing an end user"*. This is
-presumably the most common situation in the case of Orthanc.
+<https://cloud.google.com/docs/authentication>`__, *"a service account
+is a Google account that represents an application, as opposed to
+representing an end user"*. This is presumably the most common
+situation in the case of Orthanc.
 
 You first have to `create a service account
-<https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account>`__
-for your application. This will produce a JSON file (say,
+<https://cloud.google.com/docs/authentication/getting-started>`__ for
+your application. This will produce a JSON file (say,
 ``dicom-osimis.json``) that you have to store securely on the server
 that will run Orthanc.
 
@@ -173,7 +173,7 @@
 User account is an alternative to service account, and can be used
 *"when the application needs to access resources on behalf of an end
 user"* (check out the `Google documentation
-<https://cloud.google.com/docs/authentication/#user_accounts>`__).
+<https://cloud.google.com/docs/authentication/end-user>`__).
 
 .. highlight:: json
 
--- a/Sphinx/source/plugins/mysql.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/mysql.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -11,7 +11,7 @@
 by a MySQL or a MariaDB database.
 
 For general information, check out the `official homepage of the
-plugins <http://www.orthanc-server.com/static.php?page=mysql>`__.
+plugins <https://www.orthanc-server.com/static.php?page=mysql>`__.
 
 **Warning:** According to `this thread on our discussion group
 <https://groups.google.com/d/msg/orthanc-users/yV3LSTh_TjI/Fb4ShaYMBAAJ>`__,
@@ -47,7 +47,7 @@
 ^^^^^^^^^^^^^^^^^
 
 Pre-compiled binaries for Microsoft Windows `are also available
-<http://www.orthanc-server.com/browse.php?path=/plugin-mysql>`__.
+<https://www.orthanc-server.com/browse.php?path=/plugin-mysql>`__.
 
 
 Dynamic linking on Ubuntu 16.04
@@ -161,7 +161,7 @@
 
 By default, the plugins lock the database (using `MySQL/MariaDB
 "GET_LOCK()"
-<https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_get-lock>`__)
+<https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html>`__)
 to prevent other instances of Orthanc from using the same database. If
 you want several instances of Orthanc to share the same database, set
 the ``Lock`` option to ``false`` in the configuration file.
--- a/Sphinx/source/plugins/osimis-webviewer.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/osimis-webviewer.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -11,9 +11,9 @@
 viewer plugin <webviewer>`. The Osimis plugin adds tools for
 measuring, for viewing multiple series, and for split-pane.
 
-For general information, check out the `official homepage of the
-plugin
-<http://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__.
+For general information and a demonstration, check out the `official
+homepage of the plugin
+<https://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__.
 Also `check out the source code
 <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__.
 
@@ -107,7 +107,7 @@
   of the sets of codecs supported by the `DICOM standard
   <http://dicom.nema.org/medical/dicom/current/output/chtml/part05/PS3.5.html>`__
   and those supported by the `web browsers
-  <https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats>`__.
+  <https://developer.mozilla.org/en-US/docs/Web/Media/Formats>`__.
   In short, this mostly comes down to just MPEG-4.
   
 - **Where are the annotations stored ?**
--- a/Sphinx/source/plugins/postgresql.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/postgresql.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -11,7 +11,7 @@
 by a PostgreSQL database.
 
 For general information, check out the `official homepage of the
-plugins <http://www.orthanc-server.com/static.php?page=postgresql>`__.
+plugins <https://www.orthanc-server.com/static.php?page=postgresql>`__.
 
 
 
@@ -42,10 +42,10 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Pre-compiled binaries for Microsoft Windows `are also available
-<http://www.orthanc-server.com/browse.php?path=/plugin-postgresql>`__.
+<https://www.orthanc-server.com/browse.php?path=/plugin-postgresql>`__.
 A package for `Apple's Mac OS X
-<http://www.osimis.io/en/download.html>`__
-is available courtesy of `Osimis <http://osimis.io/>`__.
+<https://www.osimis.io/en/download.html>`__
+is available courtesy of `Osimis <https://www.osimis.io/>`__.
 
 
 .. _postgresql-ubuntu1604:
@@ -88,7 +88,8 @@
 In such a situation, please add your version of PostgreSQL to the
 macro ``PostgreSQL_ADDITIONAL_VERSIONS`` that is defined at the end of
 the `Resources/CMake/PostgreSQLConfiguration.cmake file
-<https://bitbucket.org/sjodogne/orthanc-databases/src/default/Resources/CMake/PostgreSQLConfiguration.cmake>`__ in the sources of the project.
+<https://hg.orthanc-server.com/orthanc-databases/file/tip/Resources/CMake/PostgreSQLConfiguration.cmake>`__
+in the sources of the project.
   
   
 Usage
@@ -100,7 +101,7 @@
 version above 0.9.5. You then have to **create a database** dedicated
 to Orthanc on some PostgreSQL server. Please refer to the `PostgreSQL
 documentation
-<https://www.postgresql.org/docs/current/static/tutorial-createdb.html>`__.
+<https://www.postgresql.org/docs/current/tutorial-createdb.html>`__.
 
 Once Orthanc is installed and the database is created, you must add a
 section in the :ref:`configuration file <configuration>` that
@@ -180,7 +181,7 @@
 
 Instead of specifying explicit authentication parameters, you can also
 use the `PostgreSQL connection URIs syntax
-<https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING>`__. For
+<https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING>`__. For
 instance::
 
   {
@@ -199,7 +200,7 @@
 
 **Remark:** The Debian Med project maintains `another useful set of
 instructions
-<https://anonscm.debian.org/viewvc/debian-med/trunk/packages/orthanc-postgresql/trunk/debian/README.Debian?view=markup>`__.
+<https://salsa.debian.org/med-team/orthanc-postgresql/-/blob/master/debian/README.Debian>`__.
 
 
 Advanced options
@@ -218,7 +219,7 @@
 
 By default, the plugins lock the database (using `PostgreSQL advisory
 locks
-<https://www.postgresql.org/docs/current/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS>`__)
+<https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS>`__)
 to prevent other instances of Orthanc from using the same PostgreSQL
 database. If you want several instances of Orthanc to share the same
 database, set the ``Lock`` option to ``false`` in the configuration
@@ -280,5 +281,5 @@
 
 This is due to a timeout in the PostgreSQL server. Please make sure to
 `enable keep-alive
-<http://dba.stackexchange.com/questions/97534/is-there-a-timeout-option-for-remote-access-to-postgresql-database>`__
+<https://dba.stackexchange.com/questions/97534/is-there-a-timeout-option-for-remote-access-to-postgresql-database>`__
 in the configuration of your PostgreSQL server
--- a/Sphinx/source/plugins/python.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/python.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -6,17 +6,163 @@
 
 .. contents::
 
-Work-in-progress.
+Overview
+--------
+   
+This plugin can be used to write :ref:`Orthanc plugins
+<creating-plugins>` using the `Python programming language
+<https://en.wikipedia.org/wiki/Python_(programming_language)>`__
+instead of the more complex C/C++ programming languages.
 
-The Python API is automatically generated from the `Orthanc plugin SDK
-in C
+Python plugins have access to more features and a more consistent SDK
+than :ref:`Lua scripts <lua>`. The Python API is automatically
+generated from the `Orthanc plugin SDK in C
 <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.5.7/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
-front-end.  The coverage of the C SDK is about 75% (105 functions are
-automatically wrapped in Python out of a total of 139 functions in C).
+front-end.
+
+As of initial release 1.0 of the plugin, the coverage of the C SDK is
+about 75% (105 functions are automatically wrapped in Python out of a
+total of 139 functions in the Orthanc SDK 1.5.7).
+
+Licensing
+---------
+
+Pay attention to the fact that this plugin is licensed under the terms
+of the `AGPL license
+<https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__.
+
+This has an important consequence: If you distribute Orthanc to
+clients together with one Python script, or if you put an Orthanc
+server equipped with one Python script on a Web portal, you **must**
+disclose the source code of your Python script to the Orthanc
+community under the terms of the AGPL license.
+
+We suggest you to put the source code of your Python scripts on the
+dedicated `"OrthancContributed" repository on GitHub
+<https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__,
+and/or to send it to the `Orthanc Users
+<https://groups.google.com/forum/#!forum/orthanc-users>`__ discussion
+group.
+
+Check out the :ref:`FAQ about licensing <licensing>` for more context.
+
+
+Usage
+-----
+
+Docker
+......
+
+.. highlight:: json
+
+The most direct way of starting Orthanc together with the Python
+plugin is through :ref:`Docker <docker>`. Let's create the file
+``/tmp/hello.py`` that contains the following basic Python script::
+
+  print('Hello world!')
+
+.. highlight:: json
+
+Let's also create the file ``/tmp/orthanc.json`` that contains the
+following minimal :ref:`configuration for Orthanc <configuration>`::
+                 
+  {
+    "StorageDirectory" : "/var/lib/orthanc/db",
+    "RemoteAccessAllowed" : true,
+    "Plugins" : [ 
+      "/usr/local/share/orthanc/plugins"
+    ],
+    "PythonScript" : "/etc/orthanc/hello.py"
+  }
+    
+.. highlight:: bash
+
+Given these two files, Orthanc can be started as follows::
+               
+  $ docker run -p 4242:4242 -p 8042:8042 --rm \
+    -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro \
+    -v /tmp/hello.py:/etc/orthanc/hello.py:ro \
+    jodogne/orthanc-python
+
+.. highlight:: text
+
+You'll see the following excerpt in the log, which indicates that the Python plugin is properly loaded::
 
-This provides much more flexibility than the Lua scripts.
+  W0331 15:48:12.990661 PluginsManager.cpp:269] Registering plugin 'python' (version mainline)
+  W0331 15:48:12.990691 PluginsManager.cpp:168] Python plugin is initializing
+  W0331 15:48:12.990743 PluginsManager.cpp:168] Using Python script "hello.py" from directory: /etc/orthanc
+  W0331 15:48:12.990819 PluginsManager.cpp:168] Program name: /usr/local/sbin/Orthanc
+  Hello world!
+
+
+Compiling from source
+.....................
+
+.. highlight:: bash
+
+The procedure to compile this plugin from source is similar to that
+for the :ref:`core of Orthanc <compiling>`. The following commands
+should work for most UNIX-like distribution (including GNU/Linux)::
+
+  $ mkdir Build
+  $ cd Build
+  $ cmake .. -DPYTHON_VERSION=3.7 -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release
+  $ make
+
+Before running CMake, make sure that the Python interpreter and its
+associated development library are installed. On Ubuntu 18.04 LTS, you
+would for instance install packages ``libpython3.7-dev`` and
+``python3.7``.
+   
+The compilation will produce the shared library ``OrthancPython``,
+that can be loaded by properly setting the ``Plugins``
+:ref:`configuration option <configuration>` of Orthanc.
 
+**Warning:** The shared library is only compatible with the Python
+interpreter whose version corresponds to the value of the
+``PYTHON_VERSION`` argument that was given to CMake.
+     
+  
+Microsoft Windows
+.................
+
+Pre-compiled binaries for Microsoft Windows `are also available
+<https://www.orthanc-server.com/browse.php?path=/plugin-python>`__.
+
+Beware that one version of the Python plugin can only be run against
+one version of the Python interpreter. This version is clearly
+indicated in the name of the folder.
+
+As of release 1.0, the Orthanc project only provides pre-compiled
+binaries for Microsoft Windows 32bit and Python 2.7. Even though this
+version of Python is not supported anymore, it can still run on all
+the versions of Microsoft Windows that have been released for more
+than 10 years.
+
+.. highlight:: text
+
+You are of course free to compile the plugin from sources if you need
+a more recent version. You'll have to explicitly specify the path to
+your Python installation while invoking CMake. For instance::
+
+  C:\orthanc-python\Build> cmake .. -DPYTHON_VERSION=2.7 -DPYTHON_WINDOWS_ROOT=C:/Python27 \
+                                    -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 2017"
+
+
+Configuration options
+---------------------
+
+The only two configuration options that are available for this plugin
+are the following:
+
+* ``PythonScript`` indicates where the Python script is located.  If
+  this configuration option is not provided, the Python plugin is not
+  started.
+
+* ``PythonVerbose`` is a Boolean value to make the Python interpreter
+  verbose.
+  
 
 Samples
 -------
@@ -167,8 +313,8 @@
   orthanc.RegisterOnChangeCallback(OnChange)
 
 
-Render a thumbnail using PIL/Pillow
-...................................
+Rendering a thumbnail using PIL/Pillow
+......................................
 
 .. highlight:: python
 
@@ -200,3 +346,157 @@
           output.SendMethodNotAllowed('GET')
 
   orthanc.RegisterRestCallback('/pydicom/(.*)', DecodeInstance)  # (*)
+
+
+Performance and concurrency
+---------------------------
+
+.. highlight:: python
+
+Let us consider the following sample Python script that makes a
+CPU-intensive computation on a REST callback::
+
+  import math
+  import orthanc
+  import time
+
+  # CPU-intensive computation taking about 4 seconds
+  def SlowComputation():
+      start = time.time()
+      for i in range(1000):
+          for j in range(30000):
+              math.sqrt(float(j))
+      end = time.time()
+      duration = (end - start)
+      return 'computation done in %.03f seconds\n' % duration
+
+  def OnRest(output, uri, **request):
+      answer = SlowComputation()
+      output.AnswerBuffer(answer, 'text/plain')
+
+  orthanc.RegisterRestCallback('/computation', OnRest)
+
+
+.. highlight:: text
+
+Calling this REST route from the command-line returns the time that is
+needed to compute 30 million times a squared root on your CPU::
+
+  $ curl http://localhost:8042/computation
+  computation done in 4.208 seconds
+
+Now, let us call this route three times concurrently (we use bash)::
+
+  $ (curl http://localhost:8042/computation & curl http://localhost:8042/computation & curl http://localhost:8042/computation )
+  computation done in 11.262 seconds
+  computation done in 12.457 seconds
+  computation done in 13.360 seconds
+
+As can be seen, the computation time has tripled. This means that the
+computations were not distributed across the available CPU cores.
+This might seem surprising, as Orthanc is a threaded server (in
+Orthanc, a pool of C++ threads serves concurrent requests).
+
+The explanation is that the Python interpreter (`CPython
+<https://en.wikipedia.org/wiki/CPython>`__ actually) is built on the
+top of a so-called `Global Interpreter Lock (GIL)
+<https://en.wikipedia.org/wiki/Global_interpreter_lock>`__. The GIL is
+basically a mutex that protects all the calls to the Python
+interpreter. If multiple C++ threads from Orthanc call a Python
+callback, only one can proceed at any given time. Note however that
+the GIL only applies to the Python script: The baseline REST API of
+Orthanc is not affected by the GIL.
+
+.. highlight:: python
+
+The solution is to use the `multiprocessing primitives
+<https://docs.python.org/3/library/multiprocessing.html>`__ of Python.
+The "master" Python interpreter that is initially started by the
+Orthanc plugin, can start several `children processes
+<https://en.wikipedia.org/wiki/Process_(computing)>`__, each of these
+processes running a separate Python interpreter. This allows to
+offload intensive computations from the "master" Python interpreter of
+Orthanc onto those "slave" interpreters. The ``multiprocessing``
+library is actually quite straightforward to use::
+
+  import math
+  import multiprocessing
+  import orthanc
+  import signal
+  import time
+
+  # CPU-intensive computation taking about 4 seconds
+  # (same code as above)
+  def SlowComputation():
+      start = time.time()
+      for i in range(1000):
+          for j in range(30000):
+              math.sqrt(float(j))
+      end = time.time()
+      duration = (end - start)
+      return 'computation done in %.03f seconds\n' % duration
+
+  # Ignore CTRL+C in the slave processes
+  def Initializer():
+      signal.signal(signal.SIGINT, signal.SIG_IGN)
+
+  # Create a pool of 4 slave Python interpreters
+  POOL = multiprocessing.Pool(4, initializer = Initializer)
+
+  def OnRest(output, uri, **request):
+      # Offload the call to "SlowComputation" onto one slave process.
+      # The GIL is unlocked until the slave sends its answer back.
+      answer = POOL.apply(SlowComputation)
+      output.AnswerBuffer(answer, 'text/plain')
+
+  orthanc.RegisterRestCallback('/computation', OnRest)
+
+.. highlight:: text
+
+Here is now the result of calling this route three times concurrently::
+
+  $ (curl http://localhost:8042/computation & curl http://localhost:8042/computation & curl http://localhost:8042/computation )
+  computation done in 4.211 seconds
+  computation done in 4.215 seconds
+  computation done in 4.225 seconds
+
+As can be seen, the calls to the Python computation now fully run in
+parallel (the time is cut down from 12 seconds to 4 seconds, the same
+as for one isolated request).
+
+Note also how the ``multiprocessing`` library allows to make a fine
+control over the computational resources that are available to the
+Python script: The number of "slave" interpreters can be easily
+changed in the constructor of the ``multiprocessing.Pool`` object, and
+are fully independent of the threads used by the Orthanc server.
+
+.. highlight:: python
+
+Very importantly, pay attention to the fact that only the "master"
+Python interpreter has access to the Orthanc SDK. For instance, here
+is how you would parse a DICOM file in a slave process::
+
+  import pydicom
+  import io
+
+  def OffloadedDicomParsing(dicom):
+      # No access to the "orthanc" library here, as we are in the slave process
+      dataset = pydicom.dcmread(io.BytesIO(dicom))
+      return str(dataset)
+
+  def OnRest(output, uri, **request):
+      # The call to "orthanc.RestApiGet()" is only possible in the master process
+      dicom = orthanc.RestApiGet('/instances/19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5/file')
+      answer = POOL.apply(OffloadedDicomParsing, args = (dicom, ))
+      output.AnswerBuffer(answer, 'text/plain')
+      
+Communication primitives such as ``multiprocessing.Queue`` are
+available to exchange messages from the "slave" Python interpreters to
+the "master" Python interpreter if further calls to the Orthanc SDK
+are required.
+
+Obviously, an in-depth discussion about the ``multiprocessing``
+library is out of the scope of this document. There are many
+references available on Internet. Also, note that ``multithreading``
+is not useful here, as Python multithreading is also limited by the
+GIL, and is more targeted at dealing with costly I/O operations.
--- a/Sphinx/source/plugins/serve-folders.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/serve-folders.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -12,7 +12,7 @@
  
 The source code of this sample plugin is `available in the source
 distribution of Orthanc
-<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ServeFolders/>`__
+<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ServeFolders/>`__
 (GPLv3+ license).
 
 
--- a/Sphinx/source/plugins/transfers.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/transfers.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -7,7 +7,7 @@
 .. contents::
 
 Osimis provides a `transfers accelerator plugin
-<https://bitbucket.org/sjodogne/orthanc-transfers/src>`__ whose
+<https://hg.orthanc-server.com/orthanc-transfers/file/tip>`__ whose
 purpose is to speed up the transfers of DICOM instances over networks
 (with respect to the native DICOM protocol or to the built-in
 :ref:`Orthanc peers <peers>` mechanism).
@@ -84,7 +84,7 @@
 ^^^^^^^^^^^^^^^^^
 
 Pre-compiled binaries for Microsoft Windows `are available
-<http://www.orthanc-server.com/browse.php?path=/plugin-transfers>`__.
+<https://www.orthanc-server.com/browse.php?path=/plugin-transfers>`__.
 
 
 Dynamic linking on Ubuntu 16.04
--- a/Sphinx/source/plugins/webviewer.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/webviewer.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -9,7 +9,7 @@
 This **official** plugin extends Orthanc with a Web viewer of medical images.
 
 For general information, check out the `official homepage of the
-plugin <http://www.orthanc-server.com/static.php?page=web-viewer>`__.
+plugin <https://www.orthanc-server.com/static.php?page=web-viewer>`__.
 
 
 Compilation
@@ -29,11 +29,11 @@
 The compilation will produce a shared library ``OrthancWebViewer``
 that contains the Web viewer plugin.  Pre-compiled binaries for
 Microsoft Windows `are also available
-<http://www.orthanc-server.com/browse.php?path=/plugin-webviewer>`__.
+<https://www.orthanc-server.com/browse.php?path=/plugin-webviewer>`__.
 
 *Remark:* Some older build instructions are also available in the
 `source distribution
-<https://bitbucket.org/sjodogne/orthanc-webviewer/src/default/Resources/BuildInstructions.txt>`__.
+<https://hg.orthanc-server.com/orthanc-webviewer/file/tip/Resources/BuildInstructions.txt>`__.
 
 
 Usage
@@ -77,7 +77,7 @@
 Explorer, a yellow button entitled ``Orthanc Web Viewer`` will show
 up. It will open the Web viewer for that particular series.  See also
 the demonstration video on `official homepage of the plugin
-<http://www.orthanc-server.com/static.php?page=web-viewer>`__.
+<https://www.orthanc-server.com/static.php?page=web-viewer>`__.
 
 
 Advanced options
@@ -111,7 +111,7 @@
 * ``EnableGdcm`` specifies whether `GDCM
   <https://sourceforge.net/projects/gdcm/>`__ should be used to decode
   DICOM images, replacing the built-in decoder of Orthanc that
-  internally uses `DCMTK <http://dicom.offis.de/dcmtk.php.en>`__.
+  internally uses `DCMTK <https://dicom.offis.de/dcmtk.php.en>`__.
   This is notably necessary to deal with DICOM images encoded using
   `JPEG2000 <https://en.wikipedia.org/wiki/JPEG_2000>`__, as this
   format is not readily supported by the core version of DCMTK.  By
--- a/Sphinx/source/plugins/worklists-plugin.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/worklists-plugin.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -12,12 +12,12 @@
 The sample plugin will serve the worklists stored in some folder on
 the filesystem. This mimics the behavior of the ``wlmscpfs``
 command-line tool from the `DCMTK software
-<http://support.dcmtk.org/docs/wlmscpfs.html>`__. 
+<https://support.dcmtk.org/docs/wlmscpfs.html>`__. 
 
 The worklists to be served must be put inside the folder of interest
 by an external application or script (note: files must have a ``.wl`` extension). ``dump2dcm`` might be a very
 `useful companion tool
-<http://support.dcmtk.org/docs/dump2dcm.html>`__ to generate such
+<https://support.dcmtk.org/docs/dump2dcm.html>`__ to generate such
 worklist files. Whenever a C-Find SCP request is issued to Orthanc,
 the plugin will read the content of the folder of interest to locate
 the worklists that match the request. As a consequence, the external
@@ -26,7 +26,7 @@
 
 The source code of this sample plugin is `available in the source
 distribution of Orthanc
-<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__
+<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__
 (GPLv3+ license).
 
 
@@ -59,10 +59,10 @@
 
 The folder ``WorklistsDatabase`` of the `source distribution of
 Orthanc
-<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__
+<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__
 contains a database of sample worklists, that comes from the DCMTK
 source distribution, as described in the `FAQ entry #37 of the DCMTK
-project <http://forum.dcmtk.org/viewtopic.php?t=84>`__.
+project <https://forum.dcmtk.org/viewtopic.php?t=84>`__.
 
 
 Tutorial
@@ -71,9 +71,9 @@
 .. highlight:: javascript
  
 - Download `DCMTK utilities
-  <http://dicom.offis.de/download/dcmtk/release/bin/>`__.
+  <https://dicom.offis.de/download/dcmtk/release/bin/>`__.
 - Download sample `worklist files
-  <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__
+  <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__
   from the Orthanc source code and copy them in a dedicated folder.
 - Generate the :ref:`default configuration of Orthanc <configuration>`.
 - Enable the ModalityWorklist plugin in your configuration file by adding this section::
@@ -93,7 +93,7 @@
 
 - The tests below will be done using the ``findscu`` command-line tool
   from the `DCMTK utilities
-  <http://support.dcmtk.org/docs/findscu.html>`__. Assuming
+  <https://support.dcmtk.org/docs/findscu.html>`__. Assuming
   ``findscu`` and Orthanc runs on the same computer (i.e. on the
   ``127.0.0.1`` localhost), declare the ``FINDSCU`` AET to the list of
   know modalities::
@@ -130,7 +130,7 @@
   
 - Start with an existing worklist file, some samples of which can be
   found in the `Orthanc source distribution
-  <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/WorklistsDatabase/>`__
+  <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/WorklistsDatabase/>`__
   (with ``.wl`` file extensions).
 - The worklist file is a DICOM file. Dump its content as a text file
   using ``dcmdump``::
@@ -184,7 +184,7 @@
 
 When trying to retrieve worklists from a modality, one usually don't get debugging capabilities from the modality itself.
 Therefore, it is usually convenient to mimic the modality with ``findscu`` (provided by `DCMTK software
-<http://support.dcmtk.org/docs/wlmscpfs.html>`__).  
+<https://support.dcmtk.org/docs/wlmscpfs.html>`__).  
 
 - First, you should make sure that you have configured the Worklist plugin correctly and that you have pushed
   at least a ``.wl`` file in the worklist database.  For this, you should issue this kind of command::
--- a/Sphinx/source/plugins/wsi.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/plugins/wsi.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -18,7 +18,7 @@
    inside Orthanc, to a standard hierarchical TIFF image.
 
 For general information, check out the `official homepage of the
-framework <http://www.orthanc-server.com/static.php?page=wsi>`__. 
+framework <https://www.orthanc-server.com/static.php?page=wsi>`__. 
 
 
 Compilation
@@ -55,7 +55,7 @@
 ^^^^^^^^^^^^^^^^^
   
 Note that pre-compiled binaries for Microsoft Windows `are available
-<http://www.orthanc-server.com/browse.php?path=/whole-slide-imaging>`__.
+<https://www.orthanc-server.com/browse.php?path=/whole-slide-imaging>`__.
 
 
 Dynamic linking
@@ -113,7 +113,7 @@
 images. This button will open the WSI viewer for that particular
 series. This behavior can be seen on the Orthanc Explorer interface
 running on our `WSI demonstration server
-<http://wsi.orthanc-server.com/orthanc/app/explorer.html>`__.
+<https://wsi.orthanc-server.com/orthanc/app/explorer.html>`__.
 
 
 
@@ -221,7 +221,7 @@
 images. Some commonplace image formats (PNG and JPEG) can be
 DICOM-ized as well. However, whole-slide images can come in many
 proprietary file formats. To re-encode such images, the DICOM-izer
-relies upon the `OpenSlide toolbox <http://openslide.org/>`__.
+relies upon the `OpenSlide toolbox <https://openslide.org/>`__.
 
 For this feature to work, you have to tell the command-line tool where
 it can find the OpenSlide shared library. GNU/Linux distributions
@@ -232,7 +232,7 @@
   $ ./OrthancWSIDicomizer --openslide=libopenslide.so CMU-1-JP2K-33005.svs
 
 Pre-compiled Microsoft Windows binaries of this shared library can be
-found on the `OpenSlide homepage <http://openslide.org/download/>`__ (Note that
+found on the `OpenSlide homepage <https://openslide.org/download/>`__ (Note that
 you should copy all .dll files from the OpenSlide package next to the OrthancWSIDicomizer
 executable)::
 
--- a/Sphinx/source/users/advanced-rest.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/advanced-rest.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -150,7 +150,7 @@
 * Retry a job in ``Failed`` state by POST-ing to ``/jobs/.../resubmit``.
 
 The related state machine is depicted in the `implementation notes
-<https://bitbucket.org/sjodogne/orthanc/raw/Orthanc-1.6.0/Resources/ImplementationNotes/JobsEngineStates.pdf>`__.
+<https://hg.orthanc-server.com/orthanc/raw-file/tip/Resources/ImplementationNotes/JobsEngineStates.pdf>`__.
   
 
 
@@ -272,4 +272,4 @@
 writing this configuration to, say, ``/tmp/prometheus.yml``, then
 type::
           
-  $ sudo docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml --rm prom/prometheus:v2.7.0
+  $ sudo run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml --rm prom/prometheus:v2.7.0
--- a/Sphinx/source/users/backup.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/backup.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -34,7 +34,7 @@
 for the official Debian package of Orthanc that automates this backup
 procedure. Note that in this script, the call to the SQLite
 command-line tool is used to force the `WAL replay
-<http://www.sqlite.org/wal.html>`__. This manual replay should not be
+<https://www.sqlite.org/wal.html>`__. This manual replay should not be
 necessary for Orthanc >= 0.7.3.
 
 
@@ -44,15 +44,15 @@
 The default SQLite engine is well adapted for DICOM routing or for
 image buffering tasks, but not for enterprise scenarios. In such
 cases, you are highly recommended to use the `PostgreSQL back-end
-<http://www.orthanc-server.com/static.php?page=postgresql>`__ or the
+<https://www.orthanc-server.com/static.php?page=postgresql>`__ or the
 `MySQL/MariaDB back-end
-<http://www.orthanc-server.com/static.php?page=mysql>`__.
+<https://www.orthanc-server.com/static.php?page=mysql>`__.
 
 If using PostgreSQL, you can do hot backups (i.e. while Orthanc is
 running), and you benefit from all the flexibility of PostgreSQL
 backup. These procedures are out of the scope of this manual.  Please
 check the `official backup and restore manual
-<https://www.postgresql.org/docs/devel/static/backup.html>`__.
+<https://www.postgresql.org/docs/devel/backup.html>`__.
 
 Similar backup procedures are available for MySQL and MariaDB as
 well. Please check the official manual about `database backup methods
--- a/Sphinx/source/users/configuration.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/configuration.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -5,12 +5,11 @@
 ========================
 
 Configuring Orthanc simply consists in providing a configuration file.
-Orthanc has numerous configuration that are documented in the `default 
+Orthanc has numerous configuration that are documented in the `default
 configuration file
-<https://bitbucket.org/sjodogne/orthanc/raw/Orthanc-1.6.0/Resources/Configuration.json>`_. This
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Resources/Configuration.json>`_. This
 file is in the `JSON <https://en.wikipedia.org/wiki/JSON>`_ file
-format. You can generate this file file with the
-following call::
+format. You can generate this file file with the following call::
 
     $ Orthanc --config=Configuration.json
 
--- a/Sphinx/source/users/cookbook.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/cookbook.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -15,11 +15,11 @@
 
 To obtain the Orthanc binaries, you have several possibilities:
 
-* `Download pre-compiled packages <http://www.orthanc-server.com/download.php>`__.
+* `Download pre-compiled packages <https://www.orthanc-server.com/download.php>`__.
 * :ref:`Use Docker <docker>`.
 * :ref:`Compile Orthanc by yourself <compiling>`.
 * External contributors are also maintaining `Vagrant VM for Orthanc
-  <https://github.com/jodogne/OrthancContributed/blob/master/Links.md#vagrant>`__.
+  <https://github.com/jodogne/OrthancContributed/blob/master/Links.md#user-content-vagrant>`__.
 
 
 .. _orthanc-explorer:
@@ -66,8 +66,8 @@
 connect your modality to Orthanc.
 
 You can also use the standard command-line tool ``storescu`` from the
-`DCMTK software <http://dicom.offis.de/dcmtk.php.en>`__ to 
-manually send DICOM images to Orthanc, for instance::
+`DCMTK software <https://dicom.offis.de/dcmtk.php.en>`__ to manually
+send DICOM images to Orthanc, for instance::
 
     $ storescu -aec ORTHANC localhost 4242 *.dcm
 
--- a/Sphinx/source/users/docker.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/docker.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -26,8 +26,8 @@
   configuration system that is inherited from the Debian packages
   (i.e. manual edition of the configuration files).
 
-* Our commercial partner `Osimis <http://osimis.io>`__ also `publishes
-  separated Docker images
+* Our commercial partner `Osimis <https://www.osimis.io>`__ also
+  `publishes separated Docker images
   <https://osimis.atlassian.net/wiki/spaces/OKB/pages/26738689/How+to+use+osimis+orthanc+Docker+images>`__.
   These ``osimis/orthanc`` images are used by the technical team of
   Osimis in order to provide professional support to their customers,
@@ -51,7 +51,7 @@
 The following command will start the core of Orthanc, with all the
 plugins disabled::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc
 
 Once Orthanc is running, use Mozilla Firefox at URL
 http://localhost:8042/ to interact with Orthanc. The default username
@@ -61,18 +61,18 @@
 development is in continuous progress. Do not forget to regularly
 update the Docker image to benefit from the latest features::
 
-  $ sudo docker pull jodogne/orthanc
+  $ docker pull jodogne/orthanc
 
 If more stability is required, you can select the official release of
 Orthanc to be run::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.6.0
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.6.0
 
 Passing additional command-line options (e.g. to make Orthanc verbose)
 can be done as follows (note the ``/etc/orthanc`` option that is
 required for Orthanc to find its configuration files)::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc /etc/orthanc --verbose
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc /etc/orthanc --verbose
 
 
 Usage, with plugins enabled
@@ -84,8 +84,20 @@
 implementation <dicomweb>`, and its :ref:`whole-slide imaging viewer
 <wsi>`::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins
+
+Or you can also start a specific version of Orthanc for more stability::
+
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.6.0
 
+If you have an interest in the :ref:`Python plugin <python-plugin>`,
+you can use the ``orthanc-python`` image. The latter image is a
+heavier version of the ``orthanc-plugins`` image, as it embeds the
+Python 3.7 interpreter. Here is how to start this image::
+
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.6.0
+  
 
 Fine-tuning the configuration
 -----------------------------
@@ -98,12 +110,12 @@
 
 You can generate a custom configuration file for Orthanc as follows::
 
-  $ sudo docker run --rm --entrypoint=cat jodogne/orthanc /etc/orthanc/orthanc.json > /tmp/orthanc.json
+  $ docker run --rm --entrypoint=cat jodogne/orthanc /etc/orthanc/orthanc.json > /tmp/orthanc.json
 
 Then, edit the just-generated file ``/tmp/orthanc.json`` and restart
 Orthanc with your updated configuration::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc
 
 
 Making the Orthanc database persistent
@@ -115,7 +127,7 @@
 container to some path in the filesystem of your Linux host, e.g.::
 
   $ mkdir /tmp/orthanc-db
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.6.0 
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.6.0 
 
 
 Whole-slide imaging support
@@ -125,13 +137,13 @@
 whole-slide imaging (WSI) <wsi>`. For instance, the following command
 will start the WSI viewer plugin transparently together with Orthanc::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins
+  $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins
 
 Note that we gave the name ``orthanc-wsi`` to this new Docker
 container. Then, the Dicomizer command-line tool can be invoked as
 follows::
 
-  $ sudo docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif
+  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif
 
 This command needs a few explanations:
 
@@ -156,10 +168,10 @@
 expected format).
 
 If you have a source image that is not a hierarchical TIFF, you must
-instruct the Dicomizer to use `OpenSlide <http://openslide.org/>`__ to
-decode it by adding the ``--openslide`` option::
+instruct the Dicomizer to use `OpenSlide <https://openslide.org/>`__
+to decode it by adding the ``--openslide`` option::
 
-  $ sudo docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs
+  $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs
 
 
 PostgreSQL and Orthanc inside Docker
@@ -167,20 +179,20 @@
 
 It is possible to run both Orthanc and PostgreSQL inside Docker. First, start the official PostgreSQL container::
 
-  $ sudo docker run --name some-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pgpassword --rm postgres
+  $ docker run --name some-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pgpassword --rm postgres
 
 Open another shell, and create a database to host the Orthanc database::
 
-  $ sudo docker run -it --link some-postgres:postgres --rm postgres sh -c 'echo "CREATE DATABASE orthanc;" | exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'
+  $ docker run -it --link some-postgres:postgres --rm postgres sh -c 'echo "CREATE DATABASE orthanc;" | exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'
 
 You will have to type the password (cf. the environment variable
 ``POSTGRES_PASSWORD`` above that it set to ``pgpassword``). Then,
 retrieve the IP and the port of the PostgreSQL container, together
 with the default Orthanc configuration file::
 
-  $ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres
-  $ sudo docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres
-  $ sudo docker run --rm --entrypoint=cat jodogne/orthanc-plugins /etc/orthanc/orthanc.json > /tmp/orthanc.json
+  $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres
+  $ docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres
+  $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins /etc/orthanc/orthanc.json > /tmp/orthanc.json
 
 .. highlight:: json
 
@@ -201,7 +213,7 @@
 
 Finally, you can start Orthanc::
 
-  $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins
 
 
 Debugging
@@ -212,15 +224,15 @@
 For debugging purpose, you can start an interactive bash session as
 follows::
 
-  $ sudo docker run -i -t --rm --entrypoint=bash jodogne/orthanc
-  $ sudo docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins
+  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc
+  $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins
 
 For developers and power users, the images ``jodogne/orthanc-debug``
 contain the Orthanc core compiled in debug mode (i.e. with runtime
 assertions enabled, and including debugging symbols). A ``gdb``
 command-line session can be started as follows::
 
-  $ sudo docker run -i -t --rm --entrypoint=bash --network=host --cap-add=SYS_PTRACE -p 4242:4242 -p 8042:8042 jodogne/orthanc-debug
+  $ docker run -i -t --rm --entrypoint=bash --network=host --cap-add=SYS_PTRACE -p 4242:4242 -p 8042:8042 jodogne/orthanc-debug
   # gdb --args Orthanc /etc/orthanc/ --verbose
 
 Exceptions can be automatically caught by launching ``gdb`` as follows::
--- a/Sphinx/source/users/lua.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/lua.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -13,7 +13,7 @@
 scripting.
 
 Many other examples are `available in the source distribution
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/>`__.
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/>`__.
 
 
 Installing a Lua script
@@ -27,7 +27,8 @@
 
 To install it by the **configuration file** method, you just have to
 specify the path to the file containing the Lua script in the
-``LuaScripts`` variable.
+``LuaScripts`` variable. A comma-separated list of paths can be
+specified to install multiple scripts.
 
 To upload a script stored in the file "``script.lua``" through the
 **REST API**, use the following command::
@@ -45,9 +46,8 @@
 *Note:* The ``--data-binary`` cURL option is used instead of
 ``--data`` to prevent the interpretation of newlines by cURL, which is
 `mandatory for the proper evaluation
-<http://stackoverflow.com/questions/3872427/how-to-send-line-break-with-curl>`__ of the possible
-comments inside the Lua script.
-
+<https://stackoverflow.com/questions/3872427/how-to-send-line-break-with-curl>`__
+of the possible comments inside the Lua script.
 
 Lua API
 -------
@@ -58,7 +58,7 @@
 Callbacks to react to events
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-The Lua engine of Orthanc comes invokes the following callbacks that
+The Lua engine of Orthanc invokes the following callbacks that
 are triggered on various events. Here are the **generic events**:
 
 * ``function Initialize()``: Invoked as soon as the Orthanc server is started.
@@ -108,7 +108,7 @@
   protocol. This allows to inspect the content of the C-Find query,
   and possibly modify it if a patch is needed for some manufacturer. A
   `sample script is available
-  <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/IncomingFindRequestFilter.lua>`__.
+  <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/IncomingFindRequestFilter.lua>`__.
 
 Some other **resource-related events** are available:
 
@@ -137,12 +137,15 @@
 SCP, several callbacks are successively invoked to specify which
 **transfer syntaxes** are accepted for the association. These
 callbacks are listed in `this sample script
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/TransferSyntaxEnable.lua>`__.
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/TransferSyntaxEnable.lua>`__.
 
 *Note:* All of these callbacks are guaranteed to be **invoked in
 mutual exclusion**. This implies that Lua scripting in Orthanc does
 not support any kind of concurrency.
 
+If a callback is specified multiple times in separate scripts, the
+event handler of the latest loaded script is used.
+
 
 .. _lua-rest:
 
--- a/Sphinx/source/users/replication.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/replication.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -71,7 +71,7 @@
 
 The most direct way to replicate an instance of Orthanc consists in
 using the `ImportDicomFiles
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`_
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`_
 script of the Orthanc distribution. For instance, the following
 command would recursively explore the content of the
 ``OrthancStorage`` folder (where Orthanc stores its DICOM files by
@@ -86,9 +86,9 @@
 * The source Orthanc uses the default storage area on the filesystem
   (i.e. the source Orthanc does *not* store its DICOM files using one
   of the "storage area plugins", such as for `PostgreSQL
-  <http://www.orthanc-server.com/static.php?page=postgresql>`_ or
+  <https://www.orthanc-server.com/static.php?page=postgresql>`_ or
   `MySQL/MariaDB
-  <http://www.orthanc-server.com/static.php?page=mysql>`_ - but it's
+  <https://www.orthanc-server.com/static.php?page=mysql>`_ - but it's
   OK for the source of Orthanc to use any of the "index plugins"),
 * You have command-line access to the source Orthanc, and
 * The transparent :ref:`compression` of the DICOM instances is
@@ -111,7 +111,7 @@
 -------------------
 
 If you cannot use the first method, you can use the `Replicate
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/Replicate.py>`_
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/Replicate.py>`_
 script of the Orthanc distribution. This script will use the REST API
 of both the source and target instances of Orthanc. For instance::
 
--- a/Sphinx/source/users/rest.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/rest.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -52,12 +52,12 @@
 
 Note that in the case of curl, setting the ``Expect`` HTTP Header will
 significantly `reduce the execution time of POST requests
-<http://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024/463277#463277>`__::
+<https://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024/463277#463277>`__::
 
     $ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm
 
 The code distribution of Orthanc contains a `sample Python script
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
 that recursively upload the content of some folder into Orthanc using
 the REST API::
 
@@ -598,7 +598,7 @@
    The list of the resources to be sent are given as a JSON array. In
    this case, a single DICOM connection is used. `Sample code is
    available
-   <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__.
+   <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__.
 
    Note that the list of resources to be sent can include the
    :ref:`Orthanc identifiers <orthanc-ids>` of entire patients,
@@ -922,7 +922,7 @@
     $ curl 'http://localhost:8042/changes?limit=100&since=922'
 
 A `sample code in the source distribution
-<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/ChangesLoop.py>`__
+<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/ChangesLoop.py>`__
 shows how to use this Changes API to implement a polling loop.
 
 
@@ -1011,7 +1011,7 @@
 * The full documentation of the REST API is maintained as an online
   spreadsheet accessible from the `documentation part of the official
   Web site
-  <http://www.orthanc-server.com/static.php?page=documentation>`__
+  <https://www.orthanc-server.com/static.php?page=documentation>`__
   (click on the *Reference of the REST API* button).
 * A documentation of the REST API in the OpenAPI/Swagger format is
   `available as work-in-progress <https://api.orthanc-server.com/>`__.
--- a/Sphinx/source/users/storage-commitment.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/storage-commitment.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -183,7 +183,7 @@
 
 The custom storage commitment SCP is installed in the Orthanc core by
 using the ``OrthancPluginRegisterStorageCommitmentScpCallback()``
-function of the `plugin SDK <http://sdk.orthanc-server.com/>`__.
+function of the `plugin SDK <https://sdk.orthanc-server.com/>`__.
 
 Importantly, this primitive frees the plugin developer from manually
 creating the Orthanc jobs. One job is transparently created by the
@@ -192,7 +192,7 @@
 instances.
 
 Note that a `sample plugin
-<https://bitbucket.org/sjodogne/orthanc/src/storage-commitment/Plugins/Samples/StorageCommitmentScp/>`__
+<https://hg.orthanc-server.com/orthanc/file/tip/Plugins/Samples/StorageCommitmentScp>`__
 is also available in the source distribution of Orthanc.
 
            
--- a/Sphinx/source/users/support.rst	Wed Apr 01 22:44:38 2020 +0200
+++ b/Sphinx/source/users/support.rst	Wed Apr 01 22:45:01 2020 +0200
@@ -25,12 +25,12 @@
    <https://groups.google.com/forum/#!forum/orthanc-users>`__.
 7. Check out the ``Pending changes in the mainline`` section of the
    `NEWS file
-   <https://bitbucket.org/sjodogne/orthanc/src/default/NEWS>`__, as
+   <https://hg.orthanc-server.com/orthanc/file/default/NEWS>`__, as
    your issue might already be solved in the mainline of Orthanc (i.e.
    in the cutting-edge version of Orthanc since the last stable
    official release).
 8. Carefully read the `TODO file
-   <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__ that
+   <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__ that
    contains our roadmap, as you might be requesting a feature that is
    currently pending in our backlog (i.e. not implemented yet).
 9. Have a look for the issue in the `official bug tracker