gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-anastasis] branch master updated: integrate documentation


From: gnunet
Subject: [taler-anastasis] branch master updated: integrate documentation
Date: Sun, 18 Jul 2021 08:41:20 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 6f20879  integrate documentation
6f20879 is described below

commit 6f20879960fdee753a802ff4abb752b95e211f84
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Jul 18 08:41:16 2021 +0200

    integrate documentation
---
 README                                             |    6 +-
 doc/Makefile.am                                    |    7 +-
 doc/anastasis-config.1                             |  123 +
 doc/anastasis-figures/anastasis_reducer_backup.png |  Bin 47081 -> 59981 bytes
 .../anastasis_reducer_recovery.png                 |  Bin 48943 -> 52610 bytes
 doc/anastasis-httpd.1                              |   99 +-
 doc/anastasis-reducer.1                            |   93 +
 doc/anastasis.conf.5                               |  151 +
 doc/anastasis.texi                                 | 7416 ++++++++++++++------
 doc/sphinx/Makefile                                |  179 +
 doc/sphinx/README                                  |   10 +
 .../__pycache__/typescriptdomain.cpython-39.pyc    |  Bin 0 -> 15399 bytes
 doc/sphinx/_exts/httpdomain/__init__.py            |   14 +
 .../httpdomain/__pycache__/__init__.cpython-37.pyc |  Bin 0 -> 514 bytes
 .../httpdomain/__pycache__/__init__.cpython-38.pyc |  Bin 0 -> 518 bytes
 .../httpdomain/__pycache__/__init__.cpython-39.pyc |  Bin 0 -> 520 bytes
 .../__pycache__/httpdomain.cpython-37.pyc          |  Bin 0 -> 24431 bytes
 .../__pycache__/httpdomain.cpython-38.pyc          |  Bin 0 -> 24436 bytes
 .../__pycache__/httpdomain.cpython-39.pyc          |  Bin 0 -> 24344 bytes
 doc/sphinx/_exts/httpdomain/autohttp/__init__.py   |   11 +
 doc/sphinx/_exts/httpdomain/autohttp/bottle.py     |  114 +
 doc/sphinx/_exts/httpdomain/autohttp/common.py     |   36 +
 doc/sphinx/_exts/httpdomain/autohttp/flask.py      |   48 +
 doc/sphinx/_exts/httpdomain/autohttp/flask_base.py |  215 +
 doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py  |   80 +
 doc/sphinx/_exts/httpdomain/autohttp/tornado.py    |  128 +
 doc/sphinx/_exts/httpdomain/httpdomain.py          |  772 ++
 doc/sphinx/_exts/taler_sphinx_theme/__init__.py    |  166 +
 .../__pycache__/__init__.cpython-37.pyc            |  Bin 0 -> 6508 bytes
 .../__pycache__/__init__.cpython-38.pyc            |  Bin 0 -> 6560 bytes
 .../__pycache__/__init__.cpython-39.pyc            |  Bin 0 -> 6548 bytes
 .../guzzle_sphinx_theme/comments.html              |   16 +
 .../guzzle_sphinx_theme/globaltoc.html             |   14 +
 .../guzzle_sphinx_theme/layout.html                |  172 +
 .../guzzle_sphinx_theme/localtoc.html              |   10 +
 .../guzzle_sphinx_theme/logo-text.html             |    1 +
 .../guzzle_sphinx_theme/search.html                |   48 +
 .../guzzle_sphinx_theme/searchbox.html             |   15 +
 .../static/css/bootstrap-theme.min.css             |    7 +
 .../static/css/bootstrap.min.css                   |    7 +
 .../static/fonts/glyphicons-halflings-regular.eot  |  Bin 0 -> 20290 bytes
 .../static/fonts/glyphicons-halflings-regular.svg  |  229 +
 .../static/fonts/glyphicons-halflings-regular.ttf  |  Bin 0 -> 41236 bytes
 .../static/fonts/glyphicons-halflings-regular.woff |  Bin 0 -> 23292 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.eot      |  Bin 0 -> 30858 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.svg      |  251 +
 .../open-sans/fonts/OpenSans-Bold-webfont.ttf      |  Bin 0 -> 30680 bytes
 .../open-sans/fonts/OpenSans-Bold-webfont.woff     |  Bin 0 -> 19788 bytes
 .../fonts/OpenSans-BoldItalic-webfont.eot          |  Bin 0 -> 34166 bytes
 .../fonts/OpenSans-BoldItalic-webfont.svg          |  251 +
 .../fonts/OpenSans-BoldItalic-webfont.ttf          |  Bin 0 -> 33960 bytes
 .../fonts/OpenSans-BoldItalic-webfont.woff         |  Bin 0 -> 21940 bytes
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.eot |  Bin 0 -> 30602 bytes
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.svg |  251 +
 .../open-sans/fonts/OpenSans-ExtraBold-webfont.ttf |  Bin 0 -> 30404 bytes
 .../fonts/OpenSans-ExtraBold-webfont.woff          |  Bin 0 -> 19972 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.eot     |  Bin 0 -> 33758 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.svg     |  251 +
 .../fonts/OpenSans-ExtraBoldItalic-webfont.ttf     |  Bin 0 -> 33532 bytes
 .../fonts/OpenSans-ExtraBoldItalic-webfont.woff    |  Bin 0 -> 21824 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.eot    |  Bin 0 -> 34798 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.svg    |  251 +
 .../open-sans/fonts/OpenSans-Italic-webfont.ttf    |  Bin 0 -> 34612 bytes
 .../open-sans/fonts/OpenSans-Italic-webfont.woff   |  Bin 0 -> 22416 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.eot     |  Bin 0 -> 29794 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.svg     |  252 +
 .../open-sans/fonts/OpenSans-Light-webfont.ttf     |  Bin 0 -> 29612 bytes
 .../open-sans/fonts/OpenSans-Light-webfont.woff    |  Bin 0 -> 19396 bytes
 .../fonts/OpenSans-LightItalic-webfont.eot         |  Bin 0 -> 34578 bytes
 .../fonts/OpenSans-LightItalic-webfont.svg         |  252 +
 .../fonts/OpenSans-LightItalic-webfont.ttf         |  Bin 0 -> 34368 bytes
 .../fonts/OpenSans-LightItalic-webfont.woff        |  Bin 0 -> 22444 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.eot   |  Bin 0 -> 29934 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.svg   |  252 +
 .../open-sans/fonts/OpenSans-Regular-webfont.ttf   |  Bin 0 -> 29744 bytes
 .../open-sans/fonts/OpenSans-Regular-webfont.woff  |  Bin 0 -> 19624 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.eot  |  Bin 0 -> 30350 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.svg  |  251 +
 .../open-sans/fonts/OpenSans-Semibold-webfont.ttf  |  Bin 0 -> 30156 bytes
 .../open-sans/fonts/OpenSans-Semibold-webfont.woff |  Bin 0 -> 19736 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.eot      |  Bin 0 -> 34866 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.svg      |  251 +
 .../fonts/OpenSans-SemiboldItalic-webfont.ttf      |  Bin 0 -> 34644 bytes
 .../fonts/OpenSans-SemiboldItalic-webfont.woff     |  Bin 0 -> 22332 bytes
 .../static/fonts/open-sans/stylesheet.css          |  136 +
 .../source-serif-pro/EOT/SourceSerifPro-Black.eot  |  Bin 0 -> 111902 bytes
 .../source-serif-pro/EOT/SourceSerifPro-Bold.eot   |  Bin 0 -> 113630 bytes
 .../EOT/SourceSerifPro-ExtraLight.eot              |  Bin 0 -> 112362 bytes
 .../source-serif-pro/EOT/SourceSerifPro-Light.eot  |  Bin 0 -> 112866 bytes
 .../EOT/SourceSerifPro-Regular.eot                 |  Bin 0 -> 112354 bytes
 .../EOT/SourceSerifPro-Semibold.eot                |  Bin 0 -> 113510 bytes
 .../static/fonts/source-serif-pro/LICENSE.txt      |   93 +
 .../source-serif-pro/OTF/SourceSerifPro-Black.otf  |  Bin 0 -> 91216 bytes
 .../source-serif-pro/OTF/SourceSerifPro-Bold.otf   |  Bin 0 -> 92760 bytes
 .../OTF/SourceSerifPro-ExtraLight.otf              |  Bin 0 -> 89720 bytes
 .../source-serif-pro/OTF/SourceSerifPro-Light.otf  |  Bin 0 -> 91424 bytes
 .../OTF/SourceSerifPro-Regular.otf                 |  Bin 0 -> 91276 bytes
 .../OTF/SourceSerifPro-Semibold.otf                |  Bin 0 -> 93144 bytes
 .../static/fonts/source-serif-pro/README.md        |   18 +
 .../static/fonts/source-serif-pro/ReadMe.html      |   72 +
 .../source-serif-pro/SourceSerifProReadMe.html     |  189 +
 .../source-serif-pro/TTF/SourceSerifPro-Black.ttf  |  Bin 0 -> 111572 bytes
 .../source-serif-pro/TTF/SourceSerifPro-Bold.ttf   |  Bin 0 -> 113320 bytes
 .../TTF/SourceSerifPro-ExtraLight.ttf              |  Bin 0 -> 112004 bytes
 .../source-serif-pro/TTF/SourceSerifPro-Light.ttf  |  Bin 0 -> 112528 bytes
 .../TTF/SourceSerifPro-Regular.ttf                 |  Bin 0 -> 112048 bytes
 .../TTF/SourceSerifPro-Semibold.ttf                |  Bin 0 -> 113168 bytes
 .../WOFF/OTF/SourceSerifPro-Black.otf.woff         |  Bin 0 -> 48788 bytes
 .../WOFF/OTF/SourceSerifPro-Bold.otf.woff          |  Bin 0 -> 51188 bytes
 .../WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff    |  Bin 0 -> 47136 bytes
 .../WOFF/OTF/SourceSerifPro-Light.otf.woff         |  Bin 0 -> 49672 bytes
 .../WOFF/OTF/SourceSerifPro-Regular.otf.woff       |  Bin 0 -> 48972 bytes
 .../WOFF/OTF/SourceSerifPro-Semibold.otf.woff      |  Bin 0 -> 51272 bytes
 .../WOFF/TTF/SourceSerifPro-Black.ttf.woff         |  Bin 0 -> 49496 bytes
 .../WOFF/TTF/SourceSerifPro-Bold.ttf.woff          |  Bin 0 -> 51924 bytes
 .../WOFF/TTF/SourceSerifPro-ExtraLight.ttf.woff    |  Bin 0 -> 48784 bytes
 .../WOFF/TTF/SourceSerifPro-Light.ttf.woff         |  Bin 0 -> 50792 bytes
 .../WOFF/TTF/SourceSerifPro-Regular.ttf.woff       |  Bin 0 -> 49604 bytes
 .../WOFF/TTF/SourceSerifPro-Semibold.ttf.woff      |  Bin 0 -> 51772 bytes
 .../static/fonts/source-serif-pro/bower.json       |   15 +
 .../fonts/source-serif-pro/source-serif-pro.css    |   65 +
 .../guzzle_sphinx_theme/static/guzzle.css_t        | 1037 +++
 .../guzzle_sphinx_theme/static/jquery.js           |    5 +
 .../guzzle_sphinx_theme/static/jquery.min.map      |    1 +
 .../guzzle_sphinx_theme/static/js/bootstrap.js     | 1951 +++++
 .../guzzle_sphinx_theme/static/js/bootstrap.min.js |    6 +
 .../guzzle_sphinx_theme/theme.conf                 |   40 +
 doc/sphinx/_exts/typescriptdomain.py               |  587 ++
 doc/sphinx/_static/.gitignore                      |    0
 doc/sphinx/anastasis-db.png                        |  Bin 0 -> 38801 bytes
 doc/sphinx/anastasis_challenge_payment.png         |  Bin 0 -> 20331 bytes
 doc/sphinx/anastasis_challengecode.png             |  Bin 0 -> 17678 bytes
 doc/sphinx/anastasis_reducer_backup.drawio         |    1 +
 doc/sphinx/anastasis_reducer_backup.png            |  Bin 0 -> 59981 bytes
 doc/sphinx/anastasis_reducer_backup.svg            |    3 +
 doc/sphinx/anastasis_reducer_recovery.drawio       |    1 +
 doc/sphinx/anastasis_reducer_recovery.png          |  Bin 0 -> 52610 bytes
 doc/sphinx/anastasis_reducer_recovery.svg          |    3 +
 doc/sphinx/anastasis_truth.png                     |  Bin 0 -> 19493 bytes
 doc/sphinx/anastasis_truth_payment.png             |  Bin 0 -> 13430 bytes
 doc/sphinx/authentication.rst                      |  110 +
 doc/sphinx/conf.py                                 |  304 +
 doc/sphinx/configuration.rst                       |   30 +
 doc/sphinx/core/api-common.rst                     |  360 +
 doc/sphinx/cryptography.rst                        |  298 +
 doc/sphinx/db.rst                                  |   28 +
 doc/sphinx/design-documents/001-anastasis-ux.rst   |  318 +
 doc/sphinx/design-documents/999-template.rst       |   25 +
 doc/sphinx/design-documents/index.rst              |   13 +
 doc/sphinx/fdl-1.3.rst                             |  453 ++
 doc/sphinx/frags/README.md                         |   18 +
 doc/sphinx/frags/configuration-format.rst          |   69 +
 doc/sphinx/frags/installing-anastasis-gtk.rst      |   31 +
 doc/sphinx/frags/installing-anastasis.rst          |   30 +
 doc/sphinx/frags/installing-debian.rst             |   59 +
 doc/sphinx/frags/installing-gnunet-gtk.rst         |   28 +
 doc/sphinx/frags/installing-gnunet.rst             |   21 +
 doc/sphinx/frags/installing-taler-exchange.rst     |   16 +
 doc/sphinx/frags/installing-taler-merchant.rst     |   34 +
 doc/sphinx/frags/installing-ubuntu.rst             |   27 +
 doc/sphinx/frags/list-of-dependencies.rst          |   21 +
 doc/sphinx/frags/using-anastasis-config.rst        |   50 +
 doc/sphinx/genindex.rst                            |    2 +
 doc/sphinx/global-licensing.rst                    |   64 +
 doc/sphinx/index.rst                               |   47 +
 doc/sphinx/installation.rst                        |  175 +
 doc/sphinx/introduction.rst                        |   70 +
 doc/sphinx/manindex.rst                            |    9 +
 doc/sphinx/manpages/anastasis-config.1.rst         |  101 +
 doc/sphinx/manpages/anastasis-gtk.1.rst            |   54 +
 doc/sphinx/manpages/anastasis-httpd.1.rst          |   58 +
 doc/sphinx/manpages/anastasis-reducer.1.rst        |   71 +
 doc/sphinx/manpages/anastasis.conf.5.rst           |  133 +
 doc/sphinx/reducer.rst                             | 1646 +++++
 doc/sphinx/rest.rst                                |  508 ++
 src/cli/anastasis-cli-redux.c                      |    2 +-
 src/reducer/anastasis_api_backup_redux.c           |   13 +-
 src/util/os_installation.c                         |    6 +-
 178 files changed, 20102 insertions(+), 2123 deletions(-)

diff --git a/README b/README
index 35f82b4..e038984 100644
--- a/README
+++ b/README
@@ -2,9 +2,9 @@
 ANASTASIS
 =========
 
-This package includes the Anastasis core logic.  The code is
-released under the GNU General Public License (v3 or later).
-See COPYING for details.
+This package includes the Anastasis core logic.  The code is released
+under the GNU Affero General Public License (v3 or later).  See
+COPYING for details.
 
 Description
 ===========
diff --git a/doc/Makefile.am b/doc/Makefile.am
index bf64cd4..90f6797 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -3,12 +3,17 @@
 SUBDIRS = . doxygen
 
 man_MANS = \
-  anastasis-httpd.1
+  anastasis-httpd.1 \
+  anastasis-reducer.1 \
+  anastasis.conf.5 \
+  anastasis-config.1
 
 info_TEXINFOS = \
   anastasis.texi
 
 EXTRA_DIST = \
+ $(info_TEXINFOS) \
+ $(man_MANS) \
  anastasis-figures/anastasis-db.png \
  anastasis-figures/anastasis_reducer_backup.png \
  anastasis-figures/anastasis_truth_payment.png \
diff --git a/doc/anastasis-config.1 b/doc/anastasis-config.1
new file mode 100644
index 0000000..bb1512d
--- /dev/null
+++ b/doc/anastasis-config.1
@@ -0,0 +1,123 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-CONFIG" "1" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis-config \- anastasis configuration file manipulation
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBanastasis\-config\fP
+[\fB\-b\fP\ \fIbackend\fP\ |\ \fB––supported\-backend=\fP\fIbackend\fP]
+[\fB\-c\fP\ \fIfilename\fP\ |\ \fB––config=\fP\fIfilename\fP]
+[\fB\-f\fP\ |\ \fB––filename\fP]
+[\fB\-F\fP\ |\ \fB––full\fP]
+[\fB\-h\fP\ |\ \fB––help\fP]
+[\fB\-L\fP\ \fIloglevel\fP\ |\ \fB––loglevel=\fP\fIloglevel\fP]
+[\fB\-l\fP\ \fIfilename\fP\ |\ \fB––logfile=\fP‌\fIfilename\fP]
+[\fB\-o\fP\ \fIoption\fP\ |\ \fB––option=\fP\fIoption\fP]
+[\fB\-r\fP\ |\ \fB––rewrite\fP]
+[\fB\-S\fP\ |\ \fB––list\-sections\fP]
+[\fB\-s\fP\ \fIsection\fP\ |\ \fB––section=\fP\fIsection\fP]
+[\fB\-V\fP\ \fIvalue\fP\ |\ \fB––value=\fP\fIvalue\fP]
+[\fB\-v\fP\ |\ \fB––version\fP]
+.SH DESCRIPTION
+.sp
+\fBanastasis\-config\fP can be used to read or modify Anastasis configuration 
files.
+.INDENT 0.0
+.TP
+\fB\-b\fP \fIBACKEND\fP | \fB––supported\-backend=\fP\fIBACKEND\fP
+Tests whether the specified \fIBACKEND\fP is supported by the current 
installation.
+The backend must match the name of a plugin, i.e. “namestore_postgres” for
+the Postgres database backend of the “NAMESTORE” service.  If \fIBACKEND\fP is
+supported, anastasis\-config will return a status code of 0 (success), 
otherwise
+77 (unsupported).  When this option is specified, no other options may be
+specified. Specifying this option together with other options will cause
+anastasis\-config to return a status code of 1 (error).
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP\fIFILENAME\fP
+Use the configuration file \fIFILENAME\fP\&.
+.TP
+\fB\-f\fP | \fB––filename\fP
+Try to perform expansions as if the option values represent filenames (will
+also be applied even if the option is not really a filename).
+.TP
+\fB\-F\fP | \fB––full\fP
+Write the full configuration file, not just the differences to the defaults.
+.TP
+\fB\-h\fP | \fB––help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB––loglevel=\fP\fILOGLEVEL\fP
+Use \fILOGLEVEL\fP for logging.
+Valid values are \fBDEBUG\fP, \fBINFO\fP, \fBWARNING\fP, and \fBERROR\fP\&.
+.TP
+\fB\-l\fP \fIFILENAME\fP | \fB––logfile=\fP‌\fIFILENAME\fP
+Send logging output to \fIFILENAME\fP\&.
+.TP
+\fB\-o\fP \fIOPTION\fP | \fB––option=\fP\fIOPTION\fP
+Which configuration option should be accessed or edited.  Required to set a
+value.  If not given, all values of a given section will be printed in the
+format “OPTION = VALUE”.
+.TP
+\fB\-r\fP | \fB––rewrite\fP
+Write the configuration file even if nothing changed. Will remove all comments!
+.TP
+\fB\-S\fP | \fB––list\-sections\fP
+List available configuration sections for use with \fB\-\-section\fP\&.
+.TP
+\fB\-s\fP \fISECTION\fP | \fB––section=\fP\fISECTION\fP
+Which configuration section should be accessed or edited.
+Required option.
+.TP
+\fB\-V\fP \fIVALUE\fP | \fB––value=\fP\fIVALUE\fP
+Configuration value to store in the given section under the given option.
+Must only be given together with \fB\-s\fP and \fB\-o\fP options.
+.INDENT 7.0
+.TP
+.B Note:
+Changing the configuration file with \fB\-V\fP will remove comments
+and may reorder sections and remove \fB@INLINE@\fP directives.
+.UNINDENT
+.TP
+\fB\-v\fP | \fB––version\fP
+Print Anastasis version number.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis.conf(5)
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu\fP or by sending electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis-figures/anastasis_reducer_backup.png 
b/doc/anastasis-figures/anastasis_reducer_backup.png
index 87b0a9b..53daf7c 100644
Binary files a/doc/anastasis-figures/anastasis_reducer_backup.png and 
b/doc/anastasis-figures/anastasis_reducer_backup.png differ
diff --git a/doc/anastasis-figures/anastasis_reducer_recovery.png 
b/doc/anastasis-figures/anastasis_reducer_recovery.png
index 7d3cc9a..b08c763 100644
Binary files a/doc/anastasis-figures/anastasis_reducer_recovery.png and 
b/doc/anastasis-figures/anastasis_reducer_recovery.png differ
diff --git a/doc/anastasis-httpd.1 b/doc/anastasis-httpd.1
index 5e723f2..131be44 100644
--- a/doc/anastasis-httpd.1
+++ b/doc/anastasis-httpd.1
@@ -1,37 +1,78 @@
-.TH ANASTASIS\-HTTPD 1 "Nov 9, 2019" "GNU Taler"
-
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-HTTPD" "1" "Jul 18, 2021" "0.0" "Anastasis"
 .SH NAME
-anastasis\-httpd \- Run Anastasis backend (with RESTful API)
-
+anastasis-httpd \- anastasis HTTP backend
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
 .SH SYNOPSIS
-.B anastasis\-httpd
-.RI [ options ]
-.br
-
+.sp
+\fBanastasis\-httpd\fP
 .SH DESCRIPTION
-\fBanastasis\-httpd\fP is a command line tool to run the Anastasis (HTTP 
backend).  The required configuration and database must exist before running 
this command.
-
-.SH OPTIONS
-.B
-.IP "\-C,  \-\-connection-close"
-Force each HTTP connection to be closed after each request (useful in 
combination with \-f to avoid having to wait for nc to time out).
-.B
-.IP "\-c FILENAME,  \-\-config=FILENAME"
-Use the configuration and other resources for the merchant to operate from 
FILENAME.
-.B
-.IP "\-h, \-\-help"
+.sp
+Banastasis\-httpd is a command line tool to run the Anastasis (HTTP
+backend).  The required configuration and database must exist before
+running this command.
+.sp
+Its options are as follows:
+.INDENT 0.0
+.TP
+\fB\-C\fP | \fB–connection\-close\fP
+Force each HTTP connection to be closed after each request.
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP‌\fIFILENAME\fP
+Use the configuration and other resources for the merchant to operate
+from FILENAME.
+.TP
+\fB\-h\fP | \fB––help\fP
 Print short help on options.
-.B
-.IP "\-v, \-\-version"
+.TP
+\fB\-v\fP | \fB––version\fP
 Print version information.
-
+.UNINDENT
 .SH SIGNALS
-.B
-.IP SIGTERM
+.sp
+\fBanastasis\-httpd\fP responds to the following signals:
+.INDENT 0.0
+.TP
+.B \fBSIGTERM\fP
 Sending a SIGTERM to the process will cause it to shutdown cleanly.
-
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-dbinit(1), anastasis\-config(1), anastasis\-gtk(1), 
anastasis\-reducer(1)
 .SH BUGS
-Report bugs by using Mantis <https://gnunet.org/bugs/> or by sending 
electronic mail to <taler@gnu.org>
-
-.SH "SEE ALSO"
-\fBanastasis-dbinit\fP(1), \fBanastasis\-tip\-enable\fP(1), 
\fBanastasis.conf\fP(5)
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu\fP or by sending
+electronic mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis-reducer.1 b/doc/anastasis-reducer.1
new file mode 100644
index 0000000..8a79075
--- /dev/null
+++ b/doc/anastasis-reducer.1
@@ -0,0 +1,93 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS-REDUCER" "1" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis-reducer \- anastasis CLI frontend
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH SYNOPSIS
+.sp
+\fBanastasis\-reducer\fP
+[\fB\-a**_*JSON*_|_\fP–arguments=\fIJSON\fP]
+[\fB\-b**_|_\fP–backup]
+[\fB\-c\fP\ \fIFILENAME\fP\ |\ \fB––config=\fP‌\fIFILENAME\fP]
+[\fB\-h\fP\ |\ \fB––help\fP]
+[\fB\-L\fP\ \fILOGLEVEL\fP\ |\ \fB––loglevel=\fP‌\fILOGLEVEL\fP]
+[\fB\-l\fP\ \fIFILENAME\fP\ |\ \fB––logfile=\fP‌\fIFILENAME\fP]
+[\fB\-r**_|_\fP–restore]
+[\fB\-v\fP\ |\ \fB––version\fP] COMMAND
+.SH DESCRIPTION
+.sp
+\fBanastasis\-reducer\fP is a command\-line tool to run Anastasis
+key recover and backup operations using a reducer\-style interface.
+The reducer will read the current state from standard input and
+write the resulting state to standard output.  A COMMAND must
+be given on the command line.  The arguments (if any) are to
+be given in JSON format to the \fB\-a\fP option.  A list of
+commands can be found in the \&../reducer
+chapter.
+.INDENT 0.0
+.TP
+\fB\-a\fP \fIJSON\fP | \fB––arguments=\fP\fIJSON\fP
+Provide JSON inputs for the given command.
+.TP
+\fB\-b\fP | \fB–backup\fP
+Begin fresh reducer operation for a back up operation.
+.TP
+\fB\-c\fP \fIFILENAME\fP | \fB––config=\fP‌\fIFILENAME\fP
+Use the configuration from \fIFILENAME\fP\&.
+.TP
+\fB\-h\fP | \fB––help\fP
+Print short help on options.
+.TP
+\fB\-L\fP \fILOGLEVEL\fP | \fB––loglevel=\fP‌\fILOGLEVEL\fP
+Specifies the log level to use. Accepted values are: \fBDEBUG\fP, \fBINFO\fP,
+\fBWARNING\fP, \fBERROR\fP\&.
+.TP
+\fB\-l\fP \fIFILENAME\fP | \fB––logfile=\fP‌\fIFILENAME\fP
+Send logging output to \fIFILENAME\fP\&.
+.TP
+\fB\-r\fP | \fB–restore\fP
+Begin fresh reducer operation for a restore operation.
+.TP
+\fB\-v\fP | \fB––version\fP
+Print version information.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-gtk(1), anastasis\-httpd(1), anastasis.conf(5).
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu/\fP or by sending 
electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis.conf.5 b/doc/anastasis.conf.5
new file mode 100644
index 0000000..446531a
--- /dev/null
+++ b/doc/anastasis.conf.5
@@ -0,0 +1,151 @@
+.\" Man page generated from reStructuredText.
+.
+.TH "ANASTASIS.CONF" "5" "Jul 18, 2021" "0.0" "Anastasis"
+.SH NAME
+anastasis.conf \- anastasis configuration file
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.SH DESCRIPTION
+.sp
+The configuration file is line\-oriented.
+Blank lines and whitespace at the beginning and end of a line are ignored.
+Comments start with \fB#\fP or \fB%\fP in the first column
+(after any beginning\-of\-line whitespace) and go to the end of the line.
+.sp
+The file is split into sections.
+Every section begins with “[SECTIONNAME]” and
+contains a number of options of the form “OPTION=VALUE”.
+There may be whitespace around the \fB=\fP (equal sign).
+Section names and options are \fIcase\-insensitive\fP\&.
+.sp
+The values, however, are \fIcase\-sensitive\fP\&.
+In particular, boolean values are one of \fBYES\fP or \fBNO\fP\&.
+Values can include whitespace by surrounding
+the entire value with \fB"\fP (double quote).
+Note, however, that there are no escape characters in such strings;
+all characters between the double quotes (including other double quotes)
+are taken verbatim.
+.sp
+Values that represent filenames can begin with a \fB/bin/sh\fP\-like
+variable reference.
+This can be simple, such as \fB$TMPDIR/foo\fP, or complex,
+such as \fB${TMPDIR:\-${TMP:\-/tmp}}/foo\fP\&.
+See \fB[PATHS]\fP (below).
+.sp
+Values that represent a time duration are represented as a series of one or
+more \fBNUMBER UNIT\fP pairs, e.g. \fB60 s\fP, \fB4 weeks 1 day\fP, \fB5 years 
2 minutes\fP\&.
+.sp
+Values that represent an amount are in the usual amount syntax:
+\fBCURRENCY:VALUE.FRACTION\fP, e.g. \fBEUR:1.50\fP\&.
+The \fBFRACTION\fP portion may extend up to 8 places.
+.sp
+Files containing default values for many of the options described below
+are installed under \fB$ANASTASIS_PREFIX/share/taler/config.d/\fP\&.
+The configuration file given with \fB\-c\fP to Anastasis binaries
+overrides these defaults.
+.sp
+A configuration file may include another, by using the \fB@INLINE@\fP 
directive,
+for example, in \fBmain.conf\fP, you could write \fB@INLINE@ sub.conf\fP to
+include the entirety of \fBsub.conf\fP at that point in \fBmain.conf\fP\&.
+.. TODO: Document ‘anastasis\-config \-V’ in light of ‘@INLINE@’ in 
taler\-config(1).
+.SS GLOBAL OPTIONS
+.sp
+The following options are from the \fB[anastasis]\fP section and used by
+the \fBanastasis\-httpd\fP service.
+.INDENT 0.0
+.TP
+.B PAYMENT_BACKEND_URL
+Base\-URL of the Taler merchant backend instance to use for payments.
+FIXME: How do we pass the access token?
+.TP
+.B ANNUAL_FEE
+Annual fee to be paid for policy uploads, i.e. “EUR:1.5”.
+.TP
+.B TRUTH_UPLOAD_FEE
+Annual fee to be paid for truth uploads, i.e. “EUR:1.5”.
+.TP
+.B DB
+Database backend to use, only \fBpostgres\fP is supported right now.
+.TP
+.B UPLOAD_LIMIT_MB
+Maximum upload size for policy uploads in megabytes. Default is 1.
+.TP
+.B ANNUAL_POLICY_UPLOAD_LIMIT
+Maximum number of policies uploaded per year of service. Default is 42.
+.TP
+.B BUSINESS_NAME
+Name of the business.
+.TP
+.B SERVER_SALT
+Must be set to a high\-entropy random server salt that the provider must never
+change after the initial configuration.
+.TP
+.B PORT
+TCP port on which the HTTP service should listen on.
+.UNINDENT
+.SS Authorization options
+.sp
+For each active authorization plugin, options must be configured in
+a section called \fB[authorization\-$PLUGIN]\fP where \fB$PLUGIN\fP is
+the name of the authorization plugin.
+.INDENT 0.0
+.TP
+.B COST
+Fee the user has to pay to obtain a challenge from this
+authorization plugin during recovery.
+.TP
+.B ENABLED
+\fByes\fP to enable this plugin, \fBno\fP to disable.
+.TP
+.B COMMAND
+Helper command to run (only relevant for some plugins).
+.UNINDENT
+.SS Postgres database configuration
+.sp
+The following options must be in the section \fB[statis\-postgres]\fP if
+\fBpostgress\fP was used for the database under \fBDB\fP in the
+\fB[anastasis]\fP section.
+.INDENT 0.0
+.TP
+.B CONFIG
+Path under which the Postgres database is that the service
+should use, i.e. \fBpostgres://anastasis\fP\&.
+.UNINDENT
+.SH SEE ALSO
+.sp
+anastasis\-httpd(1), anastasis\-config(1)
+.SH BUGS
+.sp
+Report bugs by using \fI\%https://bugs.anastasis.lu/\fP or by sending 
electronic
+mail to <\fI\%contact@anastasis.lu\fP>.
+.SH AUTHOR
+Anastasis SARL
+.SH COPYRIGHT
+2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
+.\" Generated by docutils manpage writer.
+.
diff --git a/doc/anastasis.texi b/doc/anastasis.texi
index 3a7605b..466adaf 100644
--- a/doc/anastasis.texi
+++ b/doc/anastasis.texi
@@ -21,11 +21,11 @@
 
 @copying
 @quotation
-Anastasis 0.0.0, Apr 05, 2021
+Anastasis 0.0.0pre0, Jul 18, 2021
 
-Anastasis team
+Anastasis SARL
 
-Copyright @copyright{} 2014-2021 Anastasis SARL (GPLv3+ or GFDL 1.3+)
+Copyright @copyright{} 2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)
 @end quotation
 
 @end copying
@@ -47,25 +47,308 @@ Copyright @copyright{} 2014-2021 Anastasis SARL (GPLv3+ or 
GFDL 1.3+)
 @end ifnottex
 
 @c %**start of body
-@anchor{anastasis doc}@anchor{0}
-@c This file is part of Anastasis
-@c Copyright (C) 2019. 2021 Anastasis SARL
-@c
+@anchor{index doc}@anchor{0}
+@c This file is part of GNU Anastasis.
+@c Copyright (C) 2020-2021 Anastasis SARL
+@c 
 @c Anastasis is free software; you can redistribute it and/or modify it under 
the
-@c terms of the GNU General Public License as published by the Free Software
+@c terms of the GNU Affero General Public License as published by the Free 
Software
 @c Foundation; either version 2.1, or (at your option) any later version.
-@c
+@c 
 @c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
 @c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
 @c A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more 
details.
-@c
-@c You should have received a copy of the GNU Lesser General Public License 
along with
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+
+The system will be based on free software and open protocols.
+
+@menu
+* Documentation Overview:: 
+
+@detailmenu
+ --- The Detailed Node Listing ---
+
+Documentation Overview
+
+* Introduction:: 
+* Installation:: 
+* Configuration:: 
+* Cryptography:: 
+* REST API:: 
+* Reducer API:: 
+* Authentication Methods:: 
+* DB Schema:: 
+* Design Documents:: 
+* Anastasis licensing information:: 
+* Man Pages:: 
+* Complete Index:: 
+* GNU Free Documentation License:: 
+
+Installation
+
+* Installing from source:: 
+* Installing Anastasis binary packages on Debian:: 
+* Installing Anastasis binary packages on Ubuntu:: 
+
+Installing from source
+
+* Installing GNUnet:: 
+* Installing the Taler Exchange:: 
+* Installing the Taler Merchant:: 
+* Installing Anastasis:: 
+* Installing GNUnet-gtk:: 
+* Installing Anastasis-gtk:: 
+
+Installing Anastasis binary packages on Debian
+
+* Installing the graphical front-end:: 
+* Installing the backend:: 
+
+Installing Anastasis binary packages on Ubuntu
+
+* Installing the graphical front-end: Installing the graphical front-end<2>. 
+* Installing the backend: Installing the backend<2>. 
+
+Configuration
+
+* Configuration format:: 
+* Using anastasis-config:: 
+
+Cryptography
+
+* Key derivations:: 
+* Key Usage:: 
+* Availability Considerations:: 
+
+Key derivations
+
+* Verification:: 
+* Encryption:: 
+
+Key Usage
+
+* Encryption: Encryption<2>. 
+* Signatures:: 
+
+REST API
+
+* HTTP Request and Response:: 
+* Protocol Version Ranges:: 
+* Common encodings:: 
+
+Common encodings
+
+* Binary Data:: 
+* Hash codes:: 
+* Large numbers:: 
+* Timestamps:: 
+* Integers:: 
+* Objects:: 
+* Keys:: 
+* Signatures: Signatures<2>. 
+* Amounts:: 
+* Time:: 
+* Cryptographic primitives:: 
+* Signatures: Signatures<3>. 
+* Receiving Configuration:: 
+* Receiving Terms of Service:: 
+* Manage policy:: 
+* Managing truth:: 
+
+Reducer API
+
+* States:: 
+* Backup Reducer:: 
+* Recovery Reducer:: 
+* Reducer transitions:: 
+
+Reducer transitions
+
+* Initial state:: 
+* Common transitions:: 
+* Backup transitions:: 
+* Recovery transitions:: 
+
+Authentication Methods
+
+* SMS (sms): SMS sms. 
+* Email verification (email): Email verification email. 
+* Video identification (vid): Video identification vid. 
+* Security question (qa): Security question qa. 
+* Snail mail verification (post): Snail mail verification post. 
+
+Design Documents
+
+* Design Doc 001; Anastasis User Experience: Design Doc 001 Anastasis User 
Experience. 
+* Template:: 
+
+Design Doc 001: Anastasis User Experience
+
+* Summary:: 
+* Motivation:: 
+* Setup Steps:: 
+* Show Service Status After Setup:: 
+* Recovery Steps:: 
+
+Setup Steps
+
+* Entry point; Settings: Entry point Settings. 
+* Providing Identification:: 
+* Add Authentication Methods:: 
+* Confirm/Change Service Providers:: 
+* Defining Recovery Options:: 
+* Pay for Setup:: 
+
+Recovery Steps
+
+* Entry point; Settings: Entry point Settings<2>. 
+* Providing Identification: Providing Identification<2>. 
+* Select Authentication Challenge:: 
+* Payment:: 
+* Enter Challenge Response:: 
+* Success:: 
+
+Template
+
+* Summary: Summary<2>. 
+* Motivation: Motivation<2>. 
+* Requirements:: 
+* Proposed Solution:: 
+* Alternatives:: 
+* Drawbacks:: 
+* Discussion / Q&A:: 
+
+Anastasis licensing information
+
+* Anastasis (git;//git.taler.net/anastasis): Anastasis git //git taler 
net/anastasis. 
+* Anastasis-gtk (git;//git.taler.net/anastasis-gtk): Anastasis-gtk git //git 
taler net/anastasis-gtk. 
+* Documentation:: 
+
+Anastasis (git://git.taler.net/anastasis)
+
+* Runtime dependencies:: 
+
+Anastasis-gtk (git://git.taler.net/anastasis-gtk)
+
+* Runtime dependencies: Runtime dependencies<2>. 
+
+Man Pages
+
+* anastasis-config(1): anastasis-config 1. 
+* anastasis-gtk(1): anastasis-gtk 1. 
+* anastasis-httpd(1): anastasis-httpd 1. 
+* anastasis-reducer(1): anastasis-reducer 1. 
+* anastasis.conf(5): anastasis conf 5. 
+
+anastasis-config(1)
+
+* Synopsis:: 
+* Description:: 
+* See Also:: 
+* Bugs:: 
+
+anastasis-gtk(1)
+
+* Synopsis: Synopsis<2>. 
+* Description: Description<2>. 
+* See Also: See Also<2>. 
+* Bugs: Bugs<2>. 
+
+anastasis-httpd(1)
+
+* Synopsis: Synopsis<3>. 
+* Description: Description<3>. 
+* Signals:: 
+* See also:: 
+* Bugs: Bugs<3>. 
+
+anastasis-reducer(1)
+
+* Synopsis: Synopsis<4>. 
+* Description: Description<4>. 
+* See Also: See Also<3>. 
+* Bugs: Bugs<4>. 
+
+anastasis.conf(5)
+
+* Description: Description<5>. 
+* SEE ALSO:: 
+* BUGS:: 
+
+Description
+
+* GLOBAL OPTIONS:: 
+* Authorization options:: 
+* Postgres database configuration:: 
+
+GNU Free Documentation License
+
+* 0. PREAMBLE: 0 PREAMBLE. 
+* 1. APPLICABILITY AND DEFINITIONS: 1 APPLICABILITY AND DEFINITIONS. 
+* 2. VERBATIM COPYING: 2 VERBATIM COPYING. 
+* 3. COPYING IN QUANTITY: 3 COPYING IN QUANTITY. 
+* 4. MODIFICATIONS: 4 MODIFICATIONS. 
+* 5. COMBINING DOCUMENTS: 5 COMBINING DOCUMENTS. 
+* 6. COLLECTIONS OF DOCUMENTS: 6 COLLECTIONS OF DOCUMENTS. 
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7 AGGREGATION WITH INDEPENDENT WORKS. 
+* 8. TRANSLATION: 8 TRANSLATION. 
+* 9. TERMINATION: 9 TERMINATION. 
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10 FUTURE REVISIONS OF THIS LICENSE. 
+* 11. RELICENSING: 11 RELICENSING. 
+* ADDENDUM; How to use this License for your documents: ADDENDUM How to use 
this License for your documents. 
+
+@end detailmenu
+@end menu
+
+@node Documentation Overview,,Top,Top
+@anchor{index anastasis-documentation}@anchor{1}@anchor{index 
documentation-overview}@anchor{2}
+@chapter Documentation Overview
+
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
 @c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-@c
+@c 
 @c @author Christian Grothoff
 @c @author Dominik Meister
 @c @author Dennis Neufeld
 
+@menu
+* Introduction:: 
+* Installation:: 
+* Configuration:: 
+* Cryptography:: 
+* REST API:: 
+* Reducer API:: 
+* Authentication Methods:: 
+* DB Schema:: 
+* Design Documents:: 
+* Anastasis licensing information:: 
+* Man Pages:: 
+* Complete Index:: 
+* GNU Free Documentation License:: 
+
+@end menu
+
+@node Introduction,Installation,,Documentation Overview
+@anchor{introduction doc}@anchor{3}@anchor{introduction introduction}@anchor{4}
+@section Introduction
+
+
 Anastasis is a service that allows the user to securely deposit a
 @strong{core secret} with an open set of escrow providers and recover it if 
the secret is
 lost.  The @strong{core secret} itself is protected from the escrow providers 
by
@@ -114,2681 +397,5648 @@ guarding a user’s secret.  Weak adversaries must not 
be able to deduce
 information about a user’s @strong{recovery document} (except for its length, 
which
 may be exposed to an adversary which monitors the user’s network traffic).
 
-@menu
-* Anastasis DB Schema::
-* Anastasis Cryptography::
-* Anastasis REST API::
-* Anastasis Reducer API::
-* Authentication Methods::
-
-@end menu
-
-@node Anastasis DB Schema,Anastasis Cryptography,Top,Top
-@anchor{anastasis anastasis}@anchor{1}@anchor{anastasis 
anastasis-db-schema}@anchor{2}
-@chapter Anastasis DB Schema
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
 
+@node Installation,Configuration,Introduction,Documentation Overview
+@anchor{installation doc}@anchor{5}@anchor{installation installation}@anchor{6}
+@section Installation
 
-@image{anastasis-figures/anastasis-db,,,,png}
 
-@image{anastasis-figures/anastasis_challengecode,,,,png}
+Please install the following packages before proceeding with the
+exchange compilation.
 
-@image{anastasis-figures/anastasis_challenge_payment,,,,png}
 
-@image{anastasis-figures/anastasis_truth,,,,png}
+@itemize -
 
-@image{anastasis-figures/anastasis_truth_payment,,,,png}
+@item 
+libsqlite3 >= 3.16.2
 
-@node Anastasis Cryptography,Anastasis REST API,Anastasis DB Schema,Top
-@anchor{anastasis anastasis-cryptography}@anchor{3}
-@chapter Anastasis Cryptography
+@item 
+GNU libunistring >= 0.9.3
 
+@item 
+libcurl >= 7.26 (or libgnurl >= 7.26)
 
-When a user needs to interact with Anastasis, the system first derives some key
-material, but not the master secret, from the user’s @strong{identifier} using
-different HKDFs.  These HKDFs are salted using the respective escrow
-provider’s @strong{server salt}, which ensures that the accounts for the same 
user
-cannot be easily correlated across the various Anastasis servers.
+@item 
+libqrencode >= 4.0.0
 
-Each Anastasis server uses an EdDSA @strong{account key} to identify the 
account of
-the user.  The account private key is derived from the user’s 
@strong{identifier} using
-a computationally expensive cryptographic hash function.  Using an
-expensive hash algorithm is assumed to make it infeasible for a weak adversary 
to
-determine account keys by brute force (without knowing the user’s identifier).
-However, it is assumed that a strong adversary performing a targeted attack can
-compute the account key pair.
+@item 
+GNU libgcrypt >= 1.6
 
-The public account key is Crockford base32-encoded in the URI to identify the
-account, and used to sign requests.  These signatures are also provided in
-base32-encoding and transmitted using the HTTP header
-“Anastasis-Account-Signature”.
+@item 
+libsodium >= 1.0
 
-When confidential data is uploaded to an Anastasis server, the respective
-payload is encrypted using AES-GCM with a symmetric key and initialization
-vector derived from the @strong{identifier} and a high-entropy @strong{nonce}. 
 The
-nonce and the GCM tag are prepended to the ciphertext before being uploaded to
-the Anastasis server.  This is done whenever confidential data is stored with
-the server.
+@item 
+libargon2 >= 20171227
 
-The @strong{core secret} of the user is (AES) encrypted using a symmetric 
@strong{master
-key}.  Recovering this master key requires the user to satisfy a particular
-@strong{policy}.  Policies specify a set of @strong{escrow methods}, each of 
which leads
-the user to a @strong{key share}. Combining those key shares (by hashing) 
allows
-the user to obtain a @strong{policy key}, which can be used to decrypt the 
@strong{master
-key}.  There can be many policies, satisfying any of these will allow the
-user to recover the master key.  A @strong{recovery document} contains the
-encrypted @strong{core secret}, a set of escrow methods and a set of policies.
+@item 
+libjansson >= 2.7
 
-@menu
-* Key derivations::
-* Key Usage::
-* Availability Considerations::
+@item 
+Postgres >= 9.6, including libpq
 
-@end menu
+@item 
+GNU libmicrohttpd >= 0.9.71
 
-@node Key derivations,Key Usage,,Anastasis Cryptography
-@anchor{anastasis key-derivations}@anchor{4}
-@section Key derivations
+@item 
+GNUnet >= 0.14.0 (from source 
tarball@footnote{http://ftpmirror.gnu.org/gnunet/})
 
+@item 
+GNU Taler exchange
 
-EdDSA and ECDHE public keys are always points on Curve25519 and represented
-using the standard 256 bit Ed25519 compact format.  The binary representation
-is converted to Crockford Base32 when transmitted inside JSON or as part of
-URLs.
+@item 
+GNU Taler merchant backend
+@end itemize
 
-To start, a user provides their private, unique and unforgettable
-@strong{identifier} as a seed to identify their account.  For example, this 
could
-be a social security number together with their full name.  Specifics may
-depend on the cultural context, in this document we will simply refer to this
-information as the @strong{identifier}.
+Except for the last two, these are available in most GNU/Linux distributions
+and should just be installed using the respective package manager.
 
-This identifier will be first hashed with Argon2, to provide a @strong{kdf_id}
-which will be used to derive other keys later. The Hash must also include the
-respective @strong{server_salt}. This also ensures that the @strong{kdf_id} is 
different
-on each server. The use of Argon2 and the respective @strong{server_salt} is 
intended
-to make it difficult to brute-force @strong{kdf_id} values and help protect 
the user’s
-privacy. Also this ensures that the @strong{kdf_id}s on every server differs. 
However,
-we do not assume that the @strong{identifier} or the @strong{kdf_id} cannot be
-determined by an adversary performing a targeted attack, as a user’s
-@strong{identifier} is likely to always be known to state actors and may
-likely also be available to other actors.
+@menu
+* Installing from source:: 
+* Installing Anastasis binary packages on Debian:: 
+* Installing Anastasis binary packages on Ubuntu:: 
 
-@example
-kdf_id := Argon2( identifier, server_salt, keysize )
-@end example
+@end menu
 
-@strong{identifier}: The secret defined from the user beforehand.
+@node Installing from source,Installing Anastasis binary packages on 
Debian,,Installation
+@anchor{installation installing-from-source}@anchor{7}
+@subsection Installing from source
 
-@strong{server_salt}: The salt from the Server.
 
-@strong{keysize}: The desired output size of the KDF, here 32 bytes.
+The following instructions will show how to install libgnunetutil and
+the GNU Taler exchange from source.
 
 @menu
-* Verification::
-* Encryption::
+* Installing GNUnet:: 
+* Installing the Taler Exchange:: 
+* Installing the Taler Merchant:: 
+* Installing Anastasis:: 
+* Installing GNUnet-gtk:: 
+* Installing Anastasis-gtk:: 
 
 @end menu
 
-@node Verification,Encryption,,Key derivations
-@anchor{anastasis verification}@anchor{5}
-@subsection Verification
+@node Installing GNUnet,Installing the Taler Exchange,,Installing from source
+@anchor{installation installing-gnunet}@anchor{8}
+@subsubsection Installing GNUnet
 
 
-For users to authorize “policy” operations we need an EdDSA key pair.  As we
-cannot assure that the corresponding private key is truly secret, such policy
-operations must never be destructive: Should an adversary learn the private
-key, they could access (and with the @strong{kdf_id} decrypt) the user’s 
policy (but
-not the core secret), or upload a new version of the
-@strong{encrypted recovery document} (but not delete an existing version).
+Before you install GNUnet, you must download and install the dependencies
+mentioned in the previous section, otherwise the build may succeed, but could
+fail to export some of the tooling required by GNU Taler.
 
-For the generation of the private key we use the @strong{kdf_id} as the 
entropy source,
-hash it to derive a base secret which will then be processed to fit the
-requirements for EdDSA private keys.  From the private key we can then
-generate the corresponding public key.  Here, “ver” is used as a salt for the
-HKDF to ensure that the result differs from other cases where we hash
-@strong{kdf_id}.
+To install GNUnet, unpack the tarball and change
+into the resulting directory, then proceed as follows:
 
 @example
-ver_secret := HKDF(kdf_id, "ver", keysize)
-eddsa_priv := eddsa_d_to_a(ver_secret)
-eddsa_pub := get_EdDSA_Pub(eddsa_priv)
+$ ./configure [--prefix=GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+# ldconfig
 @end example
 
-@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
-
-@strong{kdf_id}: Hashed identifier.
+If you did not specify a prefix, GNUnet will install to @code{/usr/local},
+which requires you to run the last step as @code{root}.
+The @code{ldconfig} command (also run as @code{root}) makes the
+shared object libraries (@code{.so} files)
+visible to the various installed programs.
 
-@strong{key_size}: Size of the output, here 32 bytes.
+@node Installing the Taler Exchange,Installing the Taler Merchant,Installing 
GNUnet,Installing from source
+@anchor{installation installing-the-taler-exchange}@anchor{9}
+@subsubsection Installing the Taler Exchange
 
-@strong{ver_secret}: Derived key from the kdf_id, serves as intermediate step 
for the generation of the private key.
 
-@strong{eddsa_d_to_a()}: Function which converts the ver_key to a valid EdDSA 
private key. Specifically, assuming the value eddsa_priv is in a 32-byte array 
“digest”, the function clears and sets certain bits as follows:
+After installing GNUnet, unpack the GNU Taler exchange tarball,
+change into the resulting directory, and proceed as follows:
 
 @example
-digest[0] = (digest[0] & 0x7f) | 0x40;
-digest[31] &= 0xf8;
+$ ./configure [--prefix=EXCHANGEPFX] \
+              [--with-gnunet=GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
 @end example
 
-@strong{eddsa_priv}: The generated EdDSA private key.
+If you did not specify a prefix, the exchange will install to 
@code{/usr/local},
+which requires you to run the last step as @code{root}.  You have to specify
+@code{--with-gnunet=/usr/local} if you installed GNUnet to @code{/usr/local} 
in the
+previous step.
 
-@strong{eddsa_pub}: The generated EdDSA public key.
+@node Installing the Taler Merchant,Installing Anastasis,Installing the Taler 
Exchange,Installing from source
+@anchor{installation installing-the-taler-merchant}@anchor{a}
+@subsubsection Installing the Taler Merchant
 
-@node Encryption,,Verification,Key derivations
-@anchor{anastasis encryption}@anchor{6}
-@subsection Encryption
 
+GNU Taler merchant has these additional dependencies:
 
-For symmetric encryption of data we use AES256-GCM. For this we need a
-symmetric key and an initialization vector (IV).  To ensure that the
-symmetric key changes for each encryption operation, we compute the
-key material using an HKDF over a nonce and the kdf_id.
+
+@itemize -
+
+@item 
+libqrencode >= 4.0.0
+@end itemize
+
+The following steps assume all dependencies are installed.
+
+First, unpack the GNU Taler merchant tarball and change into
+the resulting directory.
+Then, use the following commands to build and install the merchant backend:
 
 @example
-(iv,key) := HKDF(kdf_id, nonce, keysize + ivsize)
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
 @end example
 
-@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
-
-@strong{kdf_id}: Hashed identifier.
+If you did not specify a prefix, the exchange will install to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
 
-@strong{keysize}: Size of the AES symmetric key, here 32 bytes.
+You have to specify @code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
 
-@strong{ivsize}: Size of the AES GCM IV, here 12 bytes.
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Taler merchant backend would
+then fail.
 
-@strong{prekey}: Original key material.
+@node Installing Anastasis,Installing GNUnet-gtk,Installing the Taler 
Merchant,Installing from source
+@anchor{installation installing-anastasis}@anchor{b}
+@subsubsection Installing Anastasis
 
-@strong{nonce}: 32-byte nonce, must never match “ver” (which it cannot as the 
length is different). Of course, we must
-avoid key reuse. So, we have to use different nonces to get different keys and 
IVs (see below).
 
-@strong{key}: Symmetric key which is later used to encrypt the documents with 
AES256-GCM.
+The following steps assume all dependencies are installed.
 
-@strong{iv}: IV which will be used for AES-GCM.
+First, unpack the Anastasis tarball and change into
+the resulting directory.
+Then, use the following commands to build and install Anastasis:
 
-@node Key Usage,Availability Considerations,Key derivations,Anastasis 
Cryptography
-@anchor{anastasis key-usage}@anchor{7}
-@section Key Usage
+@example
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
+@end example
 
+If you did not specify a prefix, Anastasis will be installed to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
 
-The keys we have generated are then used to encrypt the @strong{recovery 
document} and
-the @strong{key_share} of the user.
+You have to specify @code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
 
-@menu
-* Encryption: Encryption<2>.
-* Signatures::
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Anastasis backend would
+then fail.
 
-@end menu
+@node Installing GNUnet-gtk,Installing Anastasis-gtk,Installing 
Anastasis,Installing from source
+@anchor{installation installing-gnunet-gtk}@anchor{c}
+@subsubsection Installing GNUnet-gtk
 
-@node Encryption<2>,Signatures,,Key Usage
-@anchor{anastasis id1}@anchor{8}
-@subsection Encryption
 
+The following steps assume at least the GNUnet and Gtk+ dependencies are 
installed.
 
-Before every encryption a 32-byte nonce is generated.
-From this the symmetric key is computed as described above.
-We use AES256-GCM for the encryption of the @strong{recovery document} and
-the @strong{key_share}.  To ensure that the key derivation for the encryption
-of the @strong{recovery document} differs fundamentally from that of an
-individual @strong{key share}, we use different salts (“erd” and “eks” 
respectively).
+First, unpack the gnunet-gtk tarball and change into the resulting directory.
+Then, use the following commands to build and install gnunet-gtk:
 
 @example
-(iv0, key0) = HKDF(key_id, nonce0, "erd", keysize + ivsize)
-(encrypted_recovery_document, aes_gcm_tag) = AES256_GCM(recovery_document, 
key0, iv0)
-(iv_i, key_i) = HKDF(key_id, nonce_i, "eks", [optional data], keysize + ivsize)
-(encrypted_key_share_i, aes_gcm_tag_i) = AES256_GCM(key_share_i, key_i, iv_i)
+$ ./configure [--prefix=$PFX] \
+              [--with-gnunet=$GNUNETPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
 @end example
 
-@strong{encrypted_recovery_document}: The encrypted @strong{recovery document} 
which contains the escrow methods, policies
-and the encrypted @strong{core secret}.
+It is highly recommended to use the same prefix ($PFX) for gnunet-gtk that was
+used for GNUnet ($GNUNETPFX).  If you did not specify a prefix, gnunet-gtk
+will be installed to @code{/usr/local}, which requires you to run the last step
+as @code{root}.
 
-@strong{nonce0}: Nonce which is used to generate @emph{key0} and @emph{iv0} 
which are used for the encryption of the @emph{recovery document}.
-Nonce must contain the string “ERD”.
+You have to specify @code{--with-gnunet=/usr/local} if you installed
+GNUnet to @code{/usr/local} in the previous steps.
 
-@strong{optional data}: Key material that optionally is contributed from the 
authentication method to further obfuscate the key share from the escrow 
provider.
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{$GNUNETPFX/lib/} and @code{$PFX/lib/} (replace the prefixes 
with the
+actual paths you used). Afterwards, you should run @code{ldconfig}. Without 
this
+step, it is possible that the linker may not find the installed libraries and
+launching gnunet-gtk would then fail.
 
-@strong{encrypted_key_share_i}: The encrypted @strong{key_share} which the 
escrow provider must release upon successful authentication.
-Here, @strong{i} must be a positive number used to iterate over the various 
@strong{key shares} used for the various @strong{escrow methods}
-at the various providers.
+@node Installing Anastasis-gtk,,Installing GNUnet-gtk,Installing from source
+@anchor{installation installing-anastasis-gtk}@anchor{d}
+@subsubsection Installing Anastasis-gtk
 
-@strong{nonce_i}: Nonce which is used to generate @emph{key_i} and @emph{iv_i} 
which are used for the encryption of the @strong{key share}. @strong{i} must be
-the same number as specified above for @emph{encrypted_key_share_i}. Nonce 
must contain the string “EKS” plus the according @emph{i}.
 
-As a special rule, when a @strong{security question} is used to authorize 
access to an
-@strong{encrypted_key_share_i}, then the salt “eks” is replaced with an 
(expensive) hash
-of the answer to the security question as an additional way to make the key 
share
-inaccessible to those who do not have the answer:
+The following steps assume at least the GNUnet, gnunet-gtk and Anastasis
+dependencies are installed.
+
+First, unpack the anastasis-gtk tarball and change into the resulting
+directory.  Then, use the following commands to build and install
+anastasis-gtk:
 
 @example
-powh = POW_HASH (qsalt, answer)
-ekss = HKDF("Anastasis-secure-question-uuid-salting",
-            powh,
-            uuid);
-(iv_i, key_i) = HKDF(key_id, nonce_i, ekss, [optional data], keysize + ivsize)
+$ ./configure [--prefix=PFX] \
+              [--with-gnunet=GNUNETPFX] \
+              [--with-exchange=EXCHANGEPFX] \
+              [--with-anastasis=ANASTASISPFX]
+$ # Each dependency can be fetched from non standard locations via
+$ # the '--with-<LIBNAME>' option. See './configure --help'.
+$ make
+# make install
 @end example
 
-@strong{qsalt}: salt value used to hash answer to satisfy the challenge to 
prevent the provider from determining the answer via guessing.
+If you did not specify a prefix, anastasis-gtk will be installed to
+@code{/usr/local}, which requires you to run the last step as @code{root}.
 
-@strong{answer}: answer to the security question, in UTF-8, as entered by the 
user.
+You have to specify @code{-with-anastasis=/usr/local}, 
@code{--with-exchange=/usr/local} and/or
+@code{--with-gnunet=/usr/local} if you installed the exchange and/or
+GNUnet to @code{/usr/local} in the previous steps.
 
-@strong{powh}: result of the (expensive, proof-of-work) hash algorithm.
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit @code{/etc/ld.so.conf}, adding
+lines for @code{GNUNETPFX/lib/} and @code{EXCHANGEPFX/lib/} and @code{PFX/lib/}
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run @code{ldconfig}. Without this step, it is possible that the linker may not
+find the installed libraries and launching anastasis-gtk would then fail.
 
-@strong{uuid}: UUID of the challenge associated with the security question and 
the encrypted key share.
+@node Installing Anastasis binary packages on Debian,Installing Anastasis 
binary packages on Ubuntu,Installing from source,Installation
+@anchor{installation installing-anastasis-binary-packages-on-debian}@anchor{e}
+@subsection Installing Anastasis binary packages on Debian
 
-@strong{ekss}: Replacement salt to be used instead of “eks” when deriving the 
key to encrypt/decrypt the key share.
 
-@node Signatures,,Encryption<2>,Key Usage
-@anchor{anastasis signatures}@anchor{9}
-@subsection Signatures
+To install the GNU Taler Debian packages, first ensure that you have
+the right Debian distribution. At this time, the packages are built for
+Sid, which means you should use a system which at least includes
+unstable packages in its source list.  We recommend using APT pinning
+to limit unstable packages to those explicitly requested. To do this,
+set your @code{/etc/apt/preferences} as follows:
 
+@example
+Package: *
+Pin: release a=stable
+Pin-Priority: 700
 
-The EdDSA keys are used to sign the data sent from the client to the
-server. Everything the client sends to server is signed. The following
-algorithm is equivalent for @strong{Anastasis-Policy-Signature}.
+Package: *
+Pin: release a=testing
+Pin-Priority: 650
 
-@example
-(anastasis-account-signature) = eddsa_sign(h_body, eddsa_priv)
-ver_res = eddsa_verifiy(h_body, anastasis-account-signature, eddsa_pub)
+Package: *
+Pin: release a=unstable
+Pin-Priority: 600
+
+Package: *
+Pin: release l=Debian-Security
+Pin-Priority: 1000
 @end example
 
-@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_UPLOAD} 
(1400) (see GNUnet EdDSA signature API for the use of purpose).
+A typical @code{/etc/apt/sources.list} file for this setup
+which combines Debian stable with more recent packages
+from testing and unstable would look like this:
 
-@strong{h_body}: The hashed body.
+@example
+deb http://ftp.ch.debian.org/debian/ buster main
+deb http://security.debian.org/debian-security buster/updates main
+deb http://ftp.ch.debian.org/debian/ testing main
+deb http://ftp.ch.debian.org/debian/ unstable main
+@end example
 
-@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+Naturally, you may want to use different mirrors depending on your region.
+Additionally, you must add a file to import the GNU Taler packages. Typically,
+this is done by adding a file @code{/etc/apt/sources.list.d/taler.list} that
+looks like this:
 
-When requesting policy downloads, the client must also provide a signature:
+@example
+deb https://deb.taler.net/apt/debian sid main
+@end example
+
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
 
 @example
-(anastasis-account-signature) = eddsa_sign(version, eddsa_priv)
-ver_res = eddsa_verifiy(version, anastasis-account-signature, eddsa_pub)
+# wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+# apt update
 @end example
 
-@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} 
(1401) (see GNUnet EdDSA signature API for the use of purpose).
+@cartouche
+@quotation Note 
+You may want to verify the correctness of the Taler Systems key out-of-band.
+@end quotation
+@end cartouche
 
-@strong{version}: The version requested as a 64-bit integer, 2^64-1 for the 
“latest version”.
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
 
-@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+@menu
+* Installing the graphical front-end:: 
+* Installing the backend:: 
 
-@node Availability Considerations,,Key Usage,Anastasis Cryptography
-@anchor{anastasis availability-considerations}@anchor{a}
-@section Availability Considerations
+@end menu
 
+@node Installing the graphical front-end,Installing the backend,,Installing 
Anastasis binary packages on Debian
+@anchor{installation installing-the-graphical-front-end}@anchor{f}
+@subsubsection Installing the graphical front-end
 
-Anastasis considers two main threats against availability. First, the
-Anastasis server operators must be protected against denial-of-service attacks
-where an adversary attempts to exhaust the operator’s resources.  The API 
protects
-against these attacks by allowing operators to set fees for all
-operations. Furthermore, all data stored comes with an expiration logic, so an
-attacker cannot force servers to store data indefinitely.
-
-A second availability issue arises from strong adversaries that may be able to
-compute the account keys of some user.  While we assume that such an adversary
-cannot successfully authenticate against the truth, the account key does
-inherently enable these adversaries to upload a new policy for the account.
-This cannot be prevented, as the legitimate user must be able to set or change
-a policy using only the account key.  To ensure that an adversary cannot
-exploit this, policy uploads first of all never delete existing policies, but
-merely create another version.  This way, even if an adversary uploads a
-malicious policy, a user can still retrieve an older version of the policy to
-recover access to their data.  This append-only storage for policies still
-leaves a strong adversary with the option of uploading many policies to
-exhaust the Anastasis server’s capacity.  We limit this attack by requiring a
-policy upload to include a reference to a @strong{payment identifier} from a 
payment
-made by the user.  Thus, a policy upload requires both knowledge of the
-@strong{identity} and making a payment.  This effectively prevents and 
adversary
-from using the append-only policy storage from exhausting Anastasis server
-capacity.
-
-@node Anastasis REST API,Anastasis Reducer API,Anastasis Cryptography,Top
-@anchor{anastasis anastasis-rest-api}@anchor{b}
-@chapter Anastasis REST API
 
-@anchor{anastasis salt}@anchor{c}
-@menu
-* Receiving Configuration::
-* Receiving Terms of Service::
-* Manage policy::
-* Managing truth::
+To install the Anastasis Gtk+ frontend, you can simply run:
 
-@end menu
+@example
+# apt install anastasis-gtk
+@end example
 
-@node Receiving Configuration,Receiving Terms of Service,,Anastasis REST API
-@anchor{anastasis config}@anchor{d}@anchor{anastasis 
receiving-configuration}@anchor{e}
-@section Receiving Configuration
+To use @code{anastasis-gtk}, you can simply run:
 
+@example
+$ anastasis-gtk
+@end example
 
-@anchor{anastasis get--config}@anchor{f}
-@deffn {HTTP Get} GET /config
+@node Installing the backend,,Installing the graphical front-end,Installing 
Anastasis binary packages on Debian
+@anchor{installation installing-the-backend}@anchor{10}
+@subsubsection Installing the backend
 
-Obtain the configuration details of the escrow provider.
 
-@strong{Response:}
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
 
-Returns an @ref{10,,EscrowConfigurationResponse}.
-@anchor{anastasis escrowconfigurationresponse}@anchor{10}
 @example
-interface EscrowConfigurationResponse @{
-
-  // Protocol identifier, clarifies that this is an Anastasis provider.
-  name: "anastasis";
+# apt install -t sid anastasis-httpd
+@end example
 
-  // libtool-style representation of the Exchange protocol version, see
-  // 
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
-  // The format is "current:revision:age".
-  version: string;
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
 
-  // Currency in which this provider processes payments.
-  currency: string;
+Sample configuration files for the HTTP reverse proxy can be found in
+@code{/etc/anastasis.conf}.
 
-  // supported authorization methods
-  methods: AuthorizationMethodConfig[];
+Note that the package does not complete the integration of the backend
+with the HTTP reverse proxy (typically with TLS certificates).  A
+configuration fragment for Nginx or Apache will be placed in
+@code{/etc/@{apache,nginx@}/conf-available/anastasis.conf}.
 
-  // maximum policy upload size supported
-  storage_limit_in_megabytes: number;
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
 
-  // Payment required to maintain an account to store policy documents for a 
year.
-  // Users can pay more, in which case the storage time will go up 
proportionally.
-  annual_fee: Amount;
+@example
+# apt install -t sid taler-merchant-httpd
+@end example
 
-  // Payment required to upload truth.  To be paid per upload.
-  truth_upload_fee: Amount;
+@node Installing Anastasis binary packages on Ubuntu,,Installing Anastasis 
binary packages on Debian,Installation
+@anchor{installation installing-anastasis-binary-packages-on-ubuntu}@anchor{11}
+@subsection Installing Anastasis binary packages on Ubuntu
 
-  // how long until the service expires deposited truth
-  // (unless refreshed via another POST)?
-  truth_lifetime: RelativeTime;
 
-  // Limit on the liability that the provider is offering with
-  // respect to the services provided.
-  liability_limit: Amount;
+To install the GNU Taler Ubuntu packages, first ensure that you have
+the right Ubuntu distribution. At this time, the packages are built for
+Ubuntu 20.04 LTS (Focal Fossa).
 
-  // salt value with 128 bits of entropy
-  // Different providers
-  // will use different high-entropy salt values. The resulting
-  // **provider salt** is then used in various operations to ensure
-  // cryptographic operations differ by provider.  A provider must
-  // never change its salt value.
-  server_salt: string;
+A typical @code{/etc/apt/sources.list.d/taler.list} file for this setup
+would look like this:
 
-@}
-@end example
-@anchor{anastasis authorizationmethodconfig}@anchor{11}
 @example
-interface AuthorizationMethodConfig @{
-  // name of the authorization method
-  type: string;
+deb https://deb.taler.net/apt/ubuntu/ focal-fossa main
+@end example
 
-  // Fee for accessing key share using this method
-  cost: Amount;
+The last line is crucial, as it adds the GNU Taler packages.
 
-@}
-@end example
-@end deffn
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
 
-@node Receiving Terms of Service,Manage policy,Receiving 
Configuration,Anastasis REST API
-@anchor{anastasis receiving-terms-of-service}@anchor{12}@anchor{anastasis 
terms}@anchor{13}
-@section Receiving Terms of Service
+@example
+# wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+# apt update
+@end example
 
+@cartouche
+@quotation Note 
+You may want to verify the correctness of the Taler Systems key out-of-band.
+@end quotation
+@end cartouche
 
-@anchor{anastasis get--terms}@anchor{14}
-@deffn {HTTP Get} GET /terms
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
 
-Obtain the terms of service provided by the escrow provider.
+@menu
+* Installing the graphical front-end: Installing the graphical front-end<2>. 
+* Installing the backend: Installing the backend<2>. 
 
-@strong{Response:}
+@end menu
 
-Returns the terms of service of the provider, in the best language
-and format available based on the client’s request.
-@end deffn
+@node Installing the graphical front-end<2>,Installing the 
backend<2>,,Installing Anastasis binary packages on Ubuntu
+@anchor{installation id1}@anchor{12}
+@subsubsection Installing the graphical front-end
 
-@anchor{anastasis get--privacy}@anchor{15}
-@deffn {HTTP Get} GET /privacy
 
-Obtain the privacy poliy of the service provided by the escrow provider.
+To install the Anastasis front-end, you can now simply run:
 
-@strong{Response:}
+@example
+# apt install -t focal-fossa anastasis-gtk
+@end example
 
-Returns the privacy policy of the provider, in the best language
-and format available based on the client’s request.
-@end deffn
+To use @code{anastasis-gtk}, you can simply run:
 
-@node Manage policy,Managing truth,Receiving Terms of Service,Anastasis REST 
API
-@anchor{anastasis id2}@anchor{16}@anchor{anastasis manage-policy}@anchor{17}
-@section Manage policy
+@example
+$ anastasis-gtk
+@end example
 
+@node Installing the backend<2>,,Installing the graphical 
front-end<2>,Installing Anastasis binary packages on Ubuntu
+@anchor{installation id2}@anchor{13}
+@subsubsection Installing the backend
 
-This API is used by the Anastasis client to deposit or request encrypted
-recovery documents with the escrow provider.  Generally, a client will deposit
-the same encrypted recovery document with each escrow provider, but provide
-a different truth to each escrow provider.
 
-Operations by the client are identified and authorized by @code{$ACCOUNT_PUB}, 
which
-should be kept secret from third parties. @code{$ACCOUNT_PUB} should be an 
account
-public key using the Crockford base32-encoding.
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
 
-In the following, UUID is always defined and used according to RFC 
4122@footnote{https://tools.ietf.org/html/rfc4122}.
+@example
+# apt install -t focal-fossa anastasis-httpd
+@end example
 
-@anchor{anastasis get--policy-$ACCOUNT_PUB[?version=$NUMBER]}@anchor{18}
-@deffn {HTTP Get} GET /policy/$ACCOUNT_PUB[?version=$NUMBER]
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
 
-Get the customer’s encrypted recovery document.  If “version”
-is not specified, the server returns the latest available version.  If
-“version” is specified, returns the policy with the respective
-“version”.  The response must begin with the nonce and
-an AES-GCM tag and continue with the ciphertext.  Once decrypted, the
-plaintext is expected to contain:
+Sample configuration files for the HTTP reverse proxy can be found in
+@code{/etc/anastasis.conf}.
 
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
 
-@itemize *
+@example
+# apt install -t sid taler-merchant-httpd
+@end example
 
-@item
-the escrow policy
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
 
-@item
-the separately encrypted master public key
-@end itemize
+@node Configuration,Cryptography,Installation,Documentation Overview
+@anchor{configuration doc}@anchor{14}@anchor{configuration 
configuration}@anchor{15}
+@section Configuration
 
-Note that the key shares required to decrypt the master public key are
-not included, as for this the client needs to obtain authorization.
-The policy does provide sufficient information for the client to determine
-how to authorize requests for @strong{truth}.
 
-The client MAY provide an “If-None-Match” header with an Etag.
-In that case, the server MUST additionally respond with an “304” status
-code in case the resource matches the provided Etag.
+Details about the contents of the configuration file are describe in
+the @code{anastasis.conf(5)} chapter.  This chapter only describes the
+configuration format.
 
-@strong{Response}:
+@menu
+* Configuration format:: 
+* Using anastasis-config:: 
 
+@end menu
 
-@table @asis
+@node Configuration format,Using anastasis-config,,Configuration
+@anchor{configuration configuration-format}@anchor{16}
+@subsection Configuration format
 
-@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
 
-The escrow provider responds with an @ref{19,,EncryptedRecoveryDocument} 
object.
+In Taler realm, any component obeys to the same pattern to get
+configuration values. According to this pattern, once the component has
+been installed, the installation deploys default values in
+$@{prefix@}/share/taler/config.d/, in .conf files. In order to override
+these defaults, the user can write a custom .conf file and either pass
+it to the component at execution time, or name it taler.conf and place
+it under $HOME/.config/.
 
-@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+A config file is a text file containing sections, and each section
+contains its values. The right format follows:
 
-The client requested the same resource it already knows.
+@example
+[section1]
+value1 = string
+value2 = 23
 
-@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+[section2]
+value21 = string
+value22 = /path22
+@end example
 
-The $ACCOUNT_PUB is not an EdDSA public key.
+Throughout any configuration file, it is possible to use @code{$}-prefixed
+variables, like @code{$VAR}, especially when they represent filesystem
+paths. It is also possible to provide defaults values for those
+variables that are unset, by using the following syntax:
+@code{$@{VAR:-default@}}. However, there are two ways a user can set
+@code{$}-prefixable variables:
 
-@item 402 Payment 
Required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+by defining them under a @code{[paths]} section, see example below,
 
-The account’s balance is too low for the specified operation.
-See the Taler payment protocol specification for how to pay.
+@example
+[paths]
+TALER_DEPLOYMENT_SHARED = $@{HOME@}/shared-data
+..
+[section-x]
+path-x = $@{TALER_DEPLOYMENT_SHARED@}/x
+@end example
 
-@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+or by setting them in the environment:
 
-The required account signature was invalid.
+@example
+$ export VAR=/x
+@end example
 
-@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
+The configuration loader will give precedence to variables set under
+@code{[path]}, though.
 
-The requested resource was not found.
-@end table
+The utility @code{taler-config}, which gets installed along with the
+exchange, serves to get and set configuration values without directly
+editing the .conf. The option @code{-f} is particularly useful to resolve
+pathnames, when they use several levels of @code{$}-expanded variables. See
+@code{taler-config --help}.
 
-@emph{Anastasis-Version}: $NUMBER — The server must return actual version of 
the encrypted recovery document via this header.
-If the client specified a version number in the header of the request, the 
server must return that version. If the client
-did not specify a version in the request, the server returns latest version of 
the @ref{19,,EncryptedRecoveryDocument}.
+Note that, in this stage of development, the file
+@code{$HOME/.config/taler.conf} can contain sections for @emph{all} the
+component. For example, both an exchange and a bank can read values from
+it.
 
-@emph{Etag}: Set by the server to the Base32-encoded SHA512 hash of the body. 
Used for caching and to prevent redundancies. The server MUST send the Etag if 
the status code is 200 OK.
+The repository @code{git://taler.net/deployment} contains examples of
+configuration file used in our demos. See under @code{deployment/config}.
 
-@emph{If-None-Match}: If this is not the very first request of the client, 
this contains the Etag-value which the client has received before from the 
server.
-The client SHOULD send this header with every request (except for the first 
request) to avoid unnecessary downloads.
+@quotation
 
-@emph{Anastasis-Account-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to download the requested encrypted recovery document.  The purpose used MUST 
be @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} (1401).
-@end deffn
+@strong{Note}
 
-@anchor{anastasis post--policy-$ACCOUNT_PUB}@anchor{1a}
-@deffn {HTTP Post} POST /policy/$ACCOUNT_PUB
+Expectably, some components will not work just by using default
+values, as their work is often interdependent. For example, a
+merchant needs to know an exchange URL, or a database name.
+@end quotation
 
-Upload a new version of the customer’s encrypted recovery document.
-While the document’s structure is described in JSON below, the upload
-should just be the bytestream of the raw data (i.e. 32-byte nonce followed
-by 16-byte tag followed by the encrypted document).
-If the request has been seen before, the server should do nothing, and 
otherwise store the new version.
-The body must begin with a nonce, an AES-GCM tag and continue with the 
ciphertext.  The format
-is the same as specified for the response of the GET method. The
-Anastasis server cannot fully validate the format, but MAY impose
-minimum and maximum size limits.
+@node Using anastasis-config,,Configuration format,Configuration
+@anchor{configuration using-anastasis-config}@anchor{17}
+@subsection Using anastasis-config
 
-@strong{Request}:
 
-@*Query Parameters:
+The tool @code{anastasis-config} can be used to extract or manipulate
+configuration values; however, the configuration use the well-known INI
+file format and can also be edited by hand.
 
-@itemize *
+Run
 
-@item
-@code{pay} – Optional argument, any non-empty value will do,
-suggested is @code{y} for @code{yes}.
-The client insists on making a payment for the respective
-account, even if this is not yet required. The server
-will respond with a @code{402 Payment required}, but only
-if the rest of the request is well-formed (account
-signature must match).  Clients that do not actually
-intend to make a new upload but that only want to pay
-may attempt to upload the latest backup again, as this
-option will be checked before the @code{304 Not modified}
-case.
+@example
+$ anastasis-config -s $SECTION
+@end example
 
-@item
-@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
-wait up to @code{timeout_ms} milliseconds for completion of the payment before
-sending the HTTP response.  A client must never rely on this behavior, as the
-backend may return a response immediately.
-@end itemize
+to list all of the configuration values in section @code{$SECTION}.
 
+Run
 
-@emph{If-None-Match}: This header MUST be present and set to the SHA512 hash 
(Etag) of the body by the client.
-The client SHOULD also set the “Expect: 100-Continue” header and wait for “100 
continue”
-before uploading the body.  The server MUST
-use the Etag to check whether it already knows the encrypted recovery document 
that is about to be uploaded.
-The server MUST refuse the upload with a “304” status code if the Etag matches
-the latest version already known to the server.
+@example
+$ anastasis-config -s $section -o $option
+@end example
 
-@emph{Anastasis-Policy-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to upload an encrypted recovery document.
+to extract the respective configuration value for option @code{$option} in
+section @code{$section}.
 
-@emph{Payment-Identifier}: Base-32 encoded 32-byte payment identifier that was 
included in a previous payment (see 402 status code). Used to allow the server 
to check that the client paid for the upload (to protect the server against DoS 
attacks) and that the client knows a real secret of financial value (as the 
@strong{kdf_id} might be known to an attacker). If this header is missing in 
the client’s request (or the associated payment has exceeded the upload limit), 
the server must retur [...]
+Finally, to change a setting, run
 
-@strong{Response}:
+@example
+$ anastasis-config -s $section -o $option -V $value
+@end example
 
+to set the respective configuration value to @code{$value}. Note that you
+have to manually restart the Taler backend after you change the
+configuration to make the new configuration go into effect.
 
-@table @asis
+Some default options will use $-variables, such as @code{$DATADIR} within
+their value. To expand the @code{$DATADIR} or other $-variables in the
+configuration, pass the @code{-f} option to @code{anastasis-config}. For 
example,
+compare:
 
-@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+@example
+$ anastasis-config -s ACCOUNT-bank \
+               -o WIRE_RESPONSE
+$ anastasis-config -f -s ACCOUNT-bank \
+               -o WIRE_RESPONSE
+@end example
 
-The encrypted recovery document was accepted and stored.  “Anastasis-Version” 
and “Anastasis-UUID” headers
-indicate what version and UUID was assigned to this encrypted recovery 
document upload by the server.
+While the configuration file is typically located at
+@code{$HOME/.config/taler.conf}, an alternative location can be specified
+to @code{taler-merchant-httpd} and @code{anastasis-config} using the @code{-c}
+option.
 
-@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
 
-The same encrypted recovery document was previously accepted and stored.  
“Anastasis-Version” header
-indicates what version was previously assigned to this encrypted recovery 
document.
+@node Cryptography,REST API,Configuration,Documentation Overview
+@anchor{cryptography doc}@anchor{18}@anchor{cryptography 
cryptography}@anchor{19}
+@section Cryptography
 
-@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
 
-The @code{$ACCOUNT_PUB} is not an EdDSA public key or mandatory headers are 
missing.
-The response body MUST elaborate on the error using a Taler error code in the 
typical JSON encoding.
+When a user needs to interact with Anastasis, the system first derives some key
+material, but not the master secret, from the user’s @strong{identifier} using
+different HKDFs.  These HKDFs are salted using the respective escrow
+provider’s @strong{server salt}, which ensures that the accounts for the same 
user
+cannot be easily correlated across the various Anastasis servers.
 
-@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+Each Anastasis server uses an EdDSA @strong{account key} to identify the 
account of
+the user.  The account private key is derived from the user’s 
@strong{identifier} using
+a computationally expensive cryptographic hash function.  Using an
+expensive hash algorithm is assumed to make it infeasible for a weak adversary 
to
+determine account keys by brute force (without knowing the user’s identifier).
+However, it is assumed that a strong adversary performing a targeted attack can
+compute the account key pair.
 
-The account’s balance is too low for the specified operation.
-See the Taler payment protocol specification for how to pay.
-The response body MAY provide alternative means for payment.
+The public account key is Crockford base32-encoded in the URI to identify the
+account, and used to sign requests.  These signatures are also provided in
+base32-encoding and transmitted using the HTTP header
+@code{Anastasis-Account-Signature}.
 
-@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+When confidential data is uploaded to an Anastasis server, the respective
+payload is encrypted using AES-GCM with a symmetric key and initialization
+vector derived from the @strong{identifier} and a high-entropy @strong{nonce}. 
 The
+nonce and the GCM tag are prepended to the ciphertext before being uploaded to
+the Anastasis server.  This is done whenever confidential data is stored with
+the server.
 
-The required account signature was invalid.  The response body may elaborate 
on the error.
+The @strong{core secret} of the user is (AES) encrypted using a symmetric 
@strong{master
+key}.  Recovering this master key requires the user to satisfy a particular
+@strong{policy}.  Policies specify a set of @strong{escrow methods}, each of 
which leads
+the user to a @strong{key share}. Combining those key shares (by hashing) 
allows
+the user to obtain a @strong{policy key}, which can be used to decrypt the 
@strong{master
+key}.  There can be many policies, satisfying any of these will allow the
+user to recover the master key.  A @strong{recovery document} contains the
+encrypted @strong{core secret}, a set of escrow methods and a set of policies.
 
-@item 413 Request entity too 
large@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14}:
+@menu
+* Key derivations:: 
+* Key Usage:: 
+* Availability Considerations:: 
 
-The upload is too large @emph{or} too small. The response body may elaborate 
on the error.
-@end table
+@end menu
 
-@strong{Details:}
-@anchor{anastasis encryptedrecoverydocument}@anchor{19}
-@example
-interface EncryptedRecoveryDocument @{
-  // Nonce used to compute the (iv,key) pair for encryption of the
-  // encrypted_compressed_recovery_document.
-  nonce: [32]; //bytearray
+@node Key derivations,Key Usage,,Cryptography
+@anchor{cryptography key-derivations}@anchor{1a}
+@subsection Key derivations
 
-  // Authentication tag
-  aes_gcm_tag: [16]; //bytearray
 
-  // Variable-size encrypted recovery document. After decryption,
-  // this contains a gzip compressed JSON-encoded `RecoveryDocument`.
-  // The nonce of the HKDF for this encryption must include the
-  // string "ERD".
-  encrypted_compressed_recovery_document: []; //bytearray of undefined length
+EdDSA and ECDHE public keys are always points on Curve25519 and represented
+using the standard 256 bit Ed25519 compact format.  The binary representation
+is converted to Crockford Base32 when transmitted inside JSON or as part of
+URLs.
+
+To start, a user provides their private, unique and unforgettable
+@strong{identifier} as a seed to identify their account.  For example, this 
could
+be a social security number together with their full name.  Specifics may
+depend on the cultural context, in this document we will simply refer to this
+information as the @strong{identifier}.
+
+This identifier will be first hashed with Argon2, to provide a @strong{kdf_id}
+which will be used to derive other keys later. The Hash must also include the
+respective @strong{server_salt}. This also ensures that the @strong{kdf_id} is 
different
+on each server. The use of Argon2 and the respective @strong{server_salt} is 
intended
+to make it difficult to brute-force @strong{kdf_id} values and help protect 
the user’s
+privacy. Also this ensures that the @strong{kdf_id}s on every server differs. 
However,
+we do not assume that the @strong{identifier} or the @strong{kdf_id} cannot be
+determined by an adversary performing a targeted attack, as a user’s
+@strong{identifier} is likely to always be known to state actors and may
+likely also be available to other actors.
 
-@}
-@end example
-@anchor{anastasis recoverydocument}@anchor{1b}
 @example
-interface RecoveryDocument @{
-  // Account identifier at backup provider, AES-encrypted with
-  // the (symmetric) master_key, i.e. an URL
-  // https://sync.taler.net/$BACKUP_ID and
-  // a private key to decrypt the backup.  Anastasis is oblivious
-  // to the details of how this is ultimately encoded.
-  backup_account: []; //bytearray of undefined length
+kdf_id := Argon2( identifier, server_salt, keysize )
+@end example
 
-  // List of escrow providers and selected authentication method
-  methods: EscrowMethod[];
+@strong{identifier}: The secret defined from the user beforehand.
 
-  // List of possible decryption policies
-  policy: DecryptionPolicy[];
+@strong{server_salt}: The salt from the Server.
 
-@}
-@end example
-@anchor{anastasis escrowmethod}@anchor{1c}
-@example
-interface EscrowMethod @{
-  // URL of the escrow provider (including possibly this Anastasis server)
-  provider_url : string;
+@strong{keysize}: The desired output size of the KDF, here 32 bytes.
 
-  // Type of the escrow method (e.g. security question, SMS etc.)
-  escrow_type: string;
+@menu
+* Verification:: 
+* Encryption:: 
 
-  // UUID of the escrow method (see /truth/ API below).
-  uuid: string;
+@end menu
 
-  // Key used to encrypt the `Truth` this `EscrowMethod` is related to.
-  // Client has to provide this key to the server when using /truth/
-  truth_encryption_key: [32]; //bytearray
+@node Verification,Encryption,,Key derivations
+@anchor{cryptography verification}@anchor{1b}
+@subsubsection Verification
 
-  // Salt used to encrypt the truth on the Anastasis server.
-  truth_salt: [32]; //bytearray
 
-  // The challenge to give to the user (i.e. the security question
-  // if this is challenge-response).
-  // (Q: as string in base32 encoding?)
-  // (Q: what is the mime-type of this value?)
-  //
-  // For some methods, this value may be absent.
-  //
-  // The plaintext challenge is not revealed to the
-  // Anastasis server.
-  challenge: []; //bytearray of undefined length
+For users to authorize “policy” operations we need an EdDSA key pair.  As we
+cannot assure that the corresponding private key is truly secret, such policy
+operations must never be destructive: Should an adversary learn the private
+key, they could access (and with the @strong{kdf_id}, decrypt) the user’s 
policy (but
+not the core secret), or upload a new version of the
+@strong{encrypted recovery document} (but not delete an existing version).
+
+For the generation of the private key we use the @strong{kdf_id} as the 
entropy source,
+hash it to derive a base secret which will then be processed to fit the
+requirements for EdDSA private keys.  From the private key we can then
+generate the corresponding public key.  Here, “ver” is used as a salt for the
+HKDF to ensure that the result differs from other cases where we hash
+@strong{kdf_id}.
 
-@}
-@end example
-@anchor{anastasis decryptionpolicy}@anchor{1d}
 @example
-interface DecryptionPolicy @{
-  // Salt included to encrypt master key share when
-  // using this decryption policy.
-  policy_salt: [32]; //bytearray
+ver_secret := HKDF(kdf_id, "ver", keysize)
+eddsa_priv := eddsa_d_to_a(ver_secret)
+eddsa_pub := get_EdDSA_Pub(eddsa_priv)
+@end example
 
-  // Master key, AES-encrypted with key derived from
-  // salt and keyshares revealed by the following list of
-  // escrow methods identified by UUID.
-  encrypted_master_key: [32]; //bytearray
+@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
 
-  // List of escrow methods identified by their uuid.
-  uuid: string[];
+@strong{kdf_id}: Hashed identifier.
 
-@}
-@end example
-@end deffn
+@strong{key_size}: Size of the output, here 32 bytes.
 
-@node Managing truth,,Manage policy,Anastasis REST API
-@anchor{anastasis managing-truth}@anchor{1e}@anchor{anastasis truth}@anchor{1f}
-@section Managing truth
+@strong{ver_secret}: Derived key from the @code{kdf_id}, serves as 
intermediate step for the generation of the private key.
 
+@strong{eddsa_d_to_a()}: Function which converts the ver_key to a valid EdDSA 
private key. Specifically, assuming the value @code{eddsa_priv} is in a 32-byte 
array “digest”, the function clears and sets certain bits as follows:
 
-This API is used by the Anastasis client to deposit @strong{truth} or request 
a (encrypted) @strong{key share} with
-the escrow provider.
+@example
+digest[0] = (digest[0] & 0x7f) | 0x40;
+digest[31] &= 0xf8;
+@end example
 
-An @strong{escrow method} specifies an Anastasis provider and how the user 
should
-authorize themself.  The @strong{truth} API allows the user to provide the
-(encrypted) key share to the respective escrow provider, as well as auxiliary
-data required for such a respective escrow method.
+@strong{eddsa_priv}: The generated EdDSA private key.
 
-An Anastasis-server may store truth for free for a certain time period, or
-charge per truth operation using GNU Taler.
+@strong{eddsa_pub}: The generated EdDSA public key.
 
-@anchor{anastasis post--truth-$UUID}@anchor{20}
-@deffn {HTTP Post} POST /truth/$UUID
+@node Encryption,,Verification,Key derivations
+@anchor{cryptography encryption}@anchor{1c}
+@subsubsection Encryption
 
-Upload a @ref{21,,TruthUploadRequest}-Object according to the policy the 
client created before (see @ref{1b,,RecoveryDocument}).
-If request has been seen before, the server should do nothing, and otherwise 
store the new object.
 
-@strong{Request:}
+For symmetric encryption of data we use AES256-GCM. For this we need a
+symmetric key and an initialization vector (IV).  To ensure that the
+symmetric key changes for each encryption operation, we compute the
+key material using an HKDF over a @code{nonce} and the @code{kdf_id}.
 
-@*Query Parameters:
+@example
+(iv,key) := HKDF(kdf_id, nonce, keysize + ivsize)
+@end example
 
-@itemize *
+@strong{HKDF()}: The HKDF-function uses two phases: First we use HMAC-SHA512 
for the extraction phase, then HMAC-SHA256 is used for expansion phase.
 
-@item
-@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
-wait up to @code{timeout_ms} milliseconds for completion of the payment before
-sending the HTTP response.  A client must never rely on this behavior, as the
-backend may return a response immediately.
-@end itemize
+@strong{kdf_id}: Hashed identifier.
 
+@strong{keysize}: Size of the AES symmetric key, here 32 bytes.
 
-@strong{Response:}
+@strong{ivsize}: Size of the AES GCM IV, here 12 bytes.
 
+@strong{prekey}: Original key material.
 
-@table @asis
+@strong{nonce}: 32-byte nonce, must never match “ver” (which it cannot as the 
length is different). Of course, we must
+avoid key reuse. So, we have to use different nonces to get different keys and 
IVs (see below).
 
-@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+@strong{key}: Symmetric key which is later used to encrypt the documents with 
AES256-GCM.
 
-Truth stored successfully.
+@strong{iv}: IV which will be used for AES-GCM.
 
-@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+@node Key Usage,Availability Considerations,Key derivations,Cryptography
+@anchor{cryptography key-usage}@anchor{1d}
+@subsection Key Usage
 
-The same truth was previously accepted and stored under this UUID.  The
-Anastasis server must still update the expiration time for the truth when 
returning
-this response code.
 
-@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+The keys we have generated are then used to encrypt the @strong{recovery 
document} and
+the @strong{key_share} of the user.
 
-This server requires payment to store truth per item.
-See the Taler payment protocol specification for how to pay.
-The response body MAY provide alternative means for payment.
+@menu
+* Encryption: Encryption<2>. 
+* Signatures:: 
 
-@item 409 
Conflict@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10}:
+@end menu
 
-The server already has some truth stored under this UUID. The client should 
check that it
-is generating UUIDs with enough entropy.
+@node Encryption<2>,Signatures,,Key Usage
+@anchor{cryptography id1}@anchor{1e}
+@subsubsection Encryption
 
-@item 412 Precondition 
failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13}:
 
-The selected authentication method is not supported on this provider.
-@end table
+Before every encryption a 32-byte nonce is generated.
+From this the symmetric key is computed as described above.
+We use AES256-GCM for the encryption of the @strong{recovery document} and
+the @strong{key_share}.  To ensure that the key derivation for the encryption
+of the @strong{recovery document} differs fundamentally from that of an
+individual @strong{key share}, we use different salts (“erd” and “eks”, 
respectively).
 
-@strong{Details:}
-@anchor{anastasis truthuploadrequest}@anchor{21}
 @example
-interface TruthUploadRequest @{
-  // Contains the information of an interface `EncryptedKeyShare`, but simply
-  // as one binary block (in Crockford Base32 encoding for JSON).
-  key_share_data: []; //bytearray
+(iv0, key0) := HKDF(key_id, nonce0, "erd", keysize + ivsize)
+(encrypted_recovery_document, aes_gcm_tag) := AES256_GCM(recovery_document, 
key0, iv0)
+(iv_i, key_i) := HKDF(key_id, nonce_i, "eks", [optional data], keysize + 
ivsize)
+(encrypted_key_share_i, aes_gcm_tag_i) := AES256_GCM(key_share_i, key_i, iv_i)
+@end example
 
-  // Key share method, i.e. "security question", "SMS", "e-mail", ...
-  type: string;
+@strong{encrypted_recovery_document}: The encrypted @strong{recovery document} 
which contains the escrow methods, policies
+and the encrypted @strong{core secret}.
 
-  // Nonce used to compute the (iv,key) pair for encryption of the
-  // encrypted_truth.
-  nonce: [32]; //bytearray
+@strong{nonce0}: Nonce which is used to generate @emph{key0} and @emph{iv0} 
which are used for the encryption of the @emph{recovery document}.
+Nonce must contain the string “ERD”.
 
-  // Authentication tag of encrypted_truth
-  aes_gcm_tag: [16]; //bytearray
+@strong{optional data}: Key material that optionally is contributed from the 
authentication method to further obfuscate the key share from the escrow 
provider.
 
-  // Variable-size truth. After decryption,
-  // this contains the ground truth, i.e. H(challenge answer),
-  // phone number, e-mail address, picture, fingerprint, ...
-  // **base32 encoded**.
-  //
-  // The nonce of the HKDF for this encryption must include the
-  // string "ECT".
-  encrypted_truth: [80]; //bytearray
+@strong{encrypted_key_share_i}: The encrypted @strong{key_share} which the 
escrow provider must release upon successful authentication.
+Here, @strong{i} must be a positive number used to iterate over the various 
@strong{key shares} used for the various @strong{escrow methods}
+at the various providers.
 
-  // mime type of truth, i.e. text/ascii, image/jpeg, etc.
-  truth_mime: string;
+@strong{nonce_i}: Nonce which is used to generate @emph{key_i} and @emph{iv_i} 
which are used for the encryption of the @strong{key share}. @strong{i} must be
+the same number as specified above for @emph{encrypted_key_share_i}. Nonce 
must contain the string “EKS” plus the according @emph{i}.
 
-@}
+As a special rule, when a @strong{security question} is used to authorize 
access to an
+@strong{encrypted_key_share_i}, then the salt “eks” is replaced with an 
(expensive) hash
+of the answer to the security question as an additional way to make the key 
share
+inaccessible to those who do not have the answer:
+
+@example
+powh := POW_HASH (qsalt, answer)
+ekss := HKDF("Anastasis-secure-question-uuid-salting",
+             powh,
+             uuid);
+(iv_i, key_i) := HKDF(key_id, nonce_i, ekss, [optional data], keysize + ivsize)
 @end example
-@end deffn
 
-@anchor{anastasis get--truth-$UUID[?response=$H_RESPONSE]}@anchor{22}
-@deffn {HTTP Get} GET /truth/$UUID[?response=$H_RESPONSE]
+@strong{qsalt}: Salt value used to hash answer to satisfy the challenge to 
prevent the provider from determining the answer via guessing.
 
-Get the stored encrypted key share. If @code{$H_RESPONSE} is specified by the 
client, the server checks
-if @code{$H_RESPONSE} matches the expected response specified before within 
the @ref{21,,TruthUploadRequest} (see encrypted_truth).
-Also, the user has to provide the correct @emph{truth_encryption_key} with 
every get request (see below).
-When @code{$H_RESPONSE} is correct, the server responds with the encrypted key 
share.
-The encrypted key share is returned simply as a byte array and not in JSON 
format.
+@strong{answer}: Answer to the security question, in UTF-8, as entered by the 
user.
 
-@strong{Response}:
+@strong{powh}: Result of the (expensive, proof-of-work) hash algorithm.
 
+@strong{uuid}: UUID of the challenge associated with the security question and 
the encrypted key share.
 
-@table @asis
+@strong{ekss}: Replacement salt to be used instead of “eks” when deriving the 
key to encrypt/decrypt the key share.
 
-@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+@node Signatures,,Encryption<2>,Key Usage
+@anchor{cryptography signatures}@anchor{1f}
+@subsubsection Signatures
 
-@ref{23,,EncryptedKeyShare} is returned in body (in binary).
 
-@item 202 
Accepted@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3}:
+The EdDSA keys are used to sign the data sent from the client to the
+server. Everything the client sends to server is signed. The following
+algorithm is equivalent for @strong{Anastasis-Policy-Signature}.
 
-The escrow provider will respond out-of-band (i.e. SMS).
-The body may contain human-readable instructions on next steps.
+@example
+(anastasis-account-signature) := eddsa_sign(h_body, eddsa_priv)
+ver_res := eddsa_verifiy(h_body, anastasis-account-signature, eddsa_pub)
+@end example
 
-@item >>208 Already Reported<<:
+@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_UPLOAD} 
(1400) (see GNUnet EdDSA signature API for the use of purpose).
 
-An authentication challenge was recently send, client should
-simply respond to the pending challenge.
+@strong{h_body}: The hashed body.
 
-@item 303 See 
other@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4}:
+@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
 
-The provider redirects for authentication (i.e. video identification/WebRTC).
-If the client is not a browser, it should launch a browser at the URL
-given in the “Location” header and allow the user to re-try the operation
-after successful authorization.
+When requesting policy downloads, the client must also provide a signature:
 
-@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+@example
+(anastasis-account-signature) := eddsa_sign(version, eddsa_priv)
+ver_res := eddsa_verifiy(version, anastasis-account-signature, eddsa_pub)
+@end example
 
-The service requires payment for access to truth.
-See the Taler payment protocol specification for how to pay.
-The response body MAY provide alternative means for payment.
+@strong{anastasis-account-signature}: Signature over the SHA-512 hash of the 
body using the purpose code @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} 
(1401) (see GNUnet EdDSA signature API for the use of purpose).
 
-@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+@strong{version}: The version requested as a 64-bit integer, 2^64-1 for the 
“latest version”.
 
-The server requires a valid “response” to the challenge associated with the 
UUID.
+@strong{ver_res}: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
 
-@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
+@node Availability Considerations,,Key Usage,Cryptography
+@anchor{cryptography availability-considerations}@anchor{20}
+@subsection Availability Considerations
 
-The server does not know any truth under the given UUID.
 
-@item 410 
Gone@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11}:
+Anastasis considers two main threats against availability. First, the
+Anastasis server operators must be protected against denial-of-service attacks
+where an adversary attempts to exhaust the operator’s resources.  The API 
protects
+against these attacks by allowing operators to set fees for all
+operations. Furthermore, all data stored comes with an expiration logic, so an
+attacker cannot force servers to store data indefinitely.
 
-The server has not (recently) issued a challenge under the given UUID,
-but a reply was provided. (This does not apply for secure question.)
+A second availability issue arises from strong adversaries that may be able to
+compute the account keys of some user.  While we assume that such an adversary
+cannot successfully authenticate against the truth, the account key does
+inherently enable these adversaries to upload a new policy for the account.
+This cannot be prevented, as the legitimate user must be able to set or change
+a policy using only the account key.  To ensure that an adversary cannot
+exploit this, policy uploads first of all never delete existing policies, but
+merely create another version.  This way, even if an adversary uploads a
+malicious policy, a user can still retrieve an older version of the policy to
+recover access to their data.  This append-only storage for policies still
+leaves a strong adversary with the option of uploading many policies to
+exhaust the Anastasis server’s capacity.  We limit this attack by requiring a
+policy upload to include a reference to a @strong{payment identifier} from a 
payment
+made by the user.  Thus, a policy upload requires both knowledge of the
+@strong{identity} and making a payment.  This effectively prevents an adversary
+from using the append-only policy storage from exhausting Anastasis server
+capacity.
 
-@item 417 Expectation 
Failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.18}:
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
 
-The decrypted ‘truth’ does not match the expectations of the authentication
-backend, i.e. a phone number for sending an SMS is not a number, or
-an e-mail address for sending an E-mail is not a valid e-mail address.
+@node REST API,Reducer API,Cryptography,Documentation Overview
+@anchor{rest doc}@anchor{21}@anchor{rest rest-api}@anchor{22}
+@section REST API
 
-@item 503 Service 
Unavailable@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4}:
 
-Server is out of Service.
-@end table
+@c This file is part of Anastasis
+@c 
+@c Copyright (C) 2014-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero Public License as published by the Free Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
 
-@emph{Truth-Decryption-Key}: Key used to encrypt the @strong{truth} (see 
encrypted_truth within @ref{21,,TruthUploadRequest}) and which has to provided 
by the user. The key is stored with
-the according @ref{1c,,EscrowMethod}. The server needs this key to get the 
info out of @ref{21,,TruthUploadRequest} needed to verify the @code{$RESPONSE}.
+@menu
+* HTTP Request and Response:: 
+* Protocol Version Ranges:: 
+* Common encodings:: 
 
-@strong{Details:}
-@anchor{anastasis encryptedkeyshare}@anchor{23}
-@example
-interface EncryptedKeyShare @{
-  // Nonce used to compute the decryption (iv,key) pair.
-  nonce_i: [32]; //bytearray
+@end menu
 
-  // Authentication tag
-  aes_gcm_tag_i: [16]; //bytearray
+@node HTTP Request and Response,Protocol Version Ranges,,REST API
+@anchor{rest http-common}@anchor{23}@anchor{rest 
http-request-and-response}@anchor{24}
+@subsection HTTP Request and Response
 
-  // Encrypted key-share in base32 encoding.
-  // After decryption, this yields a `KeyShare`.  Note that
-  // the `KeyShare` MUST be encoded as a fixed-size binary
-  // block (instead of in JSON encoding).
-  //
-  // HKDF for the key generation must include the
-  // string "eks" as salt.
-  // Depending on the method,
-  // the HKDF may additionally include
-  // bits from the response (i.e. some hash over the
-  // answer to the security question)
-  encrypted_key_share_i: [32]; //bytearray
 
-@}
-@end example
-@anchor{anastasis keyshare}@anchor{24}
-@example
-interface KeyShare @{
-  // Key material to concatenate with policy_salt and KDF to derive
-  // the key to decrypt the master key.
-  key_share: [32]; //bytearray
+Certain response formats are common for all requests. They are documented here
+instead of with each individual request.  Furthermore, we note that clients may
+theoretically fail to receive any response.  In this case, the client should
+verify that the Internet connection is working properly, and then proceed to
+handle the error as if an internal error (500) had been returned.
 
-  // Signature over method, uuid, and key_share.
-  account_sig: EddsaSignature;
+@anchor{rest any--*}@anchor{25}
+@deffn {HTTP Any} ANY /*
 
-@}
-@end example
-@end deffn
+@strong{Request:}
 
-@node Anastasis Reducer API,Authentication Methods,Anastasis REST API,Top
-@anchor{anastasis anastasis-reducer-api}@anchor{25}
-@chapter Anastasis Reducer API
+Unless specified otherwise, HTTP requests that carry a message body must
+have the content type @code{application/json}.
 
+@*Request Headers: 
 
-This section describes the Anastasis Reducer API which is used by client 
applications
-to store or load the different states the client application can have.
-The reducer takes a @ref{26,,state} in JSON syntax and returns the new state 
in JSON syntax.
+@itemize *
 
-For example a @strong{state} may take the following structure:
+@item 
+Content-Type@footnote{https://tools.ietf.org/html/rfc7231#section-3.1.1.5} – 
application/json
+@end itemize
 
-@example
-@{
-  "backup_state": "CONTINENT_SELECTING",
-  "continents": [
-    "Europe",
-    "North_America"
-  ]
-@}
-@end example
 
-The new state depends on the previous one and on the transition 
@ref{27,,action} with its
-arguments given to the reducer. A @strong{transition argument} also is a 
statement in JSON syntax:
+@strong{Response:}
 
-@example
-@{
-  "continent": "Europe"
-@}
-@end example
+@*Response Headers: 
 
-The new state returned by the reducer with the state and transition argument 
defined
-above would look like following for the transition @ref{27,,action} 
“select_continent”:
+@itemize *
+
+@item 
+Content-Type@footnote{https://tools.ietf.org/html/rfc7231#section-3.1.1.5} – 
application/json
+@end itemize
+
+
+
+@table @asis
+
+@item 200 
Ok@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+
+The request was successful.
+
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+
+One of the arguments to the request is missing or malformed.
+
+@item 500 Internal server 
error@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1}:
+
+This always indicates some serious internal operational error of the Anastasis
+provider, such as a program bug, database problems, etc., and must not be used 
for
+client-side problems.  When facing an internal server error, clients should
+retry their request after some delay.  We recommended initially trying after
+1s, twice more at randomized times within 1 minute, then the user should be
+informed and another three retries should be scheduled within the next 24h.
+If the error persists, a report should ultimately be made to the auditor,
+although the auditor API for this is not yet specified.  However, as internal
+server errors are always reported to the exchange operator, a good operator
+should naturally be able to address them in a timely fashion, especially
+within 24h.
+@end table
+
+Unless specified otherwise, all error status codes (4xx and 5xx) have a message
+body with an @ref{26,,ErrorDetail} JSON object.
+
+@strong{Details:}
 
 @example
-@{
-  "backup_state": "COUNTRY_SELECTING",
-  "continents": [
-    "Europe",
-    "North_America"
-  ],
-  "selected_continent": "Europe",
-  "countries": [
-    @{
-      "code": "ch",
-      "name": "Switzerland",
-      "continent": "Europe",
-      "name_i18n": @{
-        "de_DE": "Schweiz",
-        "de_CH": "Schwiiz",
-        "fr": "Suisse",
-        "en": "Swiss"
-      @},
-      "currency": "CHF"
-    @},
-    @{
-      "code": "de",
-      "name": "Germany",
-      "continent": "Europe",
-      "continent_i18n": @{
-        "de": "Europa"
-      @},
-      "name_i18n": @{
-        "de_DE": "Deutschland",
-        "de_CH": "Deutschland",
-        "fr": "Allemagne",
-        "en": "Germany"
-      @},
-      "currency": "EUR"
-    @}
-  ]
+interface ErrorDetail @{
+
+  // Numeric error code unique to the condition, see 
`@w{`}gnu-taler-error-codes`@w{`} in GANA.
+  // The other arguments are specific to the error value reported here.
+  code: number;
+
+  // Human-readable description of the error, i.e. "missing parameter", 
"commitment violation", ...
+  // Should give a human-readable hint about the error's nature. Optional, may 
change without notice!
+  hint?: string;
+
 @}
 @end example
+@end deffn
 
-@menu
-* States::
-* Backup Reducer::
-* Recovery Reducer::
-* Reducer transitions::
+@node Protocol Version Ranges,Common encodings,HTTP Request and Response,REST 
API
+@anchor{rest protocol-version-ranges}@anchor{27}
+@subsection Protocol Version Ranges
 
-@end menu
 
-@node States,Backup Reducer,,Anastasis Reducer API
-@anchor{anastasis states}@anchor{28}
-@section States
+Anastasis services expose the range of API versions they support.  Clients in
+turn have an API version range they support.  These version ranges are written
+down in the libtool version 
format@footnote{https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html}.
 
+A protocol version is a positive, non-zero integer.  A protocol version range 
consists of three components:
 
-Overall, the reducer knows the following states:
 
-@quotation
+@enumerate 
 
+@item 
+The @code{current} version.  This is the latest version of the protocol 
supported by the client or service.
 
-@itemize -
+@item 
+The @code{revision} number.  This value should usually not be interpreted by 
the client/server, but serves
+purely as a comment.  Each time a service/client for a protocol is updated 
while supporting the same
+set of protocol versions, the revision should be increased.
+In rare cases, the revision number can be used to work around unintended 
breakage in deployed
+versions of a service.  This is discouraged and should only be used in 
exceptional situations.
 
-@item
+@item 
+The @code{age} number.  This non-zero integer identifies with how many 
previous protocol versions this
+implementation is compatible.  An @code{age} of 0 implies that the 
implementation only supports
+the @code{current} protocol version.  The @code{age} must be less or equal 
than the @code{current} protocol version.
+@end enumerate
 
-@table @asis
+To avoid confusion with semantic versions, the protocol version range is 
written down in the following format:
 
-@item @strong{ERROR}: The transition lead to an error. No further transitions 
are possible from
+@example
+current[:revision[:age]]
+@end example
 
-this state, but the client may want to continue from a previous state.
-@end table
+The angle brackets mark optional components. If either @code{revision} or 
@code{age} are omitted, they default to 0.
 
-@item
+Examples:
 
-@table @asis
 
-@item @strong{CONTINENT_SELECTING}: The user should specify the continent 
where they are living,
+@itemize *
 
-so that we can show a list of countries to choose from.
-@end table
+@item 
+“1” and “1” are compatible
 
-@item
+@item 
+“1” and “2” are @strong{incompatible}
 
-@table @asis
+@item 
+“2:0:1” and “1:0:0” are compatible
 
-@item @strong{COUNTRY_SELECTING}: The user should specify the country where 
they are living,
+@item 
+“2:5:1” and “1:10:0” are compatible
 
-so that we can determine appropriate attributes, currencies and Anastasis
-providers.
-@end table
+@item 
+“4:0:1” and “2:0:0” are @strong{incompatible}
 
-@item
+@item 
+“4:0:1” and “3:0:0” are compatible
+@end itemize
 
-@table @asis
+@cartouche
+@quotation Note 
+Semantic versions@footnote{https://semver.org/} are not a good tool for this 
job, as we concisely want to express
+that the client/server supports the last @code{n} versions of the protocol.
+Semantic versions don’t support this, and semantic version ranges are too 
complex for this.
+@end quotation
+@end cartouche
 
-@item @strong{USER_ATTRIBUTES_COLLECTING}: The user should provide the 
country-specific personal
+@cartouche
+@quotation Warning 
+A client doesn’t have one single protocol version range.  Instead, it has
+a protocol version range for each type of service it talks to.
+@end quotation
+@end cartouche
 
-attributes.
-@end table
+@cartouche
+@quotation Warning 
+For privacy reasons, the protocol version range of a client should not be
+sent to the service.  Instead, the client should just use the two version 
ranges
+to decide whether it will talk to the service.
+@end quotation
+@end cartouche
 
-@item
+@node Common encodings,,Protocol Version Ranges,REST API
+@anchor{rest common-encodings}@anchor{28}@anchor{rest encodings-ref}@anchor{29}
+@subsection Common encodings
 
-@table @asis
 
-@item @strong{AUTHENTICATIONS_EDITING}: The user should add authentication 
methods to be used
+This section describes how certain types of values are represented throughout 
the API.
 
-during recovery.
-@end table
+@menu
+* Binary Data:: 
+* Hash codes:: 
+* Large numbers:: 
+* Timestamps:: 
+* Integers:: 
+* Objects:: 
+* Keys:: 
+* Signatures: Signatures<2>. 
+* Amounts:: 
+* Time:: 
+* Cryptographic primitives:: 
+* Signatures: Signatures<3>. 
+* Receiving Configuration:: 
+* Receiving Terms of Service:: 
+* Manage policy:: 
+* Managing truth:: 
 
-@item
-@strong{POLICIES_REVIEWING}: The user should review the recovery policies.
+@end menu
 
-@item
-@strong{SECRET_EDITING}: The user should edit the secret to be backed up.
+@node Binary Data,Hash codes,,Common encodings
+@anchor{rest base32}@anchor{2a}@anchor{rest binary-data}@anchor{2b}
+@subsubsection Binary Data
 
-@item
 
-@table @asis
+@example
+type Base32 = string;
+@end example
 
-@item @strong{TRUTHS_PAYING}: The user needs to pay for one or more uploads of 
data associated
+Binary data is generally encoded using Crockford’s variant of Base32
+(@indicateurl{http://www.crockford.com/wrmg/base32.html}), except that “U” is 
not excluded
+but also decodes to “V” to make OCR easy.  We will still simply use the JSON
+type “base32” and the term “Crockford Base32” in the text to refer to the
+resulting encoding.
 
-with an authentication method.
-@end table
+@node Hash codes,Large numbers,Binary Data,Common encodings
+@anchor{rest hash-codes}@anchor{2c}
+@subsubsection Hash codes
 
-@item
-@strong{POLICIES_PAYING}: The user needs to pay for storing the recovery 
policy document.
 
-@item
-@strong{BACKUP_FINISHED}: A backup has been successfully generated.
+Hash codes are strings representing base32 encoding of the respective
+hashed data. See @ref{2a,,base32}.
 
-@item
+@example
+// 64-byte hash code.
+type HashCode = string;
+@end example
 
-@table @asis
+@example
+// 32-byte hash code.
+type ShortHashCode = string;
+@end example
 
-@item @strong{CHALLENGE_SELECTING}: The user needs to select an authorization 
challenge to
+@node Large numbers,Timestamps,Hash codes,Common encodings
+@anchor{rest large-numbers}@anchor{2d}
+@subsubsection Large numbers
 
-proceed with recovery.
-@end table
 
-@item
-@strong{CHALLENGE_PAYING}: The user needs to pay to proceed with the 
authorization challenge.
+Large numbers such as 256 bit keys, are transmitted as other binary data in
+Crockford Base32 encoding.
 
-@item
-@strong{CHALLENGE_SOLVING}: The user needs to solve the authorization 
challenge.
+@node Timestamps,Integers,Large numbers,Common encodings
+@anchor{rest timestamps}@anchor{2e}
+@subsubsection Timestamps
 
-@item
-@strong{RECOVERY_FINISHED}: The secret of the user has been recovered.
-@end itemize
-@end quotation
 
-State names:
+Timestamps are represented by the following structure:
 
-@quotation
+@example
+interface Timestamp @{
+  // Milliseconds since epoch, or the special
+  // value "never" to represent an event that will
+  // never happen.
+  t_ms: number | "never";
+@}
+@end example
 
+@example
+interface Duration @{
+  // Duration in milliseconds or "forever"
+  // to represent an infinite duration.
+  d_ms: number | "forever";
+@}
+@end example
 
-@itemize -
+@node Integers,Objects,Timestamps,Common encodings
+@anchor{rest integers}@anchor{2f}@anchor{rest publickey}@anchor{30}
+@subsubsection Integers
 
-@item
-In SELECTING-states, the user has to choose one value out of a predefined set 
of values (for example a continent out of a set of continents).
 
-@item
-In COLLECTING-states, the user has to give certain values.
+@example
+// JavaScript numbers restricted to integers.
+type Integer = number;
+@end example
 
-@item
-In EDITING-states, the user is free to choose which values he wants to give.
+@node Objects,Keys,Integers,Common encodings
+@anchor{rest objects}@anchor{31}
+@subsubsection Objects
 
-@item
-In REVEIWING-states, the user may make a few choices, but primarily is 
expected to affirm something.
 
-@item
-in PAYING-states, the user must make a payment.
+@example
+// JavaScript objects, no further restrictions.
+type Object = object;
+@end example
 
-@item
-in FINISHED-states, the operation has definitively concluded.
-@end itemize
-@end quotation
+@node Keys,Signatures<2>,Objects,Common encodings
+@anchor{rest keys}@anchor{32}
+@subsubsection Keys
 
-@node Backup Reducer,Recovery Reducer,States,Anastasis Reducer API
-@anchor{anastasis backup-reducer}@anchor{29}
-@section Backup Reducer
 
-@anchor{anastasis state}@anchor{26}@anchor{anastasis action}@anchor{27}
+@example
+// EdDSA and ECDHE public keys always point on Curve25519
+// and represented  using the standard 256 bits Ed25519 compact format,
+// converted to Crockford `Base32`.
+type EddsaPublicKey = string;
+@end example
 
-@float Figure
+@example
+// EdDSA and ECDHE public keys always point on Curve25519
+// and represented  using the standard 256 bits Ed25519 compact format,
+// converted to Crockford `Base32`.
+type EddsaPrivateKey = string;
+@end example
 
-@image{anastasis-figures/anastasis_reducer_backup,,,fig-anastasis_reducer_backup,png}
+@node Signatures<2>,Amounts,Keys,Common encodings
+@anchor{rest signature}@anchor{33}@anchor{rest signatures}@anchor{34}
+@subsubsection Signatures
 
-@caption{Backup states and their transitions.}
 
-@end float
+@example
+// EdDSA signatures are transmitted as 64-bytes `base32`
+// binary-encoded objects with just the R and S values (base32_ binary-only).
+type EddsaSignature = string;
+@end example
 
+@node Amounts,Time,Signatures<2>,Common encodings
+@anchor{rest amount}@anchor{35}@anchor{rest amounts}@anchor{36}
+@subsubsection Amounts
 
-The illustration above shows the different states the reducer can have during 
a backup
-process.
 
-@node Recovery Reducer,Reducer transitions,Backup Reducer,Anastasis Reducer API
-@anchor{anastasis recovery-reducer}@anchor{2a}
-@section Recovery Reducer
+@example
+type Amount = string;
+@end example
 
+Amounts of currency are serialized as a string of the format
+@code{<Currency>:<DecimalAmount>}.  Taler treats monetary amounts as
+fixed-precision numbers, with 8 decimal places.  Unlike floating point numbers,
+this allows accurate representation of monetary amounts.
 
+The following constrains apply for a valid amount:
 
-@float Figure
 
-@image{anastasis-figures/anastasis_reducer_recovery,,,fig-anastasis_reducer_recovery,png}
+@enumerate 
 
-@caption{Recovery states and their transitions.}
+@item 
+The @code{<Currency>} part must be at most 11 characters long and may only 
consist
+of ASCII letters (@code{a-zA-Z}).
 
-@end float
+@item 
+The integer part of @code{<DecimalAmount>} may be at most 2^52.
 
+@item 
+The fractional part of @code{<DecimalAmount>} may contain at most 8 decimal 
digits.
+@end enumerate
 
-The illustration above shows the different states the reducer can have during 
a recovery
-process.
+@cartouche
+@quotation Note 
+“EUR:1.50” and “EUR:10” are valid amounts.  These are all invalid amounts: 
“A:B:1.5”, “EUR:4503599627370501.0”, “EUR:1.”, “EUR:.1”.
+@end quotation
+@end cartouche
 
-@node Reducer transitions,,Recovery Reducer,Anastasis Reducer API
-@anchor{anastasis reducer-transitions}@anchor{2b}
-@section Reducer transitions
+An amount that is prefixed with a @code{+} or @code{-} character is also used 
in certain contexts.
+When no sign is present, the amount is assumed to be positive.
 
+@node Time,Cryptographic primitives,Amounts,Common encodings
+@anchor{rest time}@anchor{37}
+@subsubsection Time
 
-In the following, the individual transitions will be specified in more detail.
-Note that we only show fields added by the reducer, typically the previous
-state is preserved to enable “back” transitions to function smoothly.
 
-@menu
-* Initial state::
-* Common transitions::
-* Backup transitions::
-* Recovery transitions::
+In signed messages, time is represented using 64-bit big-endian values,
+denoting microseconds since the UNIX Epoch.  @code{UINT64_MAX} represents 
“never”.
 
-@end menu
+@example
+struct GNUNET_TIME_Absolute @{
+  uint64_t timestamp_us;
+@};
+struct GNUNET_TIME_AbsoluteNBO @{
+  uint64_t abs_value_us__;       // in network byte order
+@};
+@end example
 
-@node Initial state,Common transitions,,Reducer transitions
-@anchor{anastasis initial-state}@anchor{2c}
-@subsection Initial state
+@node Cryptographic primitives,Signatures<3>,Time,Common encodings
+@anchor{rest cryptographic-primitives}@anchor{38}
+@subsubsection Cryptographic primitives
 
 
-The initial states for backup and recovery processes are:
-
-@strong{Initial backup state:}
+All elliptic curve operations are on Curve25519.  Public and private keys are
+thus 32 bytes, and signatures 64 bytes.  For hashing, including HKDFs, Taler
+uses 512-bit hash codes (64 bytes).
 
 @example
-@{
-  "backup_state": "CONTINENT_SELECTING",
-  "continents": [
-    "Europe",
-    "North America"
-  ]
-@}
+struct GNUNET_HashCode @{
+  uint8_t hash[64];      // usually SHA-512
+@};
+@end example
+@anchor{rest taler-ecdhephemeralpublickeyp}@anchor{39}
+@example
+struct TALER_EcdhEphemeralPublicKeyP @{
+  uint8_t ecdh_pub[32];
+@};
 @end example
-
-@strong{Initial recovery state:}
 
 @example
-@{
-  "recovery_state": "CONTINENT_SELECTING",
-  "continents": [
-    "Europe",
-    "North America"
-  ]
-@}
+struct UUID @{
+  uint32_t value[4];
+@};
 @end example
 
-Here, “continents” is an array of English strings with the names of the
-continents which contain countries for which Anastasis could function (based
-on having providers that are known to operate and rules being provided for
-user attributes from those countries).
+@node Signatures<3>,Receiving Configuration,Cryptographic primitives,Common 
encodings
+@anchor{rest id1}@anchor{3a}@anchor{rest id2}@anchor{3b}
+@subsubsection Signatures
 
-For internationalization, another field “continents_i18n” may be present.
-This field would be a map of language names to arrays of translated
-continent names:
+
+Any piece of signed data, complies to the abstract data structure given below.
 
 @example
-@{
-  "recovery_state": "CONTINENT_SELECTING",
-  "continents": [
-    "Europe",
-    "North America"
-  ]
-  "continents_i18n":
-  @{
-    "de_DE" : [
-      "Europa",
-      "Nordamerika"
-      ],
-    "de_CH" : [
-      "Europa",
-      "Nordamerika"
-      ]
-  @}
-@}
+struct Data @{
+  struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
+  type1_t payload1;
+  type2_t payload2;
+  ...
+@};
+
+/*From gnunet_crypto_lib.h*/
+struct GNUNET_CRYPTO_EccSignaturePurpose @{
+  /**
+
+  The following constraints apply for a valid amount:
+
+   * This field is used to express the context in
+   * which the signature is made, ensuring that a
+   * signature cannot be lifted from one part of the protocol
+   * to another. See `src/include/taler_signatures.h` within the
+   * exchange's codebase (git://taler.net/exchange).
+   */
+  uint32_t purpose;
+  /**
+   * This field equals the number of bytes being signed,
+   * namely 'sizeof (struct Data)'.
+   */
+  uint32_t size;
+@};
 @end example
+@anchor{rest salt}@anchor{3c}
+@node Receiving Configuration,Receiving Terms of Service,Signatures<3>,Common 
encodings
+@anchor{rest config}@anchor{3d}@anchor{rest receiving-configuration}@anchor{3e}
+@subsubsection Receiving Configuration
 
-Translations must be given in the same order as the main English array.
-
-@node Common transitions,Backup transitions,Initial state,Reducer transitions
-@anchor{anastasis common-transitions}@anchor{2d}
-@subsection Common transitions
 
+@anchor{rest get--config}@anchor{3f}
+@deffn {HTTP Get} GET /config
 
-@strong{select_continent:}
+Obtain the configuration details of the escrow provider.
 
-Here the user specifies the continent they live on.  Arguments (example):
+@strong{Response:}
 
+Returns an @ref{40,,EscrowConfigurationResponse}.
+@anchor{rest escrowconfigurationresponse}@anchor{40}
 @example
-@{
-  "continent": "Europe"
-@}
-@end example
+interface EscrowConfigurationResponse @{
 
-The continent must be given using the English name from the “continents” array.
-Using a translated continent name is invalid and may result in failure.
+  // Protocol identifier, clarifies that this is an Anastasis provider.
+  name: "anastasis";
 
-The reducer returns an updated state with a list of countries to choose from,
-for example:
+  // libtool-style representation of the Exchange protocol version, see
+  // 
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+  // The format is "current:revision:age".
+  version: string;
 
-@example
-@{
-  "backup_state": "COUNTRY_SELECTING",
-  "selected_continent": "Europe",
-  "countries": [
-    @{
-      "code": "ch",
-      "name": "Switzerland",
-      "continent": "Europe",
-      "name_i18n": @{
-        "de_DE": "Schweiz",
-        "de_CH": "Schwiiz",
-        "fr": "Suisse",
-        "en": "Swiss"
-      @},
-      "currency": "CHF"
-    @},
-    @{
-      "code": "de",
-      "name": "Germany",
-      "continent": "Europe",
-      "continent_i18n": @{
-        "de": "Europa"
-      @},
-      "name_i18n": @{
-        "de_DE": "Deutschland",
-        "de_CH": "Deutschland",
-        "fr": "Allemagne",
-        "en": "Germany"
-      @},
-      "currency": "EUR"
-    @}
-  ]
-@}
-@end example
+  // Currency in which this provider processes payments.
+  currency: string;
 
-Here “countries” is an array of countries on the “selected_continent”.  For
-each country, the “code” is the ISO 3166-1 alpha-2 country code.  The
-“continent” is only present because some countries span continents, the
-information is redundant and will always match “selected_continent”.  The
-“name” is the name of the country in English, internationalizations of the
-name may be provided in “name_i18n”.  The “currency” is @strong{an} official
-currency of the country, if a country has multiple currencies, it may appear
-multiple times in the list.  In this case, the user should select the entry
-with the currency they intend to pay with.  It is also possible for users
-to select a currency that does not match their country, but user interfaces
-should by default try to use currencies that match the user’s residence.
+  // Supported authorization methods.
+  methods: AuthorizationMethodConfig[];
 
-@strong{select_country:}
+  // Maximum policy upload size supported.
+  storage_limit_in_megabytes: number;
 
-Selects the country (via the country code) and specifies the currency.
-The latter is needed as some countries have more than one currency,
-and some use-cases may also involve users insisting on paying with
-foreign currency.
+  // Payment required to maintain an account to store policy documents for a 
year.
+  // Users can pay more, in which case the storage time will go up 
proportionally.
+  annual_fee: Amount;
 
-Arguments (example):
+  // Payment required to upload truth.  To be paid per upload.
+  truth_upload_fee: Amount;
+
+  // Limit on the liability that the provider is offering with
+  // respect to the services provided.
+  liability_limit: Amount;
+
+  // Salt value with 128 bits of entropy.
+  // Different providers
+  // will use different high-entropy salt values. The resulting
+  // **provider salt** is then used in various operations to ensure
+  // cryptographic operations differ by provider.  A provider must
+  // never change its salt value.
+  server_salt: string;
 
-@example
-@{
-  "country_code": "de",
-  "currency": "EUR"
 @}
 @end example
+@anchor{rest authorizationmethodconfig}@anchor{41}
+@example
+interface AuthorizationMethodConfig @{
+  // Name of the authorization method.
+  type: string;
 
-The “country_code” must be an ISO 3166-1 alpha-2 country code from
-the array of “countries” of the reducer’s state.  The “currency”
-field must be a valid currency accepted by the Taler payment system.
-
-The reducer returns a new state with the list of attributes the
-user is expected to provide, as well as possible authentication
-providers that accept payments in the selected currency:
+  // Fee for accessing key share using this method.
+  cost: Amount;
 
-@example
-@{
-  "backup_state": "USER_ATTRIBUTES_COLLECTING",
-  "selected_country": "de",
-  "currency": "EUR",
-  "required_attributes": [
-    @{
-      "type": "string",
-      "name": "full_name",
-      "label": "Full name",
-      "label_i18n": @{
-        "de_DE": "Vollständiger Name",
-        "de_CH": "Vollständiger Name",
-        "fr": "Nom complet",
-        "en": "Full name"
-      @},
-      "widget": "anastasis_gtk_ia_full_name",
-      "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
-    @},
-    @{
-      "type": "date",
-      "name": "birthdate",
-      "label": "Birthdate",
-      "label_i18n": @{
-        "de_DE": "Geburtsdatum",
-        "de_CH": "Geburtsdatum",
-        "fr": "Date de naissance",
-        "en": "Birthdate"
-      @},
-      "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
-      "widget": "anastasis_gtk_ia_birthdate"
-    @},
-        @{
-           "type": "string",
-       "name": "tax_number",
-           "label": "Taxpayer identification number",
-           "label_i18n":@{
-                 "de_DE": "Steuerliche Identifikationsnummer",
-                 "de_CH": "Steuerliche Identifikationsnummer",
-                 "en": "German taxpayer identification number"
-           @},
-           "widget": "anastasis_gtk_ia_tax_de",
-       "uuid": "dae48f85-e3ff-47a4-a4a3-ed981ed8c3c6",
-           "validation-regex": "^[0-9]@{11@}$",
-           "validation-logic": "DE_TIN_check"
-        @},
-    @{
-      "type": "string",
-      "name": "social_security_number",
-      "label": "Social security number",
-      "label_i18n": @{
-        "de_DE": "Sozialversicherungsnummer",
-        "de_CH": "Sozialversicherungsnummer",
-        "fr": "Numéro de sécurité sociale",
-        "en": "Social security number"
-      @},
-      "widget": "anastasis_gtk_ia_ssn",
-          "validation-regex": "^[0-9]@{8@}[[:upper:]][0-9]@{3@}$",
-          "validation-logic": "DE_SVN_check"
-      "optional" : true
-  @}
-  ],
-  "authentication_providers": @{
-    "http://localhost:8089/": @{
-      "http_status": 200,
-      "methods": [
-        @{ "type" : "question",
-          "usage_fee" : "EUR:0.0" @},
-        @{ "type" : "sms",
-          "usage_fee" : "EUR:0.5" @}
-      ],
-      "annual_fee": "EUR:4.99",
-      "truth_upload_fee": "EUR:4.99",
-      "liability_limit": "EUR:1",
-      "currency": "EUR",
-      "truth_lifetime": @{ "d_ms" : 50000000 @},
-      "storage_limit_in_megabytes": 1,
-      "provider_name": "Anastasis 4",
-      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
-    @},
-    "http://localhost:8088/": @{
-      "http_status": 200,
-      "methods": [
-        @{ "type" : "question",
-          "usage_fee" : "EUR:0.01" @},
-        @{ "type" : "sms",
-          "usage_fee" : "EUR:0.55" @}
-      ],
-      "annual_fee": "EUR:0.99",
-      "truth_upload_fee": "EUR:3.99",
-      "liability_limit": "EUR:1",
-      "currency": "EUR",
-      "truth_lifetime": @{ "d_ms" : 50000000 @},
-      "storage_limit_in_megabytes": 1,
-      "provider_name": "Anastasis 4",
-      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
-    @}
-  @}
 @}
 @end example
+@end deffn
 
-The array of “required_attributes” contains attributes about the user
-that must be provided includes:
+@node Receiving Terms of Service,Manage policy,Receiving Configuration,Common 
encodings
+@anchor{rest receiving-terms-of-service}@anchor{42}@anchor{rest 
terms}@anchor{43}
+@subsubsection Receiving Terms of Service
 
-@quotation
 
+@anchor{rest get--terms}@anchor{44}
+@deffn {HTTP Get} GET /terms
 
-@itemize -
+Obtain the terms of service provided by the escrow provider.
 
-@item
-@strong{type}: the type of the attribute, for now only ‘string’ and ‘date’ are
-supported
+@strong{Response:}
 
-@item
-@strong{name}: the name of the attribute, this is the key under which the
-attribute value must be provided later. The name must be unique per response.
+Returns the terms of service of the provider, in the best language
+and format available based on the client’s request.
+@end deffn
 
-@item
-@strong{label}: a human-readable description of the attribute in English.
-Translated descriptions may be provided under @strong{label_i18n}.
+@anchor{rest get--privacy}@anchor{45}
+@deffn {HTTP Get} GET /privacy
 
-@item
-@strong{uuid}: a UUID that uniquely identifies identical attributes across
-different countries. Useful to preserve values should the user enter
-some attributes, and then switch to another country.  Note that
-attributes must not be preserved if they merely have the same @strong{name},
-only the @strong{uuid} will be identical if the semantics is identical.
+Obtain the privacy policy of the service provided by the escrow provider.
 
-@item
-@strong{widget}: an optional name of a widget that is known to nicely render
-the attribute entry in user interfaces where named widgets are
-supported.
+@strong{Response:}
 
-@item
-@strong{validation-regex}: an optional extended POSIX regular expression
-that is to be used to validate (string) inputs to ensure they are
-well-formed.
+Returns the privacy policy of the provider, in the best language
+and format available based on the client’s request.
+@end deffn
 
-@item
-@strong{validation-logic}: optional name of a function that should be called
-to validate the input.  If the function is not known to the particular
-client, the respective validation can be skipped (at the expense of
-typos by users not being detected, possibly rendering secrets
-irrecoverable).
+@node Manage policy,Managing truth,Receiving Terms of Service,Common encodings
+@anchor{rest id3}@anchor{46}@anchor{rest manage-policy}@anchor{47}
+@subsubsection Manage policy
 
-@item
-@strong{optional}: optional boolean field that, if @code{true}, indicates that
-this attribute is not actually required but optional and users MAY leave
-it blank in case they do not have the requested information. Used for
-common fields that apply to some large part of the population but are
-not sufficiently universal to be actually required.
-@end itemize
-@end quotation
 
-The authentication providers are listed under a key that is the
-base URL of the service. For each provider, the following
-information is provided if the provider was successfully contacted:
+This API is used by the Anastasis client to deposit or request encrypted
+recovery documents with the escrow provider.  Generally, a client will deposit
+the same encrypted recovery document with each escrow provider, but provide
+a different truth to each escrow provider.
 
-@quotation
+Operations by the client are identified and authorized by @code{$ACCOUNT_PUB}, 
which
+should be kept secret from third parties. @code{$ACCOUNT_PUB} should be an 
account
+public key using the Crockford base32-encoding.
 
+In the following, UUID is always defined and used according to RFC 
4122@footnote{https://tools.ietf.org/html/rfc4122}.
 
-@itemize -
+@anchor{rest get--policy-$ACCOUNT_PUB[?version=$NUMBER]}@anchor{48}
+@deffn {HTTP Get} GET /policy/$ACCOUNT_PUB[?version=$NUMBER]
 
-@item
-@strong{http_status}: HTTP status code, always 200 on success.
+Get the customer’s encrypted recovery document.  If @code{version}
+is not specified, the server returns the latest available version.  If
+@code{version} is specified, returns the policy with the respective
+@code{version}.  The response must begin with the nonce and
+an AES-GCM tag and continue with the ciphertext.  Once decrypted, the
+plaintext is expected to contain:
 
-@item
-@strong{methods}: array of authentication methods supported by this
-provider. Includes the @strong{type} of the authentication method
-and the @strong{usage_fee} (how much the user must pay for authorization
-using this method during recovery).
 
-@item
-@strong{annual_fee}: fee the provider charges to store the recovery
-policy for one year.
+@itemize *
 
-@item
-@strong{truth_upload_fee}: fee the provider charges to store a key share.
+@item 
+the escrow policy
 
-@item
-@strong{truth_lifetime}: Taler-style relative time that specifies how
-long the provider will store truth data (key shares) after an upload.
+@item 
+the separately encrypted master public key
+@end itemize
 
-@item
-@strong{liability_limit}: amount the provider can be held liable for in
-case a key share or recovery document cannot be recovered due to
-provider failures.
+Note that the key shares required to decrypt the master public key are
+not included, as for this the client needs to obtain authorization.
+The policy does provide sufficient information for the client to determine
+how to authorize requests for @strong{truth}.
 
-@item
-@strong{currency}: currency in which the provider wants to be paid,
-will match all of the fees.
+The client MAY provide an @code{If-None-Match} header with an Etag.
+In that case, the server MUST additionally respond with an @code{304} status
+code in case the resource matches the provided Etag.
 
-@item
-@strong{storage_limit_in_megabytes}: maximum size of an upload (for
-both recovery document and truth data) in megabytes.
+@strong{Response}:
 
-@item
-@strong{provider_name}: human-readable name of the provider’s business.
 
-@item
-@strong{salt}: salt value used by the provider, used to derive the
-user’s identity at this provider. Should be unique per provider,
-and must never change for a given provider.  The salt is
-base32 encoded.
-@end itemize
-@end quotation
+@table @asis
 
-If contacting the provider failed, the information returned is:
+@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
 
-@quotation
+The escrow provider responds with an @ref{49,,EncryptedRecoveryDocument} 
object.
 
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
 
-@itemize -
+The client requested the same resource it already knows.
 
-@item
-@strong{http_status}: HTTP status code (if available, possibly 0 if
-we did not even obtain an HTTP response).
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
 
-@item
-@strong{error_code}: Taler error code, never 0.
-@end itemize
-@end quotation
+The @code{$ACCOUNT_PUB} is not an EdDSA public key.
 
-@strong{add_provider}:
+@item 402 Payment 
Required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
 
-This operation can be performed in state “USER_ATTRIBUTES_COLLECTING”.  It
-adds one or more Anastasis providers to the list of providers the reducer
-should henceforth consider.  Note that removing providers is not possible at
-this time.
+The account’s balance is too low for the specified operation.
+See the Taler payment protocol specification for how to pay.
 
-Here, the client must provide an array with the base URLs of the
-providers to add, for example:
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
 
-@example
-@{
-  "urls": [
-    "http://localhost:8888/";,
-    "http://localhost:8089/";
-  ]
-@}
-@end example
+The required account signature was invalid.
 
-Note that existing providers will remain in the state.  The following is an
-example for an expected new state where the service on port 8089 is
-unreachable, the service on port 8088 was previously known, and service on
-port 8888 was now added:
+@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
 
-@example
-@{
-  "backup_state": "USER_ATTRIBUTES_COLLECTING",
-  "authentication_providers": @{
-    "http://localhost:8089/": @{
-      "error_code": 11,
-      "http_status": 0
-    @},
-    "http://localhost:8088/": @{
-      "http_status": 200,
-      "methods": [
-        @{ "type" : "question",
-          "usage_fee" : "EUR:0.01" @},
-        @{ "type" : "sms",
-          "usage_fee" : "EUR:0.55" @}
-      ],
-      "annual_fee": "EUR:0.99",
-      "truth_upload_fee": "EUR:3.99",
-      "liability_limit": "EUR:1",
-      "currency": "EUR",
-      "truth_lifetime": @{ "d_ms" : 50000000 @},
-      "storage_limit_in_megabytes": 1,
-      "provider_name": "Anastasis 4",
-      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
-    @}
-    "http://localhost:8888/": @{
-      "methods": [
-        @{ "type" : "question",
-          "usage_fee" : "EUR:0.01" @},
-        @{ "type" : "sms",
-          "usage_fee" : "EUR:0.55" @}
-      ],
-      "annual_fee": "EUR:0.99",
-      "truth_upload_fee": "EUR:3.99",
-      "liability_limit": "EUR:1",
-      "currency": "EUR",
-      "truth_lifetime": @{ "d_ms" : 50000000 @},
-      "storage_limit_in_megabytes": 1,
-      "provider_name": "Anastasis 42",
-      "salt": "BXAPCKSH9D3MYJTS9536RHJHCX"
-    @}
-  @}
-@}
-@end example
+The requested resource was not found.
+@end table
 
-@node Backup transitions,Recovery transitions,Common transitions,Reducer 
transitions
-@anchor{anastasis backup-transitions}@anchor{2e}
-@subsection Backup transitions
+@emph{Anastasis-Version}: $NUMBER — The server must return actual version of 
the encrypted recovery document via this header.
+If the client specified a version number in the header of the request, the 
server must return that version. If the client
+did not specify a version in the request, the server returns latest version of 
the @ref{49,,EncryptedRecoveryDocument}.
 
+@emph{Etag}: Set by the server to the Base32-encoded SHA512 hash of the body. 
Used for caching and to prevent redundancies. The server MUST send the Etag if 
the status code is @code{200 OK}.
 
-@strong{enter_user_attributes:}
+@emph{If-None-Match}: If this is not the very first request of the client, 
this contains the Etag-value which the client has received before from the 
server.
+The client SHOULD send this header with every request (except for the first 
request) to avoid unnecessary downloads.
 
-This transition provides the user’s personal attributes. The specific set of
-attributes required depends on the country of residence of the user.  Some
-attributes may be optional, in which case they should be omitted entirely
-(that is, not simply be set to @code{null} or an empty string).  Example
-arguments would be:
+@emph{Anastasis-Account-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to download the requested encrypted recovery document.  The purpose used MUST 
be @code{TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD} (1401).
+@end deffn
 
-@example
-@{
-  "identity_attributes": @{
-    "full_name": "Max Musterman",
-    "social_security_number": "123456789",
-    "birthdate": "2000-01-01",
-    "birthplace": "Earth"
- @}
-@}
-@end example
+@anchor{rest post--policy-$ACCOUNT_PUB}@anchor{4a}
+@deffn {HTTP Post} POST /policy/$ACCOUNT_PUB
 
-Note that at this stage, the state machines between backup and
-recovery diverge and the @code{recovery_state} will begin to look
-very different from the @code{backup_state}.
+Upload a new version of the customer’s encrypted recovery document.
+While the document’s structure is described in JSON below, the upload
+should just be the bytestream of the raw data (i.e. 32-byte nonce followed
+by 16-byte tag followed by the encrypted document).
+If the request has been seen before, the server should do nothing, and 
otherwise store the new version.
+The body must begin with a nonce, an AES-GCM tag and continue with the 
ciphertext.  The format
+is the same as specified for the response of the GET method. The
+Anastasis server cannot fully validate the format, but MAY impose
+minimum and maximum size limits.
 
-For backups, if all required attributes are present, the reducer will
-transition to an @code{AUTHENTICATIONS_EDITING} state with the attributes added
-to it:
+@strong{Request}:
 
-@example
-@{
-  "backup_state": "AUTHENTICATIONS_EDITING",
-  "identity_attributes": @{
-    "full_name": "Max Musterman",
-    "social_security_number": "123456789",
-    "birthdate": "2000-01-01",
-    "birthplace": "Earth"
-  @}
-@}
-@end example
+@*Query Parameters: 
 
-If required attributes are missing, do not match the required regular
-expression or fail the custom validation logic, the reducer SHOULD transition
-to an error state indicating what was wrong about the input.  A reducer that
-does not support some specific validation logic MAY accept the invalid input
-and proceed anyway.  The error state will include a Taler error code that
-is specific to the failure, and optional details.  Example:
+@itemize *
 
-@example
-@{
-  "backup_state": "ERROR",
-  "code": 8404,
-  "hint": "An input did not match the regular expression.",
-  "detail": "social_security_number"
-@}
-@end example
+@item 
+@code{storage_duration=YEARS} – For how many years from now would the client 
like us to
+store the recovery document? Defaults to 0 (that is, do
+not extend / prolong existing storage contract).
+The server will respond with a @code{402 Payment required}, but only
+if the rest of the request is well-formed (account
+signature must match).  Clients that do not actually
+intend to make a new upload but that only want to pay
+may attempt to upload the latest backup again, as this
+option will be checked before the @code{304 Not modified}
+case.
 
-Clients may safely repeat this transition to validate the user’s inputs
-until they satisfy all of the constraints.  This way, the user interface
-does not have to perform the input validation directly.
+@item 
+@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
+wait up to @code{timeout_ms} milliseconds for completion of the payment before
+sending the HTTP response.  A client must never rely on this behavior, as the
+backend may return a response immediately.
+@end itemize
 
-@strong{add_authentication}:
 
-This transition adds an authentication method.  The method must be supported
-by one or more providers that are included in the current state.  Adding an
-authentication method requires specifying the @code{type} and 
@code{instructions} to
-be given to the user.  The @code{challenge} is encrypted and stored at the
-Anastasis provider. The specific semantics of the value depend on the
-@code{type}.  Typical challenges values are a phone number (to send an SMS to),
-an e-mail address (to send a PIN code to) or the answer to a security
-question.  Note that these challenge values will still be encrypted (and
-possibly hashed) before being given to the Anastasis providers.
+@emph{If-None-Match}: This header MUST be present and set to the SHA512 hash 
(Etag) of the body by the client.
+The client SHOULD also set the @code{Expect: 100-Continue} header and wait for 
@code{100 continue}
+before uploading the body.  The server MUST
+use the Etag to check whether it already knows the encrypted recovery document 
that is about to be uploaded.
+The server MUST refuse the upload with a @code{304} status code if the Etag 
matches
+the latest version already known to the server.
 
-Note that the @code{challenge} must be given in Crockford Base32 encoding, as 
it
-MAY include binary data (such as a photograph of the user).  In the latter
-case, the optional @code{mime_type} field must be provided to give the MIME 
type
-of the value encoded in @code{challenge}.
+@emph{Anastasis-Policy-Signature}: The client must provide Base-32 encoded 
EdDSA signature over hash of body with @code{$ACCOUNT_PRIV}, affirming desire 
to upload an encrypted recovery document.
 
-@example
-@{
-  "authentication_method":
-  @{
-    "type": "question",
-    "mime_type" : "text/plain",
-    "instructions" : "What is your favorite GNU package?",
-    "challenge" : "E1QPPS8A",
-  @}
-@}
-@end example
+@emph{Payment-Identifier}: Base-32 encoded 32-byte payment identifier that was 
included in a previous payment (see @code{402} status code). Used to allow the 
server to check that the client paid for the upload (to protect the server 
against DoS attacks) and that the client knows a real secret of financial value 
(as the @strong{kdf_id} might be known to an attacker). If this header is 
missing in the client’s request (or the associated payment has exceeded the 
upload limit), the server mus [...]
 
-If the information provided is valid, the reducer will add the new
-authentication method to the array of authentication methods:
+@strong{Response}:
+
+
+@table @asis
+
+@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+
+The encrypted recovery document was accepted and stored.  
@code{Anastasis-Version} and @code{Anastasis-UUID} headers
+indicate what version and UUID was assigned to this encrypted recovery 
document upload by the server.
+
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+
+The same encrypted recovery document was previously accepted and stored.  
@code{Anastasis-Version} header
+indicates what version was previously assigned to this encrypted recovery 
document.
+
+@item 400 Bad 
request@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1}:
+
+The @code{$ACCOUNT_PUB} is not an EdDSA public key or mandatory headers are 
missing.
+The response body MUST elaborate on the error using a Taler error code in the 
typical JSON encoding.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+The account’s balance is too low for the specified operation.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+
+The required account signature was invalid.  The response body may elaborate 
on the error.
+
+@item 413 Request entity too 
large@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.14}:
+
+The upload is too large @emph{or} too small. The response body may elaborate 
on the error.
+@end table
 
+@strong{Details:}
+@anchor{rest encryptedrecoverydocument}@anchor{49}
 @example
-@{
-  "backup_state": "AUTHENTICATIONS_EDITING",
-  "authentication_methods": [
-    @{
-      "type": "question",
-      "mime_type" : "text/plain",
-      "instructions" : "What is your favorite GNU package?",
-      "challenge" : "E1QPPS8A",
-    @},
-    @{
-      "type": "email",
-      "instructions" : "E-mail to user@@*le.com",
-      "challenge": "ENSPAWJ0CNW62VBGDHJJWRVFDM50"
-    @}
-  ]
+interface EncryptedRecoveryDocument @{
+  // Nonce used to compute the (iv,key) pair for encryption of the
+  // encrypted_compressed_recovery_document.
+  nonce: [32]; //bytearray
+
+  // Authentication tag.
+  aes_gcm_tag: [16]; //bytearray
+
+  // Variable-size encrypted recovery document. After decryption,
+  // this contains a gzip compressed JSON-encoded `RecoveryDocument`.
+  // The nonce of the HKDF for this encryption must include the
+  // string "ERD".
+  encrypted_compressed_recovery_document: []; //bytearray of undefined length
+
+@}
+@end example
+@anchor{rest recoverydocument}@anchor{4b}
+@example
+interface RecoveryDocument @{
+  // Account identifier at backup provider, AES-encrypted with
+  // the (symmetric) master_key, i.e. an URL
+  // https://sync.taler.net/$BACKUP_ID and
+  // a private key to decrypt the backup.  Anastasis is oblivious
+  // to the details of how this is ultimately encoded.
+  backup_account: []; //bytearray of undefined length
+
+  // List of escrow providers and selected authentication method.
+  methods: EscrowMethod[];
+
+  // List of possible decryption policies.
+  policy: DecryptionPolicy[];
+
+@}
+@end example
+@anchor{rest escrowmethod}@anchor{4c}
+@example
+interface EscrowMethod @{
+  // URL of the escrow provider (including possibly this Anastasis server).
+  provider_url : string;
+
+  // Type of the escrow method (e.g. security question, SMS etc.).
+  escrow_type: string;
+
+  // UUID of the escrow method (see /truth/ API below).
+  uuid: string;
+
+  // Key used to encrypt the `Truth` this `EscrowMethod` is related to.
+  // Client has to provide this key to the server when using 
`@w{`}/truth/`@w{`}.
+  truth_encryption_key: [32]; //bytearray
+
+  // Salt used to encrypt the truth on the Anastasis server.
+  truth_salt: [32]; //bytearray
+
+  // The challenge to give to the user (i.e. the security question
+  // if this is challenge-response).
+  // (Q: as string in base32 encoding?)
+  // (Q: what is the mime-type of this value?)
+  //
+  // For some methods, this value may be absent.
+  //
+  // The plaintext challenge is not revealed to the
+  // Anastasis server.
+  challenge: []; //bytearray of undefined length
+
+@}
+@end example
+@anchor{rest decryptionpolicy}@anchor{4d}
+@example
+interface DecryptionPolicy @{
+  // Salt included to encrypt master key share when
+  // using this decryption policy.
+  policy_salt: [32]; //bytearray
+
+  // Master key, AES-encrypted with key derived from
+  // salt and keyshares revealed by the following list of
+  // escrow methods identified by UUID.
+  encrypted_master_key: [32]; //bytearray
+
+  // List of escrow methods identified by their UUID.
+  uuid: string[];
+
+@}
+@end example
+@end deffn
+
+@node Managing truth,,Manage policy,Common encodings
+@anchor{rest managing-truth}@anchor{4e}@anchor{rest truth}@anchor{4f}
+@subsubsection Managing truth
+
+
+This API is used by the Anastasis client to deposit @strong{truth} or request 
a (encrypted) @strong{key share} with
+the escrow provider.
+
+An @strong{escrow method} specifies an Anastasis provider and how the user 
should
+authorize themself.  The @strong{truth} API allows the user to provide the
+(encrypted) key share to the respective escrow provider, as well as auxiliary
+data required for such a respective escrow method.
+
+An Anastasis-server may store truth for free for a certain time period, or
+charge per truth operation using GNU Taler.
+
+@anchor{rest post--truth-$UUID}@anchor{50}
+@deffn {HTTP Post} POST /truth/$UUID
+
+Upload a @ref{51,,TruthUploadRequest}-Object according to the policy the 
client created before (see @ref{4b,,RecoveryDocument}).
+If request has been seen before, the server should do nothing, and otherwise 
store the new object.
+
+@strong{Request:}
+
+@*Query Parameters: 
+
+@itemize *
+
+@item 
+@code{timeout_ms=NUMBER} – @emph{Optional.}  If specified, the Anastasis 
server will
+wait up to @code{timeout_ms} milliseconds for completion of the payment before
+sending the HTTP response.  A client must never rely on this behavior, as the
+backend may return a response immediately.
+@end itemize
+
+
+@strong{Response:}
+
+
+@table @asis
+
+@item 204 No 
content@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5}:
+
+Truth stored successfully.
+
+@item 304 Not 
modified@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5}:
+
+The same truth was previously accepted and stored under this UUID.  The
+Anastasis server must still update the expiration time for the truth when 
returning
+this response code.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+This server requires payment to store truth per item.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 409 
Conflict@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10}:
+
+The server already has some truth stored under this UUID. The client should 
check that it
+is generating UUIDs with enough entropy.
+
+@item 412 Precondition 
failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13}:
+
+The selected authentication method is not supported on this provider.
+@end table
+
+@strong{Details:}
+@anchor{rest truthuploadrequest}@anchor{51}
+@example
+interface TruthUploadRequest @{
+  // Contains the information of an interface `EncryptedKeyShare`, but simply
+  // as one binary block (in Crockford Base32 encoding for JSON).
+  key_share_data: []; //bytearray
+
+  // Key share method, i.e. "security question", "SMS", "e-mail", ...
+  type: string;
+
+  // Nonce used to compute the (iv,key) pair for encryption of the
+  // encrypted_truth.
+  nonce: [32]; //bytearray
+
+  // Authentication tag of `@w{`}encrypted_truth`@w{`}.
+  aes_gcm_tag: [16]; //bytearray
+
+  // Variable-size truth. After decryption,
+  // this contains the ground truth, i.e. H(challenge answer),
+  // phone number, e-mail address, picture, fingerprint, ...
+  // **base32 encoded**.
+  //
+  // The nonce of the HKDF for this encryption must include the
+  // string "ECT".
+  encrypted_truth: [80]; //bytearray
+
+  // MIME type of truth, i.e. text/ascii, image/jpeg, etc.
+  truth_mime: string;
+
+  // For how many years from now would the client like us to
+  // store the truth?
+  storage_duration_years: Integer;
+
 @}
 @end example
+@end deffn
+
+@anchor{rest get--truth-$UUID[?response=$H_RESPONSE]}@anchor{52}
+@deffn {HTTP Get} GET /truth/$UUID[?response=$H_RESPONSE]
+
+Get the stored encrypted key share. If @code{$H_RESPONSE} is specified by the 
client, the server checks
+if @code{$H_RESPONSE} matches the expected response specified before within 
the @ref{51,,TruthUploadRequest} (see @code{encrypted_truth}).
+Also, the user has to provide the correct @emph{truth_encryption_key} with 
every get request (see below).
+When @code{$H_RESPONSE} is correct, the server responds with the encrypted key 
share.
+The encrypted key share is returned simply as a byte array and not in JSON 
format.
+
+@strong{Response}:
+
+
+@table @asis
+
+@item 200 
OK@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1}:
+
+@ref{53,,EncryptedKeyShare} is returned in body (in binary).
+
+@item 202 
Accepted@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3}:
+
+The escrow provider will respond out-of-band (i.e. SMS).
+The body may contain human-readable instructions on next steps.
+
+@item >>208 Already Reported<<:
+
+An authentication challenge was recently send, client should
+simply respond to the pending challenge.
+
+@item 303 See 
other@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4}:
+
+The provider redirects for authentication (i.e. video identification/WebRTC).
+If the client is not a browser, it should launch a browser at the URL
+given in the @code{Location} header and allow the user to re-try the operation
+after successful authorization.
+
+@item 402 Payment 
required@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.3}:
+
+The service requires payment for access to truth.
+See the Taler payment protocol specification for how to pay.
+The response body MAY provide alternative means for payment.
+
+@item 403 
Forbidden@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4}:
+
+The server requires a valid “response” to the challenge associated with the 
UUID.
+
+@item 404 Not 
found@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5}:
+
+The server does not know any truth under the given UUID.
+
+@item 410 
Gone@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11}:
+
+The server has not (recently) issued a challenge under the given UUID,
+but a reply was provided. (This does not apply for secure question.)
+
+@item 417 Expectation 
Failed@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.18}:
+
+The decrypted @code{truth} does not match the expectations of the 
authentication
+backend, i.e. a phone number for sending an SMS is not a number, or
+an e-mail address for sending an E-mail is not a valid e-mail address.
+
+@item 503 Service 
Unavailable@footnote{http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.4}:
+
+Server is out of Service.
+@end table
+
+@emph{Truth-Decryption-Key}: Key used to encrypt the @strong{truth} (see 
encrypted_truth within @ref{51,,TruthUploadRequest}) and which has to provided 
by the user. The key is stored with
+the according @ref{4c,,EscrowMethod}. The server needs this key to get the 
info out of @ref{51,,TruthUploadRequest} needed to verify the @code{$RESPONSE}.
+
+@strong{Details:}
+@anchor{rest encryptedkeyshare}@anchor{53}
+@example
+interface EncryptedKeyShare @{
+  // Nonce used to compute the decryption (iv,key) pair.
+  nonce_i: [32]; //bytearray
+
+  // Authentication tag.
+  aes_gcm_tag_i: [16]; //bytearray
+
+  // Encrypted key-share in base32 encoding.
+  // After decryption, this yields a `KeyShare`.  Note that
+  // the `KeyShare` MUST be encoded as a fixed-size binary
+  // block (instead of in JSON encoding).
+  //
+  // HKDF for the key generation must include the
+  // string "eks" as salt.
+  // Depending on the method,
+  // the HKDF may additionally include
+  // bits from the response (i.e. some hash over the
+  // answer to the security question).
+  encrypted_key_share_i: [32]; //bytearray
+
+@}
+@end example
+@anchor{rest keyshare}@anchor{54}
+@example
+interface KeyShare @{
+  // Key material to concatenate with policy_salt and KDF to derive
+  // the key to decrypt the master key.
+  key_share: [32]; //bytearray
+
+  // Signature over method, UUID, and `@w{`}key_share`@w{`}.
+  account_sig: EddsaSignature;
+
+@}
+@end example
+@end deffn
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Reducer API,Authentication Methods,REST API,Documentation Overview
+@anchor{reducer doc}@anchor{55}@anchor{reducer reducer-api}@anchor{56}
+@section Reducer API
+
+
+This section describes the Anastasis Reducer API which is used by client 
applications
+to store or load the different states the client application can have.
+The reducer takes a @ref{57,,state} in JSON syntax and returns the new state 
in JSON syntax.
+
+For example a @strong{state} may take the following structure:
+
+@example
+@{
+  "backup_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North_America"
+  ]
+@}
+@end example
+
+The new state depends on the previous one and on the transition 
@ref{58,,action} with its
+arguments given to the reducer. A @strong{transition argument} also is a 
statement in JSON syntax:
+
+@example
+@{
+  "continent": "Europe"
+@}
+@end example
+
+The new state returned by the reducer with the state and transition argument 
defined
+above would look like following for the transition @ref{58,,action} 
@code{select_continent}:
+
+@example
+@{
+  "backup_state": "COUNTRY_SELECTING",
+  "continents": [
+    "Europe",
+    "North_America"
+  ],
+  "selected_continent": "Europe",
+  "countries": [
+    @{
+      "code": "ch",
+      "name": "Switzerland",
+      "continent": "Europe",
+      "name_i18n": @{
+        "de_DE": "Schweiz",
+        "de_CH": "Schwiiz",
+        "fr": "Suisse",
+        "en": "Swiss"
+      @},
+      "currency": "CHF"
+    @},
+    @{
+      "code": "de",
+      "name": "Germany",
+      "continent": "Europe",
+      "continent_i18n": @{
+        "de": "Europa"
+      @},
+      "name_i18n": @{
+        "de_DE": "Deutschland",
+        "de_CH": "Deutschland",
+        "fr": "Allemagne",
+        "en": "Germany"
+      @},
+      "currency": "EUR"
+    @}
+  ]
+@}
+@end example
+
+@menu
+* States:: 
+* Backup Reducer:: 
+* Recovery Reducer:: 
+* Reducer transitions:: 
+
+@end menu
+
+@node States,Backup Reducer,,Reducer API
+@anchor{reducer states}@anchor{59}
+@subsection States
+
+
+Overall, the reducer knows the following states:
+
+@quotation
+
+
+@itemize -
+
+@item 
+
+@table @asis
+
+@item @strong{ERROR}: The transition led to an error. No further transitions 
are possible from
+
+this state, but the client may want to continue from a previous state.
+@end table
+
+@item 
+
+@table @asis
+
+@item @strong{CONTINENT_SELECTING}: The user should specify the continent 
where they are living,
+
+so that we can show a list of countries to choose from.
+@end table
+
+@item 
+
+@table @asis
+
+@item @strong{COUNTRY_SELECTING}: The user should specify the country where 
they are living,
+
+so that we can determine appropriate attributes, currencies and Anastasis
+providers.
+@end table
+
+@item 
+
+@table @asis
+
+@item @strong{USER_ATTRIBUTES_COLLECTING}: The user should provide the 
country-specific personal
+
+attributes.
+@end table
+
+@item 
+
+@table @asis
+
+@item @strong{AUTHENTICATIONS_EDITING}: The user should add authentication 
methods to be used
+
+during recovery.
+@end table
+
+@item 
+@strong{POLICIES_REVIEWING}: The user should review the recovery policies.
+
+@item 
+@strong{SECRET_EDITING}: The user should edit the secret to be backed up.
+
+@item 
+
+@table @asis
+
+@item @strong{TRUTHS_PAYING}: The user needs to pay for one or more uploads of 
data associated
+
+with an authentication method.
+@end table
+
+@item 
+@strong{POLICIES_PAYING}: The user needs to pay for storing the recovery 
policy document.
+
+@item 
+@strong{BACKUP_FINISHED}: A backup has been successfully generated.
+
+@item 
+
+@table @asis
+
+@item @strong{SECRET_SELECTING}: The user needs to select a recovery policy 
document with
+
+the secret that is to be recovered.
+@end table
+
+@item 
+
+@table @asis
+
+@item @strong{CHALLENGE_SELECTING}: The user needs to select an authorization 
challenge to
+
+proceed with recovery.
+@end table
+
+@item 
+@strong{CHALLENGE_PAYING}: The user needs to pay to proceed with the 
authorization challenge.
+
+@item 
+@strong{CHALLENGE_SOLVING}: The user needs to solve the authorization 
challenge.
+
+@item 
+@strong{RECOVERY_FINISHED}: The secret of the user has been recovered.
+@end itemize
+@end quotation
+
+State names:
+
+@quotation
+
+
+@itemize -
+
+@item 
+In SELECTING-states, the user has to choose one value out of a predefined set 
of values (for example a continent out of a set of continents).
+
+@item 
+In COLLECTING-states, the user has to give certain values.
+
+@item 
+In EDITING-states, the user is free to choose which values he wants to give.
+
+@item 
+In REVEIWING-states, the user may make a few choices, but primarily is 
expected to affirm something.
+
+@item 
+in PAYING-states, the user must make a payment.
+
+@item 
+in FINISHED-states, the operation has definitively concluded.
+@end itemize
+@end quotation
+
+@node Backup Reducer,Recovery Reducer,States,Reducer API
+@anchor{reducer backup-reducer}@anchor{5a}
+@subsection Backup Reducer
+
+@anchor{reducer state}@anchor{57}@anchor{reducer action}@anchor{58}
+
+@float Figure
+
+@image{anastasis-figures/anastasis_reducer_backup,,,fig-anastasis_reducer_backup,png}
+
+@caption{Backup states and their transitions.}
+
+@end float
+
+
+The illustration above shows the different states the reducer can have during 
a backup
+process.
+
+@node Recovery Reducer,Reducer transitions,Backup Reducer,Reducer API
+@anchor{reducer recovery-reducer}@anchor{5b}
+@subsection Recovery Reducer
+
+
+
+@float Figure
+
+@image{anastasis-figures/anastasis_reducer_recovery,,,fig-anastasis_reducer_recovery,png}
+
+@caption{Recovery states and their transitions.}
+
+@end float
+
+
+The illustration above shows the different states the reducer can have during 
a recovery
+process.
+
+@node Reducer transitions,,Recovery Reducer,Reducer API
+@anchor{reducer reducer-transitions}@anchor{5c}
+@subsection Reducer transitions
+
+
+In the following, the individual transitions will be specified in more detail.
+Note that we only show fields added by the reducer, typically the previous
+state is preserved to enable “back” transitions to function smoothly.
+
+@menu
+* Initial state:: 
+* Common transitions:: 
+* Backup transitions:: 
+* Recovery transitions:: 
+
+@end menu
+
+@node Initial state,Common transitions,,Reducer transitions
+@anchor{reducer initial-state}@anchor{5d}
+@subsubsection Initial state
+
+
+The initial states for backup and recovery processes are:
+
+@strong{Initial backup state:}
+
+@example
+@{
+  "backup_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+@}
+@end example
+
+@strong{Initial recovery state:}
+
+@example
+@{
+  "recovery_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+@}
+@end example
+
+Here, “continents” is an array of English strings with the names of the
+continents which contain countries for which Anastasis could function (based
+on having providers that are known to operate and rules being provided for
+user attributes from those countries).
+
+For internationalization, another field @code{continents_i18n} may be present.
+This field would be a map of language names to arrays of translated
+continent names:
+
+@example
+@{
+  "recovery_state": "CONTINENT_SELECTING",
+  "continents": [
+    "Europe",
+    "North America"
+  ]
+  "continents_i18n":
+  @{
+    "de_DE" : [
+      "Europa",
+      "Nordamerika"
+      ],
+    "de_CH" : [
+      "Europa",
+      "Nordamerika"
+      ]
+  @}
+@}
+@end example
+
+Translations must be given in the same order as the main English array.
+
+@node Common transitions,Backup transitions,Initial state,Reducer transitions
+@anchor{reducer common-transitions}@anchor{5e}
+@subsubsection Common transitions
+
+
+@strong{select_continent:}
+
+Here the user specifies the continent they live on.  Arguments (example):
+
+@example
+@{
+  "continent": "Europe"
+@}
+@end example
+
+The continent must be given using the English name from the @code{continents} 
array.
+Using a translated continent name is invalid and may result in failure.
+
+The reducer returns an updated state with a list of countries to choose from,
+for example:
+
+@example
+@{
+  "backup_state": "COUNTRY_SELECTING",
+  "selected_continent": "Europe",
+  "countries": [
+    @{
+      "code": "ch",
+      "name": "Switzerland",
+      "continent": "Europe",
+      "name_i18n": @{
+        "de_DE": "Schweiz",
+        "de_CH": "Schwiiz",
+        "fr": "Suisse",
+        "en": "Swiss"
+      @},
+      "currency": "CHF"
+    @},
+    @{
+      "code": "de",
+      "name": "Germany",
+      "continent": "Europe",
+      "continent_i18n": @{
+        "de": "Europa"
+      @},
+      "name_i18n": @{
+        "de_DE": "Deutschland",
+        "de_CH": "Deutschland",
+        "fr": "Allemagne",
+        "en": "Germany"
+      @},
+      "currency": "EUR"
+    @}
+  ]
+@}
+@end example
+
+Here @code{countries} is an array of countries on the 
@code{selected_continent}.  For
+each country, the @code{code} is the ISO 3166-1 alpha-2 country code.  The
+@code{continent} is only present because some countries span continents, the
+information is redundant and will always match @code{selected_continent}.  The
+@code{name} is the name of the country in English, internationalizations of the
+name may be provided in @code{name_i18n}.  The @code{currency} is @strong{an} 
official
+currency of the country, if a country has multiple currencies, it may appear
+multiple times in the list.  In this case, the user should select the entry
+with the currency they intend to pay with.  It is also possible for users
+to select a currency that does not match their country, but user interfaces
+should by default try to use currencies that match the user’s residence.
+
+@strong{select_country:}
+
+Selects the country (via the country code) and specifies the currency.
+The latter is needed as some countries have more than one currency,
+and some use-cases may also involve users insisting on paying with
+foreign currency.
+
+Arguments (example):
+
+@example
+@{
+  "country_code": "de",
+  "currency": "EUR"
+@}
+@end example
+
+The @code{country_code} must be an ISO 3166-1 alpha-2 country code from
+the array of @code{countries} of the reducer’s state.  The @code{currency}
+field must be a valid currency accepted by the Taler payment system.
+
+The reducer returns a new state with the list of attributes the
+user is expected to provide, as well as possible authentication
+providers that accept payments in the selected currency:
+
+@example
+@{
+  "backup_state": "USER_ATTRIBUTES_COLLECTING",
+  "selected_country": "de",
+  "currency": "EUR",
+  "required_attributes": [
+    @{
+      "type": "string",
+      "name": "full_name",
+      "label": "Full name",
+      "label_i18n": @{
+        "de_DE": "Vollstaendiger Name",
+        "de_CH": "Vollstaendiger. Name",
+        "fr": "Nom complet",
+        "en": "Full name"
+      @},
+      "widget": "anastasis_gtk_ia_full_name",
+      "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+    @},
+    @{
+      "type": "date",
+      "name": "birthdate",
+      "label": "Birthdate",
+      "label_i18n": @{
+        "de_DE": "Geburtsdatum",
+        "de_CH": "Geburtsdatum",
+        "fr": "Date de naissance",
+        "en": "Birthdate"
+      @},
+      "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+      "widget": "anastasis_gtk_ia_birthdate"
+    @},
+        @{
+           "type": "string",
+       "name": "tax_number",
+           "label": "Taxpayer identification number",
+           "label_i18n":@{
+                 "de_DE": "Steuerliche Identifikationsnummer",
+                 "de_CH": "Steuerliche Identifikationsnummer",
+                 "en": "German taxpayer identification number"
+           @},
+           "widget": "anastasis_gtk_ia_tax_de",
+       "uuid": "dae48f85-e3ff-47a4-a4a3-ed981ed8c3c6",
+           "validation-regex": "^[0-9]@{11@}$",
+           "validation-logic": "DE_TIN_check"
+        @},
+    @{
+      "type": "string",
+      "name": "social_security_number",
+      "label": "Social security number",
+      "label_i18n": @{
+        "de_DE": "Sozialversicherungsnummer",
+        "de_CH": "Sozialversicherungsnummer",
+        "fr": "Numéro de sécurité sociale",
+        "en": "Social security number"
+      @},
+      "widget": "anastasis_gtk_ia_ssn",
+          "validation-regex": "^[0-9]@{8@}[[:upper:]][0-9]@{3@}$",
+          "validation-logic": "DE_SVN_check"
+      "optional" : true
+  @}
+  ],
+  "authentication_providers": @{
+    "http://localhost:8089/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.0" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.5" @}
+      ],
+      "annual_fee": "EUR:4.99",
+      "truth_upload_fee": "EUR:4.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @},
+    "http://localhost:8088/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @}
+  @}
+@}
+@end example
+
+The array of @code{required_attributes} contains attributes about the user
+that must be provided includes:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{type}: The type of the attribute, for now only @code{string} and 
@code{date} are
+supported.
+
+@item 
+@strong{name}: The name of the attribute, this is the key under which the
+attribute value must be provided later. The name must be unique per response.
+
+@item 
+@strong{label}: A human-readable description of the attribute in English.
+Translated descriptions may be provided under @strong{label_i18n}.
+
+@item 
+@strong{uuid}: A UUID that uniquely identifies identical attributes across
+different countries. Useful to preserve values should the user enter
+some attributes, and then switch to another country.  Note that
+attributes must not be preserved if they merely have the same @strong{name},
+only the @strong{uuid} will be identical if the semantics is identical.
+
+@item 
+@strong{widget}: An optional name of a widget that is known to nicely render
+the attribute entry in user interfaces where named widgets are
+supported.
+
+@item 
+@strong{validation-regex}: An optional extended POSIX regular expression
+that is to be used to validate (string) inputs to ensure they are
+well-formed.
+
+@item 
+@strong{validation-logic}: Optional name of a function that should be called
+to validate the input.  If the function is not known to the particular
+client, the respective validation can be skipped (at the expense of
+typos by users not being detected, possibly rendering secrets
+irrecoverable).
+
+@item 
+@strong{optional}: Optional boolean field that, if @code{true}, indicates that
+this attribute is not actually required but optional and users MAY leave
+it blank in case they do not have the requested information. Used for
+common fields that apply to some large part of the population but are
+not sufficiently universal to be actually required.
+@end itemize
+@end quotation
+
+The authentication providers are listed under a key that is the
+base URL of the service. For each provider, the following
+information is provided if the provider was successfully contacted:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{http_status}: HTTP status code, always @code{200} on success.
+
+@item 
+@strong{methods}: Array of authentication methods supported by this
+provider. Includes the @strong{type} of the authentication method
+and the @strong{usage_fee} (how much the user must pay for authorization
+using this method during recovery).
+
+@item 
+@strong{annual_fee}: Fee the provider charges to store the recovery
+policy for one year.
+
+@item 
+@strong{truth_upload_fee}: Fee the provider charges to store a key share.
+
+@item 
+@strong{liability_limit}: Amount the provider can be held liable for in
+case a key share or recovery document cannot be recovered due to
+provider failures.
+
+@item 
+@strong{currency}: Currency in which the provider wants to be paid,
+will match all of the fees.
+
+@item 
+@strong{storage_limit_in_megabytes}: Maximum size of an upload (for
+both recovery document and truth data) in megabytes.
+
+@item 
+@strong{provider_name}: Human-readable name of the provider’s business.
+
+@item 
+@strong{salt}: Salt value used by the provider, used to derive the
+user’s identity at this provider. Should be unique per provider,
+and must never change for a given provider.  The salt is
+base32 encoded.
+@end itemize
+@end quotation
+
+If contacting the provider failed, the information returned is:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{http_status}: HTTP status code (if available, possibly 0 if
+we did not even obtain an HTTP response).
+
+@item 
+@strong{error_code}: Taler error code, never 0.
+@end itemize
+@end quotation
+
+@strong{add_provider}:
+
+This operation can be performed in state @code{USER_ATTRIBUTES_COLLECTING}.  It
+adds one or more Anastasis providers to the list of providers the reducer
+should henceforth consider.  Note that removing providers is not possible at
+this time.
+
+Here, the client must provide an array with the base URLs of the
+providers to add, for example:
+
+@example
+@{
+  "urls": [
+    "http://localhost:8888/";,
+    "http://localhost:8089/";
+  ]
+@}
+@end example
+
+Note that existing providers will remain in the state.  The following is an
+example for an expected new state where the service on port 8089 is
+unreachable, the service on port 8088 was previously known, and service on
+port 8888 was now added:
+
+@example
+@{
+  "backup_state": "USER_ATTRIBUTES_COLLECTING",
+  "authentication_providers": @{
+    "http://localhost:8089/": @{
+      "error_code": 11,
+      "http_status": 0
+    @},
+    "http://localhost:8088/": @{
+      "http_status": 200,
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 4",
+      "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+    @}
+    "http://localhost:8888/": @{
+      "methods": [
+        @{ "type" : "question",
+          "usage_fee" : "EUR:0.01" @},
+        @{ "type" : "sms",
+          "usage_fee" : "EUR:0.55" @}
+      ],
+      "annual_fee": "EUR:0.99",
+      "truth_upload_fee": "EUR:3.99",
+      "liability_limit": "EUR:1",
+      "currency": "EUR",
+      "truth_lifetime": @{ "d_ms" : 50000000 @},
+      "storage_limit_in_megabytes": 1,
+      "provider_name": "Anastasis 42",
+      "salt": "BXAPCKSH9D3MYJTS9536RHJHCX"
+    @}
+  @}
+@}
+@end example
+
+@node Backup transitions,Recovery transitions,Common transitions,Reducer 
transitions
+@anchor{reducer backup-transitions}@anchor{5f}
+@subsubsection Backup transitions
+
+
+@strong{enter_user_attributes:}
+
+This transition provides the user’s personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to @code{null} or an empty string).  Example
+arguments would be:
+
+@example
+@{
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+ @}
+@}
+@end example
+
+Note that at this stage, the state machines between backup and
+recovery diverge and the @code{recovery_state} will begin to look
+very different from the @code{backup_state}.
+
+For backups, if all required attributes are present, the reducer will
+transition to an @code{AUTHENTICATIONS_EDITING} state with the attributes added
+to it:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+  @}
+@}
+@end example
+
+If required attributes are missing, do not match the required regular
+expression, or fail the custom validation logic, the reducer SHOULD transition
+to an error state indicating what was wrong about the input.  A reducer that
+does not support some specific validation logic MAY accept the invalid input
+and proceed anyway.  The error state will include a Taler error code that
+is specific to the failure, and optional details.  Example:
+
+@example
+@{
+  "backup_state": "ERROR",
+  "code": 8404,
+  "hint": "An input did not match the regular expression.",
+  "detail": "social_security_number"
+@}
+@end example
+
+Clients may safely repeat this transition to validate the user’s inputs
+until they satisfy all of the constraints.  This way, the user interface
+does not have to perform the input validation directly.
+
+@strong{add_authentication}:
+
+This transition adds an authentication method.  The method must be supported
+by one or more providers that are included in the current state.  Adding an
+authentication method requires specifying the @code{type} and 
@code{instructions} to
+be given to the user.  The @code{challenge} is encrypted and stored at the
+Anastasis provider. The specific semantics of the value depend on the
+@code{type}.  Typical challenges values are a phone number (to send an SMS to),
+an e-mail address (to send a PIN code to) or the answer to a security
+question.  Note that these challenge values will still be encrypted (and
+possibly hashed) before being given to the Anastasis providers.
+
+Note that the @code{challenge} must be given in Crockford Base32 encoding, as 
it
+MAY include binary data (such as a photograph of the user).  In the latter
+case, the optional @code{mime_type} field must be provided to give the MIME 
type
+of the value encoded in @code{challenge}.
+
+@example
+@{
+  "authentication_method":
+  @{
+    "type": "question",
+    "mime_type" : "text/plain",
+    "instructions" : "What is your favorite GNU package?",
+    "challenge" : "E1QPPS8A",
+  @}
+@}
+@end example
+
+If the information provided is valid, the reducer will add the new
+authentication method to the array of authentication methods:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "authentication_methods": [
+    @{
+      "type": "question",
+      "mime_type" : "text/plain",
+      "instructions" : "What is your favorite GNU package?",
+      "challenge" : "E1QPPS8A",
+    @},
+    @{
+      "type": "email",
+      "instructions" : "E-mail to user@@*le.com",
+      "challenge": "ENSPAWJ0CNW62VBGDHJJWRVFDM50"
+    @}
+  ]
+@}
+@end example
+
+@strong{delete_authentication}:
+
+This transition can be used to remove an authentication method from the
+array of authentication methods. It simply requires the index of the
+authentication method to remove. Note that the array is 0-indexed:
+
+@example
+@{
+  "authentication_method": 1
+@}
+@end example
+
+Assuming we begin with the state from the example above, this would
+remove the @code{email} authentication method, resulting in the following
+response:
+
+@example
+@{
+  "backup_state": "AUTHENTICATIONS_EDITING",
+  "authentication_methods": [
+    @{
+      "type": "question",
+      "mime_type" : "text/plain",
+      "instructions" : "What is your favorite GNU package?",
+      "challenge" : "gdb",
+    @}
+  ]
+@}
+@end example
+
+If the index is invalid, the reducer will instead
+transition into an @code{ERROR} state.
+
+@strong{next} (from @code{AUTHENTICATIONS_EDITING}):
+
+This transition confirms that the user has finished adding (or removing)
+authentication methods, and that the system should now automatically compute
+a set of reasonable recovery policies.
+
+This transition does not take any mandatory arguments.  Optional arguments can
+be provided to upload the recovery document only to a specific subset of the
+providers:
+
+@example
+@{
+  "providers": [
+    "http://localhost:8088/";,
+    "http://localhost:8089/";
+  ]
+@}
+@end example
+
+The resulting state provides the suggested recovery policies in a way suitable
+for presentation to the user:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policy_providers" : [
+      @{ "provider_url" : "http://localhost:8088/"; @},
+      @{ "provider_url" : "http://localhost:8089/"; @}
+  ],
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8087/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+For each recovery policy, the state includes the specific details of which
+authentication @code{methods} must be solved to recovery the secret using this
+policy.  The @code{methods} array specifies the index of the
+@code{authentication_method} in the @code{authentication_methods} array, as 
well as
+the provider that was selected to supervise this authentication.
+
+If no authentication method was provided, the reducer will transition into an
+@code{ERROR} state instead of suggesting policies.
+
+@strong{add_policy}:
+
+Using this transition, the user can add an additional recovery policy to the
+state.  The argument format is the same that is used in the existing state.
+An example for a possible argument would thus be:
+
+@example
+@{
+  "policy": [
+    @{
+      "authentication_method": 1,
+      "provider": "http://localhost:8088/";
+    @},
+    @{
+      "authentication_method": 3,
+      "provider": "http://localhost:8089/";
+    @}
+  ]
+@}
+@end example
+
+Note that the specified providers must already be in the
+@code{authentication_providers} of the state. You cannot add new providers at
+this stage.  The reducer will simply attempt to append the suggested policy to
+the “policies” array, returning an updated state:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @},
+        @{
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an @code{ERROR} state instead 
of
+adding the new policy.
+
+@strong{update_policy}:
+
+Using this transition, the user can modify an existing recovery policy
+in the state.
+The argument format is the same that is used in @strong{add_policy},
+except there is an additional key @code{policy_index} which
+identifies the policy to modify.
+An example for a possible argument would thus be:
+
+@example
+@{
+  "policy_index" : 1,
+  "policy": [
+    @{
+      "authentication_method": 1,
+      "provider": "http://localhost:8088/";
+    @},
+    @{
+      "authentication_method": 3,
+      "provider": "http://localhost:8089/";
+    @}
+  ]
+@}
+@end example
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an @code{ERROR} state instead 
of
+modifying the policy.
+
+@strong{delete_policy:}
+
+This transition allows the deletion of a recovery policy. The argument
+simply specifies the index of the policy to delete, for example:
+
+@example
+@{
+  "policy_index": 3
+@}
+@end example
+
+Given as input the state from the example above, the expected new state would
+be:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the index given is invalid, the reducer will transition into an 
@code{ERROR} state
+instead of deleting a policy.
+
+@strong{delete_challenge:}
+
+This transition allows the deletion of an individual
+challenge from a recovery policy. The argument
+simply specifies the index of the policy and challenge
+to delete, for example:
+
+@example
+@{
+  "policy_index": 1,
+  "challenge_index" : 1
+@}
+@end example
+
+Given as input the state from the example above, the expected new state would
+be:
+
+@example
+@{
+  "backup_state": "POLICIES_REVIEWING",
+  "policies": [
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 0,
+          "provider": "http://localhost:8089/";
+        @}
+      ]
+    @},
+    @{
+      "methods": [
+        @{
+          "authentication_method": 1,
+          "provider": "http://localhost:8089/";
+        @},
+        @{
+          "authentication_method": 2,
+          "provider": "http://localhost:8088/";
+        @}
+      ]
+    @}
+  ]
+@}
+@end example
+
+If the index given is invalid, the reducer will transition into an 
@code{ERROR} state
+instead of deleting a challenge.
+
+@strong{next} (from @code{POLICIES_REVIEWING}):
+
+Using this transition, the user confirms that the policies in the current
+state are acceptable. The transition does not take any arguments.
+
+The reducer will simply transition to the @code{SECRET_EDITING} state:
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "upload_fees" : [ "KUDOS:42" ],
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+Here, @code{upload_fees} is an array of applicable upload fees for the
+given policy expiration time. This is an array because fees could
+be in different currencies.  The final cost may be lower if the
+user already paid for some of the time.
+
+If the array of @code{policies} is currently empty, the reducer will transition
+into an @code{ERROR} state instead of allowing the user to continue.
+
+@strong{enter_secret:}
+
+This transition provides the reducer with the actual core @code{secret} of the 
user
+that Anastasis is supposed to backup (and possibly recover). The argument is
+simply the Crockford-Base32 encoded @code{value} together with its @code{mime} 
type, or a @code{text} field with a human-readable secret text.
+For example:
+
+@example
+@{
+  "secret": @{
+     "value": "EDJP6WK5EG50",
+     "mime" : "text/plain"
+  @},
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+If the application is unaware of the format, it set the @code{mime} field to 
@code{null}.
+The @code{expiration} field is optional.
+
+The reducer remains in the @code{SECRET_EDITING} state, but now the secret and
+updated expiration time are part of the state and the cost calculations will
+be updated.
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "core_secret" : @{
+     "value": "EDJP6WK5EG50",
+     "mime" : "text/plain"
+  @},
+  "expiration" : @{ "t_ms" : 1245362362 @},
+  "upload_fees" : [ "KUDOS:42" ]
+@}
+@end example
+
+@strong{clear_secret:}
+
+This transition removes the core secret from the state.  It is simply a
+convenience function to undo @code{enter_secret} without providing a new value
+immediately. The transition takes no arguments.  The resuting state will no
+longer have the @code{core_secret} field, and be otherwise unchanged. Calling
+@strong{clear_secret} on a state without a @code{core_secret} will result in 
an error.
+
+@strong{enter_secret_name:}
+
+This transition provides the reducer with a name for the core @code{secret} of 
the user. This name will be given to the user as a hint when seleting a 
recovery policy document during recovery, prior to satisfying any of the 
challenges. The argument simply contains the name for the secret.
+Applications that have build-in support for Anastasis MUST prefix the
+secret name with an underscore and an application-specific identifier
+registered in GANA so that they can use recognize their own backups.
+An example argument would be:
+
+@example
+@{
+  "name": "_TALERWALLET_MyPinePhone",
+@}
+@end example
+
+Here, @code{MyPinePhone} might be chosen by the user to identify the
+device that was being backed up.
+
+The reducer remains in the @code{SECRET_EDITING} state, but now the
+secret name is updated:
+
+@example
+@{
+  "secret_name" : "_TALERWALLET_MyPinePhone"
+@}
+@end example
+
+@strong{update_expiration:}
+
+This transition asks the reducer to change the desired expiration time
+and to update the associated cost. For example:
+
+@example
+@{
+  "expiration" : @{ "t_ms" : 1245362362 @}
+@}
+@end example
+
+The reducer remains in the @code{SECRET_EDITING} state, but the
+expiration time and cost calculation will be updated.
+
+@example
+@{
+  "backup_state": "SECRET_EDITING",
+  "expiration" : @{ "t_ms" : 1245362362 @},
+  "upload_fees" : [ @{ "fee": "KUDOS:43" @} ]
+@}
+@end example
+
+@strong{next} (from @code{SECRET_EDITING}):
+
+Using this transition, the user confirms that the secret and expiration
+settings in the current state are acceptable. The transition does not take any
+arguments.
+
+If the secret is currently empty, the reducer will transition into an
+@code{ERROR} state instead of allowing the user to continue.
+
+After adding a secret, the reducer may transition into different states
+depending on whether payment(s) are necessary.  If payments are needed, the
+@code{secret} will be stored in the state under @code{core_secret}.  
Applications
+should be careful when persisting the resulting state, as the 
@code{core_secret}
+is not protected in the @code{PAYING} states.  The @code{PAYING} states only 
differ
+in terms of what the payments are for (key shares or the recovery document),
+in all cases the state simply includes an array of Taler URIs that refer to
+payments that need to be made with the Taler wallet.
+
+If all payments are complete, the reducer will transition into the
+@code{BACKUP_FINISHED} state and (if applicable) delete the @code{core_secret} 
as an
+additional safety measure.
+
+Example results are thus:
+
+@example
+@{
+  "backup_state": "TRUTHS_PAYING",
+  "secret_name" : "$NAME",
+  "core_secret" : @{ "$anything":"$anything" @},
+  "payments": [
+    "taler://pay/...",
+    "taler://pay/..."
+  ]
+@}
+@end example
+
+@example
+@{
+  "backup_state": "POLICIES_PAYING",
+  "secret_name" : "$NAME",
+  "core_secret" : @{ "$anything":"$anything" @},
+  "payments": [
+    "taler://pay/...",
+    "taler://pay/..."
+  ]
+@}
+@end example
+
+@example
+@{
+  "backup_state": "BACKUP_FINISHED",
+@}
+@end example
+
+@strong{pay:}
+
+This transition suggests to the reducer that a payment may have been made or
+is immanent, and that the reducer should check with the Anastasis service
+provider to see if the operation is now possible.  The operation takes one
+optional argument, which is a @code{timeout} value that specifies how long the
+reducer may wait (in long polling) for the payment to complete:
+
+@example
+@{
+  "timeout":  @{ "d_ms" : 5000 @},
+@}
+@end example
+
+The specified timeout is passed on to the Anastasis service provider(s), which
+will wait this long before giving up.  If no timeout is given, the check is
+done as quickly as possible without additional delays.  The reducer will 
continue
+to either an updated state with the remaining payment requests, to the
+@code{BACKUP_FINISHED} state (if all payments have been completed and the 
backup
+finished), or into an @code{ERROR} state in case there was an irrecoverable 
error,
+indicating the specific provider and how it failed.  An example for this
+final error state would be:
+
+@example
+@{
+  "backup_state": "ERROR",
+  "http_status" : 500,
+  "upload_status" : 52,
+  "provider_url" : "https://bad.example.com/";,
+@}
+@end example
+
+Here, the fields have the following meaning:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{http_status} is the HTTP status returned by the Anastasis provider.
+
+@item 
+@strong{upload_status} is the Taler error code return by the provider.
+
+@item 
+@strong{provider_url} is the base URL of the failing provider.
+@end itemize
+@end quotation
+
+In the above example, 52 would thus imply that the Anastasis provider failed to
+store information into its database.
+
+@node Recovery transitions,,Backup transitions,Reducer transitions
+@anchor{reducer recovery-transitions}@anchor{60}
+@subsubsection Recovery transitions
+
+
+@strong{enter_user_attributes:}
+
+This transition provides the user’s personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to @code{null} or an empty string).  The
+arguments are identical to the @strong{enter_user_attributes} transition from
+the backup process.  Example arguments would thus be:
+
+@example
+@{
+  "identity_attributes": @{
+    "full_name": "Max Musterman",
+    "social_security_number": "123456789",
+    "birthdate": "2000-01-01",
+    "birthplace": "Earth"
+  @}
+@}
+@end example
+
+However, in contrast to the backup process, the reducer will attempt to
+retrieve the latest recovery document from all known providers for the
+selected currency given the above inputs.  If a recovery document was found
+by any provider, the reducer will attempt to load it and transition to
+a state where the user can choose which challenges to satisfy:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+    "challenges": [
+      @{
+        "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G",
+        "cost": "TESTKUDOS:0",
+        "type": "question",
+        "instructions": "q1"
+      @},
+      @{
+        "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+        "cost": "TESTKUDOS:0",
+        "type": "email",
+        "instructions": "e-mail address m?il@@f*.bar"
+      @},
+    ],
+    "policies": [
+      [
+        @{
+          "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G"
+        @},
+        @{
+          "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0"
+        @},
+      ],
+    ],
+    "provider_url": "http://localhost:8088/";,
+    "version": 1,
+  @},
+  "recovery_document": @{
+    "...": "..."
+  @}
+@}
+@end example
+
+The @code{recovery_document} is an internal representation of the recovery
+information and of no concern to the user interface. The pertinent information
+is in the @code{recovery_information}. Here, the @code{challenges} array is a 
list
+of possible challenges the user could attempt to solve next, while 
@code{policies}
+is an array of policies, with each policy being an array of challenges.
+Satisfying all of the challenges of one of the policies will enable the secret
+to be recovered.  The @code{provider_url} from where the recovery document was
+obtained and its @code{version} are also provided.  Each challenge comes with
+four mandatory fields:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{uuid}: A unique identifier of the challenge; this is what the
+UUIDs in the policies array refer to, but also this UUID may be
+included in messages sent to the user. They allow the user to
+distinguish different PIN/TANs should say the same phone number be
+used for SMS-authentication with different providers.
+
+@item 
+@strong{cost}: This is the amount the Anastasis provider will charge
+to allow the user to pass the challenge.
+
+@item 
+@strong{type}: This is the type of the challenge, as a string.
+
+@item 
+@strong{instructions}: Contains additional important hints for the user
+to allow the user to satisfy the challenge.  It typically includes
+an abbreviated form of the contact information or the security
+question. Details depend on @code{type}.
+@end itemize
+@end quotation
+
+If a recovery document was not found, either the user never performed
+a backup, entered incorrect attributes, or used a provider not yet in
+the list of Anastasis providers.  Hence, the user must now either
+select a different provider, or go @code{back} and update the identity
+attributes.  In the case a recovery document was not found, the
+transition fails, returning the error code and a human-readable error
+message together with a transition failure:
+
+@example
+@{
+  "recovery_state": "ERROR",
+  "error_message": "account unknown to Anastasis server",
+  "error_code": 9,
+@}
+@end example
+
+Here, the @code{error_code} is from the @code{enum ANASTASIS_RecoveryStatus}
+and describes precisely what failed about the download, while the
+@code{error_message} is a human-readable (English) explanation of the code.
+Applications may want to translate the message using GNU gettext;
+translations should be available in the @code{anastasis} text domain.
+However, in general it should be sufficient to display the slightly
+more generic Taler error code that is returned with the new state.
+
+@strong{change_version:}
+
+Even if a recovery document was found, it is possible that the user
+intended to recover a different version, or recover a backup where
+the recovery document is stored at a different provider. Thus, the
+reducer allows the user to explicitly switch to a different provider
+or recovery document version using the @code{change_version} transition,
+which takes a provider URL and policy version as arguments:
+
+@example
+@{
+  "provider_url": "https://localhost:8080/";,
+  "version": 2
+@}
+@end example
+
+Note that using a version of 0 implies fetching “the latest version”.  The
+resulting states are the same as those of the @code{enter_user_attributes}
+transition, except that the recovery document version is not necessarily the
+latest available version at the provider.
+
+@strong{select_challenge:}
+
+Selecting a challenge takes different, depending on the state of the payment.
+A comprehensive example for @code{select_challenge} would be:
+
+@example
+@{
+    "uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+    "timeout" : @{ "d_ms" : 5000 @},
+    "payment_secret": "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+@}
+@end example
+
+The @code{uuid} field is mandatory and specifies the selected challenge.
+The other fields are optional, and are needed in case the user has
+previously been requested to pay for the challenge.  In this case,
+the @code{payment_secret} identifies the previous payment request, and
+@code{timeout} says how long the Anastasis service should wait for the
+payment to be completed before giving up (long polling).
+
+Depending on the type of the challenge and the need for payment, the
+reducer may transition into @code{CHALLENGE_SOLVING} or @code{CHALLENGE_PAYING}
+states.  In @code{CHALLENGE_SOLVING}, the new state will primarily specify
+the selected challenge:
+
+@example
+@{
+  "backup_state": "CHALLENGE_SOLVING",
+  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+@}
+@end example
+
+In @code{CHALLENGE_PAYING}, the new state will include instructions for payment
+in the @code{challenge_feedback}. In general, @code{challenge_feedback} 
includes
+information about attempted challenges, with the final state being 
@code{solved}:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+    "...": "..."
+  @}
+  "challenge_feedback": @{
+    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
+      "state" : "solved"
+    @}
+  @}
+@}
+@end example
+
+Challenges feedback for a challenge can have many different @code{state} values
+that applications must all handle. States other than @code{solved} are:
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{payment}: Here, the user must pay for a challenge. An example would be:
+
+@example
+@{
+  "backup_state": "CHALLENGE_PAYING",
+  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
+  "challenge_feedback": @{
+    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
+     "state" : "payment",
+     "taler_pay_uri" : "taler://pay/...",
+     "provider" : "https://localhost:8080/";,
+     "payment_secret" : "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+    @}
+  @}
+@}
+@end example
+@end itemize
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{body}: Here, the server provided an HTTP reply for
+how to solve the challenge, but the reducer could not parse
+them into a known format. A mime-type may be provided and may
+help parse the details.
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "body",
+      "body": "CROCKFORDBASE32ENCODEDBODY",
+      "http_status": 403,
+      "mime_type" : "anything/possible"
+    @}
+  @}
+@}
+@end example
+
+@item 
+@strong{hint}: Here, the server provided human-readable hint for
+how to solve the challenge.  Note that the @code{hint} provided this
+time is from the Anastasis provider and may differ from the @code{instructions}
+for the challenge under @code{recovery_information}:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "hint",
+      "hint": "Recovery TAN send to email mail@@DOMAIN",
+      "http_status": 403
+    @}
+  @}
+@}
+@end example
+
+@item 
+@strong{details}: Here, the server provided a detailed JSON status response
+related to solving the challenge:
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "details",
+      "details": @{
+        "code": 8111,
+        "hint": "The client's response to the challenge was invalid.",
+        "detail" : null
+      @},
+      "http_status": 403
+    @}
+  @}
+@}
+@end example
+@end itemize
+
+@quotation
+
+
+@itemize -
+
+@item 
+@strong{redirect}: To solve the challenge, the user must visit the indicated
+Web site at @code{redirect_url}, for example to perform video authentication:
+@end itemize
+
+@quotation
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SOLVING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "redirect",
+      "redirect_url": "https://videoconf.example.com/";,
+      "http_status": 303
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item 
+@strong{server-failure}: This indicates that the Anastasis provider encountered
+a failure and recovery using this challenge cannot proceed at this time.
+Examples for failures might be that the provider is unable to send SMS
+messages at this time due to an outage.  The body includes details about
+the failure. The user may try again later or continue with other challenges.
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "server-failure",
+      "http_status": "500",
+      "error_code": 52
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item 
+@strong{truth-unknown}: This indicates that the Anastasis provider is unaware 
of
+the specified challenge. This is typically a permanent failure, and user
+interfaces should not allow users to re-try this challenge.
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "truth-unknown",
+      "error_code": 8108
+    @}
+  @}
+@}
+@end example
+
+
+@itemize -
+
+@item 
+@strong{rate-limit-exceeded}:
+@end itemize
+
+@example
+@{
+  "recovery_state": "CHALLENGE_SELECTING",
+  "recovery_information": @{
+      "...": "..."
+  @}
+  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+  "challenge_feedback": @{
+    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
+      "state": "rate-limit-exceeded",
+      "error_code": 8121
+    @}
+  @}
+@}
+@end example
+@end quotation
+@end quotation
+@end quotation
+@end quotation
+
+@strong{pay:}
+
+With a @code{pay} transition, the application indicates to the reducer that
+a payment may have been made. Here, it is again possible to specify an
+optional @code{timeout} argument for long-polling, for example:
+
+@example
+@{
+    "payment_secret": "ABCDADF242525AABASD52525235ABABFDABABANALASDAAKASDAS"
+    "timeout" : @{ "d_ms" : 5000 @},
+@}
+@end example
+
+Depending on the type of the challenge and the result of the operation, the
+new state may be @code{CHALLENGE_SOLVING} (if say the SMS was now sent to the
+user), @code{CHALLENGE_SELECTING} (if the answer to the security question was
+correct), @code{RECOVERY_FINISHED} (if this was the last challenge that needed 
to
+be solved) or still @code{CHALLENGE_PAYING} (if the challenge was not actually
+paid for).  For sample messages, see the different types of
+@code{challenge_feedback} in the section about @code{select_challenge}.
+
+@strong{solve_challenge:}
+
+Solving a challenge takes various formats, depending on the type of the
+challenge and what is known about the answer.  The different supported
+formats are:
+
+@example
+@{
+    "answer": "answer to security question"
+@}
+@end example
+
+@example
+@{
+    "pin": 1234
+@}
+@end example
+
+@example
+@{
+    "hash": "SOMEBASE32ENCODEDHASHVALUE"
+@}
+@end example
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node Authentication Methods,DB Schema,Reducer API,Documentation Overview
+@anchor{authentication doc}@anchor{61}@anchor{authentication 
anastasis-auth-methods}@anchor{62}@anchor{authentication 
authentication-methods}@anchor{63}
+@section Authentication Methods
+
+
+This section describes the supported authentication methods in detail.  We
+note that the server implements rate limiting for all authentication methods
+to ensure that malicious strong attackers cannot guess the values by
+brute-force. Typically, a user is given three attempts per hour to enter the
+correct code from 2^63 possible values.  Transmitted codes also come with an
+expiration date. If the user re-requests a challenge to be sent, the same
+challenge may be transmitted (with the three attempts counter not increasing!)
+for a limited period of time (depending on the authentication method) before
+the service eventually rotates to a fresh random code with a fresh retry
+counter. Given the default value range and time intervals (which providers are
+at liberty to adjust), brute-force attacks against this are expected to
+succeed with a 50% probability after about 200000 years of attempts at the
+maximum permissible frequency.
+
+@menu
+* SMS (sms): SMS sms. 
+* Email verification (email): Email verification email. 
+* Video identification (vid): Video identification vid. 
+* Security question (qa): Security question qa. 
+* Snail mail verification (post): Snail mail verification post. 
+
+@end menu
+
+@node SMS sms,Email verification email,,Authentication Methods
+@anchor{authentication sms-sms}@anchor{64}
+@subsection SMS (sms)
+
+
+Sends an SMS with a code (prefixed with @code{A-}) to the user’s phone, 
including
+a UUID which identifies the challenge the code is for.  The user must send
+this code back with his request (see @code{$RESPONSE} under @ref{4f,,Managing 
truth}).
+If the transmitted code is correct, the server responses with the requested
+encrypted key share.
+
+@node Email verification email,Video identification vid,SMS sms,Authentication 
Methods
+@anchor{authentication email-verification-email}@anchor{65}
+@subsection Email verification (email)
+
+
+Sends an email with a code (prefixed with @code{A-}) to the user’s mail 
address,
+including a UUID which identifies the challenge the code is for.  The user
+must send this code back with his request (see @code{$RESPONSE} under 
@ref{4f,,Managing truth}).
+If the transmitted code is correct, the server responses with the
+requested encrypted key share.
+
+@node Video identification vid,Security question qa,Email verification 
email,Authentication Methods
+@anchor{authentication video-identification-vid}@anchor{66}
+@subsection Video identification (vid)
+
+
+Requires the user to identify via video-call.  In the video-call, the
+user is told the code (prefixed with @code{A-}) needed to authenticate.
+
+The user is expected to delete all metadata revealing personal information
+from the images before uploading them. Since the respective images must be
+passed on to the video identification service in the event of password
+recovery, it should be ensured that no further information about the user can
+be derived from them.
+
+Video identification will typically result in the Anastasis provider
+requesting the user to be redirected to a Web site (or other URL) for the
+video-call.
+
+@node Security question qa,Snail mail verification post,Video identification 
vid,Authentication Methods
+@anchor{authentication security-question-qa}@anchor{67}
+@subsection Security question (qa)
+
+
+Asks the user a security question.  The user sends back a @strong{salted}
+hash over the answer.  The @strong{question-salt} is stored encrypted as
+part of the recovery document and never revealed to the providers. This
+ensures that providers cannot derive the answer from the hash value.
+Furthermore, the security question itself is also only in the recovery
+document and never given to the Anastasis provider.  A moderately expensive
+hash function is used to further limit strong attackers that have obtained
+the recovery document from brute-forcing the answer.
+
+If the hash value matches with the one the server is expecting, the server
+answers with the requested encrypted key share.  However, unlike other
+encrypted key shares, the encrypted key share of a security question uses a
+special variation of the Anastasis encryption: Here, a different hash function
+over the security answer is used to provide an additional @strong{key-salt} 
for the
+decryption of the (encrypted) @strong{key share}.  This ensures that the key 
share
+remains irrecoverable without the answer even if the Anastasis provider
+storing the security question is malicious.
+
+@node Snail mail verification post,,Security question qa,Authentication Methods
+@anchor{authentication snail-mail-verification-post}@anchor{68}
+@subsection Snail mail verification (post)
+
+
+Sends physical mail (snail mail) with a code (prefixed with @code{A-}) to the
+user’s mail address, including a UUID which identifies the challenge the code
+is for.  The user must send this code back with their request (see
+@code{$RESPONSE} under @ref{4f,,Managing truth}).  If the transmitted code is 
correct,
+the server responds with the requested encrypted key share.
+
+@c This file is part of Anastasis
+@c Copyright (C) 2019-2021 Anastasis SARL
+@c 
+@c Anastasis is free software; you can redistribute it and/or modify it under 
the
+@c terms of the GNU Affero General Public License as published by the Free 
Software
+@c Foundation; either version 2.1, or (at your option) any later version.
+@c 
+@c Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+@c WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
FOR
+@c A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+@c 
+@c You should have received a copy of the GNU Affero General Public License 
along with
+@c Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+@c 
+@c @author Christian Grothoff
+@c @author Dominik Meister
+@c @author Dennis Neufeld
+
+@node DB Schema,Design Documents,Authentication Methods,Documentation Overview
+@anchor{db doc}@anchor{69}@anchor{db db-schema}@anchor{6a}
+@section DB Schema
+
+
+@image{anastasis-figures/anastasis-db,,,,png}
+
+@image{anastasis-figures/anastasis_challengecode,,,,png}
+
+@image{anastasis-figures/anastasis_challenge_payment,,,,png}
+
+@image{anastasis-figures/anastasis_truth,,,,png}
+
+@image{anastasis-figures/anastasis_truth_payment,,,,png}
+
+@node Design Documents,Anastasis licensing information,DB Schema,Documentation 
Overview
+@anchor{design-documents/index doc}@anchor{6b}@anchor{design-documents/index 
design-documents}@anchor{6c}
+@section Design Documents
+
+
+This is a collection of design documents related to Anastasis.
+The goal of these documents is to discuss facilitate discussion around
+new features while keeping track of the evolution of the whole system
+and protocol.
+
+@menu
+* Design Doc 001; Anastasis User Experience: Design Doc 001 Anastasis User 
Experience. 
+* Template:: 
+
+@end menu
+
+@node Design Doc 001 Anastasis User Experience,Template,,Design Documents
+@anchor{design-documents/001-anastasis-ux 
doc}@anchor{6d}@anchor{design-documents/001-anastasis-ux 
design-doc-001-anastasis-user-experience}@anchor{6e}
+@subsection Design Doc 001: Anastasis User Experience
+
+
+@menu
+* Summary:: 
+* Motivation:: 
+* Setup Steps:: 
+* Show Service Status After Setup:: 
+* Recovery Steps:: 
+
+@end menu
+
+@node Summary,Motivation,,Design Doc 001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux summary}@anchor{6f}
+@subsubsection Summary
+
+
+This document describes the recommended way of implementing the user experience
+of setting up and making use of @ref{3,,Introduction} account recovery.
+
+@node Motivation,Setup Steps,Summary,Design Doc 001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux motivation}@anchor{70}
+@subsubsection Motivation
+
+
+Wallet state consisting of digital cash, transaction history etc. should not 
be lost.
+Taler provides a backup mechanism to prevent that.
+As an additional protection measure Anastasis can be used to provide access to 
the backup,
+even if all devices and offline secrets have been lost.
+
+Access to the backup key is shared with escrow providers that can be chosen by 
the user.
+
+@node Setup Steps,Show Service Status After Setup,Motivation,Design Doc 001 
Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux setup-steps}@anchor{71}
+@subsubsection Setup Steps
+
+@image{graphviz-2d8d83202d2b7835498d2a5c18fa9e3cc05c4b6a,,,[graphviz],png}
+
+@menu
+* Entry point; Settings: Entry point Settings. 
+* Providing Identification:: 
+* Add Authentication Methods:: 
+* Confirm/Change Service Providers:: 
+* Defining Recovery Options:: 
+* Pay for Setup:: 
+
+@end menu
+
+@node Entry point Settings,Providing Identification,,Setup Steps
+@anchor{design-documents/001-anastasis-ux entry-point-settings}@anchor{72}
+@subsubsection Entry point: Settings
+
+
+The app settings should have a section for Anastasis using a different more
+universally understood name like Wallet Recovery.
+
+The section should have an option to setup Anastasis initially.  This option
+should be disabled as long as no backup has been set up.  The section could
+maybe be integrated into the backup settings.
+
+@image{anastasis-figures/menu,,,,png}
+
+@image{anastasis-figures/settings,,,,png}
+
+@image{anastasis-figures/backupsettings,,,,png}
+
+@node Providing Identification,Add Authentication Methods,Entry point 
Settings,Setup Steps
+@anchor{design-documents/001-anastasis-ux providing-identification}@anchor{73}
+@subsubsection Providing Identification
+
+
+Instead of a forgettable freely chosen user name, Anastasis collects various
+static information from the user to generate a unique user identifier from
+that.  Examples for such identifier would be a concatenation of the full name
+of the user and their social security or passport number(s).
+
+The information that can reasonably used here various from cultural context
+and jurisdiction.  Therefore, one idea is to start by asking for continent and
+then the country of primary legal residence, and then continue from there with
+country-specific attributes (and also offer a stateless person option).
+
+Special care should be taken to avoid that information can later be provided
+ambiguously thus changing the user identifier and not being able to restore
+the user’s data.  This can be typographic issues like someone providing
+“Seestr.”  and later “Seestrasse” or “Seestraße” or “seestrasse”.  But it can
+also be simple typos that we can only prevent in some instances like when
+checking checksums in passport numbers.
+
+The user should be made aware that this data will not leave the app and that
+it is only used to compute a unique identifier that can not be forgotten.
+
+If possible, we should guide the user in the country selection by accessing
+permission-less information such as the currently set language/locale and the
+country of the SIM card.  But nothing invasive like the actual GPS location.
+
+@image{anastasis-figures/userid,,,,png}
+
+@node Add Authentication Methods,Confirm/Change Service Providers,Providing 
Identification,Setup Steps
+@anchor{design-documents/001-anastasis-ux 
add-authentication-methods}@anchor{74}
+@subsubsection Add Authentication Methods
+
+
+After creating a unique identifier, the user can chose one or more
+@ref{62,,Authentication Methods} supported by Anastasis.
+
+When selecting a method, the user is already asked to provide the information
+required for the recovery with that method.  For example, a photo of
+themselves, their phone number or mailing address.
+
+The user interface validates that the inputs are well-formed, and refuses
+inputs that are clearly invalid. Where possible, it pre-fills the fields with
+sane values (phone number, e-mail addresses, country of residence).
+
+@image{anastasis-figures/truth,,,,png}
+
+@image{anastasis-figures/addtruth,,,,png}
+
+@image{anastasis-figures/addtruthmail,,,,png}
+
+@node Confirm/Change Service Providers,Defining Recovery Options,Add 
Authentication Methods,Setup Steps
+@anchor{design-documents/001-anastasis-ux 
confirm-change-service-providers}@anchor{75}
+@subsubsection Confirm/Change Service Providers
+
+
+From the dialog where the user is adding authentication methods, the user can
+optionally jump to a side-action with list of available providers (and their
+status) and possibly add additional providers that are not included in the
+default list provided by the wallet.
+
+@image{anastasis-figures/policy,,,,png}
+
+@image{anastasis-figures/addpolicy,,,,png}
+
+@image{anastasis-figures/addpolicymethod,,,,png}
+
+@node Defining Recovery Options,Pay for Setup,Confirm/Change Service 
Providers,Setup Steps
+@anchor{design-documents/001-anastasis-ux defining-recovery-options}@anchor{76}
+@subsubsection Defining Recovery Options
+
+
+After mapping authentication methods to providers, the user needs select which
+combinations are sufficient to recover the secret.  Here, the system
+pre-computes a reasonably sane allocation, for small @code{n} the default could
+be @code{n-1} out of @code{n}.
+
+We should propose a mapping of authentication methods to providers by
+minimizing cost (tricky: sign-up vs. recovery costs, different currencies) and
+distributing the selected authentication methods across as many providers as
+possible.
+
+The user should be able to change the proposed default selection
+and add more than one provider to each chosen method.
+
+Using Anastatis providers usually is not free.  From here on, the UI should
+show estimated recurring costs (yearly) and the cost of recovery.  These costs
+should get updated with each user action affecting those costs such as
+when the user reconfigures the policies.
+
+@node Pay for Setup,,Defining Recovery Options,Setup Steps
+@anchor{design-documents/001-anastasis-ux pay-for-setup}@anchor{77}
+@subsubsection Pay for Setup
+
+
+As the last step when all information has been properly provided, the user is
+asked to pay for the service with the regular wallet payment confirmation
+screen.
+
+@node Show Service Status After Setup,Recovery Steps,Setup Steps,Design Doc 
001 Anastasis User Experience
+@anchor{design-documents/001-anastasis-ux 
show-service-status-after-setup}@anchor{78}
+@subsubsection Show Service Status After Setup
+
+
+TODO
+
+@node Recovery Steps,,Show Service Status After Setup,Design Doc 001 Anastasis 
User Experience
+@anchor{design-documents/001-anastasis-ux recovery-steps}@anchor{79}
+@subsubsection Recovery Steps
+
+@image{graphviz-834e5a93329dec2ccdefd2a21bdfb5a02bad1c84,,,[graphviz],png}
+
+@menu
+* Entry point; Settings: Entry point Settings<2>. 
+* Providing Identification: Providing Identification<2>. 
+* Select Authentication Challenge:: 
+* Payment:: 
+* Enter Challenge Response:: 
+* Success:: 
+
+@end menu
+
+@node Entry point Settings<2>,Providing Identification<2>,,Recovery Steps
+@anchor{design-documents/001-anastasis-ux id1}@anchor{7a}
+@subsubsection Entry point: Settings
+
+
+Like the backup, the recovery option should be available via
+the App settings.
+
+The section should have an option to recover from backup.  If a previous
+recovery was not completed, the interaction should resume from that previous
+checkpoint instead of from the beginning.
+
+@image{anastasis-figures/menu,,,,png}
+
+@image{anastasis-figures/settings,,,,png}
+
+@image{anastasis-figures/backupsettings,,,,png}
+
+@node Providing Identification<2>,Select Authentication Challenge,Entry point 
Settings<2>,Recovery Steps
+@anchor{design-documents/001-anastasis-ux id2}@anchor{7b}
+@subsubsection Providing Identification
+
+
+The first dialog(s) during recovery should be identical to the first dialog
+during backup: the user is asked to select a continent, country of residence
+and then to provide country-specific inputs for identification.
+
+@image{anastasis-figures/userid,,,,png}
+
+@node Select Authentication Challenge,Payment,Providing 
Identification<2>,Recovery Steps
+@anchor{design-documents/001-anastasis-ux 
select-authentication-challenge}@anchor{7c}
+@subsubsection Select Authentication Challenge
+
+
+If Anastasis could recover the recovery document via any provider, it should
+show a dialog allowing the user to select one of the open challenges, and
+highlight which challenges still need to be satisfied for the various policies.
+
+Additionally, the specific provider and recovery document version should be 
shown.
+The user should be able to change the provider or recovery document version,
+resulting in a switch of the recovery document and policies. If the user has
+already satisfied some challenges of the current recovery document, switching 
to a
+different recovery document should only be done after a confirmation pop-up 
dialog
+warning the user that the existing progress will be lost.
+
+When selecting a challenge, the user may be asked to confirm making a payment
+for this challenge if the provider requires payment.
+
+@node Payment,Enter Challenge Response,Select Authentication 
Challenge,Recovery Steps
+@anchor{design-documents/001-anastasis-ux payment}@anchor{7d}
+@subsubsection Payment
+
+
+Typcially, this would be the canonical wallet payment confirmation dialog.
+
+However, in the case of a security question, the payment confirmation should
+be combined with the dialog where the user enters the security answer (so
+instead of an @code{Ok} button, text showing the amount due and @code{Pay} 
should be
+used – except of course if the security question challenge is free of
+charge).
+
+@node Enter Challenge Response,Success,Payment,Recovery Steps
+@anchor{design-documents/001-anastasis-ux enter-challenge-response}@anchor{7e}
+@subsubsection Enter Challenge Response
+
+
+If the challenge was not a security question, the dialog to enter the security
+code (PIN/TAN) should open after payment.  The security code field should have
+a prefix @code{A-}. However, the user should be able to enter both only the
+numeric code, or the full code with the @code{A-} prefix (or ideally, the user
+cannot delete the pre-filled @code{A-} text).
+
+@node Success,,Enter Challenge Response,Recovery Steps
+@anchor{design-documents/001-anastasis-ux success}@anchor{7f}
+@subsubsection Success
+
+
+The user is informed about the successful recovery.  We may want to do this
+as part of a separate screen, or simply with a notification bar in the
+main wallet screen.
+
+@node Template,,Design Doc 001 Anastasis User Experience,Design Documents
+@anchor{design-documents/999-template 
doc}@anchor{80}@anchor{design-documents/999-template template}@anchor{81}
+@subsection Template
+
+
+@menu
+* Summary: Summary<2>. 
+* Motivation: Motivation<2>. 
+* Requirements:: 
+* Proposed Solution:: 
+* Alternatives:: 
+* Drawbacks:: 
+* Discussion / Q&A:: 
+
+@end menu
+
+@node Summary<2>,Motivation<2>,,Template
+@anchor{design-documents/999-template summary}@anchor{82}
+@subsubsection Summary
+
+
+@node Motivation<2>,Requirements,Summary<2>,Template
+@anchor{design-documents/999-template motivation}@anchor{83}
+@subsubsection Motivation
+
+
+@node Requirements,Proposed Solution,Motivation<2>,Template
+@anchor{design-documents/999-template requirements}@anchor{84}
+@subsubsection Requirements
+
+
+@node Proposed Solution,Alternatives,Requirements,Template
+@anchor{design-documents/999-template proposed-solution}@anchor{85}
+@subsubsection Proposed Solution
+
+
+@node Alternatives,Drawbacks,Proposed Solution,Template
+@anchor{design-documents/999-template alternatives}@anchor{86}
+@subsubsection Alternatives
+
+
+@node Drawbacks,Discussion / Q&A,Alternatives,Template
+@anchor{design-documents/999-template drawbacks}@anchor{87}
+@subsubsection Drawbacks
+
+
+@node Discussion / Q&A,,Drawbacks,Template
+@anchor{design-documents/999-template discussion-q-a}@anchor{88}
+@subsubsection Discussion / Q&A
+
+
+(This should be filled in with results from discussions on mailing lists / 
personal communication.)
+
+@node Anastasis licensing information,Man Pages,Design Documents,Documentation 
Overview
+@anchor{global-licensing doc}@anchor{89}@anchor{global-licensing 
anastasis-licensing-information}@anchor{8a}
+@section Anastasis licensing information
+
+
+This file gives an overview of all Anastasis component’s licensing and
+of runtime dependencies thereof. For “component” here is meant a set
+of source files which can be retrieved from a single repository.  If
+components consist of sources under different licensing regimes, i.e.
+because we want to enable third party developments to easily integrate
+with Taler, those are described as well.
+
+All Anastasis components are generally released under the Affero
+GPL.
+
+@menu
+* Anastasis (git;//git.taler.net/anastasis): Anastasis git //git taler 
net/anastasis. 
+* Anastasis-gtk (git;//git.taler.net/anastasis-gtk): Anastasis-gtk git //git 
taler net/anastasis-gtk. 
+* Documentation:: 
+
+@end menu
+
+@node Anastasis git //git taler net/anastasis,Anastasis-gtk git //git taler 
net/anastasis-gtk,,Anastasis licensing information
+@anchor{global-licensing 
anastasis-git-git-taler-net-anastasis}@anchor{8b}@anchor{global-licensing 
exchange-repo}@anchor{8c}
+@subsection Anastasis (git://git.taler.net/anastasis)
+
+
+Anastasis core logic is under AGPL.
+
+@menu
+* Runtime dependencies:: 
+
+@end menu
+
+@node Runtime dependencies,,,Anastasis git //git taler net/anastasis
+@anchor{global-licensing runtime-dependencies}@anchor{8d}
+@subsubsection Runtime dependencies
+
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+
+@itemize *
+
+@item 
+libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+
+@item 
+libgcrypt: LGPL, owned by Free Software Foundation
+
+@item 
+postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+
+@item 
+libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+
+@item 
+libgnunetjson: GPLv3+, GNUnet e.V.
+
+@item 
+GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+@end itemize
+
+@node Anastasis-gtk git //git taler net/anastasis-gtk,Documentation,Anastasis 
git //git taler net/anastasis,Anastasis licensing information
+@anchor{global-licensing 
anastasis-gtk-git-git-taler-net-anastasis-gtk}@anchor{8e}
+@subsection Anastasis-gtk (git://git.taler.net/anastasis-gtk)
+
+
+Anastasis-gtk is under AGPL.
+
+@menu
+* Runtime dependencies: Runtime dependencies<2>. 
+
+@end menu
+
+@node Runtime dependencies<2>,,,Anastasis-gtk git //git taler net/anastasis-gtk
+@anchor{global-licensing id1}@anchor{8f}
+@subsubsection Runtime dependencies
+
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+
+@itemize *
+
+@item 
+libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+
+@item 
+libgcrypt: LGPL, owned by Free Software Foundation
+
+@item 
+postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+
+@item 
+libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+
+@item 
+libgnunetjson: GPLv3+, GNUnet e.V.
+
+@item 
+libgnunetgtk: GPLv3+, GNUnet e.V.
+
+@item 
+GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+@end itemize
+
+@node Documentation,,Anastasis-gtk git //git taler net/anastasis-gtk,Anastasis 
licensing information
+@anchor{global-licensing documentation}@anchor{90}
+@subsection Documentation
+
+
+The documentation is licensed under the GNU Free Documentation License Version 
1.3 or later.
+
+@node Man Pages,Complete Index,Anastasis licensing information,Documentation 
Overview
+@anchor{manindex doc}@anchor{91}@anchor{manindex man-pages}@anchor{92}
+@section Man Pages
+
+
+@menu
+* anastasis-config(1): anastasis-config 1. 
+* anastasis-gtk(1): anastasis-gtk 1. 
+* anastasis-httpd(1): anastasis-httpd 1. 
+* anastasis-reducer(1): anastasis-reducer 1. 
+* anastasis.conf(5): anastasis conf 5. 
+
+@end menu
+
+@node anastasis-config 1,anastasis-gtk 1,,Man Pages
+@anchor{manpages/anastasis-config 1 
doc}@anchor{93}@anchor{manpages/anastasis-config 1 
anastasis-config-1}@anchor{94}
+@subsection anastasis-config(1)
+
+
+
+@menu
+* Synopsis:: 
+* Description:: 
+* See Also:: 
+* Bugs:: 
+
+@end menu
+
+@node Synopsis,Description,,anastasis-config 1
+@anchor{manpages/anastasis-config 1 synopsis}@anchor{95}
+@subsubsection Synopsis
+
+
+@strong{anastasis-config}
+[@strong{-b} @emph{backend} | @strong{––supported-backend=}@emph{backend}]
+[@strong{-c} @emph{filename} | @strong{––config=}@emph{filename}]
+[@strong{-f} | @strong{––filename}]
+[@strong{-F} | @strong{––full}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{loglevel} | @strong{––loglevel=}@emph{loglevel}]
+[@strong{-l} @emph{filename} | @strong{––logfile=}‌@emph{filename}]
+[@strong{-o} @emph{option} | @strong{––option=}@emph{option}]
+[@strong{-r} | @strong{––rewrite}]
+[@strong{-S} | @strong{––list-sections}]
+[@strong{-s} @emph{section} | @strong{––section=}@emph{section}]
+[@strong{-V} @emph{value} | @strong{––value=}@emph{value}]
+[@strong{-v} | @strong{––version}]
+
+@node Description,See Also,Synopsis,anastasis-config 1
+@anchor{manpages/anastasis-config 1 description}@anchor{96}
+@subsubsection Description
+
+
+@strong{anastasis-config} can be used to read or modify Anastasis 
configuration files.
+
+
+@table @asis
+
+@item @strong{-b} @emph{BACKEND} | @strong{––supported-backend=}@emph{BACKEND}
+
+Tests whether the specified @emph{BACKEND} is supported by the current 
installation.
+The backend must match the name of a plugin, i.e. “namestore_postgres” for
+the Postgres database backend of the “NAMESTORE” service.  If @emph{BACKEND} is
+supported, anastasis-config will return a status code of 0 (success), otherwise
+77 (unsupported).  When this option is specified, no other options may be
+specified. Specifying this option together with other options will cause
+anastasis-config to return a status code of 1 (error).
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}@emph{FILENAME}
+
+Use the configuration file @emph{FILENAME}.
+
+@item @strong{-f} | @strong{––filename}
+
+Try to perform expansions as if the option values represent filenames (will
+also be applied even if the option is not really a filename).
+
+@item @strong{-F} | @strong{––full}
+
+Write the full configuration file, not just the differences to the defaults.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}@emph{LOGLEVEL}
+
+Use @emph{LOGLEVEL} for logging.
+Valid values are @code{DEBUG}, @code{INFO}, @code{WARNING}, and @code{ERROR}.
+
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
+
+Send logging output to @emph{FILENAME}.
+
+@item @strong{-o} @emph{OPTION} | @strong{––option=}@emph{OPTION}
+
+Which configuration option should be accessed or edited.  Required to set a
+value.  If not given, all values of a given section will be printed in the
+format “OPTION = VALUE”.
+
+@item @strong{-r} | @strong{––rewrite}
+
+Write the configuration file even if nothing changed. Will remove all comments!
+
+@item @strong{-S} | @strong{––list-sections}
+
+List available configuration sections for use with @code{--section}.
+
+@item @strong{-s} @emph{SECTION} | @strong{––section=}@emph{SECTION}
+
+Which configuration section should be accessed or edited.
+Required option.
+
+@item @strong{-V} @emph{VALUE} | @strong{––value=}@emph{VALUE}
+
+Configuration value to store in the given section under the given option.
+Must only be given together with @code{-s} and @code{-o} options.
+
+
+@table @asis
+
+@item Note:
+
+Changing the configuration file with @code{-V} will remove comments
+and may reorder sections and remove @code{@@INLINE@@} directives.
+@end table
+
+@item @strong{-v} | @strong{––version}
+
+Print Anastasis version number.
+@end table
+
+@node See Also,Bugs,Description,anastasis-config 1
+@anchor{manpages/anastasis-config 1 see-also}@anchor{97}
+@subsubsection See Also
+
+
+anastasis.conf(5)
+
+@node Bugs,,See Also,anastasis-config 1
+@anchor{manpages/anastasis-config 1 bugs}@anchor{98}
+@subsubsection Bugs
+
+
+Report bugs by using @indicateurl{https://bugs.anastasis.lu} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
+
+@node anastasis-gtk 1,anastasis-httpd 1,anastasis-config 1,Man Pages
+@anchor{manpages/anastasis-gtk 1 doc}@anchor{99}@anchor{manpages/anastasis-gtk 
1 anastasis-gtk-1}@anchor{9a}
+@subsection anastasis-gtk(1)
+
+
+
+@menu
+* Synopsis: Synopsis<2>. 
+* Description: Description<2>. 
+* See Also: See Also<2>. 
+* Bugs: Bugs<2>. 
 
-@strong{delete_authentication}:
+@end menu
 
-This transition can be used to remove an authentication method from the
-array of authentication methods. It simply requires the index of the
-authentication method to remove. Note that the array is 0-indexed:
+@node Synopsis<2>,Description<2>,,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 synopsis}@anchor{9b}
+@subsubsection Synopsis
 
-@example
-@{
-  "authentication_method": 1
-@}
-@end example
 
-Assuming we begin with the state from the example above, this would
-remove the @code{email} authentication method, resulting in the following
-response:
+@strong{anastasis-gtk}
+[@strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}]
+[@strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}]
+[@strong{-v} | @strong{––version}]
 
-@example
-@{
-  "backup_state": "AUTHENTICATIONS_EDITING",
-  "authentication_methods": [
-    @{
-      "type": "question",
-      "mime_type" : "text/plain",
-      "instructions" : "What is your favorite GNU package?",
-      "challenge" : "gdb",
-    @}
-  ]
-@}
-@end example
+@node Description<2>,See Also<2>,Synopsis<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 description}@anchor{9c}
+@subsubsection Description
 
-If the index is invalid, the reducer will instead
-transition into an ERROR state.
 
-@strong{next} (from “AUTHENTICATIONS_EDITING”):
+@strong{anastasis-gtk} is a graphical tool to run Anastasis
+key recover and backup operations.
 
-This transition confirms that the user has finished adding (or removing)
-authentication methods, and that the system should now automatically compute
-a set of reasonable recovery policies.
 
-This transition does not take any mandatory arguments.  Optional arguments can
-be provided to upload the recovery document only to a specific subset of the
-providers:
+@table @asis
 
-@example
-@{
-  "provider_id": [
-    "http://localhost:8088/";,
-    "http://localhost:8089/";
-  ]
-@}
-@end example
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
 
-..note:
+Use the configuration from @emph{FILENAME}.
 
-@example
-This is currently not supported (#6760), the current implementation of the
-reducer ignores this optional argument.
-@end example
+@item @strong{-h} | @strong{––help}
 
-The resulting state provides the suggested recovery policies in a way suitable
-for presentation to the user:
+Print short help on options.
 
-@example
-@{
-  "backup_state": "POLICIES_REVIEWING",
-  "policies": [
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8088/";
-        @},
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 2,
-          "provider": "http://localhost:8087/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8088/";
-        @},
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 3,
-          "provider": "http://localhost:8089/";
-        @}
-      ]
-    @}
-  ]
-@}
-@end example
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}
 
-For each recovery policy, the state includes the specific details of which
-authentication @code{methods} must be solved to recovery the secret using this
-policy.  The @code{methods} array specifies the index of the
-@code{authentication_method} in the @code{authentication_methods} array, as 
well as
-the provider that was selected to supervise this authentication.
+Specifies the log level to use. Accepted values are: @code{DEBUG}, @code{INFO},
+@code{WARNING}, @code{ERROR}.
 
-If no authentication method was provided, the reducer will transition into an
-ERROR state instead of suggesting policies.
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
 
-@strong{add_policy}:
+Send logging output to @emph{FILENAME}.
 
-Using this transition, the user can add an additional recovery policy to the
-state.  The argument format is the same that is used in the existing state.
-An example for a possible argument would thus be:
+@item @strong{-v} | @strong{––version}
 
-@example
-@{
-  "policy": [
-    @{
-      "authentication_method": 1,
-      "provider": "http://localhost:8088/";
-    @},
-    @{
-      "authentication_method": 3,
-      "provider": "http://localhost:8089/";
-    @}
-  ]
-@}
-@end example
+Print version information.
+@end table
 
-Note that the specified providers must already be in the
-@code{authentication_providers} of the state. You cannot add new providers at
-this stage.  The reducer will simply attempt to append the suggested policy to
-the “policies” array, returning an updated state:
+@node See Also<2>,Bugs<2>,Description<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 see-also}@anchor{9d}
+@subsubsection See Also
 
-@example
-@{
-  "backup_state": "POLICIES_REVIEWING",
-  "policies": [
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 2,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 2,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8088/";
-        @},
-        @{
-          "authentication_method": 3,
-          "provider": "http://localhost:8089/";
-        @}
-      ]
-    @}
-  ]
-@}
-@end example
 
-If the new policy is invalid, for example because it add an unknown
-authentication method or the selected provider does not support the type of
-authentication, the reducer will transition into an ERROR state instead of
-adding the new policy.
+anastasis-reducer(1), anastasis-httpd(1), anastasis.conf(5).
 
-@strong{delete_policy:}
+@node Bugs<2>,,See Also<2>,anastasis-gtk 1
+@anchor{manpages/anastasis-gtk 1 bugs}@anchor{9e}
+@subsubsection Bugs
 
-This transition allows the deletion of a recovery policy. The argument
-simply specifies the index of the policy to delete, for example:
 
-@example
-@{
-  "policy_index": 3
-@}
-@end example
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
 
-Given as input the state from the example above, the expected new state would
-be:
+@node anastasis-httpd 1,anastasis-reducer 1,anastasis-gtk 1,Man Pages
+@anchor{manpages/anastasis-httpd 1 
doc}@anchor{9f}@anchor{manpages/anastasis-httpd 1 anastasis-httpd-1}@anchor{a0}
+@subsection anastasis-httpd(1)
 
-@example
-@{
-  "backup_state": "POLICIES_REVIEWING",
-  "policies": [
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 0,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 2,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @},
-    @{
-      "methods": [
-        @{
-          "authentication_method": 1,
-          "provider": "http://localhost:8089/";
-        @},
-        @{
-          "authentication_method": 2,
-          "provider": "http://localhost:8088/";
-        @}
-      ]
-    @}
-  ]
-@}
-@end example
 
-If the index given is invalid, the reducer will transition into an ERROR state
-instead of deleting a policy.
 
-@strong{next} (from “POLICIES_REVIEWING”):
+@menu
+* Synopsis: Synopsis<3>. 
+* Description: Description<3>. 
+* Signals:: 
+* See also:: 
+* Bugs: Bugs<3>. 
+
+@end menu
 
-Using this transition, the user confirms that the policies in the current
-state are acceptable. The transition does not take any arguments.
+@node Synopsis<3>,Description<3>,,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 synopsis}@anchor{a1}
+@subsubsection Synopsis
 
-The reducer will simply transition to the @code{SECRET_EDITING} state:
 
-@example
-@{
-  "backup_state": "SECRET_EDITING",
-@}
-@end example
+@strong{anastasis-httpd}
 
-If the array of @code{policies} is currently empty, the reducer will transition
-into an ERROR state instead of allowing the user to continue.
+@node Description<3>,Signals,Synopsis<3>,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 description}@anchor{a2}
+@subsubsection Description
 
-@strong{enter_secret:}
 
-This transition provides the reducer with the actual core @code{secret} of the 
user
-that Anastasis is supposed to backup (and possibly recover). The argument is
-simply the Crockford-Base32 encoded @code{value} together with its @code{mime} 
type,
-for example:
+Banastasis-httpd is a command line tool to run the Anastasis (HTTP
+backend).  The required configuration and database must exist before
+running this command.
 
-@example
-@{
-  "secret": @{
-     "value": "EDJP6WK5EG50",
-     "mime" : "text/plain"
-@}
-@end example
+Its options are as follows:
+
+
+@table @asis
+
+@item @strong{-C} | @strong{–connection-close}
+
+Force each HTTP connection to be closed after each request.
+
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
+
+Use the configuration and other resources for the merchant to operate
+from FILENAME.
+
+@item @strong{-h} | @strong{––help}
+
+Print short help on options.
+
+@item @strong{-v} | @strong{––version}
 
-If the application is unaware of the format, it set the @code{mime} field to 
>>`@w{`}<<null`.
+Print version information.
+@end table
 
-After adding a secret, the reducer may transition into different states
-depending on whether payment(s) are necessary.  If payments are needed, the
-@code{secret} will be stored in the state under @code{core_secret}.  
Applications
-should be careful when persisting the resulting state, as the 
@code{core_secret}
-is not protected in the @code{PAYING} states.  The @code{PAYING} states only 
differ
-in terms of what the payments are for (key shares or the recovery document),
-in all cases the state simply includes an array of Taler URIs that refer to
-payments that need to be made with the Taler wallet.
+@node Signals,See also,Description<3>,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 signals}@anchor{a3}
+@subsubsection Signals
 
-If all payments are complete, the reducer will transition into the
-@code{BACKUP_FINISHED} state and (if applicable) delete the @code{core_secret} 
as an
-additional safety measure.
 
-Example results are thus:
+@strong{anastasis-httpd} responds to the following signals:
 
-@example
-@{
-  "backup_state": "TRUTHS_PAYING",
-  "core_secret" : "DATA",
-  "payments": [
-    "taler://pay/...",
-    "taler://pay/..."
-  ]
-@}
-@end example
 
-@example
-@{
-  "backup_state": "POLICIES_PAYING",
-  "core_secret" : "DATA",
-  "payments": [
-    "taler://pay/...",
-    "taler://pay/..."
-  ]
-@}
-@end example
+@table @asis
 
-@example
-@{
-  "backup_state": "BACKUP_FINISHED",
-@}
-@end example
+@item @code{SIGTERM}
 
-@strong{pay:}
+Sending a SIGTERM to the process will cause it to shutdown cleanly.
+@end table
 
-This transition suggests to the reducer that a payment may have been made or
-is immanent, and that the reducer should check with the Anastasis service
-provider to see if the operation is now possible.  The operation takes one
-optional argument, which is a @code{timeout} value that specifies how long the
-reducer may wait (in long polling) for the payment to complete:
+@node See also,Bugs<3>,Signals,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 see-also}@anchor{a4}
+@subsubsection See also
 
-@example
-@{
-  "timeout":  @{ "d_ms" : 5000 @},
-@}
-@end example
 
-The specified timeout is passed on to the Anastasis service provider(s), which
-will wait this long before giving up.  If no timeout is given, the check is
-done as quickly as possible without additional delays.  The reducer will 
continue
-to either an updated state with the remaining payment requests, to the
-@code{BACKUP_FINISHED} state (if all payments have been completed and the 
backup
-finished), or into an @code{ERROR} state in case there was an irrecoverable 
error,
-indicating the specific provider and how it failed.  An example for this
-final error state would be:
+anastasis-dbinit(1), anastasis-config(1), anastasis-gtk(1), 
anastasis-reducer(1)
 
-@example
-@{
-  "backup_state": "ERROR",
-  "http_status" : 500,
-  "upload_status" : 52,
-  "provider_url" : "https://bad.example.com/";,
-@}
-@end example
+@node Bugs<3>,,See also,anastasis-httpd 1
+@anchor{manpages/anastasis-httpd 1 bugs}@anchor{a5}
+@subsubsection Bugs
 
-Here, the fields have the following meaning:
 
-@quotation
+Report bugs by using @indicateurl{https://bugs.anastasis.lu} or by sending
+electronic mail to <@email{contact@@anastasis.lu}>.
 
+@node anastasis-reducer 1,anastasis conf 5,anastasis-httpd 1,Man Pages
+@anchor{manpages/anastasis-reducer 1 
doc}@anchor{a6}@anchor{manpages/anastasis-reducer 1 
anastasis-reducer-1}@anchor{a7}
+@subsection anastasis-reducer(1)
 
-@itemize -
 
-@item
-@strong{http_status} is the HTTP status returned by the Anastasis provider
 
-@item
-@strong{upload_status} is the Taler error code return by the provider
+@menu
+* Synopsis: Synopsis<4>. 
+* Description: Description<4>. 
+* See Also: See Also<3>. 
+* Bugs: Bugs<4>. 
 
-@item
-@strong{provider_url} is the base URL of the failing provider
-@end itemize
-@end quotation
+@end menu
 
-In the above example, 52 would thus imply that the Anastasis provider failed to
-store information into its database.
+@node Synopsis<4>,Description<4>,,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 synopsis}@anchor{a8}
+@subsubsection Synopsis
 
-@node Recovery transitions,,Backup transitions,Reducer transitions
-@anchor{anastasis recovery-transitions}@anchor{2f}
-@subsection Recovery transitions
 
+@strong{anastasis-reducer}
+[@strong{-a**_*JSON*_|_}–arguments=@emph{JSON}]
+[@strong{-b**_|_}–backup]
+[@strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}]
+[@strong{-h} | @strong{––help}]
+[@strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}]
+[@strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}]
+[@strong{-r**_|_}–restore]
+[@strong{-v} | @strong{––version}] COMMAND
 
-@strong{enter_user_attributes:}
+@node Description<4>,See Also<3>,Synopsis<4>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 description}@anchor{a9}
+@subsubsection Description
 
-This transition provides the user’s personal attributes. The specific set of
-attributes required depends on the country of residence of the user.  Some
-attributes may be optional, in which case they should be omitted entirely
-(that is, not simply be set to @code{null} or an empty string).  The
-arguments are identical to the >>**<<>>enter_user_attributes__<< transition 
from
-the backup process.  Example arguments would thus be:
 
-@example
-@{
-  "identity_attributes": @{
-    "full_name": "Max Musterman",
-    "social_security_number": "123456789",
-    "birthdate": "2000-01-01",
-    "birthplace": "Earth"
-  @}
-@}
-@end example
+@strong{anastasis-reducer} is a command-line tool to run Anastasis
+key recover and backup operations using a reducer-style interface.
+The reducer will read the current state from standard input and
+write the resulting state to standard output.  A COMMAND must
+be given on the command line.  The arguments (if any) are to
+be given in JSON format to the @strong{-a} option.  A list of
+commands can be found in the @ref{55,,Reducer API}
+chapter.
 
-However, in contrast to the backup process, the reducer will attempt to
-retrieve the latest recovery document from all known providers for the
-selected currency given the above inputs.  If a recovery document was found
-by any provider, the reducer will attempt to load it and transition to
-a state where the user can choose which challenges to satisfy:
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SELECTING",
-  "recovery_information": @{
-    "challenges": [
-      @{
-        "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G",
-        "cost": "TESTKUDOS:0",
-        "type": "question",
-        "instructions": "q1"
-      @},
-      @{
-        "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-        "cost": "TESTKUDOS:0",
-        "type": "email",
-        "instructions": "e-mail address m?il@@f*.bar"
-      @}
-    ],
-    "policies": [
-      [
-        @{
-          "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G"
-        @},
-        @{
-          "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0"
-        @}
-      ]
-    ],
-    "provider_url": "http://localhost:8088/";,
-    "version": 1
-  @},
-  "recovery_document": @{
-    ...
-  @}
-@}
-@end example
+@table @asis
 
-The @code{recovery_document} is an internal representation of the recovery
-information and of no concern to the user interface. The pertinent information
-is in the @code{recovery_information}. Here, the @code{challenges} array is a 
list
-of possible challenges the user could attempt to solve next, while 
@code{policies}
-is an array of policies, with each policy being an array of challenges.
-Satisfying all of the challenges of one of the policies will enable the secret
-to be recovered.  The @code{provider_url} from where the recovery document was
-obtained and its @code{version} are also provided.  Each challenge comes with
-four mandatory fields:
+@item @strong{-a} @emph{JSON} | @strong{––arguments=}@emph{JSON}
 
-@quotation
+Provide JSON inputs for the given command.
 
+@item @strong{-b} | @strong{–backup}
 
-@itemize -
+Begin fresh reducer operation for a back up operation.
 
-@item
-@strong{uuid}: a unique identifier of the challenge; this is what the
-UUIDs in the policies array refer to, but also this UUID may be
-included in messages sent to the user. They allow the user to
-distinguish different PIN/TANs should say the same phone number be
-used for SMS-authentication with different providers.
+@item @strong{-c} @emph{FILENAME} | @strong{––config=}‌@emph{FILENAME}
 
-@item
-@strong{cost}: this is the amount the Anastasis provider will charge
-to allow the user to pass the challenge.
+Use the configuration from @emph{FILENAME}.
 
-@item
-@strong{type}: this is the type of the challenge, as a string.
+@item @strong{-h} | @strong{––help}
 
-@item
-@strong{instructions}: contains additional important hints for the user
-to allow the user to satisfy the challenge.  It typically includes
-an abbreviated form of the contact information or the security
-question. Details depend on @code{type}.
-@end itemize
-@end quotation
+Print short help on options.
 
-If a recovery document was not found, either the user never performed
-a backup, entered incorrect attributes or used a provider not yet in
-the list of Anastasis providers.  Hence, the user must now either
-select a different provider, or go @code{back} and update the identity
-attributes.  In the case a recovery document was not found, the
-transition fails, returning the error code and a human-readable error
-message together with a transition failure:
+@item @strong{-L} @emph{LOGLEVEL} | @strong{––loglevel=}‌@emph{LOGLEVEL}
 
-@example
-@{
-  "recovery_state": "ERROR",
-  "error_message": "account unknown to Anastasis server",
-  "error_code": 9,
-@}
-@end example
+Specifies the log level to use. Accepted values are: @code{DEBUG}, @code{INFO},
+@code{WARNING}, @code{ERROR}.
 
-Here, the @code{error_code} is from the @code{enum ANASTASIS_RecoveryStatus}
-and describes precisely what failed about the download, while the
-@code{error_message} is a human-readable (English) explanation of the code.
-Applications may want to translate the message using GNU gettext;
-translations should be available in the “anastasis” text domain.
-However, in general it should be sufficient to display the slightly
-more generic Taler error code that is returned with the new state.
+@item @strong{-l} @emph{FILENAME} | @strong{––logfile=}‌@emph{FILENAME}
 
-@strong{change_version:}
+Send logging output to @emph{FILENAME}.
 
-Even if a recovery document was found, it is possible that the user
-intended to recover a different version, or recover a backup where
-the recovery document is stored at a different provider. Thus, the
-reducer allows the user to explicitly switch to a different provider
-or recovery document version using the @code{change_version} transition,
-which takes a provider URL and policy version as arguments:
+@item @strong{-r} | @strong{–restore}
 
-@example
-@{
-  "provider_url": "https://localhost:8080/";,
-  "version": 2
-@}
-@end example
+Begin fresh reducer operation for a restore operation.
 
-Note that using a version of 0 implies fetching @code{the latest version}.  The
-resulting states are the same as those of the @code{enter_user_attributes}
-transition, except that the recovery document version is not necessarily the
-latest available version at the provider.
+@item @strong{-v} | @strong{––version}
 
-@strong{select_challenge:}
+Print version information.
+@end table
 
-Selecting a challenge takes different, depending on the state of the payment.
-A comprehensive example for @code{select_challenge} would be:
+@node See Also<3>,Bugs<4>,Description<4>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 see-also}@anchor{aa}
+@subsubsection See Also
 
-@example
-@{
-    "uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
-    "timeout" : @{ "d_ms" : 5000 @},
-    "payment_secret": "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
-@}
-@end example
 
-The @code{uuid} field is mandatory and specifies the selected challenge.
-The other fields are optional, and are needed in case the user has
-previously been requested to pay for the challenge.  In this case,
-the @code{payment_secret} identifies the previous payment request, and
-@code{timeout} says how long the Anastasis service should wait for the
-payment to be completed before giving up (long polling).
+anastasis-gtk(1), anastasis-httpd(1), anastasis.conf(5).
 
-Depending on the type of the challenge and the need for payment, the
-reducer may transition into @code{CHALLENGE_SOLVING} or @code{CHALLENGE_PAYING}
-states.  In @code{CHALLENGE_SOLVING}, the new state will primarily specify
-the selected challenge:
+@node Bugs<4>,,See Also<3>,anastasis-reducer 1
+@anchor{manpages/anastasis-reducer 1 bugs}@anchor{ab}
+@subsubsection Bugs
 
-@example
-@{
-  "backup_state": "CHALLENGE_SOLVING",
-  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
-@}
-@end example
 
-In @code{CHALLENGE_PAYING}, the new state will include instructions for payment
-in the @code{challenge_feedback}. In general, @code{challenge_feedback} 
includes
-information about attempted challenges, with the final state being 
@code{solved}:
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SELECTING",
-  "recovery_information": @{
-    // ...
-  @}
-  "challenge_feedback": @{
-    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
-      "state" : "solved"
-    @}
-  @}
-@}
-@end example
+@node anastasis conf 5,,anastasis-reducer 1,Man Pages
+@anchor{manpages/anastasis conf 5 doc}@anchor{ac}@anchor{manpages/anastasis 
conf 5 anastasis-conf-5}@anchor{ad}
+@subsection anastasis.conf(5)
 
-Challenges feedback for a challenge can have many different @code{state} values
-that applications must all handle. States other than @code{solved} are:
 
-@quotation
 
+@menu
+* Description: Description<5>. 
+* SEE ALSO:: 
+* BUGS:: 
 
-@itemize -
+@end menu
 
-@item
-@strong{payment}: Here, the user must pay for a challenge. An example would be:
+@node Description<5>,SEE ALSO,,anastasis conf 5
+@anchor{manpages/anastasis conf 5 description}@anchor{ae}
+@subsubsection Description
+
+
+The configuration file is line-oriented.
+Blank lines and whitespace at the beginning and end of a line are ignored.
+Comments start with @code{#} or @code{%} in the first column
+(after any beginning-of-line whitespace) and go to the end of the line.
+
+The file is split into sections.
+Every section begins with “[SECTIONNAME]” and
+contains a number of options of the form “OPTION=VALUE”.
+There may be whitespace around the @code{=} (equal sign).
+Section names and options are @emph{case-insensitive}.
+
+The values, however, are @emph{case-sensitive}.
+In particular, boolean values are one of @code{YES} or @code{NO}.
+Values can include whitespace by surrounding
+the entire value with @code{"} (double quote).
+Note, however, that there are no escape characters in such strings;
+all characters between the double quotes (including other double quotes)
+are taken verbatim.
+
+Values that represent filenames can begin with a @code{/bin/sh}-like
+variable reference.
+This can be simple, such as @code{$TMPDIR/foo}, or complex,
+such as @code{$@{TMPDIR:-$@{TMP:-/tmp@}@}/foo}.
+See @code{[PATHS]} (below).
+
+Values that represent a time duration are represented as a series of one or
+more @code{NUMBER UNIT} pairs, e.g. @code{60 s}, @code{4 weeks 1 day}, @code{5 
years 2 minutes}.
+
+Values that represent an amount are in the usual amount syntax:
+@code{CURRENCY:VALUE.FRACTION}, e.g. @code{EUR:1.50}.
+The @code{FRACTION} portion may extend up to 8 places.
+
+Files containing default values for many of the options described below
+are installed under @code{$ANASTASIS_PREFIX/share/taler/config.d/}.
+The configuration file given with @strong{-c} to Anastasis binaries
+overrides these defaults.
+
+A configuration file may include another, by using the @code{@@INLINE@@} 
directive,
+for example, in @code{main.conf}, you could write @code{@@INLINE@@ sub.conf} to
+include the entirety of @code{sub.conf} at that point in @code{main.conf}.
+.. TODO: Document ‘anastasis-config -V’ in light of ‘@@INLINE@@’ in 
taler-config(1).
 
-@example
-@{
-  "backup_state": "CHALLENGE_PAYING",
-  "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
-  "challenge_feedback": @{
-    "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : @{
-     "state" : "payment",
-     "taler_pay_uri" : "taler://pay/...",
-     "provider" : "https://localhost:8080/";,
-     "payment_secret" : "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
-    @}
-  @}
-@}
-@end example
-@end itemize
+@menu
+* GLOBAL OPTIONS:: 
+* Authorization options:: 
+* Postgres database configuration:: 
+
+@end menu
+
+@node GLOBAL OPTIONS,Authorization options,,Description<5>
+@anchor{manpages/anastasis conf 5 global-options}@anchor{af}
+@subsubsection GLOBAL OPTIONS
+
+
+The following options are from the @code{[anastasis]} section and used by
+the @strong{anastasis-httpd} service.
 
-@quotation
 
+@table @asis
 
-@itemize -
+@item PAYMENT_BACKEND_URL
 
-@item
-@strong{body}: Here, the server provided an HTTP reply for
-how to solve the challenge, but the reducer could not parse
-them into a known format. A mime-type may be provided and may
-help parse the details.
+Base-URL of the Taler merchant backend instance to use for payments.
+FIXME: How do we pass the access token?
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SOLVING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "body",
-      "body": "CROCKFORDBASE32ENCODEDBODY",
-      "http_status": 403,
-      "mime_type" : "anything/possible"
-    @}
-  @}
-@}
-@end example
+@item ANNUAL_FEE
 
-@item
-@strong{hint}: Here, the server provided human-readable hint for
-how to solve the challenge.  Note that the @code{hint} provided this
-time is from the Anastasis provider and may differ from the @code{instructions}
-for the challenge under @code{recovery_information}:
+Annual fee to be paid for policy uploads, i.e. “EUR:1.5”.
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SOLVING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "hint",
-      "hint": "Recovery TAN send to email mail@@DOMAIN",
-      "http_status": 403
-    @}
-  @}
-@}
-@end example
+@item TRUTH_UPLOAD_FEE
 
-@item
-@strong{details}: Here, the server provided a detailed JSON status response
-related to solving the challenge:
+Annual fee to be paid for truth uploads, i.e. “EUR:1.5”.
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SOLVING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "details",
-      "details": @{
-        "code": 8111,
-        "hint": "The client's response to the challenge was invalid.",
-        "detail" : null
-      @},
-      "http_status": 403
-    @}
-  @}
-@}
-@end example
-@end itemize
+@item DB
 
-@quotation
+Database backend to use, only @code{postgres} is supported right now.
 
+@item UPLOAD_LIMIT_MB
 
-@itemize -
+Maximum upload size for policy uploads in megabytes. Default is 1.
 
-@item
-@strong{redirect}: To solve the challenge, the user must visit the indicated
-Web site at @code{redirect_url}, for example to perform video authentication:
-@end itemize
+@item ANNUAL_POLICY_UPLOAD_LIMIT
 
-@quotation
+Maximum number of policies uploaded per year of service. Default is 42.
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SOLVING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "redirect",
-      "redirect_url": "https://videoconf.example.com/";,
-      "http_status": 303
-    @}
-  @}
-@}
-@end example
+@item BUSINESS_NAME
 
+Name of the business.
 
-@itemize -
+@item SERVER_SALT
 
-@item
-@strong{server-failure}: This indicates that the Anastasis provider encountered
-a failure and recovery using this challenge cannot proceed at this time.
-Examples for failures might be that the provider is unable to send SMS
-messages at this time due to an outage.  The body includes details about
-the failure. The user may try again later or continue with other challenges.
-@end itemize
+Must be set to a high-entropy random server salt that the provider must never
+change after the initial configuration.
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SELECTING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "server-failure",
-      "http_status": "500",
-      "error_code": 52
-    @}
-  @}
-@}
-@end example
+@item PORT
 
+TCP port on which the HTTP service should listen on.
+@end table
 
-@itemize -
+@node Authorization options,Postgres database configuration,GLOBAL 
OPTIONS,Description<5>
+@anchor{manpages/anastasis conf 5 authorization-options}@anchor{b0}
+@subsubsection Authorization options
 
-@item
-@strong{truth-unknown}: This indicates that the Anastasis provider is unaware 
of
-the specified challenge. This is typically a permanent failure, and user
-interfaces should not allow users to re-try this challenge.
-@end itemize
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SELECTING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "truth-unknown",
-      "error_code": 8108
-    @}
-  @}
-@}
-@end example
+For each active authorization plugin, options must be configured in
+a section called @code{[authorization-$PLUGIN]} where @code{$PLUGIN} is
+the name of the authorization plugin.
 
 
-@itemize -
+@table @asis
 
-@item
-@strong{rate-limit-exceeded}:
-@end itemize
+@item COST
 
-@example
-@{
-  "recovery_state": "CHALLENGE_SELECTING",
-  "recovery_information": @{
-    // ...
-  @}
-  "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
-  "challenge_feedback": @{
-    "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": @{
-      "state": "rate-limit-exceeded",
-      "error_code": 8121
-    @}
-  @}
-@}
-@end example
-@end quotation
-@end quotation
-@end quotation
-@end quotation
+Fee the user has to pay to obtain a challenge from this
+authorization plugin during recovery.
 
-@strong{pay:}
+@item ENABLED
 
-With a @code{pay} transition, the application indicates to the reducer that
-a payment may have been made. Here, it is again possible to specify an
-optional @code{timeout} argument for long-polling, for example:
+@code{yes} to enable this plugin, @code{no} to disable.
 
-@example
-@{
-    "payment_secret": "ABCDADF242525AABASD52525235ABABFDABABANALASDAAKASDAS"
-    "timeout" : @{ "d_ms" : 5000 @},
-@}
-@end example
+@item COMMAND
 
-Depending on the type of the challenge and the result of the operation, the
-new state may be @code{CHALLENGE_SOLVING} (if say the SMS was now sent to the
-user), @code{CHALLENGE_SELECTING} (if the answer to the security question was
-correct), @code{RECOVERY_FINISHED} (if this was the last challenge that needed 
to
-be solved) or still @code{CHALLENGE_PAYING} (if the challenge was not actually
-paid for).  For sample messages, see the different types of
-@code{challenge_feedback} in the section about @code{select_challenge}.
+Helper command to run (only relevant for some plugins).
+@end table
 
-@strong{solve_challenge:}
+@node Postgres database configuration,,Authorization options,Description<5>
+@anchor{manpages/anastasis conf 5 postgres-database-configuration}@anchor{b1}
+@subsubsection Postgres database configuration
 
-Solving a challenge takes various formats, depending on the type of the
-challenge and what is known about the answer.  The different supported
-formats are:
 
-@example
-@{
-    "answer": "answer to security question"
-@}
-@end example
+The following options must be in the section @code{[statis-postgres]} if
+@code{postgress} was used for the database under @code{DB} in the
+@code{[anastasis]} section.
 
-@example
-@{
-    "pin": 1234
-@}
-@end example
 
-@example
-@{
-    "hash": "SOMEBASE32ENCODEDHASHVALUE"
-@}
-@end example
+@table @asis
 
-@node Authentication Methods,,Anastasis Reducer API,Top
-@anchor{anastasis anastasis-auth-methods}@anchor{30}@anchor{anastasis 
authentication-methods}@anchor{31}
-@chapter Authentication Methods
+@item CONFIG
 
+Path under which the Postgres database is that the service
+should use, i.e. @code{postgres://anastasis}.
+@end table
 
-This section describes the supported authentication methods in detail.  We
-note that the server implements rate limiting for all authentication methods
-to ensure that malicious strong attackers cannot guess the values by
-brute-force. Typically, a user is given three attempts per hour to enter the
-correct code from 2^63 possible values.  Transmitted codes also come with an
-expiration date. If the user re-requests a challenge to be sent, the same
-challenge may be transmitted (with the three attempts counter not increasing!)
-for a limited period of time (depending on the authentication method) before
-the service eventually rotates to a fresh random code with a fresh retry
-counter. Given the default value range and time intervals (which providers are
-at liberty to adjust), brute-force attacks against this are expected to
-succeed with a 50% probability after about 200000 years of attempts at the
-maximum permissible frequency.
+@node SEE ALSO,BUGS,Description<5>,anastasis conf 5
+@anchor{manpages/anastasis conf 5 see-also}@anchor{b2}
+@subsubsection SEE ALSO
 
-@menu
-* SMS (sms): SMS sms.
-* Email verification (email): Email verification email.
-* Video identification (vid): Video identification vid.
-* Security question (qa): Security question qa.
-* Snail mail verification (post): Snail mail verification post.
 
-@end menu
+anastasis-httpd(1), anastasis-config(1)
 
-@node SMS sms,Email verification email,,Authentication Methods
-@anchor{anastasis sms-sms}@anchor{32}
-@section SMS (sms)
+@node BUGS,,SEE ALSO,anastasis conf 5
+@anchor{manpages/anastasis conf 5 bugs}@anchor{b3}
+@subsubsection BUGS
 
 
-Sends an SMS with a code (prefixed with @code{A-}) to the user’s phone, 
including
-a UUID which identifies the challenge the code is for.  The user must send
-this code back with his request (see @code{$RESPONSE} under @ref{1e,,Managing 
truth}).
-If the transmitted code is correct, the server responses with the requested
-encrypted key share.
+Report bugs by using @indicateurl{https://bugs.anastasis.lu/} or by sending 
electronic
+mail to <@email{contact@@anastasis.lu}>.
 
-@node Email verification email,Video identification vid,SMS sms,Authentication 
Methods
-@anchor{anastasis email-verification-email}@anchor{33}
-@section Email verification (email)
+@node Complete Index,GNU Free Documentation License,Man Pages,Documentation 
Overview
+@anchor{genindex doc}@anchor{b4}@anchor{genindex complete-index}@anchor{b5}
+@section Complete Index
 
 
-Sends an email with a code (prefixed with @code{A-}) to the user’s mail 
address,
-including a UUID which identifies the challenge the code is for.  The user
-must send this code back with his request (see @code{$RESPONSE} under 
@ref{1e,,Managing truth}).  If the transmitted code is correct, the server 
responses with the
-requested encrypted key share.
+@node GNU Free Documentation License,,Complete Index,Documentation Overview
+@anchor{fdl-1 3 doc}@anchor{b6}@anchor{fdl-1 3 
gnu-fdl-1-3}@anchor{b7}@anchor{fdl-1 3 
gnu-free-documentation-license}@anchor{b8}
+@section GNU Free Documentation License
 
-@node Video identification vid,Security question qa,Email verification 
email,Authentication Methods
-@anchor{anastasis video-identification-vid}@anchor{34}
-@section Video identification (vid)
 
+Version 1.3, 3 November 2008
 
-Requires the user to identify via video-call.  In the video-call, the
-user is told the code (prefixed with @code{A-}) needed to authenticate.
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
+Inc. @indicateurl{https://fsf.org/}
 
-The user is expected to delete all metadata revealing information about per
-from the images before uploading them. Since the respective images must be
-passed on to the video identification service in the event of password
-recovery, it should be ensured that no further information about the user can
-be derived from them.
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
 
-Video identification will typically result in the Anastasis provider
-requesting the user to be redirected to a Web site (or other URL) for the
-video-call.
+@menu
+* 0. PREAMBLE: 0 PREAMBLE. 
+* 1. APPLICABILITY AND DEFINITIONS: 1 APPLICABILITY AND DEFINITIONS. 
+* 2. VERBATIM COPYING: 2 VERBATIM COPYING. 
+* 3. COPYING IN QUANTITY: 3 COPYING IN QUANTITY. 
+* 4. MODIFICATIONS: 4 MODIFICATIONS. 
+* 5. COMBINING DOCUMENTS: 5 COMBINING DOCUMENTS. 
+* 6. COLLECTIONS OF DOCUMENTS: 6 COLLECTIONS OF DOCUMENTS. 
+* 7. AGGREGATION WITH INDEPENDENT WORKS: 7 AGGREGATION WITH INDEPENDENT WORKS. 
+* 8. TRANSLATION: 8 TRANSLATION. 
+* 9. TERMINATION: 9 TERMINATION. 
+* 10. FUTURE REVISIONS OF THIS LICENSE: 10 FUTURE REVISIONS OF THIS LICENSE. 
+* 11. RELICENSING: 11 RELICENSING. 
+* ADDENDUM; How to use this License for your documents: ADDENDUM How to use 
this License for your documents. 
 
-@node Security question qa,Snail mail verification post,Video identification 
vid,Authentication Methods
-@anchor{anastasis security-question-qa}@anchor{35}
-@section Security question (qa)
+@end menu
 
+@node 0 PREAMBLE,1 APPLICABILITY AND DEFINITIONS,,GNU Free Documentation 
License
+@anchor{fdl-1 3 preamble}@anchor{b9}
+@subsection 0. PREAMBLE
+
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document “free” in the sense of freedom: to assure
+everyone the effective freedom to copy and redistribute it, with or
+without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of “copyleft”, which means that derivative works
+of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft license
+designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free program
+should come with manuals providing the same freedoms that the software
+does. But this License is not limited to software manuals; it can be
+used for any textual work, regardless of subject matter or whether it is
+published as a printed book. We recommend this License principally for
+works whose purpose is instruction or reference.
+
+@node 1 APPLICABILITY AND DEFINITIONS,2 VERBATIM COPYING,0 PREAMBLE,GNU Free 
Documentation License
+@anchor{fdl-1 3 applicability-and-definitions}@anchor{ba}
+@subsection 1. APPLICABILITY AND DEFINITIONS
+
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The “Document”, below, refers
+to any such manual or work. Any member of the public is a licensee, and
+is addressed as “you”. You accept the license if you copy, modify or
+distribute the work in a way requiring permission under copyright law.
+
+A “Modified Version” of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A “Secondary Section” is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document’s overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding them.
+
+The “Invariant Sections” are certain Secondary Sections whose titles are
+designated, as being those of Invariant Sections, in the notice that
+says that the Document is released under this License. If a section does
+not fit the above definition of Secondary then it is not allowed to be
+designated as Invariant. The Document may contain zero Invariant
+Sections. If the Document does not identify any Invariant Sections then
+there are none.
+
+The “Cover Texts” are certain short passages of text that are listed, as
+Front-Cover Texts or Back-Cover Texts, in the notice that says that the
+Document is released under this License. A Front-Cover Text may be at
+most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A “Transparent” copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the general
+public, that is suitable for revising the document straightforwardly
+with generic text editors or (for images composed of pixels) generic
+paint programs or (for drawings) some widely available drawing editor,
+and that is suitable for input to text formatters or for automatic
+translation to a variety of formats suitable for input to text
+formatters. A copy made in an otherwise Transparent file format whose
+markup, or absence of markup, has been arranged to thwart or discourage
+subsequent modification by readers is not Transparent. An image format
+is not Transparent if used for any substantial amount of text. A copy
+that is not “Transparent” is called “Opaque”.
+
+Examples of suitable formats for Transparent copies include plain ASCII
+without markup, Texinfo input format, LaTeX input format, SGML or XML
+using a publicly available DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the machine-generated
+HTML, PostScript or PDF produced by some word processors for output
+purposes only.
+
+The “Title Page” means, for a printed book, the title page itself, plus
+such following pages as are needed to hold, legibly, the material this
+License requires to appear in the title page. For works in formats which
+do not have any title page as such, “Title Page” means the text near the
+most prominent appearance of the work’s title, preceding the beginning
+of the body of the text.
+
+The “publisher” means any person or entity that distributes copies of
+the Document to the public.
+
+A section “Entitled XYZ” means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as “Acknowledgements”,
+“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of
+such a section when you modify the Document means that it remains a
+section “Entitled XYZ” according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this License,
+but only as regards disclaiming warranties: any other implication that
+these Warranty Disclaimers may have is void and has no effect on the
+meaning of this License.
+
+@node 2 VERBATIM COPYING,3 COPYING IN QUANTITY,1 APPLICABILITY AND 
DEFINITIONS,GNU Free Documentation License
+@anchor{fdl-1 3 verbatim-copying}@anchor{bb}
+@subsection 2. VERBATIM COPYING
+
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies to
+the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further copying
+of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@node 3 COPYING IN QUANTITY,4 MODIFICATIONS,2 VERBATIM COPYING,GNU Free 
Documentation License
+@anchor{fdl-1 3 copying-in-quantity}@anchor{bc}
+@subsection 3. COPYING IN QUANTITY
+
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document’s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover Texts:
+Front-Cover Texts on the front cover, and Back-Cover Texts on the back
+cover. Both covers must also clearly and legibly identify you as the
+publisher of these copies. The front cover must present the full title
+with all words of the title equally prominent and visible. You may add
+other material on the covers in addition. Copying with changes limited
+to the covers, as long as they preserve the title of the Document and
+satisfy these conditions, can be treated as verbatim copying in other
+respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy a
+computer-network location from which the general network-using public
+has access to download using public-standard network protocols a
+complete Transparent copy of the Document, free of added material. If
+you use the latter option, you must take reasonably prudent steps, when
+you begin distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@node 4 MODIFICATIONS,5 COMBINING DOCUMENTS,3 COPYING IN QUANTITY,GNU Free 
Documentation License
+@anchor{fdl-1 3 modifications}@anchor{bd}
+@subsection 4. MODIFICATIONS
+
+
+You may copy and distribute a Modified Version of the Document under the
+conditions of sections 2 and 3 above, provided that you release the
+Modified Version under precisely this License, with the Modified Version
+filling the role of the Document, thus licensing distribution and
+modification of the Modified Version to whoever possesses a copy of it.
+In addition, you must do these things in the Modified Version:
 
-Asks the user a security question.  The user sends back a @strong{salted}
-hash over the answer.  The @strong{question-salt} is stored encrypted as
-part of the recovery document and never revealed to the providers. This
-ensures that providers cannot derive the answer from the hash value.
-Furthermore, the security question itself is also only in the recovery
-document and never given to the Anastasis provider.  A moderately expensive
-hash function is used to further limit strong attackers that have obtained
-the recovery document from brute-forcing the answer.
 
-If the hash value matches with the one the server is expecting, the server
-answers with the requested encrypted key share.  However, unlike other
-encrypted key shares, the encrypted key share of a security question uses a
-special variation of the Anastasis encryption: Here, a different hash function
-over the security answer is used to provide an additional @strong{key-salt} 
for the
-decryption of the (encrypted) @strong{key share}.  This ensures that the key 
share
-remains irrecoverable without the answer even if the Anastasis provider
-storing the security question is malicious.
+@itemize -
 
-@node Snail mail verification post,,Security question qa,Authentication Methods
-@anchor{anastasis snail-mail-verification-post}@anchor{36}
-@section Snail mail verification (post)
+@item 
+A. Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions (which
+should, if there were any, be listed in the History section of the
+Document). You may use the same title as a previous version if the
+original publisher of that version gives permission.
+
+@item 
+B. List on the Title Page, as authors, one or more persons or
+entities responsible for authorship of the modifications in the
+Modified Version, together with at least five of the principal
+authors of the Document (all of its principal authors, if it has
+fewer than five), unless they release you from this requirement.
+
+@item 
+C. State on the Title page the name of the publisher of the Modified
+Version, as the publisher.
+
+@item 
+
+@enumerate 4
+
+@item 
+Preserve all the copyright notices of the Document.
+@end enumerate
+
+@item 
+E. Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item 
+F. Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item 
+G. Preserve in that license notice the full lists of Invariant
+Sections and required Cover Texts given in the Document’s license
+notice.
+
+@item 
+
+@enumerate 8
+
+@item 
+Include an unaltered copy of this License.
+@end enumerate
+
+@item 
+I. Preserve the section Entitled “History”, Preserve its Title, and
+add to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled “History” in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item 
+J. Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise the
+network locations given in the Document for previous versions it was
+based on. These may be placed in the “History” section. You may omit
+a network location for a work that was published at least four years
+before the Document itself, or if the original publisher of the
+version it refers to gives permission.
+
+@item 
+K. For any section Entitled “Acknowledgements” or “Dedications”,
+Preserve the Title of the section, and preserve in the section all
+the substance and tone of each of the contributor acknowledgements
+and/or dedications given therein.
+
+@item 
+L. Preserve all the Invariant Sections of the Document, unaltered in
+their text and in their titles. Section numbers or the equivalent are
+not considered part of the section titles.
+
+@item 
+M. Delete any section Entitled “Endorsements”. Such a section may not
+be included in the Modified Version.
+
+@item 
+N. Do not retitle any existing section to be Entitled “Endorsements”
+or to conflict in title with any Invariant Section.
+
+@item 
+
+@enumerate 15
+
+@item 
+Preserve any Warranty Disclaimers.
+@end enumerate
+@end itemize
 
+If the Modified Version includes new front-matter sections or appendices
+that qualify as Secondary Sections and contain no material copied from
+the Document, you may at your option designate some or all of these
+sections as invariant. To do this, add their titles to the list of
+Invariant Sections in the Modified Version’s license notice. These
+titles must be distinct from any other section titles.
+
+You may add a section Entitled “Endorsements”, provided it contains
+nothing but endorsements of your Modified Version by various
+parties—for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of Front-Cover
+Text and one of Back-Cover Text may be added by (or through arrangements
+made by) any one entity. If the Document already includes a cover text
+for the same cover, previously added by you or by arrangement made by
+the same entity you are acting on behalf of, you may not add another;
+but you may replace the old one, on explicit permission from the
+previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@node 5 COMBINING DOCUMENTS,6 COLLECTIONS OF DOCUMENTS,4 MODIFICATIONS,GNU 
Free Documentation License
+@anchor{fdl-1 3 combining-documents}@anchor{be}
+@subsection 5. COMBINING DOCUMENTS
+
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its license
+notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by adding
+at the end of it, in parentheses, the name of the original author or
+publisher of that section if known, or else a unique number. Make the
+same adjustment to the section titles in the list of Invariant Sections
+in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled “History” in
+the various original documents, forming one section Entitled “History”;
+likewise combine any sections Entitled “Acknowledgements”, and any
+sections Entitled “Dedications”. You must delete all sections Entitled
+“Endorsements”.
+
+@node 6 COLLECTIONS OF DOCUMENTS,7 AGGREGATION WITH INDEPENDENT WORKS,5 
COMBINING DOCUMENTS,GNU Free Documentation License
+@anchor{fdl-1 3 collections-of-documents}@anchor{bf}
+@subsection 6. COLLECTIONS OF DOCUMENTS
+
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@node 7 AGGREGATION WITH INDEPENDENT WORKS,8 TRANSLATION,6 COLLECTIONS OF 
DOCUMENTS,GNU Free Documentation License
+@anchor{fdl-1 3 aggregation-with-independent-works}@anchor{c0}
+@subsection 7. AGGREGATION WITH INDEPENDENT WORKS
+
+
+A compilation of the Document or its derivatives with other separate and
+independent documents or works, in or on a volume of a storage or
+distribution medium, is called an “aggregate” if the copyright resulting
+from the compilation is not used to limit the legal rights of the
+compilation’s users beyond what the individual works permit. When the
+Document is included in an aggregate, this License does not apply to the
+other works in the aggregate which are not themselves derivative works
+of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies
+of the Document, then if the Document is less than one half of the
+entire aggregate, the Document’s Cover Texts may be placed on covers
+that bracket the Document within the aggregate, or the electronic
+equivalent of covers if the Document is in electronic form. Otherwise
+they must appear on printed covers that bracket the whole aggregate.
+
+@node 8 TRANSLATION,9 TERMINATION,7 AGGREGATION WITH INDEPENDENT WORKS,GNU 
Free Documentation License
+@anchor{fdl-1 3 translation}@anchor{c1}
+@subsection 8. TRANSLATION
+
+
+Translation is considered a kind of modification, so you may distribute
+translations of the Document under the terms of section 4. Replacing
+Invariant Sections with translations requires special permission from
+their copyright holders, but you may include translations of some or all
+Invariant Sections in addition to the original versions of these
+Invariant Sections. You may include a translation of this License, and
+all the license notices in the Document, and any Warranty Disclaimers,
+provided that you also include the original English version of this
+License and the original versions of those notices and disclaimers. In
+case of a disagreement between the translation and the original version
+of this License or a notice or disclaimer, the original version will
+prevail.
+
+If a section in the Document is Entitled “Acknowledgements”,
+“Dedications”, or “History”, the requirement (section 4) to Preserve its
+Title (section 1) will typically require changing the actual title.
+
+@node 9 TERMINATION,10 FUTURE REVISIONS OF THIS LICENSE,8 TRANSLATION,GNU Free 
Documentation License
+@anchor{fdl-1 3 termination}@anchor{c2}
+@subsection 9. TERMINATION
+
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense, or distribute it is void, and will automatically
+terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally terminates
+your license, and (b) permanently, if the copyright holder fails to
+notify you of the violation by some reasonable means prior to 60 days
+after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated
+permanently if the copyright holder notifies you of the violation by
+some reasonable means, this is the first time you have received notice
+of violation of this License (for any work) from that copyright holder,
+and you cure the violation prior to 30 days after your receipt of the
+notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@node 10 FUTURE REVISIONS OF THIS LICENSE,11 RELICENSING,9 TERMINATION,GNU 
Free Documentation License
+@anchor{fdl-1 3 future-revisions-of-this-license}@anchor{c3}
+@subsection 10. FUTURE REVISIONS OF THIS LICENSE
+
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns. See 
@indicateurl{https://www.gnu.org/licenses/}.
+
+Each version of the License is given a distinguishing version number. If
+the Document specifies that a particular numbered version of this
+License “or any later version” applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document specifies
+that a proxy can decide which future versions of this License can be
+used, that proxy’s public statement of acceptance of a version
+permanently authorizes you to choose that version for the Document.
+
+@node 11 RELICENSING,ADDENDUM How to use this License for your documents,10 
FUTURE REVISIONS OF THIS LICENSE,GNU Free Documentation License
+@anchor{fdl-1 3 relicensing}@anchor{c4}
+@subsection 11. RELICENSING
+
+
+“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World
+Wide Web server that publishes copyrightable works and also provides
+prominent facilities for anybody to edit those works. A public wiki that
+anybody can edit is an example of such a server. A “Massive Multiauthor
+Collaboration” (or “MMC”) contained in the site means any set of
+copyrightable works thus published on the MMC site.
+
+“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+“Incorporate” means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is “eligible for relicensing” if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@node ADDENDUM How to use this License for your documents,,11 RELICENSING,GNU 
Free Documentation License
+@anchor{fdl-1 3 addendum-how-to-use-this-license-for-your-documents}@anchor{c5}
+@subsection ADDENDUM: How to use this License for your documents
+
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
 
-Sends physical mail (snail mail) with a code (prefixed with @code{A-}) to the
-user’s mail address, including a UUID which identifies the challenge the code
-is for.  The user must send this code back with their request (see
-@code{$RESPONSE} under @ref{1e,,Managing truth}).  If the transmitted code is 
correct,
-the server responds with the requested encrypted key share.
+@example
+Copyright (C)  YEAR  YOUR NAME.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+@end example
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the “with … Texts.” line with this:
+
+@example
+with the Invariant Sections being LIST THEIR TITLES, with the
+Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+@end example
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+@anchor{rest tsref-type-ErrorDetail}@w{                              }
+@anchor{26}@w{                              }
 
 @c %**end of body
 @bye
diff --git a/doc/sphinx/Makefile b/doc/sphinx/Makefile
new file mode 100644
index 0000000..48030b5
--- /dev/null
+++ b/doc/sphinx/Makefile
@@ -0,0 +1,179 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx 
installed, then set the SPHINXBUILD environment variable to point to the full 
path of the '$(SPHINXBUILD)' executable. Alternatively you can add the 
directory with the executable to your PATH. If you don't have Sphinx installed, 
grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp 
epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or 
PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  latexpdfja to make LaTeX files and run them through 
platex/dvipdfmx"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  texinfo    to make Texinfo files"
+       @echo "  info       to make Texinfo files and run them through makeinfo"
+       @echo "  gettext    to make PO message catalogs"
+       @echo "  changes    to make an overview of all changed/added/deprecated 
items"
+       @echo "  xml        to make Docutils-native XML files"
+       @echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation 
(if enabled)"
+
+clean:
+       rm -rf $(BUILDDIR)/*
+
+# The html-linked builder does not support caching, so we
+# remove all cached state first.
+html:
+# -W = exit 1 on warning; --keep-going = complete build anyway; -w 
/tmp/sphinx-warnings.log = write log to ~/warnings.log
+       $(SPHINXBUILD) -b html-linked $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+       $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+       $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+       @echo
+       @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+       $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+       @echo
+       @echo "Build finished; now you can process the pickle files."
+
+json:
+       $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+       @echo
+       @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+       $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+       @echo
+       @echo "Build finished; now you can run HTML Help Workshop with the" \
+             ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+       $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+       @echo
+       @echo "Build finished; now you can run "qcollectiongenerator" with the" 
\
+             ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+       @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/neuro.qhcp"
+       @echo "To view the help file:"
+       @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/neuro.qhc"
+
+devhelp:
+       $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+       @echo
+       @echo "Build finished."
+       @echo "To view the help file:"
+       @echo "# mkdir -p $$HOME/.local/share/devhelp/neuro"
+       @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/neuro"
+       @echo "# devhelp"
+
+epub:
+       $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+       @echo
+       @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo
+       @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+       @echo "Run \`make' in that directory to run these through (pdf)latex" \
+             "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+latexpdfja:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through platex and dvipdfmx..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+       $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+       @echo
+       @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+       $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+       @echo
+       @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+       $(SPHINXBUILD) -b texinfo . $(BUILDDIR)/texinfo ./index.rst -D 
master_doc=index
+       @echo
+       @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo"
+       @echo "Run \`make' in that directory to run these through makeinfo"
+
+info:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo "Running Texinfo files through makeinfo..."
+       make -C $(BUILDDIR)/texinfo info
+       @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+       $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+       @echo
+       @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+       $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+       @echo
+       @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+       $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+       @echo
+       @echo "Link check complete; look for any errors in the above output " \
+             "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+       $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+       @echo "Testing of doctests in the sources finished, look at the " \
+             "results in $(BUILDDIR)/doctest/output.txt."
+
+xml:
+       $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+       @echo
+       @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+pseudoxml:
+       $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+       @echo
+       @echo "Build finished. The pseudo-XML files are in 
$(BUILDDIR)/pseudoxml."
diff --git a/doc/sphinx/README b/doc/sphinx/README
new file mode 100644
index 0000000..b7f6414
--- /dev/null
+++ b/doc/sphinx/README
@@ -0,0 +1,10 @@
+This repository contains the documentation for all main GNU Taler components.
+
+Before building the documentation, make sure that you have the required
+dependencies installed using pip3:
+
+$ pip3 install --user --upgrade recommonmark sphinx
+
+Note by Buck: when setting up on VM, I also needed:
+
+# apt install texlive-latex-extra graphviz
diff --git a/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc 
b/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc
new file mode 100644
index 0000000..077f3c9
Binary files /dev/null and 
b/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__init__.py 
b/doc/sphinx/_exts/httpdomain/__init__.py
new file mode 100644
index 0000000..b5a7dc2
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/__init__.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+"""
+    sphinxcontrib
+    ~~~~~~~~~~~~~
+
+    This package is a namespace package that contains all extensions
+    distributed in the ``sphinx-contrib`` distribution.
+
+    :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+__import__('pkg_resources').declare_namespace(__name__)
+
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000..6f0c344
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..2b7f52b
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..0323e4b
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc
new file mode 100644
index 0000000..031c4ed
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc
new file mode 100644
index 0000000..062d289
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc
new file mode 100644
index 0000000..32e2273
Binary files /dev/null and 
b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc differ
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/__init__.py 
b/doc/sphinx/_exts/httpdomain/autohttp/__init__.py
new file mode 100644
index 0000000..95372d4
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/__init__.py
@@ -0,0 +1,11 @@
+"""
+    sphinxcontrib.autohttp
+    ~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/bottle.py 
b/doc/sphinx/_exts/httpdomain/autohttp/bottle.py
new file mode 100644
index 0000000..d8c1859
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/bottle.py
@@ -0,0 +1,114 @@
+"""
+    sphinxcontrib.autohttp.bottle
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Bottle)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2012 by Jameel Al-Aziz
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_bottle_rule(app, rule):
+    buf = six.StringIO()
+    if hasattr(app.router, "parse_rule"):
+        iterator = app.router.parse_rule(rule)  # bottle 0.11
+    else:
+        iterator = app.router._itertokens(rule)  # bottle 0.12
+    for name, filter, conf in iterator:
+        if filter:
+            buf.write('(')
+            buf.write(name)
+            if (filter != app.router.default_filter and filter != 'default')\
+                    or conf:
+                buf.write(':')
+                buf.write(filter)
+            if conf:
+                buf.write(':')
+                buf.write(conf)
+            buf.write(')')
+        else:
+            buf.write(name)
+    return buf.getvalue()
+
+
+def get_routes(app):
+    for route in app.routes:
+        path = translate_bottle_rule(app, route.rule)
+        yield route.method, path, route
+
+
+class AutobottleDirective(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', endpoints))
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    def make_rst(self):
+        app = import_object(self.arguments[0])
+        for method, path, target in get_routes(app):
+            endpoint = target.name or target.callback.__name__
+            if self.endpoints and endpoint not in self.endpoints:
+                continue
+            if endpoint in self.undoc_endpoints:
+                continue
+            view = target.callback
+            docstring = view.__doc__ or ''
+            if not isinstance(docstring, six.text_type):
+                analyzer = ModuleAnalyzer.for_module(view.__module__)
+                docstring = force_decode(docstring, analyzer.encoding)
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            for line in http_directive(method, path, docstring):
+                yield line
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autobottle>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autobottle', AutobottleDirective)
+
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/common.py 
b/doc/sphinx/_exts/httpdomain/autohttp/common.py
new file mode 100644
index 0000000..199e297
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/common.py
@@ -0,0 +1,36 @@
+"""
+    sphinxcontrib.autohttp.common
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The common functions for web framework reflection.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+import six
+from six.moves import builtins
+from six.moves import reduce
+
+def import_object(import_name):
+    module_name, expr = import_name.split(':', 1)
+    mod = __import__(module_name)
+    mod = reduce(getattr, module_name.split('.')[1:], mod)
+    globals = builtins
+    if not isinstance(globals, dict):
+        globals = globals.__dict__
+    return eval(expr, globals, mod.__dict__)
+
+
+def http_directive(method, path, content):
+    method = method.lower().strip()
+    if isinstance(content, six.string_types):
+        content = content.splitlines()
+    yield ''
+    paths = [path] if isinstance(path, six.string_types) else path
+    for path in paths:
+        yield '.. http:{method}:: {path}'.format(**locals())
+    yield ''
+    for line in content:
+        yield '   ' + line
+    yield ''
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flask.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flask.py
new file mode 100644
index 0000000..4bd5232
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flask.py
@@ -0,0 +1,48 @@
+"""
+    sphinxcontrib.autohttp.flask
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+from __future__ import absolute_import
+
+import re
+import itertools
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+from .flask_base import AutoflaskBase
+
+class AutoflaskDirective(AutoflaskBase):
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autoflask>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autoflask', AutoflaskDirective)
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py
new file mode 100644
index 0000000..50454fe
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flask_base.py
@@ -0,0 +1,215 @@
+"""
+    sphinxcontrib.autohttp.flask
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+import itertools
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_werkzeug_rule(rule):
+    from werkzeug.routing import parse_rule
+    buf = six.StringIO()
+    for conv, arg, var in parse_rule(rule):
+        if conv:
+            buf.write('(')
+            if conv != 'default':
+                buf.write(conv)
+                buf.write(':')
+            buf.write(var)
+            buf.write(')')
+        else:
+            buf.write(var)
+    return buf.getvalue()
+
+
+def get_routes(app, endpoint=None, order=None):
+    endpoints = []
+    for rule in app.url_map.iter_rules(endpoint):
+        url_with_endpoint = (
+            six.text_type(next(app.url_map.iter_rules(rule.endpoint))),
+            rule.endpoint
+        )
+        if url_with_endpoint not in endpoints:
+            endpoints.append(url_with_endpoint)
+    if order == 'path':
+        endpoints.sort()
+    endpoints = [e for _, e in endpoints]
+    for endpoint in endpoints:
+        methodrules = {}
+        for rule in app.url_map.iter_rules(endpoint):
+            methods = rule.methods.difference(['OPTIONS', 'HEAD'])
+            path = translate_werkzeug_rule(rule.rule)
+            for method in methods:
+                if method in methodrules:
+                    methodrules[method].append(path)
+                else:
+                    methodrules[method] = [path]
+        for method, paths in methodrules.items():
+            yield method, paths, endpoint
+
+
+def quickref_directive(method, path, content):
+    rcomp = re.compile("^\s*.. :quickref:\s*(?P<quick>.*)$")
+    method = method.lower().strip()
+    if isinstance(content, six.string_types):
+         content = content.splitlines()
+    description=""
+    name=""
+    ref = 
path.replace("<","(").replace(">",")").replace("/","-").replace(":","-")
+    for line in content:
+         qref = rcomp.match(line)
+         if qref:
+            quickref = qref.group("quick")
+            parts = quickref.split(";",1)
+            if len(parts)>1:
+                name = parts[0]
+                description= parts[1]
+            else:
+                description= quickref
+            break
+
+    row ={}
+    row['name'] = name
+    row['operation'] = '      - `%s %s <#%s-%s>`_' % (method.upper(), path, 
method.lower(), ref)
+    row['description'] = description
+
+    return row
+
+class AutoflaskBase(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'blueprints': directives.unchanged,
+                   'modules': directives.unchanged,
+                   'order': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'undoc-blueprints': directives.unchanged,
+                   'undoc-modules': directives.unchanged,
+                   'undoc-static': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return re.split(r'\s*,\s*', endpoints)
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    @property
+    def blueprints(self):
+        blueprints = self.options.get('blueprints', None)
+        if not blueprints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', blueprints))
+
+    @property
+    def undoc_blueprints(self):
+        undoc_blueprints = self.options.get('undoc-blueprints', None)
+        if not undoc_blueprints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_blueprints))
+
+    @property
+    def modules(self):
+        modules = self.options.get('modules', None)
+        if not modules:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', modules))
+
+    @property
+    def undoc_modules(self):
+        undoc_modules = self.options.get('undoc-modules', None)
+        if not undoc_modules:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_modules))
+
+    @property
+    def order(self):
+        order = self.options.get('order', None)
+        if order not in (None, 'path'):
+            raise ValueError('Invalid value for :order:')
+        return order
+
+    def make_rst(self, qref=False):
+        app = import_object(self.arguments[0])
+        if self.endpoints:
+            routes = itertools.chain(*[get_routes(app, endpoint, self.order)
+                    for endpoint in self.endpoints])
+        else:
+            routes = get_routes(app, order=self.order)
+        for method, paths, endpoint in routes:
+            try:
+                blueprint, _, endpoint_internal = endpoint.rpartition('.')
+                if self.blueprints and blueprint not in self.blueprints:
+                    continue
+                if blueprint in self.undoc_blueprints:
+                    continue
+            except ValueError:
+                pass  # endpoint is not within a blueprint
+
+            if endpoint in self.undoc_endpoints:
+                continue
+            try:
+                static_url_path = app.static_url_path # Flask 0.7 or higher
+            except AttributeError:
+                static_url_path = app.static_path # Flask 0.6 or under
+            if ('undoc-static' in self.options and endpoint == 'static' and
+                static_url_path + '/(path:filename)' in paths):
+                continue
+            view = app.view_functions[endpoint]
+
+            if self.modules and view.__module__ not in self.modules:
+                continue
+
+            if self.undoc_modules and view.__module__ in self.modules:
+                continue
+
+            docstring = view.__doc__ or ''
+            if hasattr(view, 'view_class'):
+                meth_func = getattr(view.view_class, method.lower(), None)
+                if meth_func and meth_func.__doc__:
+                    docstring = meth_func.__doc__
+            if not isinstance(docstring, six.text_type):
+                analyzer = ModuleAnalyzer.for_module(view.__module__)
+                docstring = force_decode(docstring, analyzer.encoding)
+
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            if qref == True:
+                for path in paths:
+                    row = quickref_directive(method, path, docstring)
+                    yield row
+            else:
+                for line in http_directive(method, paths, docstring):
+                    yield line
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py 
b/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py
new file mode 100644
index 0000000..c28bb15
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/flaskqref.py
@@ -0,0 +1,80 @@
+"""
+    sphinxcontrib.autohttp.flaskqref
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API quick reference 
+    builder (from Flask)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+from docutils import nodes
+from docutils.statemachine import ViewList
+
+from sphinxcontrib import httpdomain
+from sphinx.util.nodes import nested_parse_with_titles
+
+from .flask import AutoflaskBase
+
+
+class QuickReferenceFlaskDirective(AutoflaskBase):
+
+
+    header = [ '',
+              '.. list-table::',
+              '    :widths: 20 45 35',
+              '    :header-rows: 1',
+              '',
+              '    * - Resource',
+              '      - Operation',
+              '      - Description'
+            ]
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in QuickReferenceFlaskDirective.header:
+            result.append(line, '<qrefflask>') 
+        table={}
+        table_sorted_names=[]
+        
+        for table_row in self.make_rst(qref=True):
+            name = table_row['name']
+            if table.get(name) is None:
+                table[name]=[]
+            table[name].append(table_row) 
+            if name not in table_sorted_names:
+                table_sorted_names.append(name)
+
+        table_sorted_names.sort()
+
+        for name in table_sorted_names:
+            # Keep table display clean by not repeating duplicate
+            # resource names and descriptions
+            display_name = name
+            previous_description=None
+            for row in table[name]:
+                result.append('    * - %s' % display_name, '<qrefflask>')
+                display_name =""
+                result.append(row['operation'], '<qrefflask>')
+                description = row['description']
+                if previous_description is not None and previous_description 
== description:
+                    description =""
+                else:
+                    previous_description = description
+
+                result.append('      - %s' % description,  '<qrefflask>')
+
+        result.append('', '<qrefflask>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+        
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('qrefflask', QuickReferenceFlaskDirective)
+
diff --git a/doc/sphinx/_exts/httpdomain/autohttp/tornado.py 
b/doc/sphinx/_exts/httpdomain/autohttp/tornado.py
new file mode 100644
index 0000000..9a514fe
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/autohttp/tornado.py
@@ -0,0 +1,128 @@
+"""
+    sphinxcontrib.autohttp.tornado
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The sphinx.ext.autodoc-style HTTP API reference builder (from Tornado)
+    for sphinxcontrib.httpdomain.
+
+    :copyright: Copyright 2013 by Rodrigo Machado
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import inspect
+import re
+import six
+
+from docutils import nodes
+from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
+
+from sphinx.util import force_decode
+from sphinx.util.compat import Directive
+from sphinx.util.nodes import nested_parse_with_titles
+from sphinx.util.docstrings import prepare_docstring
+from sphinx.pycode import ModuleAnalyzer
+
+from sphinxcontrib import httpdomain
+from sphinxcontrib.autohttp.common import http_directive, import_object
+
+
+def translate_tornado_rule(app, rule):
+    buf = six.StringIO()
+    for name, filter, conf in app.router.parse_rule(rule):
+        if filter:
+            buf.write('(')
+            buf.write(name)
+            if filter != app.router.default_filter or conf:
+                buf.write(':')
+                buf.write(filter)
+            if conf:
+                buf.write(':')
+                buf.write(conf)
+            buf.write(')')
+        else:
+            buf.write(name)
+    return buf.getvalue()
+
+
+def get_routes(app):
+    for spec in app.handlers[0][1]:
+        handler = spec.handler_class
+        doc_methods = list(handler.SUPPORTED_METHODS)
+        if 'HEAD' in doc_methods:
+            doc_methods.remove('HEAD')
+        if 'OPTIONS' in doc_methods:
+            doc_methods.remove('OPTIONS')
+
+        for method in doc_methods:
+            maybe_method = getattr(handler, method.lower(), None)
+            if (inspect.isfunction(maybe_method) or
+                    inspect.ismethod(maybe_method)):
+                yield method.lower(), spec.regex.pattern, handler
+
+
+def normalize_path(path):
+    if path.endswith('$'):
+        path = path[:-1]
+    return path
+
+
+class AutoTornadoDirective(Directive):
+
+    has_content = True
+    required_arguments = 1
+    option_spec = {'endpoints': directives.unchanged,
+                   'undoc-endpoints': directives.unchanged,
+                   'include-empty-docstring': directives.unchanged}
+
+    @property
+    def endpoints(self):
+        endpoints = self.options.get('endpoints', None)
+        if not endpoints:
+            return None
+        return frozenset(re.split(r'\s*,\s*', endpoints))
+
+    @property
+    def undoc_endpoints(self):
+        undoc_endpoints = self.options.get('undoc-endpoints', None)
+        if not undoc_endpoints:
+            return frozenset()
+        return frozenset(re.split(r'\s*,\s*', undoc_endpoints))
+
+    def make_rst(self):
+        app = import_object(self.arguments[0])
+        for method, path, handler in get_routes(app):
+            class_name = handler.__name__
+            method_name = getattr(handler, method).__name__
+            endpoint = '.'.join((class_name, method_name))
+
+            if self.endpoints and endpoint not in self.endpoints:
+                continue
+            if endpoint in self.undoc_endpoints:
+                continue
+
+            docstring = getattr(handler, method).__doc__ or ''
+            #if not isinstance(docstring, unicode):
+            #    analyzer = ModuleAnalyzer.for_module(view.__module__)
+            #    docstring = force_decode(docstring, analyzer.encoding)
+            if not docstring and 'include-empty-docstring' not in self.options:
+                continue
+            docstring = prepare_docstring(docstring)
+            for line in http_directive(method, normalize_path(path), 
docstring):
+                yield line
+
+    def run(self):
+        node = nodes.section()
+        node.document = self.state.document
+        result = ViewList()
+        for line in self.make_rst():
+            result.append(line, '<autotornado>')
+        nested_parse_with_titles(self.state, result, node)
+        return node.children
+
+
+def setup(app):
+    if 'http' not in app.domains:
+        httpdomain.setup(app)
+    app.add_directive('autotornado', AutoTornadoDirective)
diff --git a/doc/sphinx/_exts/httpdomain/httpdomain.py 
b/doc/sphinx/_exts/httpdomain/httpdomain.py
new file mode 100644
index 0000000..59665a0
--- /dev/null
+++ b/doc/sphinx/_exts/httpdomain/httpdomain.py
@@ -0,0 +1,772 @@
+"""
+    sphinxcontrib.httpdomain
+    ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    The HTTP domain for documenting RESTful HTTP APIs.
+
+    :copyright: Copyright 2011 by Hong Minhee
+    :license: BSD, see LICENSE for details.
+
+"""
+
+import re
+
+from docutils import nodes
+
+from pygments.lexer import RegexLexer, bygroups
+from pygments.lexers import get_lexer_by_name
+from pygments.token import Literal, Text, Operator, Keyword, Name, Number
+from pygments.util import ClassNotFound
+
+from sphinx import addnodes
+from sphinx.roles import XRefRole
+from sphinx.domains import Domain, ObjType, Index
+from sphinx.directives import ObjectDescription, directives
+from sphinx.util.nodes import make_refnode
+from sphinx.util.docfields import GroupedField, TypedField
+
+# The env.get_doctree() lookup results in a pickle.load() call which is
+# expensive enough to dominate the runtime entirely when the number of 
endpoints
+# and references is large enough. The doctrees are generated during the read-
+# phase and we can cache their lookup during the write-phase significantly
+# improving performance.
+# Currently sphinxcontrib-httpdomain does not declare to support parallel read
+# support (parallel_read_safe is the default False) so we can simply use a
+# module global to hold the cache.
+_doctree_cache = {}
+
+
+class DocRef(object):
+    """Represents a reference to an abstract specification."""
+
+    def __init__(self, base_url, anchor, section):
+        self.base_url = base_url
+        self.anchor = anchor
+        self.section = section
+
+    def __repr__(self):
+        """Returns the URL onto related specification section for the related
+        object."""
+        return '{0}#{1}{2}'.format(self.base_url, self.anchor, self.section)
+
+
+class RFC2616Ref(DocRef):
+    """Represents a reference to RFC2616.
+    In 2014, RFC2616 was replaced by multiple RFCs (7230-7237)."""
+
+    def __init__(self, section):
+        url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec{0:d}.html'
+        url = url.format(int(section))
+        super(RFC2616Ref, self).__init__(url, 'sec', section)
+
+
+class IETFRef(DocRef):
+    """Represents a reference to the specific IETF RFC."""
+
+    def __init__(self, rfc, section):
+        url = 'https://tools.ietf.org/html/rfc{0:d}'.format(rfc)
+        super(IETFRef, self).__init__(url, 'section-', section)
+
+
+class EventSourceRef(DocRef):
+
+    def __init__(self, section):
+        url = 'http://www.w3.org/TR/eventsource/'
+        super(EventSourceRef, self).__init__(url, section, '')
+
+
+class CORSRef(DocRef):
+    """Represents a reference to W3 Cross-Origin Resource Sharing 
recommendation."""
+
+    def __init__(self, name, type):
+        url = 'http://www.w3.org/TR/cors/'
+        super(CORSRef, self).__init__(url, name, '-' + type)
+
+
+#: Mapping from lowercase HTTP method name to :class:`DocRef` object which
+#: maintains the URL which points to the section of the RFC which defines that
+#: HTTP method.
+METHOD_REFS = {
+    'patch': IETFRef(5789, 2),
+    'options': IETFRef(7231, '4.3.7'),
+    'get': IETFRef(7231, '4.3.1'),
+    'head': IETFRef(7231, '4.3.2'),
+    'post': IETFRef(7231, '4.3.3'),
+    'put': IETFRef(7231, '4.3.4'),
+    'delete': IETFRef(7231, '4.3.5'),
+    'trace': IETFRef(7231, '4.3.8'),
+    'connect': IETFRef(7231, '4.3.6'),
+    'copy': IETFRef(2518, 8.8),
+    'any': ''
+}
+
+
+#: Mapping from HTTP header name to :class:`DocRef` object which
+#: maintains the URL which points to the related section of the RFC.
+HEADER_REFS = {
+    'Accept': IETFRef(7231, '5.3.2'),
+    'Accept-Charset': IETFRef(7231, '5.3.3'),
+    'Accept-Encoding': IETFRef(7231, '5.3.4'),
+    'Accept-Language': IETFRef(7231, '5.3.5'),
+    'Accept-Ranges': IETFRef(7233, 2.3),
+    'Age': IETFRef(7234, 5.1),
+    'Allow': IETFRef(7231, '7.4.1'),
+    'Authorization': IETFRef(7235, 4.2),
+    'Cache-Control': IETFRef(7234, 5.2),
+    'Connection': IETFRef(7230, 6.1),
+    'Content-Encoding': IETFRef(7231, '3.1.2.2'),
+    'Content-Language': IETFRef(7231, '3.1.3.2'),
+    'Content-Length': IETFRef(7230, '3.3.2'),
+    'Content-Location': IETFRef(7231, '3.1.4.2'),
+    'Content-MD5': RFC2616Ref(14.15), # removed
+    'Content-Range': IETFRef(7233, 4.2),
+    'Content-Type': IETFRef(7231, '3.1.1.5'),
+    'Cookie': IETFRef(2109, '4.3.4'), # also RFC6265 section 5.4
+    'Date': IETFRef(7231, '7.1.1.2'),
+    'Destination': IETFRef(2518, 9.3),
+    'ETag': IETFRef(7232, 2.3),
+    'Expect': IETFRef(7231, '5.1.1'),
+    'Expires': IETFRef(7234, 5.3),
+    'From': IETFRef(7231, '5.5.2'),
+    'Host': IETFRef(7230, 5.4),
+    'If-Match': IETFRef(7232, 3.1),
+    'If-Modified-Since': IETFRef(7232, 3.3),
+    'If-None-Match': IETFRef(7232, 3.2),
+    'If-Range': IETFRef(7233, 3.2),
+    'If-Unmodified-Since': IETFRef(7232, 3.4),
+    'Last-Event-ID': EventSourceRef('last-event-id'),
+    'Last-Modified': IETFRef(7232, 2.2),
+    'Link': IETFRef(5988, '5'),
+    'Location': IETFRef(7231, '7.1.2'),
+    'Max-Forwards': IETFRef(7231, '5.1.2'),
+    'Pragma': IETFRef(7234, 5.4),
+    'Proxy-Authenticate': IETFRef(7235, 4.3),
+    'Proxy-Authorization': IETFRef(7235, 4.4),
+    'Range': IETFRef(7233, 3.1),
+    'Referer': IETFRef(7231, '5.5.2'),
+    'Retry-After': IETFRef(7231, '7.1.3'),
+    'Server': IETFRef(7231, '7.4.2'),
+    'Set-Cookie': IETFRef(2109, '4.2.2'),
+    'TE': IETFRef(7230, 4.3),
+    'Trailer': IETFRef(7230, 4.4),
+    'Transfer-Encoding': IETFRef(7230, '3.3.1'),
+    'Upgrade': IETFRef(7230, 6.7),
+    'User-Agent': IETFRef(7231, '5.5.3'),
+    'Vary': IETFRef(7231, '7.1.4'),
+    'Via': IETFRef(7230, '5.7.1'),
+    'Warning': IETFRef(7234, 5.5),
+    'WWW-Authenticate': IETFRef(7235, 4.1),
+    'Access-Control-Allow-Origin': CORSRef('access-control-allow-origin',
+                                           'response-header'),
+    'Access-Control-Allow-Credentials': 
CORSRef('access-control-allow-credentials',
+                                                'response-header'),
+    'Access-Control-Expose-Headers': CORSRef('access-control-expose-headers',
+                                             'response-header'),
+    'Access-Control-Max-Age': CORSRef('access-control-max-age',
+                                      'response-header'),
+    'Access-Control-Allow-Methods': CORSRef('access-control-allow-methods',
+                                            'response-header'),
+    'Access-Control-Allow-Headers': CORSRef('access-control-allow-headers',
+                                            'response-header'),
+    'Origin': CORSRef('origin', 'request-header'),
+    'Access-Control-Request-Method': CORSRef('access-control-request-method',
+                                             'response-header'),
+    'Access-Control-Request-Headers': CORSRef('access-control-request-headers',
+                                              'response-header'),
+}
+
+
+HTTP_STATUS_CODES = {
+    100: 'Continue',
+    101: 'Switching Protocols',
+    102: 'Processing',
+    200: 'OK',
+    201: 'Created',
+    202: 'Accepted',
+    203: 'Non Authoritative Information',
+    204: 'No Content',
+    205: 'Reset Content',
+    206: 'Partial Content',
+    207: 'Multi Status',
+    226: 'IM Used',              # see RFC 3229
+    300: 'Multiple Choices',
+    301: 'Moved Permanently',
+    302: 'Found',
+    303: 'See Other',
+    304: 'Not Modified',
+    305: 'Use Proxy',
+    307: 'Temporary Redirect',
+    308: 'Permanent Redirect',
+    400: 'Bad Request',
+    401: 'Unauthorized',
+    402: 'Payment Required',     # unused
+    403: 'Forbidden',
+    404: 'Not Found',
+    405: 'Method Not Allowed',
+    406: 'Not Acceptable',
+    407: 'Proxy Authentication Required',
+    408: 'Request Timeout',
+    409: 'Conflict',
+    410: 'Gone',
+    411: 'Length Required',
+    412: 'Precondition Failed',
+    413: 'Request Entity Too Large',
+    414: 'Request URI Too Long',
+    415: 'Unsupported Media Type',
+    416: 'Requested Range Not Satisfiable',
+    417: 'Expectation Failed',
+    418: "I'm a teapot",        # see RFC 2324
+    422: 'Unprocessable Entity',
+    423: 'Locked',
+    424: 'Failed Dependency',
+    426: 'Upgrade Required',
+    429: 'Too Many Requests',
+    449: 'Retry With',           # proprietary MS extension
+    451: 'Unavailable For Legal Reasons',
+    500: 'Internal Server Error',
+    501: 'Not Implemented',
+    502: 'Bad Gateway',
+    503: 'Service Unavailable',
+    504: 'Gateway Timeout',
+    505: 'HTTP Version Not Supported',
+    507: 'Insufficient Storage',
+    510: 'Not Extended'
+}
+
+WEBDAV_STATUS_CODES = [207, 422, 423, 424, 507]
+
+http_sig_param_re = re.compile(r'\((?:(?P<type>[^:)]+):)?(?P<name>[\w_]+)\)',
+                               re.VERBOSE)
+
+
+def sort_by_method(entries):
+    def cmp(item):
+        order = ['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'PATCH',
+                 'OPTIONS', 'TRACE', 'CONNECT', 'COPY', 'ANY']
+        method = item[0].split(' ', 1)[0]
+        if method in order:
+            return order.index(method)
+        return 100
+    return sorted(entries, key=cmp)
+
+
+def http_resource_anchor(method, path):
+    path = re.sub(r'[{}]', '', re.sub(r'[<>:/]', '-', path))
+    return method.lower() + '-' + path
+
+
+class HTTPResource(ObjectDescription):
+
+    doc_field_types = [
+        TypedField('parameter', label='Parameters',
+                   names=('param', 'parameter', 'arg', 'argument'),
+                   typerolename='obj', typenames=('paramtype', 'type')),
+        TypedField('jsonparameter', label='JSON Parameters',
+                   names=('jsonparameter', 'jsonparam', 'json'),
+                   typerolename='obj', typenames=('jsonparamtype', 
'jsontype')),
+        TypedField('requestjsonobject', label='Request JSON Object',
+                   names=('reqjsonobj', 'reqjson', '<jsonobj', '<json'),
+                   typerolename='obj', typenames=('reqjsonobj', '<jsonobj')),
+        TypedField('requestjsonarray', label='Request JSON Array of Objects',
+                   names=('reqjsonarr', '<jsonarr'),
+                   typerolename='obj',
+                   typenames=('reqjsonarrtype', '<jsonarrtype')),
+        TypedField('responsejsonobject', label='Response JSON Object',
+                   names=('resjsonobj', 'resjson', '>jsonobj', '>json'),
+                   typerolename='obj', typenames=('resjsonobj', '>jsonobj')),
+        TypedField('responsejsonarray', label='Response JSON Array of Objects',
+                   names=('resjsonarr', '>jsonarr'),
+                   typerolename='obj',
+                   typenames=('resjsonarrtype', '>jsonarrtype')),
+        TypedField('queryparameter', label='Query Parameters',
+                   names=('queryparameter', 'queryparam', 'qparam', 'query'),
+                   typerolename='obj',
+                   typenames=('queryparamtype', 'querytype', 'qtype')),
+        GroupedField('formparameter', label='Form Parameters',
+                     names=('formparameter', 'formparam', 'fparam', 'form')),
+        GroupedField('requestheader', label='Request Headers',
+                     rolename='header',
+                     names=('<header', 'reqheader', 'requestheader')),
+        GroupedField('responseheader', label='Response Headers',
+                     rolename='header',
+                     names=('>header', 'resheader', 'responseheader')),
+        GroupedField('statuscode', label='Status Codes',
+                     rolename='statuscode',
+                     names=('statuscode', 'status', 'code'))
+    ]
+
+    option_spec = {
+        'deprecated': directives.flag,
+        'noindex': directives.flag,
+        'synopsis': lambda x: x,
+    }
+
+    method = NotImplemented
+
+    def handle_signature(self, sig, signode):
+        method = self.method.upper() + ' '
+        signode += addnodes.desc_name(method, method)
+        offset = 0
+        path = None
+        for match in http_sig_param_re.finditer(sig):
+            path = sig[offset:match.start()]
+            signode += addnodes.desc_name(path, path)
+            params = addnodes.desc_parameterlist()
+            typ = match.group('type')
+            if typ:
+                typ += ': '
+                params += addnodes.desc_annotation(typ, typ)
+            name = match.group('name')
+            params += addnodes.desc_parameter(name, name)
+            signode += params
+            offset = match.end()
+        if offset < len(sig):
+            path = sig[offset:len(sig)]
+            signode += addnodes.desc_name(path, path)
+        assert path is not None, 'no matches for sig: %s' % sig
+        fullname = self.method.upper() + ' ' + path
+        signode['method'] = self.method
+        signode['path'] = sig
+        signode['fullname'] = fullname
+        return (fullname, self.method, sig)
+
+    def needs_arglist(self):
+        return False
+
+    def add_target_and_index(self, name_cls, sig, signode):
+        signode['ids'].append(http_resource_anchor(*name_cls[1:]))
+        if 'noindex' not in self.options:
+            self.env.domaindata['http'][self.method][sig] = (
+                self.env.docname,
+                self.options.get('synopsis', ''),
+                'deprecated' in self.options)
+
+    def get_index_text(self, modname, name):
+        return ''
+
+
+class HTTPOptions(HTTPResource):
+
+    method = 'options'
+
+
+class HTTPHead(HTTPResource):
+
+    method = 'head'
+
+
+class HTTPPatch(HTTPResource):
+
+    method = 'patch'
+
+
+class HTTPPost(HTTPResource):
+
+    method = 'post'
+
+
+class HTTPGet(HTTPResource):
+
+    method = 'get'
+
+
+class HTTPPut(HTTPResource):
+
+    method = 'put'
+
+
+class HTTPDelete(HTTPResource):
+
+    method = 'delete'
+
+
+class HTTPTrace(HTTPResource):
+
+    method = 'trace'
+
+
+class HTTPConnect(HTTPResource):
+
+    method = 'connect'
+
+
+class HTTPCopy(HTTPResource):
+
+    method = 'copy'
+
+
+class HTTPAny(HTTPResource):
+
+    method = 'any'
+
+
+class HTTPXRefRole(XRefRole):
+
+    def __init__(self, method, **kwargs):
+        XRefRole.__init__(self, **kwargs)
+        self.method = method
+
+    def process_link(self, env, refnode, has_explicit_title, title, target):
+        if not has_explicit_title:
+            title = self.method.upper() + ' ' + title
+        return title, target
+
+
+class HTTPXRefMethodRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        method = node[0][0].lower()
+        rawsource = node[0].rawsource
+        config = env.domains['http'].env.config
+        if method not in METHOD_REFS:
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(method, method)], []
+            reporter = document.reporter
+            msg = reporter.error('%s is not valid HTTP method' % method,
+                                 line=node.line)
+            prb = nodes.problematic(method, method)
+            return [prb], [msg]
+        url = str(METHOD_REFS[method])
+        if not url:
+            return [nodes.emphasis(method, method)], []
+        node = nodes.reference(rawsource, method.upper(), refuri=url)
+        return [node], []
+
+
+class HTTPXRefStatusRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        def get_code_status(text):
+            if text.isdigit():
+                code = int(text)
+                return code, HTTP_STATUS_CODES.get(code)
+            else:
+                try:
+                    code, status = re.split(r'\s', text.strip(), 1)
+                    code = int(code)
+                except ValueError:
+                    return None, None
+                known_status = HTTP_STATUS_CODES.get(code)
+                if known_status is None:
+                    return code, None
+                elif known_status.lower() != status.lower():
+                    return code, None
+                else:
+                    return code, status
+
+        def report_unknown_code():
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(text, text)], []
+            reporter = document.reporter
+            msg = reporter.error('%d is unknown HTTP status code' % code,
+                                 line=node.line)
+            prb = nodes.problematic(text, text)
+            return [prb], [msg]
+
+        def report_invalid_code():
+            if not config['http_strict_mode']:
+                return [nodes.emphasis(text, text)], []
+            reporter = document.reporter
+            msg = reporter.error(
+                'HTTP status code must be an integer (e.g. `200`) or '
+                'start with an integer (e.g. `200 OK`); %r is invalid' %
+                text,
+                line=node.line
+            )
+            prb = nodes.problematic(text, text)
+            return [prb], [msg]
+
+        text = node[0][0]
+        rawsource = node[0].rawsource
+        config = env.domains['http'].env.config
+
+        code, status = get_code_status(text)
+        if code is None:
+            return report_invalid_code()
+        elif status is None:
+            return report_unknown_code()
+        elif code == 226:
+            url = 'http://www.ietf.org/rfc/rfc3229.txt'
+        elif code == 418:
+            url = 'http://www.ietf.org/rfc/rfc2324.txt'
+        elif code == 429:
+            url = 'http://tools.ietf.org/html/rfc6585#section-4'
+        elif code == 449:
+            url = 
'http://msdn.microsoft.com/en-us/library/dd891478(v=prot.10).aspx'
+        elif code == 451:
+            url = 'http://www.ietf.org/rfc/rfc7725.txt'
+        elif code in WEBDAV_STATUS_CODES:
+            url = 'http://tools.ietf.org/html/rfc4918#section-11.%d' % 
(WEBDAV_STATUS_CODES.index(code) + 1)
+        elif code in HTTP_STATUS_CODES:
+            url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html' \
+                  '#sec10.' + ('%d.%d' % (code // 100, 1 + code % 100))
+        else:
+            url = ''
+        node = nodes.reference(rawsource, '%d %s' % (code, status), refuri=url)
+        return [node], []
+
+
+class HTTPXRefHeaderRole(XRefRole):
+
+    def result_nodes(self, document, env, node, is_ref):
+        header = node[0][0]
+        rawsource = node[0].rawsource
+        if header not in HEADER_REFS:
+            _header = '-'.join(map(lambda i: i.title(), header.split('-')))
+            if _header not in HEADER_REFS:
+                return [nodes.emphasis(header, header)], []
+        url = str(HEADER_REFS[header])
+        node = nodes.reference(rawsource, header, refuri=url)
+        return [node], []
+
+
+class HTTPIndex(Index):
+
+    name = 'routingtable'
+    localname = 'HTTP Routing Table'
+    shortname = 'routing table'
+
+    def __init__(self, *args, **kwargs):
+        super(HTTPIndex, self).__init__(*args, **kwargs)
+
+        self.ignore = [
+            [l for l in x.split('/') if l]
+            for x in self.domain.env.config['http_index_ignore_prefixes']]
+        self.ignore.sort(reverse=True)
+
+        # During HTML generation these values pick from class,
+        # not from instance so we have a little hack the system
+        cls = self.__class__
+        cls.shortname = self.domain.env.config['http_index_shortname']
+        cls.localname = self.domain.env.config['http_index_localname']
+
+    def grouping_prefix(self, path):
+        letters = [x for x in path.split('/') if x]
+        for prefix in self.ignore:
+            if letters[:len(prefix)] == prefix:
+                return '/' + '/'.join(letters[:len(prefix) + 1])
+        return '/%s' % (letters[0] if letters else '',)
+
+    def generate(self, docnames=None):
+        content = {}
+        items = ((method, path, info)
+                 for method, routes in self.domain.routes.items()
+                 for path, info in routes.items())
+        items = sorted(items, key=lambda item: item[1])
+        for method, path, info in items:
+            entries = content.setdefault(self.grouping_prefix(path), [])
+            entries.append([
+                method.upper() + ' ' + path, 0, info[0],
+                http_resource_anchor(method, path),
+                '', 'Deprecated' if info[2] else '', info[1]
+            ])
+        items = sorted(
+            (path, sort_by_method(entries))
+            for path, entries in content.items()
+        )
+        return (items, True)
+
+
+class HTTPDomain(Domain):
+    """HTTP domain."""
+
+    name = 'http'
+    label = 'HTTP'
+
+    object_types = {
+        'options': ObjType('options', 'options', 'obj'),
+        'head': ObjType('head', 'head', 'obj'),
+        'post': ObjType('post', 'post', 'obj'),
+        'get': ObjType('get', 'get', 'obj'),
+        'put': ObjType('put', 'put', 'obj'),
+        'patch': ObjType('patch', 'patch', 'obj'),
+        'delete': ObjType('delete', 'delete', 'obj'),
+        'trace': ObjType('trace', 'trace', 'obj'),
+        'connect': ObjType('connect', 'connect', 'obj'),
+        'copy': ObjType('copy', 'copy', 'obj'),
+        'any': ObjType('any', 'any', 'obj')
+    }
+
+    directives = {
+        'options': HTTPOptions,
+        'head': HTTPHead,
+        'post': HTTPPost,
+        'get': HTTPGet,
+        'put': HTTPPut,
+        'patch': HTTPPatch,
+        'delete': HTTPDelete,
+        'trace': HTTPTrace,
+        'connect': HTTPConnect,
+        'copy': HTTPCopy,
+        'any': HTTPAny
+    }
+
+    roles = {
+        'options': HTTPXRefRole('options'),
+        'head': HTTPXRefRole('head'),
+        'post': HTTPXRefRole('post'),
+        'get': HTTPXRefRole('get'),
+        'put': HTTPXRefRole('put'),
+        'patch': HTTPXRefRole('patch'),
+        'delete': HTTPXRefRole('delete'),
+        'trace': HTTPXRefRole('trace'),
+        'connect': HTTPXRefRole('connect'),
+        'copy': HTTPXRefRole('copy'),
+        'any': HTTPXRefRole('any'),
+        'statuscode': HTTPXRefStatusRole(),
+        'method': HTTPXRefMethodRole(),
+        'header': HTTPXRefHeaderRole()
+    }
+
+    initial_data = {
+        'options': {},  # path: (docname, synopsis)
+        'head': {},
+        'post': {},
+        'get': {},
+        'put': {},
+        'patch': {},
+        'delete': {},
+        'trace': {},
+        'connect': {},
+        'copy': {},
+        'any': {}
+    }
+
+    indices = []
+
+    @property
+    def routes(self):
+        return dict((key, self.data[key]) for key in self.object_types)
+
+    def clear_doc(self, docname):
+        for typ, routes in self.routes.items():
+            for path, info in list(routes.items()):
+                if info[0] == docname:
+                    del routes[path]
+
+    def resolve_xref(self, env, fromdocname, builder, typ, target,
+                     node, contnode):
+        try:
+            info = self.data[str(typ)][target]
+        except KeyError:
+            text = contnode.rawsource
+            role = self.roles.get(typ)
+            if role is None:
+                return None
+
+            if fromdocname not in _doctree_cache:
+                _doctree_cache[fromdocname] = env.get_doctree(fromdocname)
+            doctree = _doctree_cache[fromdocname]
+
+            resnode = role.result_nodes(doctree, env, node, None)[0][0]
+            if isinstance(resnode, addnodes.pending_xref):
+                text = node[0][0]
+                reporter = doctree.reporter
+                reporter.warning('Cannot resolve reference to %r' % text,
+                                 line=node.line)
+                return None
+            return resnode
+        else:
+            anchor = http_resource_anchor(typ, target)
+            title = typ.upper() + ' ' + target
+            return make_refnode(builder, fromdocname, info[0], anchor,
+                                contnode, title)
+
+    def resolve_any_xref(self, env, fromdocname, builder, target, node, 
contnode):
+        """Resolve the pending_xref *node* with the given *target*.
+
+        The reference comes from an "any" or similar role, which means that 
Sphinx
+        don't know the type.
+
+        For now sphinxcontrib-httpdomain doesn't resolve any xref nodes.
+
+        :return:
+           list of tuples ``('domain:role', newnode)``, where ``'domain:role'``
+           is the name of a role that could have created the same reference,
+        """
+        return []
+
+    def get_objects(self):
+        for method, routes in self.routes.items():
+            for path, info in routes.items():
+                anchor = http_resource_anchor(method, path)
+                yield (path, path, method, info[0], anchor, 1)
+
+
+class HTTPLexer(RegexLexer):
+    """Lexer for HTTP sessions."""
+
+    name = 'HTTP'
+    aliases = ['http']
+
+    flags = re.DOTALL
+
+    def header_callback(self, match):
+        if match.group(1).lower() == 'content-type':
+            content_type = match.group(5).strip()
+            if ';' in content_type:
+                content_type = content_type[:content_type.find(';')].strip()
+            self.content_type = content_type
+        yield match.start(1), Name.Attribute, match.group(1)
+        yield match.start(2), Text, match.group(2)
+        yield match.start(3), Operator, match.group(3)
+        yield match.start(4), Text, match.group(4)
+        yield match.start(5), Literal, match.group(5)
+        yield match.start(6), Text, match.group(6)
+
+    def continuous_header_callback(self, match):
+        yield match.start(1), Text, match.group(1)
+        yield match.start(2), Literal, match.group(2)
+        yield match.start(3), Text, match.group(3)
+
+    def content_callback(self, match):
+        content_type = getattr(self, 'content_type', None)
+        content = match.group()
+        offset = match.start()
+        if content_type:
+            from pygments.lexers import get_lexer_for_mimetype
+            try:
+                lexer = get_lexer_for_mimetype(content_type)
+            except ClassNotFound:
+                pass
+            else:
+                for idx, token, value in lexer.get_tokens_unprocessed(content):
+                    yield offset + idx, token, value
+                return
+        yield offset, Text, content
+
+    tokens = {
+        'root': [
+            (r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE|COPY)( +)([^ ]+)( 
+)'
+             r'(HTTPS?)(/)(1\.[01])(\r?\n|$)',
+             bygroups(Name.Function, Text, Name.Namespace, Text,
+                      Keyword.Reserved, Operator, Number, Text),
+             'headers'),
+            (r'(HTTPS?)(/)(1\.[01])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
+             bygroups(Keyword.Reserved, Operator, Number, Text, Number,
+                      Text, Name.Exception, Text),
+             'headers'),
+        ],
+        'headers': [
+            (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
+            (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
+            (r'\r?\n', Text, 'content')
+        ],
+        'content': [
+            (r'.+', content_callback)
+        ]
+    }
+
+
+def setup(app):
+    app.add_domain(HTTPDomain)
+
+    try:
+        get_lexer_by_name('http')
+    except ClassNotFound:
+        app.add_lexer('http', HTTPLexer())
+    app.add_config_value('http_index_ignore_prefixes', [], None)
+    app.add_config_value('http_index_shortname', 'routing table', True)
+    app.add_config_value('http_index_localname', 'HTTP Routing Table', True)
+    app.add_config_value('http_strict_mode', True, None)
+    app.add_config_value('http_headers_ignore_prefixes', ['X-'], None)
diff --git a/doc/sphinx/_exts/taler_sphinx_theme/__init__.py 
b/doc/sphinx/_exts/taler_sphinx_theme/__init__.py
new file mode 100644
index 0000000..2d3c61c
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/__init__.py
@@ -0,0 +1,166 @@
+"""Sphinx Guzzle theme."""
+
+import os
+from os import path
+import xml.etree.ElementTree as ET
+
+from docutils import nodes
+from sphinx.locale import admonitionlabels
+from sphinx.writers.html import HTMLTranslator as SphinxHTMLTranslator
+
+from pygments.style import Style
+from pygments.token import Keyword, Name, Comment, String, Error, \
+     Number, Operator, Generic, Whitespace, Punctuation, Other, Literal
+
+
+def setup(app):
+    """Setup conntects events to the sitemap builder"""
+    app.connect('html-page-context', add_html_link)
+    app.connect('build-finished', create_sitemap)
+    app.set_translator('html', MyHTMLTranslator)
+    app.set_translator('html-linked', MyHTMLTranslator)
+    app.sitemap_links = []
+    app.add_html_theme('taler_sphinx_theme', 
path.abspath(path.dirname(__file__) + "/guzzle_sphinx_theme"))
+
+
+def add_html_link(app, pagename, templatename, context, doctree):
+    """As each page is built, collect page names for the sitemap"""
+    base_url = app.config['html_theme_options'].get('base_url', '')
+    if base_url:
+        app.sitemap_links.append(base_url + pagename + ".html")
+
+
+def create_sitemap(app, exception):
+    """Generates the sitemap.xml from the collected HTML page links"""
+    if (not app.config['html_theme_options'].get('base_url', '') or
+           exception is not None or
+           not app.sitemap_links):
+        return
+
+    filename = app.outdir + "/sitemap.xml"
+    print("Generating sitemap.xml in %s" % filename)
+
+    root = ET.Element("urlset")
+    root.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9";)
+
+    for link in app.sitemap_links:
+        url = ET.SubElement(root, "url")
+        ET.SubElement(url, "loc").text = link
+
+    ET.ElementTree(root).write(filename)
+
+
+def html_theme_path():
+    return [os.path.dirname(os.path.abspath(__file__))]
+
+
+class MyHTMLTranslator(SphinxHTMLTranslator):
+    """
+    Handle translating to bootstrap structure.
+    """
+    def visit_table(self, node, name=''):
+        """
+        Override docutils default table formatter to not include a border
+        and to use Bootstrap CSS
+        See: 
http://sourceforge.net/p/docutils/code/HEAD/tree/trunk/docutils/docutils/writers/html4css1/__init__.py#l1550
+        """
+        self.context.append(self.compact_p)
+        self.compact_p = True
+        classes = 'table table-bordered ' + self.settings.table_style
+        classes = classes.strip()
+        self.body.append(
+            self.starttag(node, 'table', CLASS=classes))
+
+    def depart_table(self, node):
+        """
+        This needs overridin' too
+        """
+        self.compact_p = self.context.pop()
+        self.body.append('</table>\n')
+
+    def visit_field(self, node):
+        pass
+
+    def depart_field(self, node):
+        pass
+
+    def visit_field_name(self, node):
+        atts = {}
+        if self.in_docinfo:
+            atts['class'] = 'docinfo-name'
+        else:
+            atts['class'] = 'field-name'
+        self.context.append('')
+        self.body.append(self.starttag(node, 'dt', '', **atts))
+
+    def depart_field_name(self, node):
+        self.body.append('</dt>')
+        self.body.append(self.context.pop())
+
+    def visit_field_body(self, node):
+        self.body.append(self.starttag(node, 'dd', '', CLASS='field-body'))
+        self.set_class_on_child(node, 'first', 0)
+        field = node.parent
+        if (self.compact_field_list or
+            isinstance(field.parent, nodes.docinfo) or
+            field.parent.index(field) == len(field.parent) - 1):
+            # If we are in a compact list, the docinfo, or if this is
+            # the last field of the field list, do not add vertical
+            # space after last element.
+            self.set_class_on_child(node, 'last', -1)
+
+    def depart_field_body(self, node):
+        self.body.append('</dd>\n')
+
+    def visit_field_list(self, node):
+        self.context.append((self.compact_field_list, self.compact_p))
+        self.compact_p = None
+        if 'compact' in node['classes']:
+            self.compact_field_list = True
+        elif (self.settings.compact_field_lists
+              and 'open' not in node['classes']):
+            self.compact_field_list = True
+        if self.compact_field_list:
+            for field in node:
+                field_body = field[-1]
+                assert isinstance(field_body, nodes.field_body)
+                children = [n for n in field_body
+                            if not isinstance(n, nodes.Invisible)]
+                if not (len(children) == 0 or
+                        len(children) == 1 and
+                        isinstance(children[0],
+                                   (nodes.paragraph, nodes.line_block))):
+                    self.compact_field_list = False
+                    break
+        self.body.append(self.starttag(node, 'dl', frame='void',
+                                       rules='none',
+                                       CLASS='docutils field-list'))
+
+    def depart_field_list(self, node):
+        self.body.append('</dl>\n')
+        self.compact_field_list, self.compact_p = self.context.pop()
+
+    def visit_container(self, node):
+        self.body.append(self.starttag(node, 'div', CLASS='docutils'))
+
+    def add_secnumber(self, node):
+        # type: (nodes.Element) -> None
+        if node.get('secnumber'):
+            numbers = list(map(str, node['secnumber']))
+            if len(numbers) <= 3:
+                self.body.append('.'.join(numbers) + self.secnumber_suffix)
+        elif isinstance(node.parent, nodes.section):
+            if self.builder.name == 'singlehtml':
+                docname = self.docnames[-1]
+                anchorname = "%s/#%s" % (docname, node.parent['ids'][0])
+                if anchorname not in self.builder.secnumbers:
+                    anchorname = "%s/" % docname  # try first heading which 
has no anchor
+            else:
+                anchorname = '#' + node.parent['ids'][0]
+                if anchorname not in self.builder.secnumbers:
+                    anchorname = ''  # try first heading which has no anchor
+            if self.builder.secnumbers.get(anchorname):
+                numbers = list(self.builder.secnumbers[anchorname])
+                if len(numbers) <= 3:
+                    self.body.append('.'.join(map(str, numbers)) +
+                                     self.secnumber_suffix)
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000..6f2a605
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-37.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..3ae3f40
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-38.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..7f4021b
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html
new file mode 100644
index 0000000..42a95fb
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/comments.html
@@ -0,0 +1,16 @@
+{% if theme_disqus_comments_shortname %}
+<div id="comments">
+  <div id="disqus_thread"></div>
+  <script type="text/javascript">
+    var disqus_shortname = '{{ theme_disqus_comments_shortname }}';
+    var disqus_identifier = '{{ pagename }}';
+    (function() {
+      var dsq = document.createElement('script'); dsq.type = 
'text/javascript'; dsq.async = true;
+      dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
+      (document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0]).appendChild(dsq);
+    })();
+  </script>
+  <noscript>Please enable JavaScript to view the <a 
href="http://disqus.com/?ref_noscript";>comments powered by 
Disqus.</a></noscript>
+  <a href="http://disqus.com"; class="dsq-brlink">comments powered by <span 
class="logo-disqus">Disqus</span></a>
+</div>
+{% endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html
new file mode 100644
index 0000000..b2c04e2
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/globaltoc.html
@@ -0,0 +1,14 @@
+
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <h2>{{ _('Table Of Contents') }}</h2>
+  </div>
+  <div class="sidebar-toc">
+    {% set toctree = toctree(maxdepth=theme_globaltoc_depth|toint, 
collapse=theme_globaltoc_collapse|tobool, 
includehidden=theme_globaltoc_includehidden|tobool) %}
+    {% if toctree %}
+      {{ toctree }}
+    {% else %}
+      {{ toc }}
+    {% endif %}
+  </div>
+</div>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html
new file mode 100644
index 0000000..18c9e5b
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/layout.html
@@ -0,0 +1,172 @@
+{%- extends "basic/layout.html" %}
+
+{# Do this so that bootstrap is included before the main css file #}
+{%- block htmltitle %}
+  <!-- Licensed under the Apache 2.0 License -->
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/fonts/open-sans/stylesheet.css', 1) }}" />
+  <!-- Licensed under the SIL Open Font License -->
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/fonts/source-serif-pro/source-serif-pro.css', 1) }}" />
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/css/bootstrap.min.css', 1) }}" />
+  <link rel="stylesheet" type="text/css" href="{{ 
pathto('_static/css/bootstrap-theme.min.css', 1) }}" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  {{ super() }}
+{%- endblock %}
+
+{%- block extrahead %}
+  {% if theme_touch_icon %}
+  <link rel="apple-touch-icon" href="{{ pathto('_static/' ~ theme_touch_icon, 
1) }}" />
+  {% endif %}
+  {{ super() }}
+{% endblock %}
+
+{# Displays the URL for the homepage if it's set or the master_doc if it is 
not #}
+{% macro homepage() -%}
+  {%- if theme_homepage %}
+    {%- if hasdoc(theme_homepage) %}
+      {{ pathto(theme_homepage) }}
+    {%- else %}
+      {{ theme_homepage }}
+    {%- endif %}
+  {%- else %}
+    {{ pathto(master_doc) }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the URL for the tospage if it's set or falls back to homepage 
macro #}
+{% macro tospage() -%}
+  {%- if theme_tospage %}
+    {%- if hasdoc(theme_tospage) %}
+      {{ pathto(theme_tospage) }}
+    {%- else %}
+      {{ theme_tospage }}
+    {%- endif %}
+  {%- else %}
+    {{ homepage() }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the URL for the projectpage if it's set or falls back to homepage 
macro #}
+{% macro projectlink() -%}
+  {%- if theme_projectlink %}
+    {%- if hasdoc(theme_projectlink) %}
+      {{ pathto(theme_projectlink) }}
+    {%- else %}
+      {{ theme_projectlink }}
+    {%- endif %}
+  {%- else %}
+    {{ homepage() }}
+  {%- endif %}
+{%- endmacro %}
+
+{# Displays the next and previous links both before and after content #}
+{% macro render_relations() -%}
+  {% if prev or next %}
+  <div class="footer-relations">
+    {% if prev %}
+      <div class="pull-left">
+        <a class="btn btn-default" href="{{ prev.link|e }}" title="{{ 
_('previous chapter')}} (use the left arrow)">{{ prev.title }}</a>
+      </div>
+    {% endif %}
+    {%- if next and next.title != '&lt;no title&gt;' %}
+      <div class="pull-right">
+        <a class="btn btn-default" href="{{ next.link|e }}" title="{{ _('next 
chapter')}} (use the right arrow)">{{ next.title }}</a>
+      </div>
+    {%- endif %}
+    </div>
+    <div class="clearer"></div>
+  {% endif %}
+{%- endmacro %}
+
+{%- macro guzzle_sidebar() %}
+  <div id="left-column">
+    <div class="sphinxsidebar">
+      {%- if sidebars != None %}
+        {#- new style sidebar: explicitly include/exclude templates #}
+        {%- for sidebartemplate in sidebars %}
+        {%- include sidebartemplate %}
+        {%- endfor %}
+      {% else %}
+        {% include "logo-text.html" %}
+        {% include "globaltoc.html" %}
+        {% include "searchbox.html" %}
+      {%- endif %}
+    </div>
+  </div>
+{%- endmacro %}
+
+{%- block content %}
+
+  {%- if pagename == 'index' and theme_index_template %}
+    {% include theme_index_template %}
+  {%- else %}
+    <div class="container-wrapper">
+
+      <div id="mobile-toggle">
+        <a href="#"><span class="glyphicon glyphicon-align-justify" 
aria-hidden="true"></span></a>
+      </div>
+
+      {%- block sidebar1 %}{{ guzzle_sidebar() }}{% endblock %}
+
+      {%- block document_wrapper %}
+        {%- block document %}
+        <div id="right-column">
+          {% block breadcrumbs %}
+          <div role="navigation" aria-label="breadcrumbs navigation">
+            <ol class="breadcrumb">
+              <li><a href="{{ pathto(master_doc) }}">Docs</a></li>
+              {% for doc in parents %}
+                <li><a href="{{ doc.link|e }}">{{ doc.title }}</a></li>
+              {% endfor %}
+              <li>{{ title }}</li>
+            </ol>
+          </div>
+          {% endblock %}
+          <div class="document clearer body" role="main">
+            {% block body %} {% endblock %}
+          </div>
+          {%- block bottom_rel_links %}
+            {{ render_relations() }}
+          {%- endblock %}
+        </div>
+        <div class="clearfix"></div>
+        {%- endblock %}
+      {%- endblock %}
+
+      {%- block comments -%}
+        {% if theme_disqus_comments_shortname %}
+        <div class="container comment-container">
+          {% include "comments.html" %}
+        </div>
+        {% endif %}
+      {%- endblock %}
+    </div>
+  {%- endif %}
+  {%- endblock %}
+
+{%- block footer %}
+<script type="text/javascript">
+  $("#mobile-toggle a").click(function () {
+    $("#left-column").toggle();
+  });
+</script>
+<script type="text/javascript" src="{{ pathto('_static/js/bootstrap.js', 
1)}}"></script>
+{%- block footer_wrapper %}
+  <div class="footer">
+    &copy; Copyright {{ copyright }}. Created using <a 
href="http://sphinx.pocoo.org/";>Sphinx</a>.
+  </div>
+{%- endblock %}
+{%- block ga %}
+  {%- if theme_google_analytics_account %}
+    <script type="text/javascript">
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', '{{ theme_google_analytics_account }}']);
+      _gaq.push(['_trackPageview']);
+      (function() {
+        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+      })();
+    </script>
+  {%- endif %}
+{%- endblock %}
+{%- endblock %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html
new file mode 100644
index 0000000..49f8e19
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/localtoc.html
@@ -0,0 +1,10 @@
+{%- if display_toc %}
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <h2>{{ _('Contents') }}</h2>
+    <div class="sidebar-localtoc">
+      {{ toc }}
+    </div>
+  </div>
+</div>
+{%- endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html
new file mode 100644
index 0000000..e52500e
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/logo-text.html
@@ -0,0 +1 @@
+<a href="{{ homepage() }}" class="text-logo">{{ theme_project_nav_name or 
shorttitle }}</a>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html
new file mode 100644
index 0000000..5d194d8
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/search.html
@@ -0,0 +1,48 @@
+{%- extends "basic/search.html" %}
+
+{% block body %}
+  <h1 id="search-documentation">{{ _('Search') }}</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    {% trans %}Please activate JavaScript to enable the search
+    functionality.{% endtrans %}
+  </p>
+  </div>
+  <p>
+    {% trans %}From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.{% endtrans %}
+  </p>
+
+  <div class="search-page-form">
+    <form class="form-inline" action="{{ pathto('search') }}" method="GET" 
role="form">
+      <div class="input-group">
+        <input name="q" type="text" class="form-control" />
+        <span class="input-group-btn">
+          <button class="btn btn-default" type="button">{{ _('search') 
}}</button>
+        </span>
+      </div>
+      <span id="search-progress" style="padding-left: 10px"></span>
+    </form>
+  </div>
+
+  {% if search_performed %}
+    <h2>{{ _('Search Results') }}</h2>
+    {% if not search_results %}
+      <p>{{ _('Your search did not match any documents. Please make sure that 
all words are spelled correctly and that you\'ve selected enough categories.') 
}}</p>
+    {% endif %}
+  {% endif %}
+  <div id="search-results">
+  {% if search_results %}
+    <ul>
+    {% for href, caption, context in search_results %}
+      <li><a href="{{ pathto(item.href) }}">{{ caption }}</a>
+        <div class="context">{{ context|e }}</div>
+      </li>
+    {% endfor %}
+    </ul>
+  {% endif %}
+  </div>
+{% endblock %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html
new file mode 100644
index 0000000..7f574c3
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/searchbox.html
@@ -0,0 +1,15 @@
+{%- if pagename != "search" %}
+<div class="sidebar-block">
+  <div class="sidebar-wrapper">
+    <div id="main-search">
+      <form class="form-inline" action="{{ pathto('search') }}" method="GET" 
role="form">
+        <div class="input-group">
+          <input name="q" type="text" class="form-control" 
placeholder="Search...">
+        </div>
+        <input type="hidden" name="check_keywords" value="yes" />
+        <input type="hidden" name="area" value="default" />
+      </form>
+    </div>
+  </div>
+</div>
+{%- endif %}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
new file mode 100755
index 0000000..f05c90c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap-theme.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0
 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 
rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 
rgba(255,255,255,0.15),0 1px 1px 
rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-dan
 [...]
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
new file mode 100755
index 0000000..e6dfb8b
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.1.0 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*! normalize.css v3.0.0 | MIT License | git.io/normalize 
*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px
 dott [...]
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
new file mode 100755
index 0000000..423bd5d
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
new file mode 100755
index 0000000..4469488
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode="&#xd;" />
+<glyph unicode=" " />
+<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 
-183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 
-141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
+<glyph unicode="+" d="M0 
400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 
100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 
-25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 
-107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 
-91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 
-128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" 
/>
+<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
+<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 
86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 
59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 
-122.5z" />
+<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 
300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
+<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 
614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 
-33 13t-33 -13z" />
+<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#xe001;" d="M0 1200h1200l-500 
-550v-550h300v-100h-800v100h300v550z" />
+<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 
90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 
-75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 
-193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 
-112z" />
+<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 
-142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 
300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 
-97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 
20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 
-100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 
-174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
+<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 
-449l-384 275l-382 -275l146 447zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 
-449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 
140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
+<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 
125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 
-74.5v-100l400 -257v-143h-1200z" />
+<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 
100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 
500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 
900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 
600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 
300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 
700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
+<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 
-14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 
35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 
-21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 
14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 
-14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 
14.5h400q21 0 35.5 -14.5 [...]
+<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 
-14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 
35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 
-21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 
14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 
-14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 
14.5h200q21 0 35.5 -14.5t1 [...]
+<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 
-14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 
35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 
-14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 
14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 
-14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 
14.5h700q21 0 35.5 -14.5t1 [...]
+<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 
207z" />
+<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 
282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
+<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 
-142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 
300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 
-97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 
600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
+<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 
-141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 
299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 
-97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 
601h400v200h-400v-200z" />
+<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 
-155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 
155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 
-123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 
14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 
14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
+<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 
1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
+<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 
-5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 
-5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 
39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 
134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 
-74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 
-134l-3 -5q-25 -47 -38 -93l-2 -6 [...]
+<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 
29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 
-17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 
-41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 
100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 
1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" 
/>
+<glyph unicode="&#xe021;" d="M1 601l656 644l644 
-644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
+<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 
-11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
+<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
+<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 
-1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
+<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 
-300h490v-400h-1100zM813 200h175v100h-175v-100z" />
+<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 
47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 
-127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 
-291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 
600h150v300h200v-300h150l-250 -300z" />
+<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 
-300h-150v-300h-200v300h-150z" />
+<glyph unicode="&#xe028;" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 
-11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 
200h200l-97 500h-606z" />
+<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
+<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 
-123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 
-302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 
-146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 
-184t-45.5 -224.5z" />
+<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 
45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 
-125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 
302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" 
/>
+<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 
100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 
400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 
800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 
400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" 
/>
+<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 
59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 
-70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 
800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 
-35.5v-150z" />
+<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 
84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 
-115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
+<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 
127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 
-18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 
49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 
14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 
20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 
6t-6 14z" />
+<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 
459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 
-71l-141 141l-141 -141z" />
+<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 
857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 
257z" />
+<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 
858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 
257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 
142 405q0 230 -144 408l-6 8z" />
+<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 
600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 
800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 
900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 
h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 
1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 
800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 
200v100h100v-100h [...]
+<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 
0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 
200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 
200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" 
/>
+<glyph unicode="&#xe041;" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 
-700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 
71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
+<glyph unicode="&#xe042;" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 
-500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 
30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
+<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 
-100v1000h-750l-100 -100h750v-1000h-900z" />
+<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 
15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 
200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 
-10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 
7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 
7t-3.5 17z" />
+<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 
29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 
61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 
-20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 
-72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 
31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
+<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 
234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 
-33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 
-20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
+<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 
39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 
-101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 
-91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 
153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 
61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
+<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 
-10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 
-37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
+<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 
-167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 
30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 
50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
+<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 
-125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 
15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 
-1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
+<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 
15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 
-14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 
14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 
14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 
-15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-3 [...]
+<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 
15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 
-14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 
14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 
14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 
-15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35. [...]
+<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 
35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 
-20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 
35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 
35.5 -14.5t14.5 -35.5v-100q [...]
+<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 
35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 
-20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 
35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 
35.5 -14.5t14.5 -35.5v-100q0 - [...]
+<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 
-14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 
350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 
-14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 
35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 
-15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 
35.5 -14.5t14.5 -35.5v-100q0 -20 -14. [...]
+<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 
-125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 
0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 
-35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 
35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 
-35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 
-14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t3 [...]
+<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 
35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 
-20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 
0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 
15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 
950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 
14.5h-100q-21 0 -35.5 -14.5t-14. [...]
+<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 
-53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" 
/>
+<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 
-13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 
263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 
95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
+<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 
0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 
-189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 
262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 
182t-182.5 75t-182 -75.5t-75 -181.5z" />
+<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 
47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 
-127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 
125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
+<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 
177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 
-125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 
-211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 
6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 
-185t-12.5 -156z" />
+<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 
397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 
-29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 
-117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 
113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
+<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 
-80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 
-70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 
-282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 
64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 
-8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
+<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 
127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 
-29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 
-117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 
137l-430 -431l-147 147z" />
+<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 
-300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 
300h200v200h-200v-198z" />
+<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 
35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 
-14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 
-21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 
488v-488z" />
+<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 
35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 
-35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 
35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" 
/>
+<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 
15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 
-35.5v-800z" />
+<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
+<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 
35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
+<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 
14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 
-14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
+<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 
35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 
14.5t-14.5 35.5zM100 500h1100l-550 564z" />
+<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 
240z" />
+<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 
-22l-1 -1v-1l-592 -591z" />
+<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
+<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM300 500h600v200h-600v-200z" />
+<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 
212l-141 -141l-141 142l-212 -213l141 -141z" />
+<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 
217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
+<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 
4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 
-12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 
45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 
-56t-67 -183zM500 300h200v100h-2 [...]
+<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 
-80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 
218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 
800h200v100h-200v-100z" />
+<glyph unicode="&#xe087;" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 
40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 
-102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 
200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 
206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 
-77.5t-79 -125.5h209v-200h-210z" />
+<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 
-135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
+<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 
-142l-346 -345z" />
+<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 
245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
+<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" 
/>
+<glyph unicode="&#xe093;" d="M204 600l450 600l444 
-600h-298v-600h-300v600h-296z" />
+<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
+<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 
59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 
-135.5z" />
+<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 
-129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
+<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 
-295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
+<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 
45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 
-123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 
-20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 
14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
+<glyph unicode="&#xe102;" d="M0 
800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 
-41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 
144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 
-15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 
-191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 
-72t7 -28.5h-269z" />
+<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 
113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 
58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 
-1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 
76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 
19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 
-32q-369 -197 -458 -401q-48 -111 -28 [...]
+<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 
-108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 
157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 
-29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 
34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 
-129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 
-34 -23.5t-72.5 -66.5t-88.5 -105.5t-60  [...]
+<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 
90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 
-85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 
-90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 
90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 
-75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 
66q-1 1 -28.5 37.5t-42 55t [...]
+<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 
90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 
143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 
393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 
-258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 
161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 
-140 175l39 146q67 -54 131.5 -1 [...]
+<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 
35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 
200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 
300v100h-200v-100z" />
+<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 
44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 
-12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 
78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 
-5.5t-12 26.5z" />
+<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 
15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 
14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 
-35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 
500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 
300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 
100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 
500v100h100v-100h-100zM700 100v100h100v-100h-100z [...]
+<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 
-300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 
180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
+<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 
70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 
-300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
+<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 
-117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 
47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 
-65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 
104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
+<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 
579z" />
+<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 
353z" />
+<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 
-200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 
283h-200v600h-796z" />
+<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 
18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 
-961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 
15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 
0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 
21t-27.5 43z" />
+<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 
70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
+<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 
400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 
-70.5h500v-200h-1000z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 
-300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 
-297v197h-600v-197z" />
+<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 
70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 
29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 
-45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" 
/>
+<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 
5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 
10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 
-0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 
35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 
15t-14.5 35z" />
+<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 
327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 
-37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 
-20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 
41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 
30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
+<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 
179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 
-78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
+<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 
-75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 
84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 
-20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 
213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
+<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 
75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 
-84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 
-40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 
-212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
+<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 
35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 
-11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 
-339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 
-89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 
14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 
10 27l147 183l-86 83l-339 -236v-503z" />
+<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 
-11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 
-26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 
41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 
-40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 
-20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 
-0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
+<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 
-15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 
139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 
-13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 
3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 
-16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
+<glyph unicode="&#xe130;" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 
10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 
40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 
-15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 
-22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 
-146zM305 1104v200h600v-200h-600z" />
+<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 
-217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 
294l-402 298v-197h-298v-201z" />
+<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 
-294v194h302v201h-300v197z" />
+<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 
600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 
-400l300 400h-200v300h-200v-300h-200z" />
+<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 
127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 
-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 
-34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 
-42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 
-34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 
47 48t34 49t21 62q-14 9 -37.5 [...]
+<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 
201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 
-70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 
29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 
-29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 
29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 
q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 
-29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 
29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800  [...]
+<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 
-500v-300l-200 -200v500z" />
+<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 
-29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 
29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 
-70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 
1000h200v100h-200v-100z" />
+<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 
-129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 
329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 
129h400v-400l-129 129l-200 -200z" />
+<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 
-172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 
-38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 
0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 
56.5t52 29.5l122 126l1 1q-9 14 -9 2 [...]
+<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 
0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 
96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 
-67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 
-52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 
41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 
-175.5q-7 -101 -98 -192l-252 -24 [...]
+<glyph unicode="&#xe143;" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 
-129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 
-89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 
99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 
-70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 
97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 
80 -124 80q-59 0 -108.5 -49.5t-49 [...]
+<glyph unicode="&#xe144;" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 
0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 
-212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 
-159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 
-247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 
141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 
-15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 
29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 
-30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
+<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 
36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 
-15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
+<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 
-64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 
159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 
-84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 
-31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 
17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 
-22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 [...]
+<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 
55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 
89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 
-24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 
-24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 
7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 
-1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -2 [...]
+<glyph unicode="&#xe150;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" 
/>
+<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 
0v200h100v-100h200v-100h-300zM700 
400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 
700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
+<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 
0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 
1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 
1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
+<glyph unicode="&#xe154;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 
800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
+<glyph unicode="&#xe155;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 
400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" 
/>
+<glyph unicode="&#xe156;" d="M2 300l298 -300l298 
300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 
400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" 
/>
+<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 
0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 
-282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500z" />
+<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 
282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 
-281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM400 300l333 250l-333 250v-500z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 
0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 
-282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM300 700l250 -333l250 333h-500z" />
+<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 
0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 
-282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM300 400h500l-250 333z" />
+<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 
-350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 
29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 
-282.5t-282.5 -117.5h-400z" />
+<glyph unicode="&#xe162;" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 
-21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 
219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 
-257t-209.5 -238.5q-17 -19 -7 -40z" />
+<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 
100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 
29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 
-282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
+<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 
281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 
-29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 
122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 
149h500v-500l-149 149l-342 -353z" />
+<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 
-137t-57 -137t-137 -57t-137 57t-57 137z" />
+<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 
150h100v50h-100v-50z" />
+<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 
149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 
-17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 
-149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
+<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 
-393v416h-392zM494 210l672 938l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 
-14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 
1000h100v200h-100v-200z" />
+<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 
-127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 
352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
+<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 
-298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 
1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 
-128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
+<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 
14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 
1000v200h100v-200h-100z" />
+<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 
15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 
-35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 
1000v200h100v-200h-100z" />
+<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 
14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 
14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
+<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 
800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 
-298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 
300h100v200h-100v-200z" />
+<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 
100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 
-35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 
-55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 
35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 
-50.5t-18.5 -65.5v-359z" />
+<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 
44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 
7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 
-44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 
-15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
+<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 
29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 
-70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 
300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 
-200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
+<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 
-177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 
162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 
-267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 
-36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
+<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 
1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 
-10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 
-14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 
33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 
-21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 
45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t- [...]
+<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 
150v250l100 
100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 
-100v-250z" />
+<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 
29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 
29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 
29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
+<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 
300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 
300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
+<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 
300h300v100h-200v300h200v100h-300v-500z" />
+<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 
107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 
-42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
+<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 
300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 
300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 
400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 
v-400h100v500h-200v-100z" />
+<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 
-88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 
200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 
300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 
700v100h200v-500h-100v400h-100z" />
+<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 
100h300v-100h-300v-200h300v-100h-300z" />
+<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 
-217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 
-171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 
121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 
-100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 
400v100h100v-100h-100z" />
+<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 
-57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 
-90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 
-37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 
-300z" />
+<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 
-403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 
-134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 
-108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" 
/>
+<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 
300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
+<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 
-74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 
-30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 
155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 
-197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
new file mode 100755
index 0000000..a498ef4
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
new file mode 100755
index 0000000..d83c539
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/glyphicons-halflings-regular.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
new file mode 100755
index 0000000..5d4a1c4
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
new file mode 100755
index 0000000..7cda102
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansBold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM121 
1462h346l-51 -977h-244z" />
+<glyph unicode="&#x22;" horiz-adv-x="967" d="M133 1462h279l-41 -528h-197zM555 
1462h279l-41 -528h-197z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M45 406v206h277l47 
232h-252v209h289l77 407h219l-77 -407h198l78 407h215l-78 -407h240v-209h-279l-47 
-232h258v-206h-297l-77 -406h-220l78 406h-194l-76 -406h-215l74 406h-238zM539 
612h196l47 232h-196z" />
+<glyph unicode="$" d="M88 1049q0 145 113.5 238.5t316.5 113.5v153h137v-149q229 
-10 414 -92l-94 -234q-156 64 -320 78v-295q195 -75 277.5 -130t121 -121t38.5 
-154q0 -159 -115 -255.5t-322 -115.5v-205h-137v201q-244 5 -428 86v264q87 -43 
209.5 -76t218.5 -39v310l-67 26 q-198 78 -280.5 169.5t-82.5 226.5zM389 1049q0 
-44 30.5 -72.5t98.5 -58.5v235q-129 -19 -129 -104zM655 324q136 23 136 118q0 42 
-34 71t-102 60v-249z" />
+<glyph unicode="%" horiz-adv-x="1845" d="M63 1026q0 457 345 457q169 0 259.5 
-118.5t90.5 -338.5q0 -230 -89 -345.5t-261 -115.5q-165 0 -255 118.5t-90 
342.5zM315 1024q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 -96 250q-50 0 
-72.5 -61.5t-22.5 -188.5zM395 0l811 1462h240l-811 -1462h-240z M1087 442q0 457 
345 457q169 0 259.5 -118.5t90.5 -338.5q0 -229 -89 -344.5t-261 -115.5q-165 0 
-255 118.5t-90 341.5zM1339 440q0 -127 22.5 -189.5t72.5 -62.5q96 0 96 252q0 250 
-96 250q-50 0 -72.5 -61.5t-22.5 -1 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1536" d="M82 395q0 137 60.5 233.5t207.5 
180.5q-75 86 -109 164.5t-34 171.5q0 152 116.5 245t311.5 93q186 0 297.5 
-86.5t111.5 -231.5q0 -119 -69 -217.5t-223 -187.5l284 -277q71 117 123 
301h318q-36 -135 -99 -263.5t-143 -227.5l301 -293h-377l-115 113 q-191 -133 -432 
-133q-244 0 -387 112t-143 303zM403 424q0 -86 64.5 -137t165.5 -51q126 0 227 
61l-332 330q-58 -44 -91.5 -92t-33.5 -111zM489 1124q0 -88 95 -194q86 48 132 
94.5t46 108.5q0 53 -36 83.5t-93 30.5q-67 0 -10 [...]
+<glyph unicode="'" horiz-adv-x="545" d="M133 1462h279l-41 -528h-197z" />
+<glyph unicode="(" horiz-adv-x="694" d="M82 561q0 265 77.5 496t223.5 
405h250q-141 -193 -213 -424t-72 -475q0 -245 73.5 -473.5t209.5 -413.5h-248q-147 
170 -224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="694" d="M61 1462h250q147 -175 224 -406.5t77 
-494.5t-77.5 -490t-223.5 -395h-248q135 184 209 412.5t74 474.5q0 244 -72 
475t-213 424z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M63 1042l39 250l365 -104l-41 
368h262l-41 -368l373 104l33 -252l-340 -24l223 -297l-227 -121l-156 313l-137 
-311l-236 119l221 297z" />
+<glyph unicode="+" d="M88 
612v219h387v390h219v-390h387v-219h-387v-385h-219v385h-387z" />
+<glyph unicode="," horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 
-202 -176 -479h-220z" />
+<glyph unicode="-" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="." horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="/" horiz-adv-x="846" d="M14 0l545 1462h277l-545 -1462h-277z" />
+<glyph unicode="0" d="M74 731q0 387 125 570.5t385 183.5q253 0 382.5 -192t129.5 
-562q0 -383 -125.5 -567t-386.5 -184q-253 0 -381.5 190t-128.5 561zM381 731q0 
-269 46.5 -385.5t156.5 -116.5q108 0 156 118t48 384q0 269 -48.5 386.5t-155.5 
117.5q-109 0 -156 -117.5t-47 -386.5z" />
+<glyph unicode="1" d="M121 1087l471 375h254v-1462h-309v846l3 139l5 152q-77 -77 
-107 -101l-168 -135z" />
+<glyph unicode="2" d="M78 1274q108 92 179 130t155 58.5t188 20.5q137 0 242 
-50t163 -140t58 -206q0 -101 -35.5 -189.5t-110 -181.5t-262.5 -265l-188 
-177v-14h637v-260h-1022v215l367 371q163 167 213 231.5t72 119.5t22 114q0 88 
-48.5 131t-129.5 43q-85 0 -165 -39t-167 -111z" />
+<glyph unicode="3" d="M78 59v263q85 -43 187 -70t202 -27q153 0 226 52t73 167q0 
103 -84 146t-268 43h-111v237h113q170 0 248.5 44.5t78.5 152.5q0 166 -208 166q-72 
0 -146.5 -24t-165.5 -83l-143 213q200 144 477 144q227 0 358.5 -92t131.5 -256q0 
-137 -83 -233t-233 -132v-6 q177 -22 268 -107.5t91 -230.5q0 -211 -153 
-328.5t-437 -117.5q-238 0 -422 79z" />
+<glyph unicode="4" d="M35 303v215l641 
944h285v-919h176v-240h-176v-303h-302v303h-624zM307 543h352v248q0 62 5 180t8 
137h-8q-37 -82 -89 -160z" />
+<glyph unicode="5" d="M100 59v267q79 -42 184 -68.5t199 -26.5q283 0 283 232q0 
221 -293 221q-53 0 -117 -10.5t-104 -22.5l-123 66l55 745h793v-262h-522l-27 
-287l35 7q61 14 151 14q212 0 337.5 -119t125.5 -326q0 -245 -151 -377t-432 
-132q-244 0 -394 79z" />
+<glyph unicode="6" d="M72 621q0 434 183.5 646t549.5 212q125 0 196 -15v-247q-89 
20 -176 20q-159 0 -259.5 -48t-150.5 -142t-59 -267h13q99 170 317 170q196 0 307 
-123t111 -340q0 -234 -132 -370.5t-366 -136.5q-162 0 -282.5 75t-186 219t-65.5 
347zM379 510q0 -119 62.5 -201t158.5 -82 q99 0 152 66.5t53 189.5q0 107 -49.5 
168.5t-149.5 61.5q-94 0 -160.5 -61t-66.5 -142z" />
+<glyph unicode="7" d="M55 1200v260h1049v-194l-553 -1266h-324l549 1200h-721z" />
+<glyph unicode="8" d="M72 371q0 125 66.5 222t213.5 171q-125 79 -180 169t-55 
197q0 157 130 254t339 97q210 0 338.5 -95.5t128.5 -257.5q0 -112 -62 -199.5t-200 
-156.5q164 -88 235.5 -183.5t71.5 -209.5q0 -180 -141 -289.5t-371 -109.5q-240 0 
-377 102t-137 289zM358 389q0 -86 60 -134 t164 -48q115 0 172 49.5t57 130.5q0 67 
-56.5 125.5t-183.5 124.5q-213 -98 -213 -248zM408 1106q0 -60 38.5 -107.5t139.5 
-97.5q98 46 137 94t39 111q0 69 -50 109t-128 40q-79 0 -127.5 -40.5t-48.5 
-108.5z" />
+<glyph unicode="9" d="M66 971q0 235 133.5 371.5t363.5 136.5q162 0 283.5 
-76t186.5 -220.5t65 -344.5q0 -432 -182 -645t-551 -213q-130 0 -197 14v248q84 -21 
176 -21q155 0 255 45.5t153 143t61 268.5h-12q-58 -94 -134 -132t-190 -38q-191 0 
-301 122.5t-110 340.5zM365 975 q0 -106 49 -168t149 -62q94 0 161 61.5t67 141.5q0 
119 -62.5 201t-159.5 82q-96 0 -150 -66t-54 -190z" />
+<glyph unicode=":" horiz-adv-x="584" d="M117 143q0 84 45 127t131 43q83 0 128.5 
-44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5zM117 969q0 
84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 
-130 44t-46 126z" />
+<glyph unicode=";" horiz-adv-x="594" d="M63 -264q65 266 101 502h280l15 -23q-52 
-202 -176 -479h-220zM117 969q0 84 45 127t131 43q83 0 128.5 -44t45.5 -126q0 -81 
-46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="&#x3c;" d="M88 641v143l993 496v-240l-684 -317l684 -281v-239z" 
/>
+<glyph unicode="=" d="M88 418v219h993v-219h-993zM88 805v219h993v-219h-993z" />
+<glyph unicode="&#x3e;" d="M88 203v239l684 281l-684 317v240l993 -496v-143z" />
+<glyph unicode="?" horiz-adv-x="977" d="M6 1358q223 125 473 125q206 0 327.5 
-99t121.5 -264q0 -110 -50 -190t-190 -180q-96 -71 -121.5 -108t-25.5 
-97v-60h-265v74q0 96 41 167t150 151q105 75 138.5 122t33.5 105q0 65 -48 99t-134 
34q-150 0 -342 -98zM244 143q0 84 45 127t131 43q83 0 128.5 -44 t45.5 -126q0 -79 
-46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M102 602q0 247 108.5 448.5t309 
316t461.5 114.5q220 0 393 -90t267 -256t94 -383q0 -144 -46 -263.5t-130 
-187.5t-195 -68q-74 0 -131 35.5t-82 93.5h-16q-108 -129 -275 -129q-177 0 -279 
106.5t-102 291.5q0 211 134 340t350 129q86 0 189.5 -16.5t170.5 -39.5 l-23 -489q0 
-139 76 -139q64 0 102 93.5t38 244.5q0 161 -67 284.5t-188.5 188.5t-277.5 65q-202 
0 -351 -83t-228.5 -239.5t-79.5 -361.5q0 -276 147.5 -423.5t427.5 -147.5q106 0 
233 23.5t250 68.5v-192q-214 -91 -475 [...]
+<glyph unicode="A" horiz-adv-x="1413" d="M0 0l516 1468h379l518 -1468h-334l-106 
348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 98q-33 -128 -189 
-633z" />
+<glyph unicode="B" horiz-adv-x="1376" d="M184 0v1462h455q311 0 451.5 
-88.5t140.5 -281.5q0 -131 -61.5 -215t-163.5 -101v-10q139 -31 200.5 -116t61.5 
-226q0 -200 -144.5 -312t-392.5 -112h-547zM494 256h202q128 0 189 49t61 150q0 182 
-260 182h-192v-381zM494 883h180q126 0 182.5 39t56.5 129 q0 84 -61.5 
120.5t-194.5 36.5h-163v-325z" />
+<glyph unicode="C" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 
263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 
-131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 
-488 193.5t-169 555.5z" />
+<glyph unicode="D" horiz-adv-x="1516" d="M184 0v1462h459q358 0 556 -189t198 
-528q0 -361 -205.5 -553t-593.5 -192h-414zM494 256h133q448 0 448 481q0 471 -416 
471h-165v-952z" />
+<glyph unicode="E" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842z" />
+<glyph unicode="F" horiz-adv-x="1124" d="M184 
0v1462h838v-254h-533v-377h496v-253h-496v-578h-305z" />
+<glyph unicode="G" horiz-adv-x="1483" d="M119 733q0 354 202.5 552t561.5 
198q225 0 434 -90l-103 -248q-160 80 -333 80q-201 0 -322 -135t-121 -363q0 -238 
97.5 -363.5t283.5 -125.5q97 0 197 20v305h-277v258h580v-758q-141 -46 -265.5 
-64.5t-254.5 -18.5q-331 0 -505.5 194.5t-174.5 558.5z" />
+<glyph unicode="H" horiz-adv-x="1567" d="M184 
0v1462h310v-573h579v573h309v-1462h-309v631h-579v-631h-310z" />
+<glyph unicode="I" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-152 -150q80 -20 146 -20q102 0 146 
63.5t44 198.5v1370h310v-1368q0 -256 -117 -390t-346 -134q-105 0 -183 22v258z" />
+<glyph unicode="K" horiz-adv-x="1360" d="M184 0v1462h310v-669l122 172l396 
497h344l-510 -647l514 -815h-352l-383 616l-131 -94v-522h-310z" />
+<glyph unicode="L" horiz-adv-x="1157" d="M184 0v1462h310v-1206h593v-256h-903z" 
/>
+<glyph unicode="M" horiz-adv-x="1931" d="M184 0v1462h422l346 -1118h6l367 
1118h422v-1462h-289v692q0 49 1.5 113t13.5 340h-9l-377 -1145h-284l-352 
1147h-9q19 -350 19 -467v-680h-277z" />
+<glyph unicode="N" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 285 
-15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277z" />
+<glyph unicode="O" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5z" />
+<glyph unicode="P" horiz-adv-x="1286" d="M184 0v1462h467q266 0 404.5 
-114.5t138.5 -341.5q0 -236 -147.5 -361t-419.5 -125h-133v-520h-310zM494 
774h102q143 0 214 56.5t71 164.5q0 109 -59.5 161t-186.5 52h-141v-434z" />
+<glyph unicode="Q" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -258 -91.5 -432.5t-268.5 -255.5l352 
-393h-397l-268 328h-23q-336 0 -516 195t-180 560zM444 733q0 -245 93 -369t278 
-124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 -369.5z" />
+<glyph unicode="R" horiz-adv-x="1352" d="M184 0v1462h426q298 0 441 -108.5t143 
-329.5q0 -129 -71 -229.5t-201 -157.5q330 -493 430 -637h-344l-349 
561h-165v-561h-310zM494 813h100q147 0 217 49t70 154q0 104 -71.5 148t-221.5 
44h-94v-395z" />
+<glyph unicode="S" horiz-adv-x="1128" d="M94 68v288q148 -66 250.5 -93t187.5 
-27q102 0 156.5 39t54.5 116q0 43 -24 76.5t-70.5 64.5t-189.5 99q-134 63 -201 
121t-107 135t-40 180q0 194 131.5 305t363.5 111q114 0 217.5 -27t216.5 -76l-100 
-241q-117 48 -193.5 67t-150.5 19q-88 0 -135 -41t-47 -107 q0 -41 19 -71.5t60.5 
-59t196.5 -102.5q205 -98 281 -196.5t76 -241.5q0 -198 -142.5 -312t-396.5 
-114q-234 0 -414 88z" />
+<glyph unicode="T" horiz-adv-x="1186" d="M41 
1204v258h1104v-258h-397v-1204h-310v1204h-397z" />
+<glyph unicode="U" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5z" />
+<glyph unicode="V" horiz-adv-x="1331" d="M0 1462h313l275 -870q23 -77 47.5 
-179.5t30.5 -142.5q11 92 75 322l277 870h313l-497 -1462h-338z" />
+<glyph unicode="W" horiz-adv-x="1980" d="M0 1462h305l187 -798q49 -221 71 
-383q6 57 27.5 176.5t40.5 185.5l213 819h293l213 -819q14 -55 35 -168t32 -194q10 
78 32 194.5t40 188.5l186 798h305l-372 -1462h-353l-198 768q-11 41 -37.5 
169.5t-30.5 172.5q-6 -54 -30 -173.5t-37 -170.5l-197 -766h-352z" />
+<glyph unicode="X" horiz-adv-x="1366" d="M0 0l485 754l-454 708h342l315 
-526l309 526h334l-459 -725l494 -737h-354l-340 553l-340 -553h-332z" />
+<glyph unicode="Y" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 602h334l-485 
-893v-569h-308v559z" />
+<glyph unicode="Z" horiz-adv-x="1186" d="M49 0v201l701 
1005h-682v256h1050v-200l-700 -1006h719v-256h-1088z" />
+<glyph unicode="[" horiz-adv-x="678" d="M143 
-324v1786h484v-211h-224v-1364h224v-211h-484z" />
+<glyph unicode="\" horiz-adv-x="846" d="M12 1462h277l545 -1462h-277z" />
+<glyph unicode="]" horiz-adv-x="678" d="M51 
-113h223v1364h-223v211h484v-1786h-484v211z" />
+<glyph unicode="^" horiz-adv-x="1090" d="M8 520l438 950h144l495 -950h-239l-322 
643l-280 -643h-236z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-140h-850v140z" />
+<glyph unicode="`" horiz-adv-x="1243" d="M332 1548v21h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="a" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134z" />
+<glyph unicode="b" horiz-adv-x="1296" d="M160 0v1556h305v-362q0 -69 -12 
-221h12q107 166 317 166q198 0 310 -154.5t112 -423.5q0 -277 -115.5 -429t-314.5 
-152q-197 0 -309 143h-21l-51 -123h-233zM465 563q0 -180 53.5 -258t169.5 -78q94 0 
149.5 86.5t55.5 251.5t-56 247.5t-153 82.5q-113 0 -165 -69.5 t-54 -229.5v-33z" />
+<glyph unicode="c" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 150.5q194 
0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 238 
-328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 
573z" />
+<glyph unicode="d" horiz-adv-x="1296" d="M92 557q0 275 114.5 428.5t315.5 
153.5q211 0 322 -164h10q-23 125 -23 223v358h306v-1556h-234l-59 145h-13q-104 
-165 -317 -165q-197 0 -309.5 153t-112.5 424zM401 553q0 -165 57 -247.5t163 
-82.5q117 0 171.5 68t59.5 231v33q0 180 -55.5 258t-180.5 78 q-102 0 -158.5 
-86.5t-56.5 -251.5z" />
+<glyph unicode="e" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5z" />
+<glyph unicode="f" horiz-adv-x="793" d="M41 889v147l168 82v82q0 191 94 279t301 
88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168z" />
+<glyph unicode="g" horiz-adv-x="1157" d="M6 -182q0 101 63 169t185 97q-47 20 
-82 65.5t-35 96.5q0 64 37 106.5t107 83.5q-88 38 -139.5 122t-51.5 198q0 183 119 
283t340 100q47 0 111.5 -8.5t82.5 -12.5h390v-155l-175 -45q48 -75 48 -168q0 -180 
-125.5 -280.5t-348.5 -100.5l-55 3l-45 5q-47 -36 -47 -80 q0 -66 168 -66h190q184 
0 280.5 -79t96.5 -232q0 -196 -163.5 -304t-469.5 -108q-234 0 -357.5 81.5t-123.5 
228.5zM270 -158q0 -63 60.5 -99t169.5 -36q164 0 257 45t93 123q0 63 -55 87t-170 
24h-158q-84 0 -140.5 - [...]
+<glyph unicode="h" horiz-adv-x="1346" d="M160 0v1556h305v-317q0 -37 -7 -174l-7 
-90h16q102 164 324 164q197 0 299 -106t102 -304v-729h-305v653q0 242 -180 
242q-128 0 -185 -87t-57 -282v-526h-305z" />
+<glyph unicode="i" horiz-adv-x="625" d="M147 1407q0 149 166 149t166 -149q0 -71 
-41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM160 0v1118h305v-1118h-305z" />
+<glyph unicode="j" horiz-adv-x="625" d="M-131 -227q70 -19 143 -19q77 0 112.5 
43t35.5 127v1194h305v-1239q0 -178 -103 -274.5t-292 -96.5q-117 0 -201 
25v240zM147 1407q0 149 166 149t166 -149q0 -71 -41.5 -110.5t-124.5 -39.5q-166 0 
-166 150z" />
+<glyph unicode="k" horiz-adv-x="1270" d="M160 0v1556h305v-694l-16 -254h4l133 
170l313 340h344l-444 -485l471 -633h-352l-322 453l-131 -105v-348h-305z" />
+<glyph unicode="l" horiz-adv-x="625" d="M160 0v1556h305v-1556h-305z" />
+<glyph unicode="m" horiz-adv-x="2011" d="M160 0v1118h233l41 -143h17q45 77 130 
120.5t195 43.5q251 0 340 -164h27q45 78 132.5 121t197.5 43q190 0 287.5 
-97.5t97.5 -312.5v-729h-306v653q0 121 -40.5 181.5t-127.5 60.5q-112 0 -167.5 
-80t-55.5 -254v-561h-305v653q0 121 -40.5 181.5t-127.5 60.5 q-117 0 -170 -86t-53 
-283v-526h-305z" />
+<glyph unicode="n" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 
140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 
181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305z" />
+<glyph unicode="o" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 152q161 0 
284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 70.5t-189 
202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 84.5t53.5 251.5q0 
166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5z" />
+<glyph unicode="p" horiz-adv-x="1296" d="M160 -492v1610h248l43 -145h14q107 166 
317 166q198 0 310 -153t112 -425q0 -179 -52.5 -311t-149.5 -201t-228 -69q-197 0 
-309 143h-16q16 -140 16 -162v-453h-305zM465 563q0 -180 53.5 -258t169.5 -78q205 
0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 -165 -69.5t-54 -229.5v-33z" />
+<glyph unicode="q" horiz-adv-x="1296" d="M92 557q0 274 114.5 428t313.5 154q106 
0 185 -40t139 -124h8l27 143h258v-1610h-306v469q0 61 13 168h-13q-49 -81 -130 
-123t-187 -42q-198 0 -310 152.5t-112 424.5zM403 553q0 -168 53.5 -251t166.5 
-83q116 0 170 66.5t59 232.5v37q0 180 -55.5 258t-178.5 78 q-215 0 -215 -338z" />
+<glyph unicode="r" horiz-adv-x="930" d="M160 0v1118h231l45 -188h15q52 94 140.5 
151.5t192.5 57.5q62 0 103 -9l-23 -286q-37 10 -90 10q-146 0 -227.5 -75t-81.5 
-210v-569h-305z" />
+<glyph unicode="s" horiz-adv-x="1018" d="M92 827q0 149 115.5 230.5t327.5 
81.5q202 0 393 -88l-92 -220q-84 36 -157 59t-149 23q-135 0 -135 -73q0 -41 43.5 
-71t190.5 -89q131 -53 192 -99t90 -106t29 -143q0 -172 -119.5 -262t-357.5 
-90q-122 0 -208 16.5t-161 48.5v252q85 -40 191.5 -67t187.5 -27 q166 0 166 96q0 
36 -22 58.5t-76 51t-144 66.5q-129 54 -189.5 100t-88 105.5t-27.5 146.5z" />
+<glyph unicode="t" horiz-adv-x="889" d="M47 889v129l168 102l88 
236h195v-238h313v-229h-313v-539q0 -65 36.5 -96t96.5 -31q80 0 192 35v-227q-114 
-51 -280 -51q-183 0 -266.5 92.5t-83.5 277.5v539h-146z" />
+<glyph unicode="u" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5z" />
+<glyph unicode="v" horiz-adv-x="1165" d="M0 1118h319l216 -637q36 -121 45 
-229h6q5 96 45 229l215 637h319l-426 -1118h-313z" />
+<glyph unicode="w" horiz-adv-x="1753" d="M20 1118h304l129 -495q31 -133 63 
-367h6q4 76 35 241l16 85l138 536h336l131 -536q4 -22 12.5 -65t16.5 -91.5t14.5 
-95t7.5 -74.5h6q9 72 32 197.5t33 169.5l134 495h299l-322 -1118h-332l-86 391l-116 
494h-7l-204 -885h-328z" />
+<glyph unicode="x" horiz-adv-x="1184" d="M10 0l379 571l-360 547h346l217 
-356l219 356h346l-364 -547l381 -571h-347l-235 383l-236 -383h-346z" />
+<glyph unicode="y" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55z" />
+<glyph unicode="z" horiz-adv-x="999" d="M55 0v180l518 
705h-487v233h834v-198l-504 -687h522v-233h-883z" />
+<glyph unicode="{" horiz-adv-x="807" d="M31 449v239q126 0 191 44t65 
126v8v318q0 153 97 215.5t341 62.5v-225q-99 -3 -136.5 -38t-37.5 -103v-299q-6 
-188 -234 -222v-12q234 -35 234 -212v-9v-299q0 -68 37 -103t137 -38v-226q-244 0 
-341 62.5t-97 216.5v315q0 87 -65.5 133t-190.5 46z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M455 -465v2015h219v-2015h-219z" />
+<glyph unicode="}" horiz-adv-x="807" d="M82 -98q99 2 136.5 36t37.5 
105v299v11q0 86 59 139.5t174 70.5v12q-227 34 -233 222v299q0 70 -37 104t-137 
37v225q167 0 262 -26.5t135.5 -84t40.5 -167.5v-318v-10q0 -84 61.5 -126t194.5 
-42v-239q-125 0 -190.5 -41t-65.5 -138v-315q0 -112 -41 -169t-135.5 -83.5 t-261.5 
-26.5v226z" />
+<glyph unicode="~" d="M88 551v231q103 109 256 109q73 0 137.5 -16t139.5 -48q129 
-55 227 -55q53 0 116 32t117 89v-231q-101 -109 -256 -109q-66 0 -126 13t-150 
50q-131 56 -227 56q-55 0 -117.5 -33.5t-116.5 -87.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="586" d="M117 -369l51 975h244l51 
-975h-346zM117 948q0 81 46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 
-127t-131 -43q-83 0 -128.5 44t-45.5 126z" />
+<glyph unicode="&#xa2;" d="M143 741q0 261 104.5 403t315.5 173v166h178v-158q166 
-9 299 -74l-90 -235q-72 29 -134 47t-124 18q-121 0 -179 -83.5t-58 -254.5q0 -327 
237 -327q82 0 148 15.5t166 60.5v-254q-127 -61 -265 -70v-188h-178v196q-420 59 
-420 565z" />
+<glyph unicode="&#xa3;" d="M82 0v248q103 44 141.5 101t38.5 
157v145h-178v219h178v195q0 201 114.5 309.5t323.5 108.5q195 0 390 -82l-93 
-230q-157 64 -272 64q-78 0 -120 -44.5t-42 -127.5v-193h375v-219h-375v-143q0 -170 
-151 -248h718v-260h-1048z" />
+<glyph unicode="&#xa4;" d="M113 1047l147 147l127 -127q91 53 197 53q105 0 196 
-55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 
-145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 
-54 197q0 102 54 197zM395 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 
133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="&#xa5;" d="M6 1462h316l262 -602l264 602h313l-383 
-747h195v-178h-246v-138h246v-178h-246v-221h-287v221h-247v178h247v138h-247v178h190z"
 />
+<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M455 350h219v-815h-219v815zM455 
735v815h219v-815h-219z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M106 59v207q81 -41 180 -69.5t169 
-28.5q194 0 194 117q0 39 -18.5 63t-63.5 49.5t-125 59.5q-183 74 -252 152.5t-69 
195.5q0 79 36 144.5t97 105.5q-133 84 -133 233q0 131 111.5 210t293.5 79q170 0 
363 -84l-82 -190q-68 32 -138.5 57.5t-148.5 25.5q-81 0 -118 -23 t-37 -71q0 -49 
49.5 -86t163.5 -82q163 -64 240 -148.5t77 -193.5q0 -177 -125 -260q62 -40 93.5 
-92.5t31.5 -126.5q0 -148 -119.5 -235.5t-320.5 -87.5q-203 0 -349 79zM344 827q0 
-67 65 -119t181 -98q78 57  [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1243" d="M279 1405q0 65 37.5 100t101.5 
35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 
98zM682 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 
-97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 
-223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 
81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM461 733q0 220 110.5 342.5t309.5 
122.5q149 0 305 -78l-74 -168q-113 58 -217 58q-97 0 -150 -74t-53 -205q0 -280 203 
-280q57 0 123 15t123 44v-191q-12 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="784" d="M47 975q0 109 82.5 163.5t267.5 
63.5l99 4q0 117 -127 117q-81 0 -217 -61l-66 135q66 32 145.5 57t178.5 25q137 0 
211.5 -71t74.5 -202v-442h-135l-31 110q-43 -58 -105 -90t-136 -32q-117 0 -179.5 
58.5t-62.5 164.5zM252 977q0 -38 23 -56t55 -18q77 0 121.5 41.5 t44.5 
106.5v36l-99 -6q-145 -10 -145 -104z" />
+<glyph unicode="&#xab;" horiz-adv-x="1260" d="M82 547v26l371 455l219 -119l-279 
-348l279 -348l-219 -119zM588 547v26l370 455l220 -119l-279 -348l279 -348l-220 
-119z" />
+<glyph unicode="&#xac;" d="M88 612v219h993v-583h-219v364h-774z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM242 731q0 -164 82 -305.5t224 
-223t304 -81.5q164 0 305.5 82t223 224t81.5 304q0 164 -82 305.5t-224 223 t-304 
81.5q-164 0 -305.5 -82t-223 -224t-81.5 -304zM543 272v916h264q181 0 265.5 
-70t84.5 -213q0 -170 -143 -233l237 -400h-254l-178 338h-47v-338h-229zM772 
778h31q66 0 94.5 28.5t28.5 94.5q0 65 -28 92 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v201h1036v-201h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M92 1137q0 92 46 172t126 127t174 
47q92 0 172.5 -46t127 -127t46.5 -173q0 -93 -46.5 -173.5t-126.5 -125.5t-173 
-45q-145 0 -245.5 99.5t-100.5 244.5zM283 1137q0 -64 44.5 -109t110.5 -45t111 
46t45 108q0 63 -45.5 110t-110.5 47q-64 0 -109.5 -46t-45.5 -111z" />
+<glyph unicode="&#xb1;" d="M88 0v219h993v-219h-993zM88 
674v219h387v389h219v-389h387v-219h-387v-385h-219v385h-387z" />
+<glyph unicode="&#xb2;" horiz-adv-x="776" d="M47 1354q147 129 336 129q137 0 
216 -66.5t79 -183.5q0 -85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 
219q102 100 130.5 144.5t28.5 94.5q0 38 -24 58t-64 20q-81 0 -180 -88z" />
+<glyph unicode="&#xb3;" horiz-adv-x="776" d="M59 639v190q148 -90 271 -90q143 0 
143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 
63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 
-64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 
-69.5q-143 0 -273 70z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1243" d="M332 1241v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1352" d="M160 -492v1610h305v-653q0 -121 
44 -181.5t138 -60.5q126 0 183 86.5t57 282.5v526h305v-1118h-231l-43 150h-15q-42 
-85 -102 -127.5t-148 -42.5q-62 0 -114 23t-84 67l5 -85l5 -157v-320h-305z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 
127h604v-1816h-161v1616h-166v-1616h-162v819q-62 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="584" d="M117 723q0 84 45 127t131 43q83 0 
128.5 -44t45.5 -126q0 -81 -46.5 -125.5t-127.5 -44.5q-84 0 -130 44t-46 126z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-37 -303q27 -7 72.5 -14t70.5 
-7q72 0 72 62q0 83 -166 108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 
-128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" />
+<glyph unicode="&#xb9;" horiz-adv-x="776" d="M92 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61z" />
+<glyph unicode="&#xba;" horiz-adv-x="795" d="M57 1116q0 169 89.5 266t252.5 
97q152 0 245 -98.5t93 -264.5q0 -171 -91.5 -267.5t-250.5 -96.5q-153 0 -245.5 
98.5t-92.5 265.5zM260 1116q0 -100 32.5 -150.5t104.5 -50.5t103.5 50.5t31.5 
150.5t-31.5 149.5t-103.5 49.5t-104.5 -49.5t-32.5 -149.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1260" d="M82 213l278 348l-278 348l219 
119l371 -455v-26l-371 -453zM588 213l278 348l-278 348l219 119l371 -455v-26l-371 
-453z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M46 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 
1462h239l-811 -1462h-239zM936 152v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM1121 320h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M46 1227l301 
235h191v-876h-238v446l3 112l5 95q-27 -36 -75 -78l-78 -61zM320 0l811 
1462h239l-811 -1462h-239zM1061 769q147 129 336 129q137 0 216 -66.5t79 -183.5q0 
-85 -47 -160t-176 -192l-105 -95h352v-200h-647v168l224 219q102 100 130.5 
144.5t28.5 94.5 q0 38 -24 58t-64 20q-81 0 -180 -88z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M90 639v190q148 -90 271 -90q143 
0 143 107q0 53 -44 79.5t-122 26.5h-112v160h92q83 0 123.5 26t40.5 83q0 38 -25 
63t-76 25q-47 0 -89 -19t-99 -59l-101 141q62 47 137.5 78t178.5 31q127 0 208 
-64t81 -168q0 -143 -170 -198v-13q94 -20 146 -75t52 -134 q0 -121 -88 -190.5t-274 
-69.5q-143 0 -273 70zM391 0l811 1462h239l-811 -1462h-239zM966 152v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM1151 320h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#xbf;" horiz-adv-x="977" d="M61 -29q0 108 48.5 187t191.5 
184q95 70 121.5 107t26.5 98v59h264v-74q0 -98 -44.5 -169t-152.5 -148q-109 -78 
-137.5 -122t-28.5 -107q0 -57 43.5 -94t132.5 -37q79 0 169 29t186 71l102 -221q-98 
-56 -221.5 -90.5t-229.5 -34.5q-220 0 -345.5 96.5t-125.5 265.5z M395 948q0 81 
46.5 125.5t127.5 44.5q84 0 130 -44t46 -126q0 -84 -45 -127t-131 -43q-83 0 -128.5 
44t-45.5 126z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM338 1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 
142.5t-190 164.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM541 1579v27q172 200 235 301h342v-21q-52 -52 -177.5 
-154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM272 1579v27q189 189 256 301h357q31 -52 107.5 
-141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM293 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 
-36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227 t-188.5 
-82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 
-80.5h-149z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM365 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 
-98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM768 1743 q0 70 40.5 
102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 
32.5t-40.5 100.5z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1413" d="M0 0l516 1468h379l518 
-1468h-334l-106 348h-533l-106 -348h-334zM518 608h381q-147 473 -165.5 535t-26.5 
98q-33 -128 -189 -633zM457 1565q0 108 67.5 172.5t180.5 64.5q110 0 182 -66t72 
-169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM609 1565q0 -45 24 -71 t72 -26q42 
0 69 26t27 71t-27 70.5t-69 25.5t-69 -25.5t-27 -70.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1950" d="M0 0l655 
1462h1174v-254h-563v-321h526v-254h-526v-377h563v-256h-873v348h-491l-150 
-348h-315zM578 608h378v590h-127z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1305" d="M119 729q0 228 83 399.5t238.5 
263t364.5 91.5q213 0 428 -103l-100 -252q-82 39 -165 68t-163 29q-175 0 -271 
-131.5t-96 -366.5q0 -489 367 -489q154 0 373 77v-260q-180 -75 -402 -75q-319 0 
-488 193.5t-169 555.5zM504 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62 q0 83 -166 
108l78 154h193l-27 -61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 
-57q-78 0 -146 21v168z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM259 1886v21h342q63 
-101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM424 1579v27q172 200 
235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xca;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM175 1579v27q189 189 
256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 
-229 -176h-203z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1147" d="M184 
0v1462h842v-254h-532v-321h495v-254h-495v-377h532v-256h-842zM272 1743q0 65 37.5 
100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 
35t-37.5 98zM675 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 
-39 -97 t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-58 
1886v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM167 
1579v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xce;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-96 
1579v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 
-234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xcf;" horiz-adv-x="678" d="M184 0v1462h310v-1462h-310zM-3 
1743q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 
-36.5q-64 0 -101.5 35t-37.5 98zM400 1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 
-36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
+<glyph unicode="&#xd0;" horiz-adv-x="1516" d="M47 596v254h137v612h459q358 0 
556 -189t198 -528q0 -361 -205.5 -553t-593.5 -192h-414v596h-137zM494 256h131q450 
0 450 481q0 232 -104 351.5t-314 119.5h-163v-358h237v-254h-237v-340z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1665" d="M184 0v1462h391l635 -1095h7q-15 
285 -15 403v692h279v-1462h-394l-636 1106h-9q19 -293 19 -418v-688h-277zM418 
1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 
59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5 t-78 
36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM449 1886v21h342q63 -101 235 -301v-27h-202 q-63 44 -185 142.5t-190 
164.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM658 1579v27q172 200 235 301h342v-21 q-52 -52 -177.5 -154.5t-196.5 
-152.5h-203z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM381 1579v27q189 189 256 301h357q31 -52 107.5 -141.5 t148.5 
-159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM402 1577q11 145 82.5 227t189.5 82q41 0 80.5 -16.5 t78 -36t75.5 -35.5t73 
-16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 
16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5t515.5 -194t178.5 -558q0 -363 -180 -558t-516 -195t-516 195t-180 560zM444 
733q0 -245 93 -369t278 -124q371 0 371 493q0 494 -369 494q-185 0 -279 -124.5t-94 
-369.5zM474 1743q0 65 37.5 100t101.5 35q66 0 103.5 -37 t37.5 -98q0 -60 -38 
-96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM877 1743q0 70 40.5 102.5t100.5 
32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 
100.5z" />
+<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 
-305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1630" d="M119 735q0 365 180.5 557.5t517.5 
192.5q198 0 344 -70l84 125l160 -104l-88 -131q194 -194 194 -572q0 -363 -180 
-558t-516 -195q-197 0 -336 65l-90 -135l-162 108l90 136q-198 194 -198 581zM444 
733q0 -191 56 -307l506 756q-84 45 -189 45q-185 0 -279 -124.5 t-94 -369.5zM635 
279q76 -39 180 -39q371 0 371 493q0 180 -51 297z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM375 1886v21h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM602 1579v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM340 1579v27q189 189 256 301h357q31 
-52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176 q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1548" d="M174 520v942h309v-895q0 -169 68 
-248t225 -79q152 0 220.5 79.5t68.5 249.5v893h309v-946q0 -162 -72.5 -284t-209.5 
-187t-324 -65q-282 0 -438 144.5t-156 395.5zM433 1743q0 65 37.5 100t101.5 35q66 
0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 35t-37.5 98zM836 
1743q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 
-36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 
602h334l-485 -893v-569h-308v559zM461 1579v27q172 200 235 301h342v-21q-52 -52 
-177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xde;" horiz-adv-x="1286" d="M184 0v1462h310v-229h178q254 0 
388 -119t134 -344q0 -229 -142.5 -353t-404.5 -124h-153v-293h-310zM494 
543h100q145 0 216 52.5t71 174.5q0 107 -63.5 159t-199.5 52h-124v-438z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1456" d="M160 0v1139q0 201 146.5 
314.5t404.5 113.5q244 0 391 -88.5t147 -237.5q0 -64 -21 -112.5t-53 -86.5t-69 
-67t-69 -53t-53 -45t-21 -43q0 -27 26.5 -53t92.5 -66q146 -91 198.5 -140t78 
-110t25.5 -139q0 -172 -116.5 -259t-343.5 -87q-99 0 -171 14.5t-132 48.5v242 q53 
-36 135.5 -61t146.5 -25q168 0 168 123q0 41 -16 66.5t-57 55.5t-115 72q-126 72 
-175 131.5t-49 140.5q0 64 35 117t105 102q77 55 108 95t31 86q0 60 -63.5 
100.5t-163.5 40.5q-116 0 -181 -52.5t-65 -148. [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM239 1548v21h342q63 -101 235 -301v-27h-202q-63 44 
-185 142.5t-190 164.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM441 1241v27q172 200 235 301h342v-21q-52 -52 
-177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM177 1240v27q189 189 256 301h357q31 -52 107.5 
-141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM217 1239q11 145 82.5 227t189.5 82q41 0 80.5 
-16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 -83.5 
-227t-188.5 -82q-41 0 -80.5 16.5t-7 [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM285 1405q0 65 37.5 100t101.5 35q66 0 103.5 
-37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM688 1405q0 70 
40.5 102.5t100.5 32.5q65 0  [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1237" d="M86 334q0 178 124.5 262.5t375.5 
93.5l194 6v49q0 170 -174 170q-134 0 -315 -81l-101 206q193 101 428 101q225 0 345 
-98t120 -298v-745h-213l-59 152h-8q-77 -97 -158.5 -134.5t-212.5 -37.5q-161 0 
-253.5 92t-92.5 262zM399 332q0 -129 148 -129q106 0 169.5 61 t63.5 162v92l-118 
-4q-133 -4 -198 -48t-65 -134zM381 1477q0 108 67.5 172.5t180.5 64.5q110 0 182 
-66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 174zM533 1477q0 -45 24 -71t72 
-26q42 0 69 26t27 71t-27 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1878" d="M86 334q0 178 121 262.5t362 
93.5l191 6v84q0 69 -44.5 102t-121.5 33q-140 0 -305 -77l-99 202q189 101 422 
101q227 0 342 -131q66 64 152.5 96.5t206.5 32.5q221 0 349 -137.5t128 
-370.5v-148h-723q5 -130 77 -203t202 -73q196 0 380 88v-236q-79 -39 -171 -59 
t-226 -20q-137 0 -249.5 50.5t-184.5 155.5q-98 -117 -196.5 -161.5t-256.5 
-44.5q-161 0 -258.5 94.5t-97.5 259.5zM399 332q0 -129 140 -129q101 0 161 61t60 
162v92l-113 -4q-124 -4 -186 -47.5t-62 -134.5zM1073 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="1053" d="M92 553q0 285 142 435.5t407 
150.5q194 0 348 -76l-90 -236q-72 29 -134 47.5t-124 18.5q-238 0 -238 -338q0 -328 
238 -328q88 0 163 23.5t150 73.5v-261q-74 -47 -149.5 -65t-190.5 -18q-522 0 -522 
573zM350 -303q27 -7 72.5 -14t70.5 -7q72 0 72 62q0 83 -166 108 l78 154h193l-27 
-61q74 -24 118 -74.5t44 -114.5q0 -128 -75.5 -185t-233.5 -57q-78 0 -146 21v168z" 
/>
+<glyph unicode="&#xe8;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM245 1548v21 h342q63 -101 235 
-301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM447 1241v27 q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xea;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM194 1241v27 q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1210" d="M92 551q0 281 140.5 434.5t388.5 
153.5q237 0 369 -135t132 -373v-148h-721q5 -130 77 -203t202 -73q101 0 191 21t188 
67v-236q-80 -40 -171 -59.5t-222 -19.5q-270 0 -422 149t-152 422zM408 686h428q-2 
113 -59 174.5t-154 61.5t-152 -61.5t-63 -174.5zM297 1405 q0 65 37.5 100t101.5 
35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 
98zM700 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 
-97t-103 -36q-60 0 -100.5 32 [...]
+<glyph unicode="&#xec;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-101 
1548v21h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM145 
1241v27q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xee;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-122 
1241v27q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 
-234 176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xef;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305zM-29 
1405q0 65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 
-36.5q-64 0 -101.5 35t-37.5 98zM374 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 
-36t38.5 -99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z " />
+<glyph unicode="&#xf0;" horiz-adv-x="1268" d="M92 489q0 233 130 369.5t351 
136.5q205 0 275 -98l8 4q-67 162 -192 281l-230 -142l-100 156l176 107q-80 53 -152 
92l101 176q144 -65 258 -141l225 139l100 -154l-170 -104q156 -143 230 -324.5t74 
-413.5q0 -280 -145 -436.5t-400 -156.5q-245 0 -392 137t-147 372z M403 487q0 -140 
60 -211t172 -71q123 0 176 82t53 245q0 108 -61 173t-168 65q-121 0 -176.5 
-68.5t-55.5 -214.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1346" d="M160 0v1118h233l41 -143h17q51 81 
140.5 122.5t203.5 41.5q195 0 296 -105.5t101 -304.5v-729h-305v653q0 121 -43 
181.5t-137 60.5q-128 0 -185 -85.5t-57 -283.5v-526h-305zM258 1239q11 145 82.5 
227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26 t41.5 
80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 
16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM237 1548v21 
h342q63 -101 235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM467 1241v27 
q172 200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM198 1241v27 
q189 189 256 301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 
176q-78 -81 -229 -176h-203z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM219 1239 
q11 145 82.5 227t189.5 82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 
26t41.5 80h149q-11 -145 -83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 
36t-73 16.5q-31 0 -59.5 -26.5t-41.5 -80.5h-1 [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q161 0 284 -70t189 -201t66 -307q0 -273 -144 -427t-401 -154q-161 0 -284 
70.5t-189 202.5t-66 308zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM291 1405 q0 
65 37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 
-101.5 35t-37.5 98zM694 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 
-99q0 -61 -39 -97t-103 -36q-60 0 -100.5  [...]
+<glyph unicode="&#xf7;" d="M88 612v219h993v-219h-993zM444 373q0 76 37 
113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 
113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 
-110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1268" d="M92 561q0 274 143 426t402 
152q132 0 248 -52l55 82l152 -108l-58 -84q142 -155 142 -416q0 -273 -144 
-427t-401 -154q-126 0 -234 45l-67 -101l-154 105l68 100q-152 156 -152 432zM403 
561q0 -94 19 -166l317 475q-43 23 -106 23q-122 0 -176 -82.5t-54 -249.5z M543 
240q38 -15 92 -15q122 0 175.5 84.5t53.5 251.5q0 81 -12 141z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM245 1548v21h342q63 -101 
235 -301v-27h-202q-63 44 -185 142.5t-190 164.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM498 1241v27q172 200 235 
301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM235 1241v27q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203 q-157 93 -234 176q-78 -81 
-229 -176h-203z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1346" d="M154 389v729h305v-653q0 -121 43 
-181.5t137 -60.5q128 0 185 85.5t57 283.5v526h305v-1118h-234l-41 143h-16q-49 -78 
-139 -120.5t-205 -42.5q-197 0 -297 105.5t-100 303.5zM326 1405q0 65 37.5 
100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5t-103 -36.5 q-64 0 -101.5 
35t-37.5 98zM729 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 
-39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM393 1241v27q172 
200 235 301h342v-21q-52 -52 -177.5 -154.5t-196.5 -152.5h-203z " />
+<glyph unicode="&#xfe;" horiz-adv-x="1296" d="M160 -492v2048h305v-391l-7 
-120l-7 -72h14q50 81 131 123.5t186 42.5q198 0 310 -154.5t112 -423.5q0 -273 
-111.5 -427t-310.5 -154q-213 0 -317 137h-14l7 -62l7 -94v-453h-305zM465 563q0 
-180 53.5 -258t169.5 -78q205 0 205 338q0 165 -50.5 247.5t-158.5 82.5 q-113 0 
-165 -69.5t-54 -229.5v-33z" />
+<glyph unicode="&#xff;" horiz-adv-x="1165" d="M0 1118h334l211 -629q27 -82 37 
-194h6q11 103 43 194l207 629h327l-473 -1261q-65 -175 -185.5 -262t-281.5 -87q-79 
0 -155 17v242q55 -13 120 -13q81 0 141.5 49.5t94.5 149.5l18 55zM243 1405q0 65 
37.5 100t101.5 35q66 0 103.5 -37t37.5 -98q0 -60 -38 -96.5 t-103 -36.5q-64 0 
-101.5 35t-37.5 98zM646 1405q0 70 40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 
-99q0 -61 -39 -97t-103 -36q-60 0 -100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="625" d="M160 0v1118h305v-1118h-305z" />
+<glyph unicode="&#x152;" horiz-adv-x="1993" d="M119 735q0 363 169.5 
556.5t487.5 193.5q61 0 127 -7t101 
-16h868v-254h-563v-321h526v-254h-526v-377h563v-256h-873q-38 -9 -109 -14.5t-116 
-5.5q-319 0 -487 197t-168 558zM438 733q0 -244 86 -368.5t250 -124.5q65 0 126 
10.5t99 28.5v907q-35 19 -101.5 30 t-121.5 11q-166 0 -252 -125.5t-86 -368.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="2003" d="M92 561q0 277 141.5 427.5t399.5 
150.5q112 0 212 -39.5t171 -116.5q144 156 383 156q244 0 380 -135t136 
-373v-148h-746v-8q7 -127 81.5 -197.5t207.5 -70.5q107 0 200 21t193 67v-236q-81 
-39 -175.5 -59t-229.5 -20q-271 0 -420 155q-141 -155 -391 -155 q-162 0 -286 
70t-190.5 202t-66.5 309zM403 561q0 -166 54.5 -251t177.5 -85q122 0 175.5 
84.5t53.5 251.5q0 166 -54 249t-177 83q-122 0 -176 -82.5t-54 -249.5zM1178 
686h450q-2 111 -60.5 173.5t-162.5 62.5q-94 0 -1 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1278" d="M0 1462h336l303 -602l305 
602h334l-485 -893v-569h-308v559zM297 1743q0 65 37.5 100t101.5 35q66 0 103.5 
-37t37.5 -98q0 -60 -38 -96.5t-103 -36.5q-64 0 -101.5 35t-37.5 98zM700 1743q0 70 
40.5 102.5t100.5 32.5q65 0 103.5 -36t38.5 -99q0 -61 -39 -97t-103 -36 q-60 0 
-100.5 32.5t-40.5 100.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1243" d="M186 1241v27q189 189 256 
301h357q31 -52 107.5 -141.5t148.5 -159.5v-27h-203q-157 93 -234 176q-78 -81 -229 
-176h-203z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M340 1477q0 108 67.5 
172.5t180.5 64.5q110 0 182 -66t72 -169q0 -108 -71 -174t-183 -66t-180 64t-68 
174zM492 1477q0 -45 24 -71t72 -26q42 0 69 26t27 71t-27 70.5t-69 25.5t-69 
-25.5t-27 -70.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1243" d="M207 1239q11 145 82.5 227t189.5 
82q41 0 80.5 -16.5t78 -36t75.5 -35.5t73 -16q31 0 59.5 26t41.5 80h149q-11 -145 
-83.5 -227t-188.5 -82q-41 0 -80.5 16.5t-78 36t-75.5 36t-73 16.5q-31 0 -59.5 
-26.5t-41.5 -80.5h-149z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M61 424v250h537v-250h-537z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 436v230h860v-230h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 436v230h1884v-230h-1884z" 
/>
+<glyph unicode="&#x2018;" horiz-adv-x="444" d="M25 983q22 91 72.5 228.5t103.5 
250.5h219q-66 -267 -101 -501h-280z" />
+<glyph unicode="&#x2019;" horiz-adv-x="444" d="M25 961q69 296 100 501h281l14 
-22q-50 -197 -176 -479h-219z" />
+<glyph unicode="&#x201a;" horiz-adv-x="596" d="M63 -264q65 266 101 502h280l15 
-23q-52 -202 -176 -479h-220z" />
+<glyph unicode="&#x201c;" horiz-adv-x="911" d="M25 983q22 91 72.5 228.5t103.5 
250.5h219q-66 -267 -101 -501h-280zM492 983q22 91 72.5 228.5t103.5 250.5h219q-66 
-267 -101 -501h-280z" />
+<glyph unicode="&#x201d;" horiz-adv-x="911" d="M25 961q69 296 100 501h281l14 
-22q-50 -197 -176 -479h-219zM492 961q69 296 100 501h280l15 -22q-50 -197 -176 
-479h-219z" />
+<glyph unicode="&#x201e;" horiz-adv-x="1061" d="M63 -264q65 266 101 502h280l15 
-23q-52 -202 -176 -479h-220zM530 -264q65 266 101 502h280l15 -23q-52 -202 -176 
-479h-220z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M98 748q0 154 74 235.5t213 
81.5q137 0 212 -82t75 -235q0 -152 -75.5 -235t-211.5 -83q-138 0 -212.5 83t-74.5 
235z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1751" d="M117 143q0 84 45 127t131 43q83 
0 128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 
125.5zM700 143q0 84 45 127t132 43q83 0 128.5 -44t45.5 -126q0 -79 -46 
-124.5t-128 -45.5q-85 0 -131 44.5t-46 125.5zM1284 143q0 84 45 127t131 43 q83 0 
128.5 -44t45.5 -126q0 -79 -46 -124.5t-128 -45.5q-84 0 -130 44.5t-46 125.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="754" d="M82 547v26l371 455l219 
-119l-279 -348l279 -348l-219 -119z" />
+<glyph unicode="&#x203a;" horiz-adv-x="754" d="M82 213l278 348l-278 348l219 
119l371 -455v-26l-371 -453z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-393 0l811 1462h239l-811 
-1462h-239z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="776" d="M12 737v154l385 
577h236v-563h125v-168h-125v-151h-238v151h-383zM197 905h198v164q0 86 6 184q-9 
-26 -35.5 -80t-41.5 -77z" />
+<glyph unicode="&#x20ac;" d="M66 481v178h118q-4 23 -4 62l2 53h-116v176h133q37 
242 199 382.5t405 140.5q188 0 352 -82l-98 -232q-69 31 -129 48.5t-125 17.5q-122 
0 -201 -70.5t-102 -204.5h403v-176h-418l-2 -35v-47l2 -33h355v-178h-338q51 -243 
321 -243q143 0 275 57v-256q-116 -59 -293 -59 q-245 0 -403 133t-199 368h-137z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M16 
1313v149h564v-149h-199v-572h-168v572h-197zM625 741v721h247l160 -510l170 
510h240v-721h-168v408l4 121h-6l-174 -529h-142l-165 529h-7l4 -111v-418h-163z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 
1120h1120v-1120h-1120v1120z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM940 1407q0 149 166 149t166 -149q0 
-71 -41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM953 0v1118h305v-1118h-305z " />
+<glyph unicode="&#xfb02;" horiz-adv-x="1417" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM953 0v1556h305v-1556h-305z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 
v-70h264v-229h-264v-889h-305v889h-168zM1730 1407q0 149 166 149t166 -149q0 -71 
-41.5 -110.5t-124.5 -39.5q-166 0 -166 150zM1743 0v1118h305v-1118h-305z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2208" d="M41 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 
-98.5v-70h264v-229h-264v-889h-305v889h-168zM834 889v147l168 82v82q0 191 94 
279t301 88q158 0 281 -47l-78 -224q-92 29 -170 29q-65 0 -94 -38.5t-29 -98.5 
v-70h264v-229h-264v-889h-305v889h-168zM1743 0v1556h305v-1556h-305z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
new file mode 100755
index 0000000..7ab5d85
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
new file mode 100755
index 0000000..869a9ed
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Bold-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
new file mode 100755
index 0000000..ad65180
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
new file mode 100755
index 0000000..9149120
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansBoldItalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="586" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM150 485l157 
977h340l-256 -977h-241z" />
+<glyph unicode="&#x22;" horiz-adv-x="928" d="M201 934l71 528h277l-152 
-528h-196zM604 934l74 528h276l-151 -528h-199z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M41 408l18 206h277l70 232h-252l18 
209h289l119 407h217l-117 -407h199l116 407h215l-116 -407h239l-18 -209h-279l-69 
-232h258l-19 -206h-297l-116 -408h-220l117 408h-194l-115 -408h-215l113 
408h-238zM553 614h197l69 232h-196z" />
+<glyph unicode="$" d="M51 168v266q198 -107 404 -117l71 322q-163 61 -241 
151t-78 214q0 173 127 279.5t350 121.5l35 151h139l-33 -151q166 -22 295 -90l-106 
-232q-132 65 -242 74l-63 -299q131 -51 195 -99.5t97 -113t33 -149.5q0 -184 -125.5 
-291.5t-367.5 -124.5l-39 -199h-140l44 201 q-209 12 -355 86zM502 1022q0 -79 80 
-111l51 246q-62 -7 -96.5 -41t-34.5 -94zM594 322q63 9 102 45t39 98q0 46 -24.5 
75.5t-59.5 43.5z" />
+<glyph unicode="%" horiz-adv-x="1753" d="M115 885q0 169 55.5 311.5t148.5 
214.5t216 72q137 0 211.5 -80t74.5 -238q0 -166 -56 -310t-151 -217t-217 -73q-139 
0 -210.5 83.5t-71.5 236.5zM231 0l1088 1462h235l-1083 -1462h-240zM360 868q0 -96 
56 -96q65 0 112 131t47 275q0 96 -57 96q-63 0 -110.5 -128.5 t-47.5 -277.5zM973 
283q0 177 53 322.5t148 219.5t219 74q137 0 211.5 -78.5t74.5 -230.5q0 -167 -54 
-313.5t-148 -220.5t-215 -74q-144 0 -216.5 78.5t-72.5 222.5zM1219 285q0 -97 55 
-97q41 0 77 55t59.5 154.5t23 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1450" d="M68 358q0 145 78.5 248.5t273.5 
200.5q-76 130 -76 258q0 195 117.5 307.5t316.5 112.5q169 0 266 -82.5t97 -224.5q0 
-280 -365 -426l195 -263q44 57 80.5 121.5t78.5 173.5h300q-133 -313 -310 -497l205 
-287h-350l-72 98q-175 -118 -403 -118q-209 0 -320.5 97.5 t-111.5 280.5zM383 
387q0 -65 45.5 -108t116.5 -43q115 0 221 59l-225 328q-88 -51 -123 -104.5t-35 
-131.5zM621 1085q0 -46 12 -92t29 -73q113 59 155.5 111t42.5 112q0 57 -30 
82.5t-70 25.5q-66 0 -102.5 -46.5 [...]
+<glyph unicode="'" horiz-adv-x="522" d="M201 934l71 528h277l-152 -528h-196z" />
+<glyph unicode="(" horiz-adv-x="694" d="M74 281q0 339 122.5 626.5t381.5 
554.5h262q-255 -278 -377.5 -573.5t-122.5 -618.5q0 -308 117 -594h-234q-149 266 
-149 605z" />
+<glyph unicode=")" horiz-adv-x="694" d="M-147 -324q499 545 499 1192q0 307 -116 
594h233q149 -264 149 -604q0 -342 -124 -630.5t-379 -551.5h-262z" />
+<glyph unicode="*" horiz-adv-x="1116" d="M172 1141l86 237l338 -174l33 369l256 
-51l-113 -353l387 29l-18 -254l-338 43l160 -336l-246 -73l-90 337l-197 -278l-207 
164l275 248z" />
+<glyph unicode="+" d="M109 
612v219h366v369h219v-369h367v-219h-367v-364h-219v364h-366z" />
+<glyph unicode="," horiz-adv-x="569" d="M-102 -264q74 167 194 502h285l8 
-23q-118 -255 -262 -479h-225z" />
+<glyph unicode="-" horiz-adv-x="659" d="M41 424l53 250h524l-53 -250h-524z" />
+<glyph unicode="." horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="/" horiz-adv-x="862" d="M-90 0l809 1462h295l-809 -1462h-295z" 
/>
+<glyph unicode="0" d="M66 467q0 297 84 537t228 360.5t333 120.5q399 0 399 
-473q0 -470 -168.5 -751t-472.5 -281q-198 0 -300.5 122t-102.5 365zM369 461q0 
-115 27.5 -173.5t97.5 -58.5q81 0 150.5 106t116 301t46.5 386q0 111 -30.5 
162t-92.5 51q-80 0 -149.5 -104t-117.5 -302t-48 -368z " />
+<glyph unicode="1" d="M182 1114l566 348h249l-309 -1462h-305l180 829q35 152 76 
287q-9 -8 -61.5 -47t-262.5 -170z" />
+<glyph unicode="2" d="M-49 0l43 213l477 424q180 159 248.5 254.5t68.5 179.5q0 
75 -41 114.5t-110 39.5q-66 0 -135.5 -33.5t-171.5 -118.5l-146 203q132 112 252 
159.5t250 47.5q190 0 301 -98t111 -259q0 -107 -41 -201t-122.5 -188t-266.5 
-245l-269 -222v-10h568l-54 -260h-962z" />
+<glyph unicode="3" d="M14 59v267q84 -50 182 -75.5t191 -25.5q158 0 243 63.5t85 
176.5q0 172 -258 172h-138l46 221h73q167 0 263 62t96 172q0 67 -43 104t-121 
37q-134 0 -287 -100l-127 204q124 81 232.5 113.5t246.5 32.5q190 0 298 -90.5t108 
-243.5q0 -156 -94.5 -262t-261.5 -135v-4 q131 -26 198.5 -106.5t67.5 -201.5q0 
-133 -74 -238t-212 -163.5t-327 -58.5q-239 0 -387 79z" />
+<glyph unicode="4" d="M-25 303l48 234l770 925h311l-195 -919h170l-51 
-240h-170l-63 -303h-293l63 303h-590zM305 543h311l58 248q12 58 40 164t42 
141h-6q-35 -63 -132 -181z" />
+<glyph unicode="5" d="M27 61v269q174 -99 352 -99q154 0 241 71t87 194q0 94 
-57.5 141t-166.5 47q-102 0 -213 -33l-104 78l207 733h755l-55 -262h-489l-88 
-293q72 15 127 15q183 0 289 -103t106 -287q0 -167 -71.5 -292t-208.5 -192.5t-330 
-67.5q-117 0 -218.5 23t-162.5 58z" />
+<glyph unicode="6" d="M88 469q0 202 61 395.5t167.5 335t256.5 213.5t357 72q125 
0 223 -27l-51 -246q-84 25 -191 25q-194 0 -313.5 -108t-185.5 -345h4q115 166 311 
166q157 0 242.5 -97t85.5 -273q0 -169 -71 -313.5t-190.5 -215.5t-277.5 -71q-212 0 
-320 127t-108 362zM383 422 q0 -91 40 -143t107 -52q99 0 161.5 94t62.5 236q0 71 
-33.5 113.5t-102.5 42.5q-60 0 -114.5 -35.5t-87.5 -95.5t-33 -160z" />
+<glyph unicode="7" d="M78 0l737 1202h-629l56 260h975l-41 -194l-752 
-1268h-346z" />
+<glyph unicode="8" d="M55 350q0 298 348 426q-165 132 -165 299q0 119 58 
212.5t168 145.5t257 52q123 0 215.5 -42t141 -118t48.5 -174q0 -134 -80.5 
-233.5t-230.5 -151.5q217 -141 217 -365q0 -122 -63.5 -218.5t-181 -149.5t-273.5 
-53q-214 0 -336.5 100t-122.5 270zM352 383 q0 -81 50 -128.5t135 -47.5q93 0 147.5 
53.5t54.5 138.5q0 73 -36.5 131.5t-120.5 112.5q-116 -45 -173 -107t-57 -153zM528 
1094q0 -132 123 -201q185 72 185 221q0 68 -39.5 107t-102.5 39q-76 0 -121 
-46.5t-45 -119.5z" />
+<glyph unicode="9" d="M86 12v256q111 -41 227 -41q121 0 207.5 49t144 138.5t99.5 
257.5h-4q-111 -158 -295 -158q-163 0 -252.5 103.5t-89.5 285.5q0 166 73 305.5t196 
208t286 68.5q203 0 308.5 -123t105.5 -361q0 -280 -99 -533t-264 -370.5t-403 
-117.5q-128 0 -240 32zM424 928 q0 -87 37.5 -131.5t105.5 -44.5q60 0 111.5 
36.5t82 100t30.5 158.5q0 84 -35.5 137t-110.5 53q-65 0 -115.5 -42t-78 -114t-27.5 
-153z" />
+<glyph unicode=":" horiz-adv-x="584" d="M25 115q0 90 53.5 144t150.5 54q68 0 
109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM207 940q0 92 
55.5 145.5t149.5 53.5q68 0 108.5 -38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 
-54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode=";" horiz-adv-x="584" d="M-102 -264q74 167 194 502h285l8 
-23q-118 -255 -262 -479h-225zM207 940q0 92 55.5 145.5t149.5 53.5q68 0 108.5 
-38.5t40.5 -107.5q0 -86 -54.5 -140t-144.5 -54q-72 0 -113.5 36.5t-41.5 104.5z" />
+<glyph unicode="&#x3c;" d="M109 641v143l952 496v-240l-643 -317l643 -281v-239z" 
/>
+<glyph unicode="=" d="M109 418v219h952v-219h-952zM109 807v217h952v-217h-952z" 
/>
+<glyph unicode="&#x3e;" d="M109 203v239l643 281l-643 317v240l952 -496v-143z" />
+<glyph unicode="?" horiz-adv-x="940" d="M166 115q0 91 55 144.5t150 53.5q68 0 
108.5 -38t40.5 -107q0 -87 -55 -141t-143 -54q-74 0 -115 38t-41 104zM178 1358q230 
125 445 125q177 0 280 -87.5t103 -244.5q0 -83 -28.5 -149.5t-82.5 -123t-190 
-147.5q-64 -43 -96.5 -73t-52.5 -64.5t-38 -108.5h-258l14 78 q19 103 73.5 
177t172.5 155q124 84 157.5 127t33.5 96q0 119 -133 119q-50 0 -106.5 -16t-201.5 
-84z" />
+<glyph unicode="@" horiz-adv-x="1753" d="M92 500q0 279 120.5 497t343 
341.5t497.5 123.5q318 0 499 -163.5t181 -458.5q0 -173 -64 -321t-177.5 
-231t-254.5 -83q-88 0 -144.5 38.5t-72.5 108.5h-6q-50 -77 -113 -112t-147 
-35q-127 0 -198 79.5t-71 229.5q0 147 67.5 276.5t187.5 205t268 75.5q185 0 327 
-55 l-106 -420q-11 -44 -19 -76.5t-8 -64.5q0 -68 58 -68q66 0 124 64t92.5 
171t34.5 214q0 213 -123.5 325.5t-359.5 112.5q-203 0 -366.5 -94t-255 -266t-91.5 
-392q0 -243 134 -380.5t376 -137.5q117 0 219.5 20t221.5 [...]
+<glyph unicode="A" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254z" />
+<glyph unicode="B" horiz-adv-x="1270" d="M53 0l309 1462h426q229 0 346 
-81.5t117 -243.5q0 -150 -83 -247.5t-236 -129.5v-6q100 -26 159.5 -96.5t59.5 
-180.5q0 -229 -153 -353t-423 -124h-522zM412 256h180q117 0 183.5 58t66.5 161q0 
162 -183 162h-165zM545 883h149q121 0 181.5 48.5t60.5 139.5 q0 137 -170 
137h-152z" />
+<glyph unicode="C" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 335t400 
114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 0 -237.5 
-81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 77v-260q-199 
-77 -400 -77q-254 0 -395 149.5t-141 423.5z" />
+<glyph unicode="D" horiz-adv-x="1386" d="M53 0l309 1462h396q270 0 417.5 
-143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 -108h-451zM412 
256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 234.5t-208.5 80.5h-115z" />
+<glyph unicode="E" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 -254h-512l-67 
-321h477l-55 -254h-477l-80 -377h512l-54 -256h-817z" />
+<glyph unicode="F" horiz-adv-x="1087" d="M53 0l309 1462h814l-54 -254h-508l-79 
-377h473l-56 -253h-473l-121 -578h-305z" />
+<glyph unicode="G" horiz-adv-x="1413" d="M123 549q0 268 107 484.5t301 334t448 
117.5q218 0 410 -99l-115 -251q-74 40 -148 64t-161 24q-153 0 -273.5 -83t-189 
-236.5t-68.5 -330.5q0 -172 72.5 -252.5t222.5 -80.5q76 0 170 24l66 299h-267l56 
258h563l-162 -762q-134 -46 -248.5 -62.5t-242.5 -16.5 q-259 0 -400 147t-141 
422z" />
+<glyph unicode="H" horiz-adv-x="1434" d="M53 0l309 1462h306l-121 -573h471l121 
573h305l-309 -1462h-306l134 631h-471l-134 -631h-305z" />
+<glyph unicode="I" horiz-adv-x="659" d="M53 0l312 1462h305l-312 -1462h-305z" />
+<glyph unicode="J" horiz-adv-x="678" d="M-322 -150q88 -20 164 -20q99 0 160.5 
60.5t89.5 191.5l293 1380h305l-303 -1423q-52 -245 -175.5 -357t-346.5 -112q-94 0 
-187 27v253z" />
+<glyph unicode="K" horiz-adv-x="1255" d="M53 0l309 1462h306l-152 -702l158 
205l409 497h361l-594 -700l291 -762h-338l-211 592l-125 -70l-109 -522h-305z" />
+<glyph unicode="L" horiz-adv-x="1061" d="M53 0l309 1462h306l-256 -1206h512l-54 
-256h-817z" />
+<glyph unicode="M" horiz-adv-x="1802" d="M53 0l309 1462h404l68 -1093h4l551 
1093h423l-309 -1462h-280l145 692q53 247 105 441h-5l-569 -1133h-281l-61 
1133h-4q-11 -88 -38 -231t-187 -902h-275z" />
+<glyph unicode="N" horiz-adv-x="1546" d="M53 0l309 1462h357l340 -1077h4q12 76 
39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 -66 -386l-145 
-688h-275z" />
+<glyph unicode="O" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 
119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 -114q-256 0 
-399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 87t155.5 
246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 -251.5t-57.5 
-347z" />
+<glyph unicode="P" horiz-adv-x="1188" d="M53 0l309 1462h338q242 0 366 
-106.5t124 -319.5q0 -241 -169.5 -378.5t-467.5 -137.5h-86l-109 -520h-305zM522 
774h56q142 0 223.5 69t81.5 185q0 180 -195 180h-74z" />
+<glyph unicode="Q" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 341.5t402 
119q255 0 395 -144t140 -403q0 -316 -122.5 -555.5t-334.5 -337.5l254 
-393h-359l-178 328h-26q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 
-222t187.5 -75t220.5 87t155.5 246t56 357q0 142 -65 219.5t-183 77.5 q-121 0 -222 
-91.5t-158.5 -251.5t-57.5 -347z" />
+<glyph unicode="R" horiz-adv-x="1247" d="M53 0l309 1462h359q237 0 356 -102t119 
-299q0 -158 -83 -271.5t-239 -168.5l261 -621h-332l-207 561h-119l-119 
-561h-305zM530 813h78q131 0 204 57t73 174q0 82 -47.5 123t-149.5 41h-74z" />
+<glyph unicode="S" horiz-adv-x="1085" d="M41 70v274q193 -108 358 -108q112 0 
175 42.5t63 116.5q0 43 -13.5 75.5t-38.5 60.5t-124 102q-138 99 -194 196t-56 
209q0 129 62 230.5t176.5 158t263.5 56.5q217 0 397 -99l-109 -233q-156 74 -288 
74q-83 0 -136 -45t-53 -119q0 -61 33 -106.5t148 -120.5 q121 -80 181 -176.5t60 
-225.5q0 -209 -148 -330.5t-401 -121.5q-221 0 -356 90z" />
+<glyph unicode="T" horiz-adv-x="1087" d="M168 1204l55 258h1010l-55 
-258h-353l-254 -1204h-305l254 1204h-352z" />
+<glyph unicode="U" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 923h305l-194 
-919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 917h306l-201 
-946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 307.5z" />
+<glyph unicode="V" horiz-adv-x="1208" d="M184 1462h295l51 -880q4 -45 4 -133q-2 
-103 -6 -150h7q78 221 110 283l432 880h316l-748 -1462h-334z" />
+<glyph unicode="W" horiz-adv-x="1831" d="M184 1462h287l6 -798q0 -52 -4 
-173t-10 -174h6q22 64 67 180.5t60 145.5l369 819h270l21 -873q0 -146 -9 -272h6q43 
129 131 349l330 796h309l-647 -1462h-346l-22 721l-2 139q0 88 4 158h-4q-46 -146 
-115 -299l-324 -719h-338z" />
+<glyph unicode="X" horiz-adv-x="1241" d="M-117 0l576 764l-238 698h320l153 
-518l363 518h344l-545 -725l268 -737h-331l-172 543l-396 -543h-342z" />
+<glyph unicode="Y" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 
592h342l-618 -903l-119 -559h-303l119 559z" />
+<glyph unicode="Z" horiz-adv-x="1098" d="M-61 0l38 201l777 1005h-543l53 
256h936l-41 -202l-782 -1004h596l-53 -256h-981z" />
+<glyph unicode="[" horiz-adv-x="678" d="M-37 -324l381 1786h473l-45 
-211h-215l-291 -1364h215l-45 -211h-473z" />
+<glyph unicode="\" horiz-adv-x="862" d="M221 1462h260l224 -1462h-267z" />
+<glyph unicode="]" horiz-adv-x="678" d="M-137 -324l45 211h213l291 1364h-215l45 
211h473l-381 -1786h-471z" />
+<glyph unicode="^" horiz-adv-x="1081" d="M20 520l619 950h147l277 
-950h-223l-174 633l-402 -633h-244z" />
+<glyph unicode="_" horiz-adv-x="819" d="M-186 -324l30 140h822l-31 -140h-821z" 
/>
+<glyph unicode="`" horiz-adv-x="1135" d="M508 1548v21h311q36 -148 115 
-303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="a" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 
98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 145h-4q-134 -165 
-319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 -132t95.5 -44q69 
0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 0 -129.5 -72t-98 
-190t-36.5 -234z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M37 0l330 1556h301l-62 -288q-41 -182 
-84 -299h8q78 98 142.5 134t140.5 36q146 0 230.5 -108t84.5 -298t-68 -367.5t-187 
-281.5t-263 -104q-194 0 -276 163h-8l-58 -143h-231zM420 399q0 -80 37 -128t102 
-48q67 0 128 69t98.5 189.5t37.5 237.5q0 176 -131 176 q-68 0 -130 -65t-102 
-180.5t-40 -250.5z" />
+<glyph unicode="c" horiz-adv-x="989" d="M90 391q0 212 74.5 385.5t209.5 268t308 
94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 -64t-107 
-175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 
58.5v-246q-152 -79 -336 -79q-201 0 -308.5 107.5t-107.5 303.5z" />
+<glyph unicode="d" horiz-adv-x="1217" d="M90 387q0 196 71.5 374.5t188.5 
278t258 99.5q82 0 141.5 -37t112.5 -127h8l2 28q6 110 25 195l76 358h301l-330 
-1556h-229l14 145h-4q-71 -87 -148.5 -126t-170.5 -39q-147 0 -231.5 107t-84.5 
300zM395 399q0 -176 137 -176q66 0 128.5 68.5t100.5 182.5t38 245 q0 80 -37.5 
128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
+<glyph unicode="e" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195z" />
+<glyph unicode="f" horiz-adv-x="764" d="M-219 -225q61 -21 115 -21q61 0 107 
40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 87.5q131 0 
235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 -62h219l-49 
-229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242z" />
+<glyph unicode="g" horiz-adv-x="1108" d="M-115 -209q0 102 68.5 175.5t214.5 
121.5q-74 47 -74 133q0 71 44.5 122.5t146.5 98.5q-65 49 -96 112t-31 153q0 199 
125.5 315.5t341.5 116.5q83 0 166 -23h395l-35 -166l-174 -41q16 -52 16 -118q0 
-195 -121 -308.5t-329 -113.5q-59 0 -99 10q-84 -27 -84 -78 q0 -34 30 -49t89 
-23l137 -18q163 -21 237.5 -84.5t74.5 -183.5q0 -211 -156 -323t-446 -112q-208 0 
-324.5 75.5t-116.5 207.5zM150 -172q0 -115 194 -115q151 0 228 45t77 127q0 39 
-32.5 60t-137.5 35l-114 14q-106 -14 [...]
+<glyph unicode="h" horiz-adv-x="1237" d="M37 0l330 1556h301q-39 -181 -60 
-278t-86 -309h8q62 77 138 123.5t176 46.5q138 0 213.5 -83.5t75.5 -238.5q0 -73 
-23 -180l-133 -637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 
-114t-118 -318l-98 -463h-301z" />
+<glyph unicode="i" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM322 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 
-129.5t-136 -49.5q-151 0 -151 123z" />
+<glyph unicode="j" horiz-adv-x="608" d="M-264 -225q61 -21 114 -21q137 0 173 
170l253 1194h302l-265 -1239q-77 -371 -403 -371q-104 0 -174 25v242zM324 1380q0 
87 47.5 131.5t134.5 44.5q73 0 111 -31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 
-151 123z" />
+<glyph unicode="k" horiz-adv-x="1163" d="M37 0l330 1556h301l-148 -694q-8 -41 
-29 -117l-28 -102h4l453 475h344l-498 -504l285 -614h-336l-183 420l-120 -72l-74 
-348h-301z" />
+<glyph unicode="l" horiz-adv-x="608" d="M37 0l330 1556h301l-330 -1556h-301z" />
+<glyph unicode="m" horiz-adv-x="1853" d="M37 0l237 1118h230l-21 -207h6q146 228 
355 228q219 0 262 -228h6q68 110 160.5 169t197.5 59q136 0 207.5 -85t71.5 -237q0 
-76 -23 -180l-133 -637h-301l138 653q16 68 16 119q0 123 -98 123q-92 0 -166.5 
-112t-118.5 -318l-96 -465h-301l137 653q16 68 16 119 q0 123 -98 123q-92 0 -167 
-114t-118 -318l-98 -463h-301z" />
+<glyph unicode="n" horiz-adv-x="1237" d="M37 0l237 1118h230l-21 -207h6q146 228 
355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 -637h-301l137 653q16 
68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 -463h-301z" />
+<glyph unicode="o" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 -243z" 
/>
+<glyph unicode="p" horiz-adv-x="1219" d="M-68 -492l342 1610h230l-17 -170h9q138 
191 317 191q146 0 230.5 -107.5t84.5 -300.5q0 -191 -68.5 -367.5t-187.5 -280t-262 
-103.5q-83 0 -143 37t-111 126h-8q-12 -159 -43 -295l-72 -340h-301zM420 399q0 -80 
37 -128t102 -48q67 0 128 69t98.5 189.5t37.5 237.5 q0 176 -131 176q-68 0 -131.5 
-67.5t-102 -180t-38.5 -248.5z" />
+<glyph unicode="q" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 278t257 
98.5q86 0 152.5 -37.5t124.5 -126.5h8l57 143h232l-342 -1610h-301q47 218 73 
337.5t84 304.5h-8q-72 -94 -143 -132t-154 -38q-88 0 -156 47.5t-106.5 138.5t-38.5 
219zM395 399q0 -88 36.5 -132t103.5 -44q64 0 127.5 70t100 181 t36.5 245q0 80 
-37.5 128t-102.5 48q-68 0 -129.5 -72t-98 -190t-36.5 -234z" />
+<glyph unicode="r" horiz-adv-x="862" d="M37 0l237 1118h230l-21 -207h6q147 228 
353 228q59 0 96 -11l-66 -290q-45 16 -100 16q-116 0 -203.5 -91.5t-124.5 
-262.5l-106 -500h-301z" />
+<glyph unicode="s" horiz-adv-x="969" d="M23 45v248q157 -90 319 -90q80 0 131 
32.5t51 88.5q0 43 -37 77t-131 86q-121 68 -169 135.5t-48 159.5q0 170 110.5 
263.5t315.5 93.5q201 0 363 -95l-99 -215q-140 84 -258 84q-57 0 -92 -25.5t-35 
-68.5q0 -39 32 -68.5t120 -74.5q123 -63 178 -137t55 -170 q0 -188 -124.5 
-288.5t-346.5 -100.5q-107 0 -186.5 15t-148.5 50z" />
+<glyph unicode="t" horiz-adv-x="840" d="M94 889l29 147l196 84l132 236h194l-49 
-238h283l-50 -229h-282l-115 -539q-6 -30 -6 -53q0 -74 88 -74q65 0 162 
35v-225q-111 -53 -266 -53q-150 0 -220.5 63t-70.5 195q0 50 12 112l115 539h-152z" 
/>
+<glyph unicode="u" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 604h301l-137 
-653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 463h301l-237 
-1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 238.5z" />
+<glyph unicode="v" horiz-adv-x="1049" d="M102 1118h295l45 -586q7 -133 7 
-231h6q55 153 92 223l297 594h323l-604 -1118h-323z" />
+<glyph unicode="w" horiz-adv-x="1614" d="M125 1118h281l4 -495l-4 -167l-7 
-171h4q6 20 14 41.5t51 136.5t46 119l231 536h328v-536q0 -142 -10 -297h6l28 80q73 
208 95 258l219 495h307l-530 -1118h-330l-6 520q0 155 10 340h-6q-62 -178 -123 
-319l-233 -541h-324z" />
+<glyph unicode="x" horiz-adv-x="1087" d="M-100 0l479 573l-225 545h321l115 
-334l244 334h354l-467 -561l244 -557h-326l-125 342l-264 -342h-350z" />
+<glyph unicode="y" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 147.5 
48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 119.5t65 
153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 19v240z" />
+<glyph unicode="z" horiz-adv-x="932" d="M-47 0l35 180l575 705h-397l51 
233h750l-43 -200l-566 -685h439l-49 -233h-795z" />
+<glyph unicode="{" horiz-adv-x="727" d="M-8 459l45 229q122 0 192.5 41.5t92.5 
138.5l61 285q38 170 131 239.5t270 69.5h84l-49 -225q-90 -2 -130.5 -34.5t-55.5 
-106.5l-66 -297q-45 -207 -276 -236v-8q85 -26 126.5 -82.5t41.5 -134.5q0 -44 -15 
-113l-36 -178q-7 -28 -7 -51q0 -54 33.5 -74t91.5 -20v-226 h-53q-167 0 -253.5 
63.5t-86.5 184.5q0 57 14 125l39 184q15 69 15 86q0 140 -209 140z" />
+<glyph unicode="|" d="M455 -465v2015h219v-2015h-219z" />
+<glyph unicode="}" horiz-adv-x="727" d="M-100 -98q93 3 137 35.5t59 105.5l66 
297q25 111 95 166t181 69v9q-168 51 -168 217q0 43 15 112l37 179q6 30 6 51q0 54 
-36.5 74t-109.5 20l41 225h33q340 0 340 -248q0 -56 -14 -124l-39 -185q-15 -69 -15 
-86q0 -139 209 -139l-45 -229q-122 0 -192.5 -42t-91.5 -139 l-62 -284q-37 -170 
-130.5 -240t-270.5 -70h-45v226z" />
+<glyph unicode="~" d="M109 551v231q101 109 256 109q64 0 117 -14t139 -50q64 -27 
111 -41t95 -14q51 0 112 30.5t122 90.5v-231q-103 -109 -256 -109q-59 0 -109 
11.5t-147 51.5q-89 38 -127 47t-80 9q-54 0 -116.5 -33t-116.5 -88z" />
+<glyph unicode="&#xa1;" horiz-adv-x="586" d="M-74 -371l256 977h242l-158 
-977h-340zM195 924q0 85 54 139.5t144 54.5q73 0 114.5 -37t41.5 -104q0 -92 -55.5 
-145.5t-149.5 -53.5q-68 0 -108.5 38t-40.5 108z" />
+<glyph unicode="&#xa2;" d="M164 584q0 193 62.5 355t178 262.5t267.5 123.5l33 
158h188l-35 -158q118 -14 225 -65l-92 -230q-53 23 -105 40t-118 17q-133 0 -216 
-143t-83 -336q0 -96 45 -144t127 -48q75 0 140 23.5t134 58.5v-246q-136 -71 -299 
-80l-41 -192h-188l49 210q-134 36 -203 136 t-69 258z" />
+<glyph unicode="&#xa3;" d="M-12 0l49 246q196 48 244 264l22 104h-192l45 
220h192l49 247q41 197 162 300.5t313 103.5q195 0 369 -86l-113 -232q-141 68 -237 
68q-75 0 -123 -39.5t-68 -132.5l-47 -229h299l-45 -220h-299l-18 -84q-42 -195 -209 
-270h655l-55 -260h-993z" />
+<glyph unicode="&#xa4;" d="M115 1047l147 147l127 -127q91 53 197 53q105 0 196 
-55l127 129l150 -143l-129 -129q53 -89 53 -199q0 -107 -53 -199l125 -125l-146 
-145l-127 125q-95 -51 -196 -51q-115 0 -199 51l-125 -123l-145 145l127 125q-54 93 
-54 197q0 102 54 197zM397 723 q0 -77 54.5 -132.5t134.5 -55.5q81 0 136.5 55t55.5 
133q0 80 -56.5 135t-135.5 55q-78 0 -133.5 -56t-55.5 -134z" />
+<glyph unicode="&#xa5;" d="M88 221l37 178h252l29 138h-252l39 178h196l-192 
747h297l114 -590l371 590h311l-506 -747h203l-39 -178h-252l-28 -138h252l-37 
-178h-252l-47 -221h-291l47 221h-252z" />
+<glyph unicode="&#xa6;" d="M455 350h219v-815h-219v815zM455 
735v815h219v-815h-219z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M20 55v224q172 -105 345 -105q99 0 
144.5 35t45.5 92q0 39 -33 72.5t-127 79.5q-117 57 -181 131t-64 176q0 89 47.5 
163t154.5 142q-42 34 -70 84.5t-28 107.5q0 149 117 234.5t313 85.5q172 0 344 
-88l-82 -193q-147 84 -282 84q-144 0 -144 -106q0 -43 40.5 -76 t127.5 -72q242 
-106 242 -303q0 -188 -193 -303q38 -35 64 -85.5t26 -108.5q0 -161 -126 
-253.5t-345 -92.5q-204 0 -336 75zM393 797q0 -54 43.5 -96.5t143.5 -88.5q49 31 
75.5 78.5t26.5 95.5q0 109 -176 181q-51 - [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M397 1382q0 78 42.5 118t119.5 
40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 
118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" 
/>
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 
-305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 
223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM485 721q0 225 117.5 
351t325.5 126q142 0 284 -72l-75 -174q-114 58 -205 58q-111 0 -163 -73t-52 -214q0 
-134 55.5 -203t159.5 -69q43 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="772" d="M152 1020q0 117 46 228t123 
171t177 60q120 0 180 -103h6l39 90h154l-158 -702h-154l8 92h-2q-80 -104 -202 
-104q-103 0 -160 70t-57 198zM356 1014q0 -111 86 -111q45 0 84 41.5t65.5 120t26.5 
154.5q0 106 -88 106q-73 0 -123.5 -96t-50.5 -215z" />
+<glyph unicode="&#xab;" horiz-adv-x="1151" d="M72 551v18l401 463l191 -155l-279 
-334l135 -350l-246 -103zM559 551v18l402 463l190 -155l-279 -334l136 -350l-246 
-103z" />
+<glyph unicode="&#xac;" d="M109 612v219h952v-583h-219v364h-733z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M41 424l53 250h524l-53 
-250h-524z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M125 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM266 731q0 -164 81.5 
-305t224 -223t305.5 -82q167 0 308 83t221.5 223.5t80.5 303.5 t-80.5 303.5t-222 
223.5t-307.5 83q-164 0 -306.5 -82.5t-223.5 -223.5t-81 -304zM571 293v874h308q173 
0 265.5 -67.5t92.5 -200.5q0 -86 -44 -149.5t-130 -96.5l197 -360h-254l-138 
297h-67v-297h-230zM801 758h51q72 0 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556l45 201h1036l-45 
-201h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M164 1137q0 93 46.5 173.5t127.5 
126.5t172 46q93 0 173.5 -47t126.5 -127t46 -172q0 -93 -46 -173t-126 -125.5t-174 
-45.5q-93 0 -173 45t-126.5 125t-46.5 174zM354 1137q0 -63 45.5 -108.5t110.5 
-45.5q66 0 111 46t45 108q0 63 -45.5 110t-110.5 47t-110.5 -47.5 t-45.5 -109.5z" 
/>
+<glyph unicode="&#xb1;" d="M109 0v219h952v-219h-952zM109 
674v219h366v369h219v-369h367v-219h-367v-365h-219v365h-366z" />
+<glyph unicode="&#xb2;" horiz-adv-x="776" d="M59 586l35 166l273 219q111 91 141 
122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 
87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 
-95h347l-41 -200h-648z" />
+<glyph unicode="&#xb3;" horiz-adv-x="776" d="M92 625v192q125 -72 254 -72q76 0 
125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127l34 160h90q84 0 132.5 28t48.5 85q0 
40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 313 92q130 0 206.5 -55.5t76.5 
-155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 -176 q0 -131 -107 -209t-285 
-78q-75 0 -145.5 15.5t-120.5 40.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M483 1241v25q79 88 222 
303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1249" d="M-68 -492l342 1610h301l-135 
-645q-16 -70 -16 -125q0 -60 31.5 -92.5t79.5 -32.5q90 0 162.5 106.5t117.5 
319.5l98 469h301l-237 -1118h-229l18 176h-6q-117 -196 -266 -196q-51 0 -89.5 
19.5t-58.5 47.5h-6q-8 -66 -21.5 -139t-82.5 -400h-304z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M147 1042q0 256 107.5 385t343.5 
129h604v-1816h-162v1616h-166v-1616h-161v819q-62 -18 -146 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="584" d="M131 695q0 90 53.5 144t150.5 
54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-207 -301q63 -23 125 -23q102 0 
102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 -116 -83 
-179t-234 -63q-86 0 -152 23v168z" />
+<glyph unicode="&#xb9;" horiz-adv-x="776" d="M129 1214l399 248h207l-186 
-876h-246l84 397q24 109 55 207q-16 -15 -80 -60l-131 -81z" />
+<glyph unicode="&#xba;" horiz-adv-x="754" d="M162 1038q0 197 104 319t277 
122q129 0 197.5 -73.5t68.5 -211.5q0 -128 -48.5 -232.5t-132.5 -157t-196 
-52.5q-134 0 -202 75t-68 211zM371 1026q0 -111 80 -111q63 0 105 85.5t42 207.5q0 
107 -76 107q-64 0 -107.5 -89.5t-43.5 -199.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1151" d="M0 227l279 334l-136 350l246 
103l203 -461v-18l-402 -463zM487 227l279 334l-135 350l246 103l202 -461v-18l-401 
-463z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1804" d="M177 0l1087 1462h236l-1084 
-1462h-239zM97 1214l399 248h207l-186 -876h-246l84 397q24 109 55 207q-16 -15 -80 
-60l-131 -81zM844 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 
-151h-238l33 151h-373zM1078 320h174l58 231l22 74q-13 -20 -43 -58 t-211 -247z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1804" d="M940 1l35 166l273 219q111 91 141 
122t44.5 59t14.5 56q0 42 -25.5 62t-60.5 20q-86 0 -188 -82l-100 158q74 57 156 
87t192 30q123 0 196.5 -63t73.5 -160q0 -70 -22 -123t-70 -103.5t-189 -152.5l-129 
-95h347l-41 -200h-648zM97 1214l399 248h207l-186 -876h-246 l84 397q24 109 55 
207q-16 -15 -80 -60l-131 -81zM177 0l1087 1462h236l-1084 -1462h-239z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1804" d="M310 0l1087 1462h236l-1084 
-1462h-239zM905 152l31 174l475 557h260l-121 -563h119l-35 -168h-119l-32 
-151h-238l33 151h-373zM1139 320h174l58 231l22 74q-13 -20 -43 -58t-211 -247zM133 
625v192q125 -72 254 -72q76 0 125 30.5t49 88.5q0 37 -26 62.5t-88 25.5h-127 l34 
160h90q84 0 132.5 28t48.5 85q0 40 -26 60t-71 20q-86 0 -188 -66l-82 150q142 92 
313 92q130 0 206.5 -55.5t76.5 -155.5q0 -87 -51 -145.5t-166 -88.5v-4q154 -33 154 
-176q0 -131 -107 -209t-285 -78q- [...]
+<glyph unicode="&#xbf;" horiz-adv-x="940" d="M-68 -59q0 82 28.5 148.5t83.5 
124t189 146.5q93 62 128 106.5t51 106.5l8 33h258l-14 -78q-19 -105 -76.5 
-180t-169.5 -151q-122 -83 -156.5 -126t-34.5 -98q0 -118 133 -118q50 0 106.5 
16t201.5 84l92 -221q-221 -125 -445 -125q-177 0 -280 87.5t-103 244.5z M418 924q0 
86 54.5 140t143.5 54q73 0 114.5 -37t41.5 -104q0 -92 -55.5 -145.5t-149.5 
-53.5q-68 0 -108.5 38t-40.5 108z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM539 1886v21h311q36 -148 115 -303v-25h-184q-71 69 
-138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM735 1579v25q79 88 222 303h335v-17q-46 -56 -154 
-152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM426 1579v25q63 57 153 147t142 156h338q22 -54 74 
-142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM448 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 
-35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 
t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM516 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 
-39 -116.5t-121 -43.5q-135 0 -135 110zM918 1720q0 78 42 118t120 40 q65 0 99 
-28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1286" d="M-123 0l766 1468h373l147 
-1468h-297l-24 348h-473l-172 -348h-320zM494 608h333l-26 350q-10 131 -10 
253v36q-44 -120 -109 -254zM585 1565q0 109 68.5 173t179.5 64q110 0 182 -65t72 
-170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM737 1565 q0 -45 
24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 25.5t-69 -25.5t-27 -70.5z" 
/>
+<glyph unicode="&#xc6;" horiz-adv-x="1833" d="M-123 0l922 1462h1104l-54 
-254h-512l-67 -321h477l-55 -254h-478l-79 -377h512l-54 -256h-817l74 
348h-426l-219 -348h-328zM588 608h317l127 600h-80z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1253" d="M123 553q0 262 104 482.5t278 
335t400 114.5q125 0 222 -22.5t208 -82.5l-118 -250q-106 59 -175 78t-137 19q-132 
0 -237.5 -81t-169.5 -238.5t-64 -338.5q0 -167 68.5 -248t218.5 -81q146 0 338 
77v-260q-199 -77 -400 -77q-254 0 -395 149.5t-141 423.5zM356 -301 q63 -23 125 
-23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 -178q0 
-116 -83 -179t-234 -63q-86 0 -152 23v168z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM480 
1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM608 1579v25q79 
88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xca;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM368 1579v25q63 
57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 
168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1110" d="M53 0l309 1462h818l-54 
-254h-512l-67 -321h477l-55 -254h-477l-80 -377h512l-54 -256h-817zM438 1720q0 78 
42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 
110zM840 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5 t-120.5 
-43.5q-135 0 -135 110z" />
+<glyph unicode="&#xcc;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM241 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 
153.5t-103.5 153.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM414 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 
-158.5h-209z" />
+<glyph unicode="&#xce;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM128 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xcf;" horiz-adv-x="659" d="M53 0l312 1462h305l-312 
-1462h-305zM222 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 
-116.5t-121 -43.5q-135 0 -135 110zM624 1720q0 78 42 118t120 40q65 0 99 -28t34 
-80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1386" d="M37 596l55 254h139l131 
612h396q270 0 417.5 -143t147.5 -410q0 -280 -98 -486.5t-283.5 -314.5t-437.5 
-108h-451l125 596h-141zM412 256h106q148 0 258 76t172 223.5t62 337.5q0 154 -72.5 
234.5t-208.5 80.5h-115l-75 -358h237l-55 -254h-238z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1546" d="M53 0l309 1462h357l340 
-1077h4q12 76 39 217t180 860h274l-309 -1462h-342l-356 1106h-6l-4 -32q-32 -216 
-66 -386l-145 -688h-275zM563 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 
-35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5 
t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM627 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 
153.5t-103.5 153.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM753 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 
-158.5h-209z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM499 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM520 1577q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 
-16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 
36t-62.5 16.5q-31 0 -55.5 -28t-38 [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1495" d="M123 537q0 265 99 487.5t273 
341.5t402 119q255 0 395 -144t140 -403q0 -283 -99 -506.5t-271 -337.5t-396 
-114q-256 0 -399.5 147.5t-143.5 409.5zM434 537q0 -147 66.5 -222t187.5 -75t220.5 
87t155.5 246t56 357q0 142 -65 219.5t-183 77.5q-121 0 -222 -91.5 t-158.5 
-251.5t-57.5 -347zM585 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 
-116.5t-121 -43.5q-135 0 -135 110zM987 1720q0 78 42 118t120 40q65 0 99 -28t34 
-80q0 -73 -39.5 -116.5t-120.5 -43.5q-13 [...]
+<glyph unicode="&#xd7;" d="M129 1024l152 154l301 -299l305 299l153 -150l-305 
-305l301 -303l-149 -152l-305 301l-301 -299l-150 152l297 301z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1495" d="M100 29l121 151q-98 138 -98 
357q0 265 99 487.5t273 341.5t402 119q182 0 305 -76l105 131l151 -117l-117 
-145q91 -134 91 -340q0 -283 -99 -506.5t-271 -337.5t-396 -114q-180 0 -304 
71l-108 -137zM424 537q0 -32 8 -101l596 754q-69 43 -158 43q-126 0 -229 -91.5 
t-160 -252.5t-57 -352zM539 270q59 -37 153 -37q124 0 226 89t158.5 247.5t56.5 
360.5l-5 80z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM576 1886v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5 t-103.5 
153.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM757 1579v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 
h-209z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM475 1579v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5 
v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1415" d="M141 401q0 72 15 138l196 
923h305l-194 -919q-17 -74 -17 -125q0 -178 189 -178q123 0 195 76.5t104 228.5l194 
917h306l-201 -946q-57 -266 -218 -401t-419 -135q-212 0 -333.5 113.5t-121.5 
307.5zM565 1720q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 
-43.5q-135 0 -135 110zM967 1720q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 
-39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 
592h342l-618 -903l-119 -559h-303l119 559zM606 1579v25q79 88 222 303h335v-17q-46 
-56 -154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xde;" horiz-adv-x="1188" d="M53 0l309 1462h306l-50 
-229h35q242 0 366 -106.5t124 -319.5q0 -243 -170.5 -378.5t-466.5 -135.5h-86l-62 
-293h-305zM475 547h55q139 0 222.5 66.5t83.5 185.5q0 180 -195 180h-74z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1350" d="M-260 -225q61 -21 115 -21q133 0 
170 178l254 1207q47 224 182 326t385 102q208 0 331 -90t123 -240q0 -114 -49 
-192t-178 -152q-73 -42 -96 -68.5t-23 -54.5q0 -23 22 -49.5t79 -69.5q107 -83 
144.5 -150.5t37.5 -150.5q0 -170 -123.5 -270t-337.5 -100q-187 0 -297 61 v240q128 
-78 258 -78q101 0 148 33t47 86q0 40 -26.5 75t-108.5 97q-94 72 -129 130t-35 
126q0 84 45 145t162 127q66 37 104.5 76t38.5 96q0 62 -39.5 98.5t-124.5 36.5q-96 
0 -156 -51.5t-85 -171.5l-254 -1 [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM443 1548v21h311q36 -148 115 -303v-25h-184q-71 
69 -138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM598 1241v25q79 88 222 303h335v-17q-46 -56 
-154 -152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM311 1240v25q63 57 153 147t142 156h338q22 -54 
74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM333 1239q59 309 281 309q49 0 87.5 -16.5t71.5 
-36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 
16.5t-69.5 36t-61.5 36t-62.5 16.5q- [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM397 1382q0 78 42.5 118t119.5 40q133 0 133 
-108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM799 1382q0 78 42 118t120 
40q65 0 99 -28t34 -80q0 -73 -39.5 -116. [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1217" d="M90 385q0 198 72 377.5t189 
278t257 98.5q97 0 167.5 -42t109.5 -122h8l57 143h232l-238 -1118h-229l14 
145h-4q-134 -165 -319 -165q-147 0 -231.5 106.5t-84.5 298.5zM395 399q0 -88 33.5 
-132t95.5 -44q69 0 133 67t103 181.5t39 259.5q0 71 -38.5 117.5t-101.5 46.5 q-68 
0 -129.5 -72t-98 -190t-36.5 -234zM521 1477q0 109 68.5 173t179.5 64q110 0 182 
-65t72 -170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 174.5zM673 1477q0 
-45 24 -71t72 -26q42 0 69.5 26t27 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1786" d="M90 385q0 200 68.5 375.5t185 
277t258.5 101.5q96 0 160.5 -38.5t114.5 -125.5h6l57 143h188l-18 -90q44 49 120.5 
80t168.5 31q157 0 246.5 -83.5t89.5 -221.5q0 -187 -167 -288.5t-476 -101.5h-52l-2 
-19v-19q0 -96 55.5 -147.5t159.5 -51.5q66 0 152 23t162 63v-227 q-179 -86 -361 
-86q-109 0 -179.5 27t-117.5 87l-16 -94h-188l14 145h-6q-71 -88 -146.5 
-126.5t-167.5 -38.5q-146 0 -227.5 109t-81.5 296zM395 399q0 -84 32.5 -130t90.5 
-46q72 0 134 68t99 184.5t37 243.5q [...]
+<glyph unicode="&#xe7;" horiz-adv-x="989" d="M90 391q0 212 74.5 385.5t209.5 
268t308 94.5q182 0 328 -72l-92 -229q-54 23 -106 40t-118 17q-85 0 -153.5 
-64t-107 -175.5t-38.5 -239.5q0 -96 45.5 -144.5t126.5 -48.5q76 0 141 23.5t134 
58.5v-246q-152 -79 -336 -79q-201 0 -308.5 107.5t-107.5 303.5zM184 -301 q63 -23 
125 -23q102 0 102 82q0 34 -31 56.5t-110 31.5l96 154h185l-39 -72q141 -49 141 
-178q0 -116 -83 -179t-234 -63q-86 0 -152 23v168z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195zM423 1548v21h311q36 -148 115 -303v-25h-184q-71 69 
-138.5 153.5t-103.5 153.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195zM528 1241v25q79 88 222 303h335v-17q-46 -56 -154 
-152.5t-194 -158.5h-209z" />
+<glyph unicode="&#xea;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195zM292 1241v25q63 57 153 147t142 156h338q22 -54 74 
-142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1141" d="M90 412q0 207 82.5 377.5t223.5 
260t319 89.5q177 0 276 -81.5t99 -223.5q0 -187 -167 -288.5t-477 -101.5h-51l-2 
-21v-20q0 -91 51.5 -143.5t147.5 -52.5q87 0 158 19t172 67v-227q-172 -86 -390 
-86q-210 0 -326 113t-116 319zM428 647h45q155 0 241.5 48.5 t86.5 131.5q0 95 -105 
95q-88 0 -166 -80t-102 -195zM365 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 
-73 -39 -116.5t-121 -43.5q-135 0 -135 110zM767 1382q0 78 42 118t120 40q65 0 99 
-28t34 -80q0 -73 -39.5 -1 [...]
+<glyph unicode="&#xec;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM153 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 
153.5t-103.5 153.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM291 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 
-158.5h-209z" />
+<glyph unicode="&#xee;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM36 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xef;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301zM126 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 
-116.5t-121 -43.5q-135 0 -135 110zM528 1382q0 78 42 118t120 40q65 0 99 -28t34 
-80q0 -73 -39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1182" d="M72 406q0 165 64.5 301t180.5 
212t265 76q83 0 151.5 -31t114.5 -94h6q-20 213 -117 310l-231 -131l-88 147l200 
113q-34 34 -124 80l118 186q134 -61 232 -139l237 131l76 -152l-192 -106q81 -107 
113 -235t32 -279q0 -249 -69.5 -432.5t-203.5 -283t-323 -99.5 q-216 0 -329 
110t-113 316zM375 377q0 -81 39 -126.5t114 -45.5q66 0 122.5 55.5t89 148.5t32.5 
193q0 77 -38.5 122.5t-108.5 45.5q-73 0 -130 -53t-88.5 -143t-31.5 -197z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1237" d="M37 0l237 1118h230l-21 
-207h6q146 228 355 228q138 0 213.5 -83.5t75.5 -238.5q0 -73 -23 -180l-133 
-637h-301l137 653q16 68 16 119q0 123 -108 123q-92 0 -167 -114t-118 -318l-98 
-463h-301zM358 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16 q34 
0 58 25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 
36t-62.5 16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 
-243zM419 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5t-103.5 
153.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 
-243zM571 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5h-209z" 
/>
+<glyph unicode="&#xf4;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 
-243zM300 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 
-160.5v-25h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 
-243zM314 1239q59 309 281 309q49 0 87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 
25.5t46 80.5h172q-66 -309 -287 -309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 
16.5q-31 0 -55.5 -28t-38.5 -79h-177z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1198" d="M90 410q0 213 71.5 379.5t206.5 
258t316 91.5q196 0 310 -118t114 -325q0 -211 -70.5 -374t-203.5 -252.5t-316 
-89.5q-195 0 -311.5 117.5t-116.5 312.5zM393 410q0 -185 150 -185q75 0 135 
61.5t93.5 171t33.5 238.5q0 197 -143 197q-75 0 -134.5 -61t-97 -179 t-37.5 
-243zM386 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5t-121 
-43.5q-135 0 -135 110zM788 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 
-39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xf7;" d="M109 612v219h952v-219h-952zM444 373q0 76 37 
113.5t103 37.5t102.5 -39t36.5 -112q0 -70 -37 -111t-102 -41t-102.5 39t-37.5 
113zM444 1071q0 75 37 113.5t103 38.5q67 0 103 -40.5t36 -111.5q0 -70 -37 
-110.5t-102 -40.5t-102.5 39t-37.5 112z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1198" d="M43 6l119 148q-72 107 -72 256q0 
213 71.5 379.5t206.5 258t316 91.5q131 0 227 -56l70 88l145 -110l-84 -105q66 -107 
66 -260q0 -211 -70.5 -374t-203.5 -252.5t-316 -89.5q-123 0 -225 53l-109 
-135zM385 426l365 453q-35 24 -88 24q-81 0 -144.5 -62.5t-98 -169.5 t-34.5 
-233v-12zM457 238q11 -8 35.5 -15.5t50.5 -7.5q114 0 193 133t79 318v16z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 
604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 
463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 
238.5zM419 1548v21h311q36 -148 115 -303v-25h-184q-71 69 -138.5 153.5 t-103.5 
153.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 
604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 
463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 
238.5zM610 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 
h-209z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 
604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 
463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 
238.5zM334 1241v25q63 57 153 147t142 156h338q22 -54 74 -142.5t102 -160.5v-25 
h-198q-63 53 -162 168q-105 -88 -232 -168h-217z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1237" d="M111 301q0 93 24 213l127 
604h301l-137 -653q-16 -68 -16 -119q0 -123 108 -123q92 0 167 114t118 318l98 
463h301l-237 -1118h-230l21 207h-6q-145 -227 -355 -227q-138 0 -211 82.5t-73 
238.5zM411 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 
-43.5q-135 0 -135 110zM813 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 
-39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 
147.5 48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 
119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 
19v240zM497 1241v25q79 88 222 303h335v-17q-46 -56 -154 -152.5t-194 -158.5 
h-209z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M-68 -492l435 2048h301l-66 
-307q-29 -131 -80 -280h8q131 170 283 170q150 0 232.5 -106.5t82.5 -301.5q0 -199 
-69 -381t-182 -276t-250 -94q-178 0 -271 163h-8q-12 -159 -43 -295l-72 
-340h-301zM420 399q0 -80 33.5 -128t105.5 -48q69 0 129 65t97.5 183.5 t37.5 
247.5q0 88 -37.5 132t-103.5 44q-71 0 -130 -65t-95.5 -184.5t-36.5 -246.5z" />
+<glyph unicode="&#xff;" horiz-adv-x="1063" d="M-141 -233q68 -13 116 -13q84 0 
147.5 48t117.5 149l26 49l-164 1118h295l56 -518q14 -122 14 -293h6q20 51 44 
119.5t65 153.5l260 538h327l-680 -1278q-177 -332 -483 -332q-90 0 -147 
19v240zM310 1382q0 78 42.5 118t119.5 40q133 0 133 -108q0 -73 -39 -116.5 t-121 
-43.5q-135 0 -135 110zM712 1382q0 78 42 118t120 40q65 0 99 -28t34 -80q0 -73 
-39.5 -116.5t-120.5 -43.5q-135 0 -135 110z" />
+<glyph unicode="&#x131;" horiz-adv-x="608" d="M37 0l237 1118h301l-237 
-1118h-301z" />
+<glyph unicode="&#x152;" horiz-adv-x="1845" d="M123 537q0 265 99 487.5t273 
341.5t402 119q140 0 209 -23h809l-53 -254h-512l-68 -321h477l-55 -254h-477l-80 
-377h512l-53 -256h-760q-93 -20 -180 -20q-256 0 -399.5 147.5t-143.5 409.5zM434 
537q0 -147 66.5 -222t187.5 -75q88 0 158 32l194 916q-62 39 -168 39 q-121 0 -222 
-91.5t-158.5 -251.5t-57.5 -347z" />
+<glyph unicode="&#x153;" horiz-adv-x="1806" d="M90 414q0 216 69 380.5t200 
254.5t309 90q209 0 313 -160q154 160 399 160q177 0 276 -81.5t99 -223.5q0 -187 
-167 -288.5t-476 -101.5h-51l-2 -21v-20q0 -91 51 -143.5t147 -52.5q87 0 158 
19t172 67v-227q-93 -46 -185.5 -66t-203.5 -20q-116 0 -208 38.5t-138 106.5 q-63 
-68 -147 -106.5t-207 -38.5q-187 0 -297.5 117t-110.5 317zM393 414q0 -91 36.5 
-140t109.5 -49q109 0 179 134.5t70 336.5q0 96 -37 146.5t-106 50.5q-71 0 -127 
-60.5t-90.5 -176.5t-34.5 -242zM1094 6 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1155" d="M186 1462h312l129 -592l374 
592h342l-618 -903l-119 -559h-303l119 559zM432 1720q0 78 42.5 118t119.5 40q133 0 
133 -108q0 -73 -39 -116.5t-121 -43.5q-135 0 -135 110zM834 1720q0 78 42 118t120 
40q65 0 99 -28t34 -80q0 -73 -39.5 -116.5t-120.5 -43.5 q-135 0 -135 110z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M311 1241v25q63 57 153 147t142 
156h338q22 -54 74 -142.5t102 -160.5v-25h-198q-63 53 -162 168q-105 -88 -232 
-168h-217z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M532 1477q0 109 68.5 173t179.5 
64q110 0 182 -65t72 -170q0 -107 -70 -173.5t-184 -66.5q-110 0 -179 63.5t-69 
174.5zM684 1477q0 -45 24 -71t72 -26q42 0 69.5 26t27.5 71t-27.5 70.5t-69.5 
25.5t-69 -25.5t-27 -70.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M315 1239q59 309 281 309q49 0 
87.5 -16.5t71.5 -36t62 -35.5t60 -16q34 0 58 25.5t46 80.5h172q-66 -309 -287 
-309q-49 0 -86.5 16.5t-69.5 36t-61.5 36t-62.5 16.5q-31 0 -55.5 -28t-38.5 
-79h-177z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M41 424l53 250h524l-53 
-250h-524z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M41 424l53 250h524l-53 
-250h-524z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M41 424l53 250h524l-53 
-250h-524z" />
+<glyph unicode="&#x2013;" horiz-adv-x="983" d="M41 436l49 230h852l-49 
-230h-852z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M41 436l49 230h1835l-49 
-230h-1835z" />
+<glyph unicode="&#x2018;" horiz-adv-x="440" d="M115 983q103 227 262 
479h225q-91 -213 -194 -501h-285z" />
+<glyph unicode="&#x2019;" horiz-adv-x="440" d="M106 961q89 206 195 501h285l8 
-22q-103 -227 -262 -479h-226z" />
+<glyph unicode="&#x201a;" horiz-adv-x="569" d="M-102 -264q88 207 194 502h285l8 
-23q-103 -227 -262 -479h-225z" />
+<glyph unicode="&#x201c;" horiz-adv-x="887" d="M115 983q103 227 262 
479h225q-91 -213 -194 -501h-285zM561 983q103 227 262 479h226q-97 -227 -195 
-501h-285z" />
+<glyph unicode="&#x201d;" horiz-adv-x="887" d="M106 961q89 206 195 501h285l8 
-22q-103 -227 -262 -479h-226zM553 961q23 53 46.5 111t148.5 390h284l8 -22q-103 
-227 -262 -479h-225z" />
+<glyph unicode="&#x201e;" horiz-adv-x="1018" d="M-102 -264q88 207 194 
502h285l8 -23q-103 -227 -262 -479h-225zM346 -264q24 57 49 118.5t146 383.5h284l9 
-23q-100 -221 -263 -479h-225z" />
+<glyph unicode="&#x2022;" horiz-adv-x="739" d="M104 686q0 106 42.5 194t120 
136.5t182.5 48.5q120 0 182.5 -67t62.5 -191q0 -177 -91.5 -277t-248.5 -100q-117 0 
-183.5 67t-66.5 189z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1706" d="M25 115q0 90 53.5 144t150.5 
54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5zM586 
115q0 90 53.5 144t150.5 54q68 0 109 -38t41 -107q0 -87 -55 -141t-144 -54q-73 0 
-114 37.5t-41 104.5zM1147 115q0 90 53.5 144t150.5 54q68 0 109 -38 t41 -107q0 
-87 -55 -141t-144 -54q-73 0 -114 37.5t-41 104.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="664" d="M72 551v18l401 463l191 
-155l-279 -334l135 -350l-246 -103z" />
+<glyph unicode="&#x203a;" horiz-adv-x="664" d="M0 227l279 334l-136 350l246 
103l203 -461v-18l-402 -463z" />
+<glyph unicode="&#x2044;" horiz-adv-x="256" d="M-532 0l1087 1462h236l-1084 
-1462h-239z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="776" d="M47 737l31 174l475 557h260l-121 
-563h119l-35 -168h-119l-32 -151h-238l33 151h-373zM281 905h174l58 231l22 74q-13 
-20 -43 -58t-211 -247z" />
+<glyph unicode="&#x20ac;" d="M41 481l37 178h127q9 67 22 115h-125l39 176h135q87 
252 250.5 393.5t374.5 141.5q100 0 179 -23t165 -80l-125 -223q-87 49 -131 
63.5t-90 14.5q-97 0 -176 -74.5t-135 -212.5h348l-39 -176h-360q-11 -34 -25 
-115h299l-37 -178h-280q0 -120 44.5 -181.5t147.5 -61.5 q133 0 283 63v-258q-126 
-63 -330 -63q-446 0 -446 501h-152z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M106 
1313v149h564v-149h-199v-572h-168v572h-197zM715 741v721h248l159 -510l170 
510h240v-721h-168v408l4 121h-6l-174 -529h-141l-166 529h-7l5 -111v-418h-164z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1120" d="M0 
1120h1120v-1120h-1120v1120z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1352" d="M-219 -225q61 -21 115 -21q61 0 
107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 
87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 
-62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM780 0 
l237 1118h301l-237 -1118h-301zM1065 1380q0 87 47.5 131.5t134.5 44.5q73 0 111 
-31t38 -89q0 -80 -44 -129.5t-136 -49.5q-151 0 -151 123z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1352" d="M-219 -225q61 -21 115 -21q61 0 
107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 
87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 
-62h219l-49 -229h-220l-215 -1010q-77 -371 -403 -371q-104 0 -174 25v242zM780 0 
l330 1556h301l-330 -1556h-301z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2048" d="M-219 -225q61 -21 115 -21q61 0 
107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 
87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 
-62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-79 -224 q-69 31 -134 
31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 
-404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 
-1010q-77 -371 -403 -371q-104 0 -174 25 [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="2048" d="M-219 -225q61 -21 115 -21q61 0 
107 40t65 130l204 965h-163l30 145l183 84l18 84q41 190 138.5 277.5t273.5 
87.5q131 0 235 -49l-80 -224q-69 31 -133 31q-57 0 -92 -40t-47 -105l-12 
-62h395l18 84q41 190 138.5 277.5t273.5 87.5q131 0 235 -49l-79 -224 q-69 31 -134 
31q-57 0 -91.5 -40t-47.5 -105l-12 -62h219l-49 -229h-219l-215 -1010q-77 -371 
-404 -371q-104 0 -174 25v242q61 -21 115 -21q136 0 172 170l205 965h-396l-215 
-1010q-77 -371 -403 -371q-104 0 -174 25 [...]
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.ttf
new file mode 100755
index 0000000..6a30fa9
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.woff
new file mode 100755
index 0000000..46778a2
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-BoldItalic-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.eot
new file mode 100755
index 0000000..2f7ae28
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.svg
new file mode 100755
index 0000000..009e1d7
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansExtrabold" horiz-adv-x="1200" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="594" d="M82 1462h432l-51 -946h-330zM86 166q0 
91 54 141.5t157 50.5q102 0 154.5 -50.5t52.5 -141.5q0 -90 -54.5 -140.5t-152.5 
-50.5q-99 0 -155 50.5t-56 140.5z" />
+<glyph unicode="&#x22;" horiz-adv-x="1073" d="M121 1462h356l-41 -528h-274zM596 
1462h356l-41 -528h-274z" />
+<glyph unicode="#" horiz-adv-x="1356" d="M37 391v254h274l31 
168h-238v260h287l72 389h268l-74 -389h166l72 389h268l-73 -389h229v-260h-277l-30 
-168h243v-254h-290l-74 -391h-268l73 391h-168l-71 -391h-267l72 391h-225zM578 
645h165l31 168h-166z" />
+<glyph unicode="$" d="M80 1044q0 165 106 258t318 115v137h207v-135q199 -11 401 
-98l-119 -285q-209 94 -377 94q-80 0 -112.5 -19.5t-32.5 -57.5q0 -33 23.5 
-54.5t81.5 -48t161 -61.5q209 -74 300 -168.5t91 -243.5q0 -168 -106.5 -273t-310.5 
-130v-193h-207v187q-219 10 -422 98v332 q116 -59 252 -98.5t239 -39.5q85 0 124.5 
20.5t39.5 68.5q0 33 -28.5 56t-95 52t-179.5 70q-127 47 -205 105.5t-113.5 
131t-35.5 180.5zM613 1462z" />
+<glyph unicode="%" horiz-adv-x="1942" d="M37 1026q0 220 98 338.5t275 118.5q175 
0 278 -123t103 -334q0 -220 -99 -340.5t-282 -120.5q-172 0 -272.5 124.5t-100.5 
336.5zM338 1022q0 -115 19 -166t57 -51t56.5 50t18.5 167q0 115 -18.5 166t-56.5 
51q-39 0 -57.5 -52t-18.5 -165zM412 0l811 1462h297 l-811 -1462h-297zM1149 444q0 
220 98 338.5t275 118.5q175 0 278 -123t103 -334q0 -219 -99.5 -339.5t-281.5 
-120.5q-172 0 -272.5 124.5t-100.5 335.5zM1450 440q0 -115 19 -166t57 -51q43 0 
59.5 58.5t16.5 158.5t-16.5 15 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1636" d="M72 406q0 262 272 401q-62 70 
-96.5 148.5t-34.5 177.5q0 160 123.5 254t339.5 94q211 0 328.5 -93.5t117.5 
-254.5q0 -111 -63.5 -205.5t-200.5 -177.5l199 -189q75 115 104 260h406q-30 -138 
-94.5 -276.5t-145.5 -237.5l320 -307h-506l-99 102q-90 -57 -147.5 -78.5 t-129 
-32.5t-163.5 -11q-158 0 -279.5 54t-186 151t-64.5 221zM475 434q0 -63 45 -103t119 
-40q57 0 100 15t66 34l-248 252q-82 -61 -82 -158zM565 1120q0 -75 88 -155q57 32 
87 76.5t30 91.5q0 49 -28.5 70.5t [...]
+<glyph unicode="'" horiz-adv-x="598" d="M121 1462h356l-41 -528h-274z" />
+<glyph unicode="(" horiz-adv-x="735" d="M74 582q0 290 71 523t209 398h326q-126 
-175 -194 -412t-68 -507q0 -261 66 -495.5t194 -412.5h-324q-137 158 -208.5 
388t-71.5 518zM493 1485z" />
+<glyph unicode=")" horiz-adv-x="735" d="M55 1503h326q139 -166 210 -402t71 
-519t-71.5 -514.5t-209.5 -391.5h-324q126 172 193 408.5t67 499.5q0 265 -66 
501.5t-196 417.5zM247 1485z" />
+<glyph unicode="*" horiz-adv-x="1100" d="M45 1014l45 291l348 -101l-39 
352h303l-38 -352l356 101l37 -295l-314 -21l207 -278l-260 -138l-143 283l-123 
-281l-272 136l206 278z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M72 
588v268h372v367h269v-367h372v-268h-372v-361h-269v361h-372z" />
+<glyph unicode="," horiz-adv-x="633" d="M57 -285q29 138 58.5 309.5t40.5 
274.5h342l14 -23q-97 -381 -176 -561h-279z" />
+<glyph unicode="-" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="." horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 
152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode="/" horiz-adv-x="905" d="M10 -20l545 1503h346l-545 -1503h-346z" 
/>
+<glyph unicode="0" d="M72 729q0 390 130 572t398 182q261 0 394.5 -189.5t133.5 
-564.5q0 -388 -130 -568.5t-398 -180.5q-262 0 -395 188.5t-133 560.5zM465 729q0 
-248 31 -341t104 -93q74 0 104.5 96t30.5 338q0 243 -31 340.5t-104 97.5t-104 
-94t-31 -344z" />
+<glyph unicode="1" d="M84 1053l502 409h356v-1462h-401v774q0 141 6 258q-37 -45 
-92 -94l-166 -137z" />
+<glyph unicode="2" d="M45 1249q113 101 190 144.5t167.5 66.5t203.5 23q142 0 
253.5 -50t173 -142.5t61.5 -207.5q0 -86 -21.5 -159t-66.5 -143.5t-119.5 
-148.5t-317.5 -296v-10h553v-326h-1061v260l357 361q153 160 200 218.5t65.5 
100.5t18.5 88q0 57 -37 90t-104 33q-69 0 -139.5 -39.5 t-159.5 -116.5z" />
+<glyph unicode="3" d="M70 59v328q96 -49 195.5 -72.5t183.5 -23.5q130 0 189.5 
36.5t59.5 114.5q0 60 -31 92.5t-100 49t-180 16.5h-90v297h92q301 0 301 154q0 58 
-44.5 86t-119.5 28q-140 0 -290 -94l-164 264q116 80 237.5 114t278.5 34q227 0 356 
-90t129 -248q0 -136 -83 -233.5 t-240 -141.5v-6q366 -46 366 -346q0 -204 -161.5 
-321t-448.5 -117q-118 0 -218.5 17t-217.5 62z" />
+<glyph unicode="4" d="M35 283v290l608 
889h365v-884h161v-295h-161v-283h-390v283h-583zM377 578h241v170q0 48 3.5 
129.5t5.5 85.5h-11q-34 -77 -77 -144z" />
+<glyph unicode="5" d="M94 59v324q87 -40 196.5 -66t188.5 -26q110 0 169 46.5t59 
137.5q0 84 -60 131t-182 47q-93 0 -201 -35l-145 72l55 772h834v-329h-498l-18 
-193q78 15 111 16.5t61 1.5q126 0 227.5 -58.5t158 -165.5t56.5 -247q0 -245 -147.5 
-376t-446.5 -131q-256 0 -418 79z" />
+<glyph unicode="6" d="M70 618q0 306 87.5 495.5t258 279.5t420.5 90q89 0 208 
-17v-309q-100 19 -217 19q-198 0 -295 -87t-106 -284h12q90 170 289 170q195 0 
302.5 -125.5t107.5 -349.5q0 -241 -136 -380.5t-380 -139.5q-259 0 -405 168t-146 
470zM463 512q0 -96 41 -157.5t108 -61.5 q63 0 102.5 47.5t39.5 151.5q0 178 -138 
178q-68 0 -110.5 -46t-42.5 -112z" />
+<glyph unicode="7" d="M78 1133v327h1055v-233l-515 -1227h-409l502 1133h-633z" />
+<glyph unicode="8" d="M68 385q0 127 61 216.5t205 162.5q-116 78 -169.5 
167.5t-53.5 196.5q0 168 131 261.5t362 93.5t359.5 -93t128.5 -264q0 -116 -60.5 
-203.5t-191.5 -152.5q162 -92 228.5 -183.5t66.5 -197.5q0 -195 -141 -302t-394 
-107q-258 0 -395 104.5t-137 300.5zM430 401 q0 -62 44 -99.5t122 -37.5q176 0 176 
129q0 49 -38.5 96.5t-137.5 106.5q-89 -47 -127.5 -94.5t-38.5 -100.5zM481 1092q0 
-86 117 -152q71 41 97 75t26 77q0 48 -35 77t-84 29q-51 0 -86 -29.5t-35 -76.5z" />
+<glyph unicode="9" d="M53 958q0 243 138.5 381t379.5 138q268 0 415 -178t147 
-506q0 -429 -185 -621t-592 -192q-134 0 -204 10v313q86 -16 172 -16q212 0 327 
87.5t125 276.5h-12q-39 -72 -77 -104t-93 -49t-137 -17q-190 0 -297 127t-107 
350zM436 963q0 -82 35 -130.5t107 -48.5 q65 0 113 47t48 113q0 89 -44.5 
153t-112.5 64q-65 0 -105.5 -47t-40.5 -151z" />
+<glyph unicode=":" horiz-adv-x="592" d="M86 166q0 92 54.5 142t158.5 50q99 0 
152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM86 956q0 
91 55 141t158 50q99 0 152 -50t53 -141q0 -90 -54 -141t-151 -51q-102 0 -157.5 
51t-55.5 141z" />
+<glyph unicode=";" horiz-adv-x="608" d="M57 -285q29 138 58.5 309.5t40.5 
274.5h342l14 -23q-97 -381 -176 -561h-279zM92 956q0 91 53.5 141t157.5 50q100 0 
153.5 -50.5t53.5 -140.5t-54 -141t-153 -51q-102 0 -156.5 50.5t-54.5 141.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1159" d="M72 627v172l1011 506v-297l-620 
-283l620 -252v-295z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M72 358v271h1015v-271h-1015zM72 
815v268h1015v-268h-1015z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1159" d="M72 178v295l620 252l-620 
283v297l1011 -506v-172z" />
+<glyph unicode="?" horiz-adv-x="1034" d="M0 1341q249 142 520 142q223 0 350 
-98t127 -267q0 -121 -56.5 -209.5t-180.5 -167.5q-105 -68 -131.5 -99.5t-26.5 
-74.5v-51h-307v86q0 98 40 165.5t142 131.5q81 51 116.5 92t35.5 94q0 42 -38 
66.5t-99 24.5q-151 0 -353 -107zM252 166q0 92 53.5 142t157.5 50 q100 0 153.5 
-50.5t53.5 -141.5t-55.5 -141t-151.5 -50q-99 0 -155 49.5t-56 141.5z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M82 610q0 253 114.5 453.5t316 
309t456.5 108.5q234 0 413.5 -89t276 -253.5t96.5 -382.5q0 -141 -48.5 -263t-134.5 
-191t-196 -69q-79 0 -143 31.5t-100 87.5h-15q-107 -119 -260 -119q-183 0 -281 
107t-98 299q0 141 62 249.5t179 167t271 58.5q81 0 178.5 -16.5 t178.5 -44.5l-21 
-422l-2 -94q0 -86 49 -86q52 0 84.5 87t32.5 220q0 239 -135 369t-383 130q-190 0 
-330.5 -79t-214.5 -226.5t-74 -345.5q0 -255 142.5 -393.5t402.5 -138.5q116 0 
250.5 25t263.5 71v-229q-224 -95 -5 [...]
+<glyph unicode="A" horiz-adv-x="1487" d="M0 0l477 1468h527l483 -1468h-432l-72 
274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 207t-41.5 182q-9 -51 
-35.5 -168t-117.5 -461z" />
+<glyph unicode="B" horiz-adv-x="1380" d="M158 0v1462h510q298 0 442.5 
-88.5t144.5 -275.5q0 -123 -63 -210t-166 -112v-10q136 -36 197 -120t61 -218q0 
-199 -149.5 -313.5t-407.5 -114.5h-569zM553 305h139q185 0 185 156q0 73 -49.5 
112t-143.5 39h-131v-307zM553 901h119q85 0 131.5 35t46.5 104 q0 123 -186 
123h-111v-262z" />
+<glyph unicode="C" horiz-adv-x="1329" d="M104 727q0 227 85.5 399t246 
264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26q-141 0 -220 
-115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 
-81q-331 0 -507.5 192t-176.5 555z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M158 0v1462h506q352 0 543.5 
-180t191.5 -520q0 -366 -201.5 -564t-566.5 -198h-473zM553 324h88q180 0 264 
104.5t84 319.5q0 201 -79.5 298t-241.5 97h-115v-819z" />
+<glyph unicode="E" horiz-adv-x="1124" d="M158 
0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868z" />
+<glyph unicode="F" horiz-adv-x="1104" d="M158 
0v1462h864v-317h-475v-279h438v-317h-438v-549h-389z" />
+<glyph unicode="G" horiz-adv-x="1516" d="M104 735q0 354 202 551t566 197q138 0 
260.5 -26t213.5 -66l-125 -310q-158 78 -347 78q-173 0 -267.5 -112.5t-94.5 
-321.5q0 -205 85.5 -312.5t246.5 -107.5q88 0 162 17v229h-261v305h631v-788q-257 
-88 -565 -88q-338 0 -522.5 196t-184.5 559z" />
+<glyph unicode="H" horiz-adv-x="1569" d="M158 
0v1462h397v-542h459v542h397v-1462h-397v596h-459v-596h-397z" />
+<glyph unicode="I" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397z" />
+<glyph unicode="J" horiz-adv-x="721" d="M-162 -131q32 -6 68 -13.5t78 -7.5q98 0 
140 59t42 202v1353h397v-1319q0 -297 -130 -449.5t-390 -152.5q-108 0 -205 
21v307z" />
+<glyph unicode="K" horiz-adv-x="1407" d="M158 0v1462h397v-635q30 59 121 
187l307 448h432l-461 -655l453 -807h-446l-289 559l-117 -70v-489h-397z" />
+<glyph unicode="L" horiz-adv-x="1192" d="M158 0v1462h395v-1143h563v-319h-958z" 
/>
+<glyph unicode="M" horiz-adv-x="1980" d="M158 0v1462h526l305 -1038h8l299 
1038h527v-1462h-363v641q0 50 1.5 111t13.5 299h-9l-295 -1051h-376l-299 
1053h-9q21 -269 21 -418v-635h-350z" />
+<glyph unicode="N" horiz-adv-x="1708" d="M158 0v1462h516l532 -1016h6q-14 221 
-14 355v661h352v-1462h-518l-534 1030h-9q19 -243 19 -371v-659h-350z" />
+<glyph unicode="O" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="P" horiz-adv-x="1294" d="M158 0v1462h506q277 0 416 -121t139 
-344q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-485h-395zM553 807h72q89 0 141.5 
50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="Q" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -497 -316 -670l357 -411h-492l-258 325l-1 1v1l-1 
1q-344 0 -527.5 193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 
321q0 219 -73.5 323.5t-219.5 104.5q-297 0 -297 -428z" />
+<glyph unicode="R" horiz-adv-x="1386" d="M158 0v1462h479q596 0 596 -432q0 -254 
-248 -393l426 -637h-448l-310 532h-100v-532h-395zM553 829h74q207 0 207 183q0 151 
-203 151h-78v-334z" />
+<glyph unicode="S" horiz-adv-x="1182" d="M90 72v352q113 -58 235 -90.5t224 
-32.5q88 0 129 30.5t41 78.5q0 30 -16.5 52.5t-53 45.5t-194.5 94q-143 65 -214.5 
126t-106 140t-34.5 187q0 202 147 315t404 113q227 0 463 -105l-121 -305q-205 94 
-354 94q-77 0 -112 -27t-35 -67q0 -43 44.5 -77t241.5 -124 q189 -85 262.5 
-182.5t73.5 -245.5q0 -136 -69 -241.5t-199 -164t-305 -58.5q-146 0 -245 20.5t-206 
71.5z" />
+<glyph unicode="T" horiz-adv-x="1210" d="M51 
1139v323h1108v-323h-356v-1139h-395v1139h-357z" />
+<glyph unicode="U" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 
-225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 
-444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440z" />
+<glyph unicode="V" horiz-adv-x="1421" d="M0 1462h444l199 -741q62 -247 68 
-344q7 70 28 175t37 165l203 745h442l-479 -1462h-465z" />
+<glyph unicode="W" horiz-adv-x="2128" d="M31 1462h381l159 -733q54 -243 74 
-387q13 102 46.5 277t62.5 290l129 553h366l125 -553q32 -133 65 -307t44 -260q13 
111 71 385l162 735h381l-360 -1462h-467l-140 637q-10 40 -31.5 159t-31.5 199q-8 
-65 -26 -161.5t-35.5 -177.5t-145.5 -656h-467z" />
+<glyph unicode="X" horiz-adv-x="1481" d="M4 0l485 748l-456 714h438l264 
-452l254 452h451l-463 -745l498 -717h-457l-285 457l-282 -457h-447z" />
+<glyph unicode="Y" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 542h428l-481 
-891v-571h-398v559z" />
+<glyph unicode="Z" horiz-adv-x="1251" d="M61 0v244l633 
899h-618v319h1108v-243l-633 -900h649v-319h-1139z" />
+<glyph unicode="[" horiz-adv-x="664" d="M117 
-344v1847h499v-254h-182v-1339h182v-254h-499zM355 1485z" />
+<glyph unicode="\" horiz-adv-x="905" d="M6 1483h346l545 -1503h-346z" />
+<glyph unicode="]" horiz-adv-x="664" d="M47 
-90h182v1339h-182v254h500v-1847h-500v254zM317 1485z" />
+<glyph unicode="^" horiz-adv-x="1075" d="M-16 502l440 966h170l508 
-966h-295l-289 577l-124 -291l-124 -286h-286z" />
+<glyph unicode="_" horiz-adv-x="1024" d="M-4 -133h1032v-246h-1032v246z" />
+<glyph unicode="`" horiz-adv-x="1225" d="M264 1548v21h430q52 -70 203 -233l59 
-66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
+<glyph unicode="a" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 99.5l189 
6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 337.5 
-108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 -252 
96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 -7 
-193 -142z" />
+<glyph unicode="b" horiz-adv-x="1317" d="M135 0v1556h391v-352q0 -63 -14 
-217h14q57 88 131.5 127t169.5 39q185 0 293.5 -155t108.5 -429q0 -276 -109.5 
-432.5t-304.5 -156.5q-63 0 -112 13.5t-87.5 37.5t-89.5 80h-24l-62 -111h-305zM526 
555q0 -139 38 -199.5t124 -60.5q69 0 106 70.5t37 207.5 q0 273 -147 273q-82 0 
-120 -57t-38 -179v-55z" />
+<glyph unicode="c" horiz-adv-x="1104" d="M86 561q0 282 155 437t441 155q197 0 
371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 201 
-272q172 0 330 100v-311q-151 -100 -363 -100q-278 0 -421.5 150t-143.5 431z" />
+<glyph unicode="d" horiz-adv-x="1317" d="M86 565q0 276 111 432t305 156q95 0 
166.5 -38t130.5 -128h8q-19 133 -19 266v303h394v-1556h-295l-84 143h-15q-101 -163 
-301 -163q-121 0 -211.5 69t-140 203t-49.5 313zM481 559q0 -132 43 -201t123 
-69q94 0 132.5 59t41.5 182v31q0 150 -43 213.5t-135 63.5 q-77 0 -119.5 
-72.5t-42.5 -206.5z" />
+<glyph unicode="e" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 153.5q256 
0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 189.5 
19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 
428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 -136.5z" 
/>
+<glyph unicode="f" horiz-adv-x="846" d="M45 840v192l158 96v19q0 224 91.5 
322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 
-27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150z" />
+<glyph unicode="g" horiz-adv-x="1241" d="M20 -180q0 203 252 262q-52 22 -90.5 
71t-38.5 97q0 53 29 93.5t121 96.5q-88 39 -138.5 122t-50.5 202q0 185 126 287t360 
102q31 0 107 -7t112 -13h395v-189l-155 -57q32 -58 32 -135q0 -183 -128.5 
-284t-383.5 -101q-63 0 -100 8q-14 -26 -14 -49q0 -29 47 -44.5 t123 -15.5h188q381 
0 381 -321q0 -207 -176.5 -322t-495.5 -115q-241 0 -371.5 80.5t-130.5 231.5zM350 
-141q0 -48 52 -77.5t139 -29.5q142 0 227.5 35.5t85.5 91.5q0 45 -52 63.5t-149 
18.5h-153q-63 0 -106.5 -29.5t [...]
+<glyph unicode="h" horiz-adv-x="1372" d="M135 0v1556h391v-221q0 -150 -16 
-342h18q56 88 133 124t179 36q190 0 295.5 -109.5t105.5 -306.5v-737h-393v618q0 
228 -135 228q-96 0 -141.5 -80.5t-45.5 -267.5v-498h-391z" />
+<glyph unicode="i" horiz-adv-x="666" d="M127 1415q0 88 49 131t158 43t159 
-44t50 -130q0 -172 -209 -172q-207 0 -207 172zM137 0v1133h391v-1133h-391z" />
+<glyph unicode="j" horiz-adv-x="664" d="M-104 -162q64 -18 120 -18q119 0 119 
170v1143h391v-1225q0 -187 -109.5 -293.5t-310.5 -106.5q-48 0 -110.5 7.5t-99.5 
17.5v305zM125 1415q0 88 49 131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 
-207 172z" />
+<glyph unicode="k" horiz-adv-x="1350" d="M135 0v1556h393v-612q0 -157 -22 
-307h8q71 113 121 176l254 320h436l-393 -482l418 -651h-447l-248 406l-127 
-97v-309h-393z" />
+<glyph unicode="l" horiz-adv-x="662" d="M135 0v1556h391v-1556h-391z" />
+<glyph unicode="m" horiz-adv-x="2048" d="M135 0v1133h295l49 -140h23q45 78 
130.5 119t194.5 41q245 0 344 -149h31q48 70 133.5 109.5t188.5 39.5q201 0 297 
-103t96 -313v-737h-391v616q0 115 -31.5 172.5t-99.5 57.5q-90 0 -132 -77t-42 
-241v-528h-392v616q0 115 -30 172.5t-97 57.5q-92 0 -134 -82t-42 -268 
v-496h-391z" />
+<glyph unicode="n" horiz-adv-x="1372" d="M135 0v1133h295l49 -140h23q50 80 
138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391v618q0 113 -32.5 
170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391z" />
+<glyph unicode="o" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5z" />
+<glyph unicode="p" horiz-adv-x="1317" d="M135 -492v1625h318l55 -144h18q109 164 
301 164q188 0 295 -156t107 -428q0 -274 -111.5 -431.5t-302.5 -157.5q-86 0 -154 
28.5t-135 102.5h-18q18 -119 18 -148v-455h-391zM526 571q0 -146 39 -211t123 
-65q75 0 109 64.5t34 213.5q0 146 -34 209.5t-113 63.5 q-86 0 -120.5 -61.5t-37.5 
-182.5v-31z" />
+<glyph unicode="q" horiz-adv-x="1317" d="M86 565q0 276 110.5 432t301.5 156q205 
0 309 -160h8l29 140h338v-1625h-391v469q0 34 12 166h-12q-96 -163 -299 -163q-190 
0 -298 156t-108 429zM483 559q0 -148 41 -212t127 -64q89 0 129.5 55t40.5 186v47q0 
150 -41 214.5t-135 64.5q-162 0 -162 -291z" />
+<glyph unicode="r" horiz-adv-x="961" d="M135 0v1133h291l61 -181h19q49 90 136.5 
145.5t176.5 55.5q51 0 97 -8l22 -4l-35 -369q-48 12 -133 12q-128 0 -186 -58.5t-58 
-168.5v-557h-391z" />
+<glyph unicode="s" horiz-adv-x="1092" d="M119 819q0 158 122 246t345 88q112 0 
210.5 -24.5t204.5 -71.5l-106 -252q-78 35 -165 59.5t-142 24.5q-96 0 -96 -47q0 
-29 33.5 -49.5t193.5 -83.5q119 -49 177.5 -96t86 -110.5t27.5 -154.5q0 -182 -124 
-275t-356 -93q-126 0 -219 13.5t-190 49.5v313 q91 -40 199.5 -66t193.5 -26q127 0 
127 58q0 30 -35.5 53.5t-206.5 91.5q-156 64 -218 145.5t-62 206.5z" />
+<glyph unicode="t" horiz-adv-x="942" d="M53 840v159l174 123l101 
238h256v-227h278v-293h-278v-441q0 -110 106 -110q79 0 189 39v-285q-79 -34 -150.5 
-48.5t-167.5 -14.5q-197 0 -284 96.5t-87 296.5v467h-137z" />
+<glyph unicode="u" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 31.5 
-168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 -78 
-136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5z" />
+<glyph unicode="v" horiz-adv-x="1251" d="M0 1133h408l192 -670q1 -5 4 -17t6 
-28.5t5.5 -35t2.5 -34.5h7q0 52 18 113l201 672h407l-432 -1133h-387z" />
+<glyph unicode="w" horiz-adv-x="1864" d="M25 1133h385l92 -435q44 -224 51 
-372h6q3 92 55 350l105 457h432l96 -463q46 -221 58 -344h6q6 76 20 189.5t31 
182.5l100 435h377l-311 -1133h-418l-128 540l-30 163l-20 131h-6q-49 -280 -66 
-353l-115 -481h-411z" />
+<glyph unicode="x" horiz-adv-x="1290" d="M10 0l365 578l-346 555h444l172 
-318l176 318h445l-355 -555l369 -578h-444l-191 344l-190 -344h-445z" />
+<glyph unicode="y" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 
-123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 
-160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5z" />
+<glyph unicode="z" horiz-adv-x="1038" d="M49 0v223l469 
611h-442v299h889v-242l-449 -592h471v-299h-938z" />
+<glyph unicode="{" horiz-adv-x="887" d="M61 418v301q115 0 180.5 44.5t65.5 
125.5v254q0 139 49 208t159.5 100.5t305.5 31.5v-279q-89 -3 -120.5 -13.5t-50.5 
-32.5t-19 -60v-271q0 -113 -56.5 -173.5t-183.5 -78.5v-12q128 -20 184 -79t56 
-167v-276q0 -39 21 -61t56 -32.5t113 -13.5v-278q-197 0 -307 32 t-158.5 
101.5t-48.5 210.5v248q0 80 -67 125t-179 45z" />
+<glyph unicode="|" horiz-adv-x="1042" d="M387 -446v2002h268v-2002h-268z" />
+<glyph unicode="}" horiz-adv-x="887" d="M66 -66q108 4 149 29.5t41 77.5v276q0 
108 56 167t184 79v12q-127 18 -183.5 78.5t-56.5 173.5v271q0 39 -19.5 60.5t-50 
32t-120.5 13.5v279q196 0 306 -31.5t159 -100.5t49 -208v-254q0 -81 65 -125.5t180 
-44.5v-301q-111 0 -178 -45t-67 -125v-248q0 -140 -49 -210 t-159 -102t-306 
-32v278z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M72 526v281q104 108 264 108q69 0 130 
-13.5t150 -49.5q131 -55 238 -55q50 0 112.5 32t118.5 89v-281q-105 -109 -264 
-109q-71 0 -133.5 15t-146.5 49q-131 55 -236 55q-110 0 -233 -121z" />
+<glyph unicode="&#xa1;" horiz-adv-x="594" d="M82 -334l51 946h330l51 
-946h-432zM92 963q0 90 54 140t153 50q101 0 156 -50.5t55 -139.5q0 -91 -53.5 
-142t-157.5 -51q-102 0 -154.5 50.5t-52.5 142.5z" />
+<glyph unicode="&#xa2;" d="M129 739q0 240 113 388.5t323 189.5v166h207v-154q171 
-9 324 -84l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 -209q0 -272 
201 -272q172 0 330 100v-311q-127 -82 -285 -98v-180h-207v186q-212 31 -324 
176t-112 397z" />
+<glyph unicode="&#xa3;" d="M102 649v277h166v118q0 215 117 328t338 113q210 0 
405 -82l-110 -289q-148 55 -252 55q-58 0 -85.5 -33t-27.5 
-104v-106h344v-277h-344v-96q0 -150 -159 -227h671v-326h-1061v313q81 47 109.5 
76.5t41.5 67.5t13 94v98h-166z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1159" d="M96 1018l180 182l123 -123q84 41 
172 41q91 0 177 -45l120 127l185 -174l-127 -125q41 -76 41 -178q0 -94 -41 
-176l121 -119l-179 -178l-120 119q-89 -39 -177 -39q-100 0 -176 37l-119 -115l-178 
178l123 119q-41 82 -41 174q0 89 41 176zM436 723q0 -56 40.5 -95.5 t94.5 -39.5q58 
0 100 38.5t42 96.5t-42 97.5t-100 39.5q-56 0 -95.5 -40.5t-39.5 -96.5z" />
+<glyph unicode="&#xa5;" d="M8 1462h400l192 -504l193 504h399l-363 
-712h195v-211h-242v-117h242v-209h-242v-213h-364v213h-246v209h246v117h-246v211h190z"
 />
+<glyph unicode="&#xa6;" horiz-adv-x="1042" d="M387 393h268v-839h-268v839zM387 
717v839h268v-839h-268z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1024" d="M106 803q0 64 43 125t121 
108q-141 102 -141 246q0 137 111 216t295 79q191 0 370 -86l-98 -221q-73 40 -146.5 
63t-128.5 23q-108 0 -108 -74q0 -43 45.5 -79t128.5 -70q175 -71 252.5 -152t77.5 
-178q0 -77 -32 -137.5t-116 -120.5q125 -94 125 -244 q0 -149 -116.5 -237.5t-319.5 
-88.5q-204 0 -352 86v244q79 -44 182 -76t172 -32q139 0 139 96q0 42 -31 72.5t-139 
78.5q-141 63 -205.5 112t-96.5 108t-32 139zM397 834q0 -51 44 -91t155 -98q41 47 
41 107q0 57 -42 100t-140  [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1233" d="M223 1413q0 75 46 116.5t124 
41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 
41t-46 115zM702 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 
-113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1688" d="M92 731q0 200 100 375t275 
276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 
-273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 
79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5 q0 157 -77.5 
293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5zM434 
735q0 217 113 340t321 123q166 0 322 -78l-92 -205q-106 56 -211 56q-81 0 -126.5 
-61t-45.5 -179q0 -128 43.5 -185t134.5 -57q1 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="813" d="M49 967q0 116 77 171t267 64l88 
4v6q0 41 -25.5 58.5t-76.5 17.5q-57 0 -107.5 -15t-103.5 -40l-76 166q108 51 180.5 
65.5t163.5 14.5q139 0 218 -75.5t79 -213.5v-449h-162l-45 127q-48 -76 -104.5 
-107.5t-138.5 -31.5q-109 0 -171.5 63.5t-62.5 174.5zM301 979 q0 -32 18 -50t52 
-18q50 0 80 38.5t30 97.5v22l-84 -6q-96 -6 -96 -84z" />
+<glyph unicode="&#xab;" horiz-adv-x="1395" d="M74 561v27l389 483l280 -149l-272 
-347l272 -348l-280 -147zM649 561v27l387 483l283 -149l-275 -347l275 -348l-283 
-147z" />
+<glyph unicode="&#xac;" horiz-adv-x="1159" d="M72 
588v268h1013v-618h-270v350h-743z" />
+<glyph unicode="&#xad;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="&#xae;" horiz-adv-x="1688" d="M92 731q0 200 100 375t275 
276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 
-273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM256 731q0 -158 
79.5 -295.5t215.5 -215t293 -77.5q158 0 294 78.5t215 215t79 294.5 q0 157 -77.5 
293t-214 215.5t-296.5 79.5q-158 0 -294.5 -78.5t-215 -215t-78.5 -294.5zM506 
313v875h291q407 0 407 -270q0 -87 -33 -146.5t-108 -95.5l194 -363h-290l-146 
320h-35v-320h-280zM786 809h11q58 0 91.5 21.5t33 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v246h1036v-246h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="864" d="M63 1114q0 97 49 182.5t135 
136t185 50.5t185 -50.5t135 -135.5t49 -183q0 -97 -48.5 -181t-134 -133.5t-186.5 
-49.5q-99 0 -185 49t-135 133t-49 182zM301 1114q0 -50 38.5 -88.5t92.5 -38.5t92.5 
39t38.5 88q0 52 -37.5 92.5t-93.5 40.5t-93.5 -40.5t-37.5 -92.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1159" d="M72 0v268h1013v-268h-1013zM72 
684v268h372v367h269v-367h372v-268h-372v-360h-269v360h-372z" />
+<glyph unicode="&#xb2;" horiz-adv-x="817" d="M61 1350q80 73 167.5 104t203.5 
31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 
-173.5h347v-225h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 
-88z" />
+<glyph unicode="&#xb3;" horiz-adv-x="817" d="M63 1366q149 115 343 115q146 0 
232.5 -57.5t86.5 -157.5q0 -78 -37 -132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 
-120 -98 -187t-277 -67q-185 0 -309 70v233q117 -81 297 -81q116 0 116 67q0 41 
-32.5 56.5t-102.5 15.5h-104v194h80q71 0 105 18.5t34 59.5 q0 25 -21 46.5t-71 
21.5t-94 -17t-97 -57z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1225" d="M264 1241v29q154 165 195.5 
213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1376" d="M135 -492v1625h391v-615q0 -115 
33.5 -172t112.5 -57q93 0 134.5 83t41.5 265v496h393v-1133h-293l-53 152h-16q-34 
-88 -90.5 -130t-122.5 -42q-56 0 -90 20t-62 63q12 -90 12 -235v-320h-391z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1317" d="M102 1042q0 256 107.5 385t343.5 
129h633v-1816h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="592" d="M86 723q0 92 54.5 142t158.5 50q99 
0 152 -50t53 -142q0 -90 -54.5 -141.5t-150.5 -51.5q-100 0 -156.5 51t-56.5 142z" 
/>
+<glyph unicode="&#xb8;" horiz-adv-x="383" d="M-90 -258q83 -27 147 -27q52 0 52 
47q0 33 -41 58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 
-75 -174.5t-199 -65.5q-136 0 -213 29v205z" />
+<glyph unicode="&#xb9;" horiz-adv-x="817" d="M57 1188l340 
274h219v-876h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
+<glyph unicode="&#xba;" horiz-adv-x="803" d="M49 1104q0 177 94.5 276t259.5 
99q157 0 255 -103t98 -272q0 -174 -95.5 -274.5t-261.5 -100.5q-159 0 -254.5 
102.5t-95.5 272.5zM301 1104q0 -87 24 -129.5t76 -42.5q99 0 99 172q0 174 -99 
174q-100 0 -100 -174z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1395" d="M76 227l272 348l-272 347l282 
149l387 -483v-27l-387 -481zM649 227l275 348l-275 347l285 149l387 -483v-27l-387 
-481z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1919" d="M1028 140v188l350 
555h295v-542h125v-201h-125v-139h-275v139h-370zM1241 341h157v166q0 69 7 135q-40 
-100 -62 -133zM357 0l753 1462h302l-754 -1462h-301zM-12 1188l340 
274h219v-876h-282v356q0 35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1921" d="M1140 765q80 73 167.5 104t203.5 
31q142 0 219.5 -63t77.5 -175q0 -46 -13 -87t-40.5 -84.5t-74.5 -91t-198 
-173.5h347v-225h-674v207l215 213q84 84 116.5 129t32.5 79q0 58 -65 58q-81 0 -172 
-88zM381 0l753 1462h302l-754 -1462h-301zM-12 1188l340 274h219v-876 h-282v356q0 
35 3.5 118t6.5 99q-9 -19 -31.5 -43t-109.5 -98z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1921" d="M1100 140v188l350 
555h295v-542h125v-201h-125v-139h-275v139h-370zM1313 341h157v166q0 69 7 135q-40 
-100 -62 -133zM83 1366q149 115 343 115q146 0 232.5 -57.5t86.5 -157.5q0 -78 -37 
-132.5t-125 -86.5v-9q97 -24 144 -76t47 -139q0 -120 -98 -187t-277 -67 q-185 0 
-309 70v233q117 -81 297 -81q116 0 116 67q0 41 -32.5 56.5t-102.5 
15.5h-104v194h80q71 0 105 18.5t34 59.5q0 25 -21 46.5t-71 21.5t-94 -17t-97 
-57zM465 0l753 1462h302l-754 -1462h-301z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1034" d="M37 10q0 120 55 208t182 169q100 
64 129 97t29 77v51h307v-86q0 -98 -40 -165.5t-142 -131.5q-57 -36 -90 -66t-47 
-55.5t-14 -64.5q0 -42 37.5 -66t99.5 -24q148 0 352 106l139 -272q-243 -141 -520 
-141q-223 0 -350 98t-127 266zM365 963q0 90 54 140t152 50 q101 0 156 -49.5t55 
-140.5q0 -93 -53 -143t-158 -50q-101 0 -153.5 50t-52.5 143z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM272 1886v21h430q52 -70 203 -233l59 
-66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM532 1579v29q154 165 195.5 213t68.5 
86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM295 1579v29q69 65 144.5 153t113.5 
146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z " />
+<glyph unicode="&#xc3;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM330 1575q11 175 72 258.5t180 
83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5 
t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM352 1751q0 75 46 116.5t124 41.5q79 
0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41 t-46 
115zM831 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 
-113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1487" d="M0 0l477 1468h527l483 
-1468h-432l-72 274h-475l-74 -274h-434zM590 598h311l-63 240q-22 80 -53.5 
207t-41.5 182q-9 -51 -35.5 -168t-117.5 -461zM475 1614q0 116 71.5 185t192.5 
69q118 0 195 -70t77 -182q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5 t-71.5 
183.5zM655 1614q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5q0 38 -24.5 
61t-59.5 23t-59.5 -23t-24.5 -61z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1937" d="M-10 0l628 
1462h1221v-317h-473v-230h438v-317h-438v-276h473v-322h-870v274h-437l-100 
-274h-442zM653 602h316v526h-111z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1329" d="M104 727q0 227 85.5 399t246 
264.5t377.5 92.5q237 0 453 -103l-121 -311q-81 38 -162 64t-174 26q-141 0 -220 
-115.5t-79 -318.5q0 -422 321 -422q97 0 188 27t183 65v-334q-183 -81 -414 
-81q-331 0 -507.5 192t-176.5 555zM477 -258q83 -27 147 -27q52 0 52 47 q0 33 -41 
58.5t-107 40.5l72 139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 -75 
-174.5t-199 -65.5q-136 0 -213 29v205z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1124" d="M158 
0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM154 1886v21h430q52 
-70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1124" d="M158 
0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM362 1579v29q154 165 
195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xca;" horiz-adv-x="1124" d="M158 
0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM151 1579v29q69 65 
144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 
-194 -150h-258z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1124" d="M158 
0v1462h868v-317h-473v-230h438v-317h-438v-276h473v-322h-868zM187 1751q0 75 46 
116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 
0 -124 41t-46 115zM666 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 
-46.5 -113.5 t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-116 
1886v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" 
/>
+<glyph unicode="&#xcd;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM156 
1579v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xce;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-95 
1579v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 
150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xcf;" horiz-adv-x="713" d="M158 0v1462h397v-1462h-397zM-55 
1751q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 
-113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM424 1751q0 75 46 116.5t126 
41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 
t-45.5 114.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1503" d="M31 563v320h127v579h506q352 0 
543.5 -180t191.5 -520q0 -366 -201.5 -564t-566.5 -198h-473v563h-127zM553 
324h88q180 0 264 104.5t84 319.5q0 201 -79.5 298t-241.5 
97h-115v-260h211v-320h-211v-239z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1708" d="M158 0v1462h516l532 -1016h6q-14 
221 -14 355v661h352v-1462h-518l-534 1030h-9q19 -243 19 -371v-659h-350zM434 
1575q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 
73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33 t-85.5 33t-78.5 
15q-54 0 -72 -98h-180z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428zM397 1886v21h430q52 -70 203 -233 l59 
-66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428zM583 1579v29q154 165 195.5 213 t68.5 
86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428zM363 1579v29q69 65 144.5 153 t113.5 
146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428zM401 1575q11 175 72 258.5t180 83.5 q38 0 81 
-15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 
-87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 -98h-180z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q349 0 529 -191t180 -561q0 -369 -181 -561t-530 -192q-344 0 -527.5 
193t-183.5 562zM520 733q0 -424 295 -424q150 0 222.5 103t72.5 321q0 219 -73.5 
323.5t-219.5 104.5q-297 0 -297 -428zM403 1751q0 75 46 116.5t124 41.5 q79 0 
125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 
115zM882 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 
-113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114 [...]
+<glyph unicode="&#xd7;" horiz-adv-x="1159" d="M121 991l182 189l270 -267l275 
267l188 -183l-274 -274l270 -272l-184 -185l-275 271l-270 -269l-180 187l264 268z" 
/>
+<glyph unicode="&#xd8;" horiz-adv-x="1632" d="M104 735q0 365 182.5 557.5t530.5 
192.5q191 0 330 -55l76 118l190 -114l-82 -125q195 -189 195 -576q0 -369 -181 
-561t-530 -192q-177 0 -307 43l-84 -132l-193 125l84 125q-211 194 -211 594zM520 
733q0 -155 29 -239l403 639q-68 28 -135 28q-297 0 -297 -428z M698 324q54 -15 117 
-15q150 0 222.5 103t72.5 321q0 125 -18 211z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 
-225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 
-444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM280 1886v21h430q52 -70 203 
-233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 
-225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 
-444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM561 1579v29q154 165 195.5 
213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 
-225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 
-444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM322 1579v29q69 65 144.5 
153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150 q-125 -107 -194 
-150h-258z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1550" d="M150 573v889h397v-858q0 -155 58 
-225t171 -70q121 0 175.5 69.5t54.5 227.5v856h395v-880q0 -287 -162.5 
-444.5t-468.5 -157.5q-299 0 -459.5 153t-160.5 440zM362 1751q0 75 46 116.5t124 
41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5 q-78 0 -124 
41t-46 115zM841 1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 
-113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 
542h428l-481 -891v-571h-398v559zM471 1579v29q154 165 195.5 213t68.5 
86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xde;" horiz-adv-x="1284" d="M158 0v1462h395v-213h111q277 0 
416 -121t139 -344q0 -245 -144.5 -378.5t-410.5 -133.5h-111v-272h-395zM553 
594h72q89 0 141.5 50t52.5 138q0 148 -164 148h-102v-336z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1536" d="M135 0v1100q0 215 167 341t446 
126q276 0 433.5 -99.5t157.5 -277.5q0 -57 -20 -103.5t-49.5 -84t-64.5 -66.5t-64.5 
-52t-49.5 -41t-20 -32q0 -23 24.5 -44t93.5 -58q169 -95 228.5 -173t59.5 -202q0 
-174 -115 -264t-338 -90q-136 0 -221.5 12.5t-149.5 46.5v291 q49 -30 131.5 
-55t147.5 -25q61 0 99 23.5t38 62.5q0 28 -14.5 47t-50.5 42.5t-121 68.5q-126 67 
-175 124.5t-49 137.5q0 122 140 218q75 52 107 91.5t32 83.5q0 51 -49.5 85t-140.5 
34q-222 0 -222 -209v-1059h-391z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM204 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 
138.5t-228.5 168.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM434 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 
-163t-212 -144h-260z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM197 1238v29q69 65 144.5 153t113.5 146h393q94 -137 256 
-299v-29h-254q-84 48 -201 150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM244 1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 
-15q29 0 46 25t26 73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 
33t-85.5 33t-78.5 15q-54 0 -72  [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM268 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 
-71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 1413q0 75 46 116.5t126 
41.5t126.5 -43t46.5 -115q0 - [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1276" d="M74 346q0 181 126 269.5t365 
99.5l189 6v16q0 140 -138 140q-124 0 -315 -84l-113 258q198 102 500 102q218 0 
337.5 -108t119.5 -302v-743h-271l-75 150h-8q-79 -98 -161 -134t-212 -36q-160 0 
-252 96t-92 270zM473 360q0 -104 111 -104q71 0 121.5 45t50.5 117v88 l-90 -4q-193 
-7 -193 -142zM389 1489q0 116 71.5 185t192.5 69q118 0 195 -70t77 -182q0 -113 -76 
-183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 183.5zM569 1489q0 -37 21 -60.5t63 
-23.5q35 0 59.5 23.5t24.5 60 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1915" d="M74 352q0 345 497 363l183 6v18q0 
138 -136 138q-138 0 -313 -80l-110 256q190 100 454 100q201 0 336 -94q70 49 153 
71.5t199 22.5q229 0 360.5 -136.5t131.5 -383.5v-172h-696q4 -90 74 -146.5t186 
-56.5q194 0 364 86v-281q-94 -48 -191 -65.5t-225 -17.5 q-280 0 -430 190q-80 -83 
-141.5 -120.5t-138.5 -53.5t-197 -16q-162 0 -261 101.5t-99 270.5zM473 356q0 -100 
113 -100q69 0 119.5 45t50.5 117v88l-84 -4q-106 -4 -152.5 -38.5t-46.5 
-107.5zM1139 707h340q-2 82 -48  [...]
+<glyph unicode="&#xe7;" horiz-adv-x="1104" d="M86 561q0 282 155 437t441 
155q197 0 371 -86l-115 -289q-71 31 -131 49.5t-125 18.5q-95 0 -147 -74t-52 
-209q0 -272 201 -272q172 0 330 100v-311q-151 -100 -363 -100q-278 0 -421.5 
150t-143.5 431zM361 -258q83 -27 147 -27q52 0 52 47q0 33 -41 58.5t-107 40.5 l72 
139h203l-9 -29q96 -39 133 -92.5t37 -130.5q0 -109 -75 -174.5t-199 -65.5q-136 0 
-213 29v205z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 
153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 
189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 
428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 
-136.5zM189 1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 
138.5t-228.5 168.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 
153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 
189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 
428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 
-136.5zM471 1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 
-144h-260z" />
+<glyph unicode="&#xea;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 
153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 
189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 
428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 
-136.5zM205 1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 
48 -201 150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1266" d="M86 559q0 287 145 440.5t414 
153.5q256 0 395.5 -133.5t139.5 -384.5v-174h-699q4 -95 69.5 -149t178.5 -54q103 0 
189.5 19.5t187.5 66.5v-281q-92 -47 -190 -65t-234 -18q-283 0 -439.5 150.5t-156.5 
428.5zM489 707h336q-2 82 -46.5 131t-119.5 49q-69 0 -115.5 -43.5 t-54.5 
-136.5zM252 1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 
-46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM731 1413q0 75 46 116.5t126 
41.5t126.5 -43t46.5 -115q0 -71 -46.5 [...]
+<glyph unicode="&#xec;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-130 
1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" 
/>
+<glyph unicode="&#xed;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM107 
1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xee;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-120 
1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 
150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xef;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391zM-61 
1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 
-113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM418 1413q0 75 46 116.5t126 
41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5 
t-45.5 114.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1313" d="M88 498q0 239 130.5 377.5t348.5 
138.5q192 0 244 -84l8 4q-67 130 -143 207l-182 -119l-117 184l143 92l-149 93l108 
182q174 -73 266 -135l209 137l115 -182l-145 -97q159 -157 226 -327.5t67 -388.5q0 
-275 -152.5 -437.5t-415.5 -162.5q-259 0 -410 139t-151 379z M489 500q0 -242 164 
-242q91 0 127.5 71t36.5 216q0 84 -45 136t-119 52q-92 0 -128 -56t-36 -177z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1372" d="M135 0v1133h295l49 -140h23q50 80 
138.5 120t203.5 40q188 0 292.5 -109t104.5 -307v-737h-391v618q0 113 -32.5 
170.5t-104.5 57.5q-99 0 -143 -79t-44 -271v-496h-391zM274 1237q11 175 72 
258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182 q-11 -167 
-74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 
-98h-180z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM175 
1548v21h430q52 -70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z" 
/>
+<glyph unicode="&#xf3;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM416 
1241v29q154 165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM199 
1241v29q69 65 144.5 153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 
150q-125 -107 -194 -150h-258z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM231 
1237q11 175 72 258.5t180 83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 
73h182q-11 -167 -74 -254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 
15q-54 0 -72 -98h-180z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1305" d="M86 569q0 277 149.5 430.5t419.5 
153.5q167 0 295 -71t197.5 -203.5t69.5 -309.5q0 -278 -149.5 -433.5t-418.5 
-155.5q-258 0 -410.5 159t-152.5 430zM483 569q0 -146 39 -222.5t131 -76.5q91 0 
128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-90 0 -129 -73.5 t-39 -219.5zM239 
1413q0 75 46 116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 
-113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM718 1413q0 75 46 116.5t126 
41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5t-12 [...]
+<glyph unicode="&#xf7;" horiz-adv-x="1159" d="M72 588v268h1013v-268h-1013zM422 
332q0 82 39.5 126t116.5 44q75 0 116 -43.5t41 -126.5q0 -80 -43.5 -125t-113.5 
-45q-71 0 -113.5 44t-42.5 126zM422 1112q0 82 39.5 126t116.5 44q75 0 116 
-43.5t41 -126.5q0 -80 -43.5 -125t-113.5 -45q-71 0 -113.5 44t-42.5 126z " />
+<glyph unicode="&#xf8;" horiz-adv-x="1362" d="M86 569q0 277 157 430.5t441 
153.5q125 0 234 -39l71 111l168 -105l-67 -104q184 -158 184 -447q0 -280 -156.5 
-434.5t-439.5 -154.5q-125 0 -229 34l-84 -131l-170 107l79 123q-188 158 -188 
456zM461 569q0 -99 12 -147l289 448q-36 13 -82 13q-114 0 -166.5 -74 t-52.5 
-240zM606 258q27 -8 76 -8q114 0 165.5 73t51.5 246q0 86 -10 131z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 
31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 
-78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM175 1548v21h430q52 
-70 203 -233l59 -66v-29h-260q-69 44 -203.5 138.5t-228.5 168.5z " />
+<glyph unicode="&#xfa;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 
31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 
-78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM471 1241v29q154 
165 195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z " />
+<glyph unicode="&#xfb;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 
31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 
-78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM230 1241v29q69 65 
144.5 153t113.5 146h393q94 -137 256 -299v-29h-254 q-84 48 -201 150q-125 -107 
-194 -150h-258z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1372" d="M133 395v738h391v-619q0 -111 
31.5 -168t103.5 -57q101 0 144 79.5t43 268.5v496h391v-1133h-295l-49 141h-23q-49 
-78 -136.5 -119.5t-205.5 -41.5q-187 0 -291 108.5t-104 306.5zM272 1413q0 75 46 
116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 
-42.5q-78 0 -124 41t-46 115zM751 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 
-115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 
-123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 
-160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM401 1241v29q154 165 
195.5 213t68.5 86h428v-21q-80 -64 -220 -163t-212 -144h-260z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1317" d="M135 -492v2048h391v-344q0 -106 
-18 -225h18q43 78 122 122t179 44q185 0 293.5 -154t108.5 -430q0 -271 -111.5 
-430t-304.5 -159q-173 0 -287 129h-14l7 -60l7 -92v-449h-391zM526 571q0 -146 39 
-211t123 -65q80 0 111.5 70.5t31.5 207.5q0 134 -33 203.5t-116 69.5 q-85 0 -119 
-61.5t-37 -184.5v-29z" />
+<glyph unicode="&#xff;" horiz-adv-x="1249" d="M-2 1133h412l192 -650q14 -51 19 
-123h8q8 69 24 121l197 652h399l-448 -1205q-86 -230 -211.5 -325t-327.5 -95q-78 0 
-160 17v307q53 -12 121 -12q52 0 91 20t68 56.5t62 119.5zM216 1413q0 75 46 
116.5t124 41.5q79 0 125.5 -42.5t46.5 -115.5q0 -71 -46.5 -113.5 t-125.5 
-42.5q-78 0 -124 41t-46 115zM695 1413q0 75 46 116.5t126 41.5t126.5 -43t46.5 
-115q0 -71 -46.5 -113.5t-126.5 -42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="666" d="M137 0v1133h391v-1133h-391z" />
+<glyph unicode="&#x152;" horiz-adv-x="1960" d="M104 735q0 359 175 554.5t497 
195.5q67 0 143.5 -7t106.5 
-16h836v-317h-473v-230h436v-317h-436v-276h473v-322h-844q-34 -8 -110.5 
-14t-133.5 -6q-319 0 -494.5 200t-175.5 555zM520 733q0 -205 64.5 -314.5t191.5 
-109.5q141 0 217 43v760q-34 23 -93 36t-122 13 q-125 0 -191.5 -109.5t-66.5 
-318.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="2007" d="M86 569q0 277 149.5 430.5t419.5 
153.5q226 0 375 -127q155 127 400 127q227 0 359 -136t132 -384v-172h-696q4 -90 74 
-146.5t186 -56.5q194 0 364 86v-281q-92 -47 -187 -65t-228 -18q-238 0 -383 
137q-151 -137 -402 -137q-258 0 -410.5 159t-152.5 430zM485 569 q0 -146 38 
-222.5t130 -76.5q91 0 128.5 76.5t37.5 222.5q0 145 -38 219t-130 74q-89 0 -127.5 
-74t-38.5 -219zM1231 707h340q-2 82 -48 131t-116 49q-162 0 -176 -180z" />
+<glyph unicode="&#x178;" horiz-adv-x="1360" d="M0 1462h430l250 -542l252 
542h428l-481 -891v-571h-398v559zM268 1751q0 75 46 116.5t124 41.5q79 0 125.5 
-42.5t46.5 -115.5q0 -71 -46.5 -113.5t-125.5 -42.5q-78 0 -124 41t-46 115zM747 
1751q0 75 46 116.5t126 41.5t126.5 -43t46.5 -115q0 -71 -46.5 -113.5 t-126.5 
-42.5q-81 0 -126.5 41.5t-45.5 114.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1237" d="M164 1241v29q69 65 144.5 
153t113.5 146h393q94 -137 256 -299v-29h-254q-84 48 -201 150q-125 -107 -194 
-150h-258z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1120" d="M293 1489q0 116 71.5 185t192.5 
69q118 0 195 -70t77 -182q0 -113 -76 -183.5t-196 -70.5q-121 0 -192.5 68.5t-71.5 
183.5zM473 1489q0 -37 21 -60.5t63 -23.5q35 0 59.5 23.5t24.5 60.5q0 38 -24.5 
61t-59.5 23t-59.5 -23t-24.5 -61z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1225" d="M176 1237q11 175 72 258.5t180 
83.5q38 0 81 -15t87 -33t87 -33t81 -15q29 0 46 25t26 73h182q-11 -167 -74 
-254.5t-172 -87.5q-45 0 -90.5 15t-89.5 33t-85.5 33t-78.5 15q-54 0 -72 
-98h-180z" />
+<glyph unicode="&#x2000;" horiz-adv-x="959" />
+<glyph unicode="&#x2001;" horiz-adv-x="1919" />
+<glyph unicode="&#x2002;" horiz-adv-x="959" />
+<glyph unicode="&#x2003;" horiz-adv-x="1919" />
+<glyph unicode="&#x2004;" horiz-adv-x="639" />
+<glyph unicode="&#x2005;" horiz-adv-x="479" />
+<glyph unicode="&#x2006;" horiz-adv-x="319" />
+<glyph unicode="&#x2007;" horiz-adv-x="319" />
+<glyph unicode="&#x2008;" horiz-adv-x="239" />
+<glyph unicode="&#x2009;" horiz-adv-x="383" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="&#x2011;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="&#x2012;" horiz-adv-x="651" d="M43 393v312h565v-312h-565z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M74 414v276h876v-276h-876z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M74 414v276h1896v-276h-1896z" 
/>
+<glyph unicode="&#x2018;" horiz-adv-x="512" d="M20 899q100 391 177 561h278q-67 
-312 -98 -583h-342z" />
+<glyph unicode="&#x2019;" horiz-adv-x="512" d="M37 877q68 317 98 583h342l15 
-22q-92 -366 -177 -561h-278z" />
+<glyph unicode="&#x201a;" horiz-adv-x="633" d="M57 -285q29 138 58.5 309.5t40.5 
274.5h342l14 -23q-97 -381 -176 -561h-279z" />
+<glyph unicode="&#x201c;" horiz-adv-x="1022" d="M20 899q100 391 177 
561h278q-67 -312 -98 -583h-342zM530 899q100 391 177 561h278q-67 -312 -98 
-583h-342z" />
+<glyph unicode="&#x201d;" horiz-adv-x="1022" d="M37 877q68 317 98 583h342l15 
-22q-92 -366 -177 -561h-278zM547 877q68 317 98 583h342l14 -22q-93 -371 -176 
-561h-278z" />
+<glyph unicode="&#x201e;" horiz-adv-x="1143" d="M57 -285q29 138 58.5 
309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279zM567 -285q29 138 58.5 
309.5t40.5 274.5h342l14 -23q-97 -381 -176 -561h-279z" />
+<glyph unicode="&#x2022;" horiz-adv-x="803" d="M74 748q0 174 84.5 267t242.5 
93t243 -94.5t85 -265.5q0 -172 -87 -266.5t-241 -94.5q-155 0 -241 93t-86 268zM668 
1133z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1776" d="M86 166q0 92 54.5 142t158.5 
50q99 0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 
141zM678 166q0 92 54.5 142t158.5 50q99 0 152 -50t53 -142q0 -90 -54.5 
-140.5t-150.5 -50.5q-99 0 -156 50t-57 141zM1270 166q0 92 54.5 142t158.5 50 q99 
0 152 -50t53 -142q0 -90 -54.5 -140.5t-150.5 -50.5q-99 0 -156 50t-57 141z" />
+<glyph unicode="&#x202f;" horiz-adv-x="383" />
+<glyph unicode="&#x2039;" horiz-adv-x="819" d="M74 561v27l389 483l280 
-149l-272 -347l272 -348l-280 -147z" />
+<glyph unicode="&#x203a;" horiz-adv-x="819" d="M76 227l272 348l-272 347l282 
149l387 -483v-27l-387 -481z" />
+<glyph unicode="&#x2044;" horiz-adv-x="188" d="M-434 0l753 1462h302l-754 
-1462h-301z" />
+<glyph unicode="&#x205f;" horiz-adv-x="479" />
+<glyph unicode="&#x2074;" horiz-adv-x="817" d="M29 725v188l350 
555h295v-542h125v-201h-125v-139h-275v139h-370zM242 926h157v166q0 69 7 135q-40 
-100 -62 -133z" />
+<glyph unicode="&#x20ac;" d="M55 467v205h129l-2 21v22l2 43h-129v205h148q51 255 
212.5 387.5t413.5 132.5q180 0 349 -76l-119 -299q-120 51 -230 51q-112 0 -171.5 
-53.5t-71.5 -142.5h338v-205h-353l-2 -29v-14l2 -44v1h287v-205h-264q33 -164 260 
-164q145 0 266 55v-323q-102 -55 -291 -55 q-253 0 -412 126t-206 361h-156z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1577" d="M37 
1286v176h536v-176h-170v-545h-196v545h-170zM645 741v721h287l137 -479l150 
479h276v-721h-195v400q0 68 7 110h-9l-151 -510h-164l-143 510h-9q7 -56 7 
-110v-400h-193z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1135" d="M0 
1135h1135v-1135h-1135v1135z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1511" d="M973 1415q0 88 49 131t158 
43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM983 
0v1133h391v-1133h-391zM45 840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 
-12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 -27.5t-20.5 
-89.5v-30h241v-293h-241 v-840h-391v840h-150z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1507" d="M981 0v1556h391v-1556h-391zM45 
840v192l158 96v19q0 224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 
20 -141 20q-45 0 -65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150z" 
/>
+<glyph unicode="&#xfb03;" horiz-adv-x="2357" d="M45 840v192l158 96v19q0 224 
91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 
-27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM891 840v192l158 96v19q0 
224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253 q-72 20 -141 20q-45 0 
-65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM1819 1415q0 88 49 
131t158 43t159 -44t50 -130q0 -172 -209 -172q-207 0 -207 172zM1829 
0v1133h391v-1133h-391z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="2353" d="M45 840v192l158 96v19q0 224 
91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253q-72 20 -141 20q-45 0 -65.5 
-27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM891 840v192l158 96v19q0 
224 91.5 322t293.5 98q78 0 147.5 -12t161.5 -42l-84 -253 q-72 20 -141 20q-45 0 
-65.5 -27.5t-20.5 -89.5v-30h241v-293h-241v-840h-391v840h-150zM1827 
0v1556h391v-1556h-391z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.ttf
new file mode 100755
index 0000000..dacc5bb
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.woff
new file mode 100755
index 0000000..de4f8e7
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBold-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.eot
new file mode 100755
index 0000000..e4f4ab0
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.svg
new file mode 100755
index 0000000..a061258
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansExtraboldItalic" horiz-adv-x="1243" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="623" d="M12 127q0 107 65 170t179 63q87 0 133.5 
-40.5t46.5 -114.5q0 -110 -63.5 -170t-173.5 -60q-88 0 -137.5 38.5t-49.5 
113.5zM125 516l156 946h426l-254 -946h-328z" />
+<glyph unicode="&#x22;" horiz-adv-x="930" d="M182 934l72 528h342l-158 
-528h-256zM623 934l73 528h342l-157 -528h-258z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M14 393l21 238h266l57 200h-235l20 
242h285l111 389h270l-111 -389h168l111 389h270l-110 -389h221l-21 -242h-270l-57 
-200h243l-20 -238h-293l-111 -393h-270l113 393h-168l-113 -393h-270l112 
393h-219zM571 631h168l58 200h-168z" />
+<glyph unicode="$" horiz-adv-x="1188" d="M61 162v311q126 -59 228 -86t203 
-27q174 0 174 105q0 40 -32.5 72.5t-139.5 83.5q-139 62 -214 160t-75 227q0 176 
133.5 288t357.5 127l29 133h168l-31 -137q161 -15 314 -90l-140 -270q-158 71 -295 
71q-66 0 -103.5 -28t-37.5 -68q0 -53 39 -89.5t158 -94.5 q140 -68 205 -155.5t65 
-213.5q0 -178 -133 -290t-361 -125l-38 -187h-168l41 191q-221 16 -347 92z" />
+<glyph unicode="%" horiz-adv-x="1878" d="M80 887q0 173 54 309.5t154.5 
211.5t237.5 75q147 0 231.5 -85t84.5 -237q0 -165 -56.5 -303t-158 -215.5t-230.5 
-77.5q-159 0 -238 83.5t-79 238.5zM252 0l1089 1462h289l-1081 -1462h-297zM371 
891q0 -84 53 -84q52 0 89.5 110.5t37.5 239.5q0 43 -12 63.5t-41 20.5 q-50 0 -88.5 
-110t-38.5 -240zM1057 301q0 173 54 309.5t154.5 211.5t237.5 75q147 0 231.5 
-85t84.5 -237q0 -164 -56 -302t-158 -215.5t-231 -77.5q-159 0 -238 83t-79 
238zM1348 305q0 -84 53 -84q52 0 89.5 110.5 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1501" d="M8 385q0 159 87.5 264.5t271.5 
165.5q-37 46 -60.5 118.5t-23.5 131.5q0 197 126 308.5t355 111.5q189 0 302.5 
-88t113.5 -236q0 -130 -80 -233t-262 -197l129 -186q36 36 75.5 114.5t63.5 
161.5h383q-46 -161 -128.5 -305.5t-189.5 -253.5l191 -262h-442l-43 61 q-155 -81 
-349 -81q-244 0 -382 106.5t-138 298.5zM399 424q0 -62 47.5 -99.5t124.5 -37.5t138 
26l-193 279q-117 -52 -117 -168zM635 1092q0 -76 51 -144q72 31 106.5 79.5t34.5 
107.5q0 35 -22 60.5t-60 25.5q-49 0 [...]
+<glyph unicode="'" horiz-adv-x="487" d="M182 934l72 528h342l-158 -528h-256z" />
+<glyph unicode="(" horiz-adv-x="766" d="M68 326q0 330 124.5 619t387.5 
558h323q-260 -281 -384 -576t-124 -618q0 -150 32.5 -326t84.5 -307h-293q-67 120 
-109 299t-42 351zM720 1485z" />
+<glyph unicode=")" horiz-adv-x="766" d="M-133 -324q256 277 378 571.5t122 
622.5q0 150 -32.5 322.5t-86.5 310.5h295q71 -124 111 -298t40 -351q0 -341 -123 
-628t-378 -550h-326zM420 1485z" />
+<glyph unicode="*" horiz-adv-x="1110" d="M152 1108l100 278l319 -165l31 350l307 
-62l-116 -331l368 30l-22 -301l-310 41l148 -311l-285 -86l-80 303l-166 -244l-249 
185l254 229z" />
+<glyph unicode="+" horiz-adv-x="1159" d="M102 
586v272h353v352h270v-352h352v-272h-352v-348h-270v348h-353z" />
+<glyph unicode="," horiz-adv-x="627" d="M-104 -264q53 121 147 387l41 115h348l8 
-23q-116 -262 -256 -479h-288z" />
+<glyph unicode="-" horiz-adv-x="674" d="M23 393l63 312h553l-64 -312h-552z" />
+<glyph unicode="." horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 
-40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115z" />
+<glyph unicode="/" horiz-adv-x="956" d="M-90 -20l838 1503h344l-838 
-1503h-344z" />
+<glyph unicode="0" horiz-adv-x="1188" d="M63 465q0 295 85 533.5t235 362.5t348 
124q135 0 230.5 -62.5t145.5 -174.5t50 -265q0 -298 -85 -529.5t-235 -352.5t-348 
-121q-210 0 -318 126t-108 359zM453 457q0 -84 15 -123t60 -39q58 0 111.5 94.5t91 
265.5t37.5 336q0 85 -18.5 131.5t-63.5 46.5 q-55 0 -110 -111t-89 -282t-34 -319z" 
/>
+<glyph unicode="1" horiz-adv-x="1188" d="M150 1079l620 383h311l-307 
-1462h-389l174 799q28 132 76 256q-78 -68 -131 -103l-203 -125z" />
+<glyph unicode="2" horiz-adv-x="1188" d="M-57 0l53 256l483 436q248 221 248 
361q0 49 -26 73.5t-66 24.5q-120 0 -281 -147l-186 258q234 221 541 221q183 0 295 
-99.5t112 -269.5q0 -152 -87 -285t-298 -315l-205 -176v-12h490l-68 -326h-1005z" />
+<glyph unicode="3" horiz-adv-x="1188" d="M14 59v332q167 -100 377 -100q138 0 
206.5 46.5t68.5 133.5q0 54 -27 81t-86 39.5t-166 12.5h-84l53 291h78q147 0 229 
46.5t82 127.5q0 46 -36 74t-99 28q-117 0 -270 -84l-158 248q126 81 243.5 
114.5t258.5 33.5q201 0 321.5 -93t120.5 -253q0 -148 -89.5 -245 t-252.5 
-130v-8q129 -25 202 -111.5t73 -212.5q0 -216 -178 -333t-482 -117q-116 0 -217.5 
20.5t-167.5 58.5z" />
+<glyph unicode="4" horiz-adv-x="1188" d="M-10 283l51 256l762 923h360l-186 
-884h149l-61 -295h-150l-59 -283h-377l60 283h-549zM391 578h209l49 194q29 107 60 
211h-9q-51 -97 -114 -172z" />
+<glyph unicode="5" horiz-adv-x="1188" d="M20 63v324q79 -45 181 -70.5t184 
-25.5q277 0 277 192q0 76 -50.5 123t-136.5 47q-53 0 -111 -10t-92 -22l-122 92l215 
749h813l-68 -323h-471l-59 -185q35 4 75 4q181 0 293.5 -117.5t112.5 -316.5q0 -261 
-161 -402.5t-466 -141.5q-129 0 -244.5 22t-169.5 61z" />
+<glyph unicode="6" horiz-adv-x="1188" d="M78 471q0 105 26 254q85 392 298.5 
575t568.5 183q102 0 233 -31l-63 -303q-95 25 -183 25q-145 0 -237 -34t-151.5 
-108.5t-106.5 -224.5h8q106 170 307 170q160 0 244 -103t84 -299q0 -175 -68.5 
-311.5t-197 -210t-297.5 -73.5q-225 0 -345 124t-120 367zM463 420 q0 -66 26.5 
-99.5t71.5 -33.5q66 0 109 76.5t43 181.5q0 129 -92 129q-68 0 -113 -73t-45 -181z" 
/>
+<glyph unicode="7" horiz-adv-x="1188" d="M35 0l717 1135h-574l70 327h1030l-51 
-231l-744 -1231h-448z" />
+<glyph unicode="8" horiz-adv-x="1188" d="M49 338q0 301 332 418q-156 121 -156 
309q0 121 60.5 216.5t174 149.5t265.5 54q200 0 316 -92.5t116 -241.5q0 -128 -77.5 
-228.5t-202.5 -140.5q92 -71 140 -158t48 -204q0 -206 -141 -323t-387 -117q-225 0 
-356.5 99t-131.5 259zM414 385q0 -54 36.5 -88.5 t96.5 -34.5q70 0 112.5 42t42.5 
110q0 115 -118 194q-170 -90 -170 -223zM588 1065q0 -38 23.5 -77t62.5 -58q58 22 
92.5 71t34.5 103q0 49 -28.5 73.5t-65.5 24.5q-48 0 -83.5 -39.5t-35.5 -97.5z" />
+<glyph unicode="9" horiz-adv-x="1188" d="M106 10v314q92 -37 203 -37q187 0 
291.5 87t144.5 281h-8q-59 -95 -132 -134.5t-169 -39.5q-151 0 -239 110t-88 296q0 
176 65.5 310.5t190 210t297.5 75.5q230 0 352.5 -137.5t122.5 -393.5q0 -293 -103 
-519.5t-285.5 -339.5t-431.5 -113q-115 0 -211 30zM502 932 q0 -144 92 -144q74 0 
125 70.5t51 171.5q0 66 -27.5 106t-70.5 40q-73 0 -121.5 -71t-48.5 -173z" />
+<glyph unicode=":" horiz-adv-x="627" d="M0 127q0 109 65 171t179 62q84 0 132 
-40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM195 915q0 110 65 
171t176 61q82 0 132 -37.5t50 -116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 
37.5t-47.5 115.5z" />
+<glyph unicode=";" horiz-adv-x="627" d="M-117 -264q65 147 148 387l41 115h348l8 
-23q-116 -262 -256 -479h-289zM195 915q0 110 65 171t176 61q82 0 132 -37.5t50 
-116.5q0 -119 -59 -175t-190 -56q-79 0 -126.5 37.5t-47.5 115.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1159" d="M88 627v172l973 508v-299l-576 
-283l576 -252v-297z" />
+<glyph unicode="=" horiz-adv-x="1159" d="M102 399v271h975v-271h-975zM102 
774v266h975v-266h-975z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1159" d="M109 176v297l575 252l-575 
283v299l972 -508v-172z" />
+<glyph unicode="?" horiz-adv-x="999" d="M162 1348q231 135 461 135q201 0 319.5 
-90t118.5 -248q0 -89 -27.5 -156t-79 -120.5t-170.5 -125.5q-100 -60 -142.5 
-100t-55.5 -84l-15 -43h-315l12 64q15 80 42 138t71 104t141 110q89 58 125.5 
95t36.5 77q0 70 -90 70q-126 0 -313 -109zM176 127q0 107 65 170 t179 63q87 0 
133.5 -40.5t46.5 -114.5q0 -110 -63.5 -170t-174.5 -60q-87 0 -136.5 39t-49.5 
113z" />
+<glyph unicode="@" horiz-adv-x="1837" d="M82 500q0 288 117 511t335.5 
347.5t485.5 124.5q355 0 554.5 -174t199.5 -482q0 -170 -69.5 -314t-191 
-225t-266.5 -81q-170 0 -219 129h-10q-48 -65 -111.5 -97t-156.5 -32q-117 0 -191 
83.5t-74 221.5q0 156 74 294.5t196.5 211t276.5 72.5q155 0 336 -70l-100 -414 q-23 
-94 -23 -137q0 -41 39 -41q64 0 116 48.5t81.5 138.5t29.5 206q0 213 -133.5 
322.5t-382.5 109.5q-187 0 -336.5 -91.5t-232 -258t-82.5 -379.5q0 -145 55 
-254t153.5 -168t223.5 -59q103 0 234 24.5t245 69.5v- [...]
+<glyph unicode="A" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166z" />
+<glyph unicode="B" horiz-adv-x="1298" d="M33 0l309 1462h487q217 0 329 
-82.5t112 -236.5q0 -288 -297 -377v-8q88 -29 140 -101.5t52 -177.5q0 -229 -152.5 
-354t-432.5 -125h-547zM489 305h82q86 0 143.5 48.5t57.5 121.5q0 69 -33 103t-116 
34h-68zM614 901h72q88 0 133 38t45 122q0 102 -127 102h-63z" />
+<glyph unicode="C" horiz-adv-x="1290" d="M104 549q0 266 101.5 488t276 
335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5q-108 0 -195 
-78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 
69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5z" />
+<glyph unicode="D" horiz-adv-x="1401" d="M33 0l309 1462h416q276 0 427.5 
-144.5t151.5 -408.5q0 -280 -99 -485.5t-287.5 -314.5t-446.5 -109h-471zM494 
324h69q110 0 196.5 70t134.5 199.5t48 295.5q0 125 -54 189.5t-151 64.5h-71z" />
+<glyph unicode="E" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 -317h-477l-47 
-230h444l-72 -317h-444l-57 -276h477l-68 -322h-868z" />
+<glyph unicode="F" horiz-adv-x="1165" d="M33 0l309 1462h862l-67 -317h-471l-58 
-279h436l-69 -319h-438l-113 -547h-391z" />
+<glyph unicode="G" horiz-adv-x="1430" d="M104 563q0 267 110 482t301.5 
327.5t445.5 112.5q266 0 448 -107l-147 -309q-153 90 -306 90q-132 0 -233.5 
-72.5t-162 -214.5t-60.5 -303q0 -264 209 -264q63 0 133 14l51 232h-229l67 
305h610l-167 -795q-250 -81 -521 -81q-261 0 -405 152t-144 431z" />
+<glyph unicode="H" horiz-adv-x="1462" d="M33 0l309 1462h391l-112 -542h348l112 
542h392l-310 -1462h-391l125 596h-346l-127 -596h-391z" />
+<glyph unicode="I" horiz-adv-x="727" d="M31 0l309 1462h397l-309 -1462h-397z" />
+<glyph unicode="J" horiz-adv-x="764" d="M-328 -113q99 -24 174 -24q107 0 162 
59t84 195l289 1345h391l-299 -1394q-43 -200 -113 -312.5t-182.5 -164.5t-292.5 
-52q-106 0 -213 29v319z" />
+<glyph unicode="K" horiz-adv-x="1370" d="M33 0l309 1462h391l-135 -624l38 59q88 
143 130 195l297 370h459l-551 -674l270 -788h-438l-174 578l-97 -56l-108 
-522h-391z" />
+<glyph unicode="L" horiz-adv-x="1079" d="M33 0l309 1462h391l-241 -1143h477l-68 
-319h-868z" />
+<glyph unicode="M" horiz-adv-x="1862" d="M33 0l309 1462h518v-1038h8l478 
1038h526l-313 -1462h-351l117 549q50 228 108 436l15 64h-8l-482 
-1049h-370v1049h-8q-67 -417 -86 -512l-113 -537h-348z" />
+<glyph unicode="N" horiz-adv-x="1618" d="M33 0l309 1462h455l286 -983h9q29 236 
57 371l131 612h348l-309 -1462h-455l-289 1028h-8q-29 -291 -57 -418l-129 
-610h-348z" />
+<glyph unicode="O" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 -301z" 
/>
+<glyph unicode="P" horiz-adv-x="1276" d="M33 0l309 1462h373q259 0 397.5 
-113.5t138.5 -324.5q0 -252 -171.5 -395.5t-469.5 -143.5h-86l-100 -485h-391zM594 
805h63q91 0 147 58.5t56 148.5q0 59 -36 95t-99 36h-59z" />
+<glyph unicode="Q" horiz-adv-x="1509" d="M104 543q0 265 102.5 486t282 
338.5t414.5 117.5q258 0 400.5 -149.5t142.5 -413.5q0 -280 -114 -509t-310 
-339l238 -422h-439l-162 328h-12q-258 0 -400.5 149.5t-142.5 413.5zM500 539q0 
-115 47.5 -172.5t134.5 -57.5q102 0 186.5 81t133.5 224.5t49 311.5 q0 114 -47 
172.5t-134 58.5q-103 0 -188.5 -83t-133.5 -226t-48 -309z" />
+<glyph unicode="R" horiz-adv-x="1331" d="M33 0l309 1462h387q252 0 386 -100t134 
-301q0 -156 -71 -272t-211 -177l224 -516l40 -96h-426l-195 532h-73l-113 
-532h-391zM600 829h51q95 0 151 54.5t56 152.5q0 62 -34.5 94.5t-100.5 32.5h-53z" 
/>
+<glyph unicode="S" horiz-adv-x="1122" d="M43 76v350q84 -53 192.5 -89t196.5 
-36q74 0 112 31t38 88q0 27 -12 50.5t-34 47t-118 103.5q-117 94 -170 192t-53 
215q0 131 65.5 235.5t185 162t267.5 57.5q239 0 430 -107l-135 -297q-171 88 -291 
88q-64 0 -98.5 -28t-34.5 -82q0 -49 33.5 -91.5t127.5 -113.5 q118 -87 175 -183t57 
-220q0 -222 -147 -345.5t-410 -123.5q-110 0 -208 24.5t-169 71.5z" />
+<glyph unicode="T" horiz-adv-x="1130" d="M156 1139l69 323h1028l-71 
-323h-318l-237 -1139h-391l237 1139h-317z" />
+<glyph unicode="U" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 923h391l-195 
-913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 197.5l191 
893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 55t-158 
154t-55.5 221z" />
+<glyph unicode="V" horiz-adv-x="1264" d="M150 1462h382l27 -801v-51q0 -144 -16 
-256h8q14 64 44.5 157.5t55.5 145.5l350 805h414l-725 -1462h-436z" />
+<glyph unicode="W" horiz-adv-x="1915" d="M152 1462h370l-10 -733q-6 -267 -25 
-375l40 104l94 232l335 772h336v-792q0 -156 -26 -316q10 28 133 346l303 
762h387l-635 -1462h-461v620q0 155 13 324q-33 -133 -118 -349l-253 -595h-434z" />
+<glyph unicode="X" horiz-adv-x="1358" d="M-125 0l563 776l-223 686h416l123 
-469l309 469h448l-538 -725l262 -737h-432l-146 498l-338 -498h-444z" />
+<glyph unicode="Y" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 
542h436l-612 -895l-121 -567h-391l120 567z" />
+<glyph unicode="Z" horiz-adv-x="1104" d="M-92 0l47 242l690 901h-479l67 
319h986l-52 -245l-700 -898h543l-68 -319h-1034z" />
+<glyph unicode="[" horiz-adv-x="737" d="M-53 -344l393 1847h530l-55 
-254h-215l-285 -1339h215l-53 -254h-530zM182 -324zM491 1485z" />
+<glyph unicode="\" horiz-adv-x="956" d="M221 1483h309l248 -1503h-319z" />
+<glyph unicode="]" horiz-adv-x="737" d="M-133 -344l53 254h213l285 1339h-215l55 
254h528l-393 -1847h-526zM65 -324zM533 1485z" />
+<glyph unicode="^" horiz-adv-x="1096" d="M-6 502l631 960h172l284 
-960h-274l-156 569l-360 -569h-297z" />
+<glyph unicode="_" horiz-adv-x="922" d="M-184 -379l57 246h930l-58 -246h-929z" 
/>
+<glyph unicode="`" horiz-adv-x="1135" d="M485 1548v21h396q29 -157 94 
-303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="a" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5z" />
+<glyph unicode="b" d="M23 0l329 1556h387l-49 -231q-38 -175 -90 -301h8q48 59 
77.5 81.5t66.5 35t86 12.5q155 0 238 -111.5t83 -320.5q0 -178 -70.5 -362t-182.5 
-281.5t-249 -97.5q-83 0 -145 32t-125 113h-8l-49 -125h-307zM485 434q0 -65 19 
-104t59 -39q49 0 96 59t76 156t29 192 q0 144 -86 144q-50 0 -95 -57t-71.5 
-154t-26.5 -197z" />
+<glyph unicode="c" horiz-adv-x="1032" d="M84 442q0 201 76.5 364.5t215 
255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 
-143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 
-168.5 -67t-206.5 -23q-199 0 -310.5 120.5t-111.5 341.5z" />
+<glyph unicode="d" horiz-adv-x="1237" d="M84 412q0 178 71.5 363t183.5 
281.5t247 96.5q75 0 126 -30.5t111 -121.5h8l2 37q7 138 25 217l62 301h391l-330 
-1556h-309l10 123h-8q-57 -79 -120 -111t-148 -32q-158 0 -240 111.5t-82 
320.5zM479 434q0 -143 86 -143q50 0 95.5 58.5t72.5 156.5t27 192 q0 144 -80 
144q-49 0 -96 -59t-76 -155.5t-29 -193.5z" />
+<glyph unicode="e" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 
257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 
-107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 
-79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 
109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5z" />
+<glyph unicode="f" horiz-adv-x="840" d="M-209 -162q63 -18 117 -18q74 0 112 
30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 0 
155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 
-71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 
-207 27v303z" />
+<glyph unicode="g" horiz-adv-x="1145" d="M-133 -207q0 98 68 169t212 118q-37 23 
-60.5 60t-23.5 79q0 71 51 126t152 101q-131 103 -131 281q0 196 136 311t368 
115q51 0 107.5 -6t89.5 -14h399l-41 -207l-160 -52q10 -40 10 -94q0 -191 -130 
-308.5t-339 -117.5q-76 0 -124 13q-20 -11 -34 -22t-14 -30 q0 -43 111 -59l137 
-18q174 -25 250 -91.5t76 -189.5q0 -215 -168.5 -332t-478.5 -117q-212 0 -337.5 
75.5t-125.5 209.5zM197 -152q0 -86 170 -86q125 0 190.5 29t65.5 82q0 36 -33 
54.5t-115 27.5l-115 12q-78 -11 -120.5 [...]
+<glyph unicode="h" horiz-adv-x="1274" d="M23 0l329 1556h387l-53 -249q-35 -158 
-88 -283h8q101 129 273 129q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 
-602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-125 0 -185 -293l-116 
-553h-387z" />
+<glyph unicode="i" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387zM309 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 
-100 -58 -154.5t-167 -54.5q-191 0 -191 141z" />
+<glyph unicode="j" horiz-adv-x="666" d="M-264 -162q56 -18 112 -18q142 0 175 
147l247 1166h387l-260 -1227q-40 -193 -157 -295.5t-297 -102.5q-110 0 -207 
27v303zM317 1382q0 103 59.5 156t166.5 53q91 0 140.5 -36.5t49.5 -104.5q0 -94 -55 
-151.5t-170 -57.5q-191 0 -191 141z" />
+<glyph unicode="k" horiz-adv-x="1264" d="M23 0l325 1556h387l-139 -663q-17 -77 
-68 -223h9q84 127 153 200l242 263h442l-491 -512l274 -621h-438l-139 391l-101 
-53l-69 -338h-387z" />
+<glyph unicode="l" horiz-adv-x="666" d="M23 0l329 1556h387l-329 -1556h-387z" />
+<glyph unicode="m" horiz-adv-x="1896" d="M23 0l239 1133h309l-16 -187h8q61 114 
137 160.5t191 46.5q117 0 180.5 -53.5t89.5 -153.5h8q65 106 149 156.5t195 
50.5q141 0 214 -84.5t73 -249.5q0 -97 -22 -205l-125 -614h-387l129 631q14 56 14 
133q0 40 -19 61t-51 21q-74 0 -119.5 -76t-76.5 -227l-111 -543 h-387l131 631q15 
90 15 121q0 94 -72 94q-68 0 -113.5 -74.5t-77.5 -220.5l-118 -551h-387z" />
+<glyph unicode="n" horiz-adv-x="1274" d="M23 0l239 1133h309l-12 -158h8q55 95 
129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 
-602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 
-222l-116 -553h-387z" />
+<glyph unicode="o" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 322.5 
-113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 113t-113.5 
323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 33.5q-82 0 
-140.5 -139.5t-58.5 -319.5z" />
+<glyph unicode="p" d="M-82 -492l344 1625h309l-12 -127h8q96 147 258 147q156 0 
245 -111.5t89 -306.5q0 -203 -70 -382.5t-185.5 -276t-252.5 -96.5q-143 0 -231 
145h-8q-12 -166 -56 -371l-51 -246h-387zM485 434q0 -65 23 -104t65 -39q48 0 92 
57t71.5 153t27.5 197q0 144 -86 144 q-50 0 -95 -57t-71.5 -154t-26.5 -197z" />
+<glyph unicode="q" d="M84 408q0 181 71.5 366.5t183 282t247.5 96.5q89 0 145.5 
-33t118.5 -127h8l53 140h310l-344 -1625h-392l68 293q25 116 90 310h-8q-55 -74 
-114 -102.5t-134 -28.5q-89 0 -158 50.5t-107 148t-38 229.5zM479 434q0 -143 86 
-143q50 0 95.5 58.5t72.5 156.5t27 192 q0 144 -80 144q-49 0 -96 -59t-76 
-155.5t-29 -193.5z" />
+<glyph unicode="r" horiz-adv-x="895" d="M23 0l239 1133h309l-18 -189h8q65 112 
141 160.5t199 48.5q56 0 80 -8l-84 -383q-54 22 -123 22q-103 0 -164.5 -70.5t-93.5 
-215.5l-106 -498h-387z" />
+<glyph unicode="s" horiz-adv-x="1028" d="M31 43v311q92 -50 171 -70t160 -20q68 
0 102 18.5t34 51.5q0 35 -26 60.5t-130 84.5q-106 58 -154.5 133t-48.5 183q0 172 
121 265t344 93q112 0 204 -26t179 -80l-121 -252q-66 43 -136.5 68.5t-121.5 
25.5q-76 0 -76 -68q0 -29 31.5 -51t102.5 -57q225 -112 225 -320 q0 -199 -130 
-306t-374 -107q-222 0 -356 63z" />
+<glyph unicode="t" horiz-adv-x="936" d="M63 842l41 190l218 88l137 240h258l-49 
-227h288l-63 -291h-289l-84 -383q-16 -77 -16 -105q0 -63 63 -63q66 0 183 
47v-291q-136 -67 -340 -67q-148 0 -224.5 63.5t-76.5 208.5q0 76 24 188l84 
402h-154z" />
+<glyph unicode="u" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 603h387l-129 
-617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 214.5l116 
551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 -42.5q-141 0 
-220 85.5t-79 235.5z" />
+<glyph unicode="v" horiz-adv-x="1114" d="M88 1133h385l27 -603q0 -73 -8 
-118h8q1 14 18 63t36 90t265 568h414l-612 -1133h-388z" />
+<glyph unicode="w" horiz-adv-x="1686" d="M102 1133h365v-512q0 -182 -8 
-259h8q46 177 88 295l172 476h428l-20 -476q-9 -129 -33 -295h8q7 22 15.5 
47.5t48.5 140t241 583.5h385l-538 -1133h-422l20 449q2 73 11.5 209t21.5 
219h-8q-60 -233 -121 -390l-189 -487h-407z" />
+<glyph unicode="x" horiz-adv-x="1159" d="M-119 0l473 578l-207 555h422l76 
-314l186 314h459l-465 -576l228 -557h-428l-80 328l-211 -328h-453z" />
+<glyph unicode="y" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 142.5 
36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 165.5t239 
545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 17v307z" />
+<glyph unicode="z" horiz-adv-x="993" d="M-41 0l43 221l502 613h-348l67 
299h811l-53 -242l-496 -592h383l-65 -299h-844z" />
+<glyph unicode="{" horiz-adv-x="735" d="M-16 434l53 287q119 0 175 38.5t77 
133.5l55 246q28 124 76.5 190t130 99.5t203.5 33.5h129l-62 -280q-81 -2 -120 
-29.5t-56 -99.5l-53 -258q-20 -96 -85.5 -151.5t-193.5 -70.5v-8q90 -29 130 -87t40 
-146q0 -17 -10 -74l-35 -164q-6 -30 -6 -49q0 -88 113 -88v-281 h-82q-183 0 -272 
68.5t-89 208.5q0 63 15 127l37 174q6 24 6 43q0 75 -42 106t-134 31z" />
+<glyph unicode="|" horiz-adv-x="1159" d="M442 -465v2013h271v-2013h-271z" />
+<glyph unicode="}" horiz-adv-x="735" d="M-123 -43q73 3 109 13.5t54 33.5t30 
82l53 258q21 99 88 154t190 67v8q-170 55 -170 234q0 12 11 74l34 163q7 29 7 50q0 
88 -136 88l54 280h61q168 0 259 -70.5t91 -203.5q0 -69 -14 -129l-37 -174q-6 -26 
-6 -43q0 -66 44.5 -100.5t148.5 -34.5l-58 -287 q-121 0 -182.5 -40.5t-81.5 
-133.5l-55 -246q-37 -171 -137.5 -247.5t-282.5 -76.5h-74v281z" />
+<glyph unicode="~" horiz-adv-x="1159" d="M96 524v285q107 109 262 109q61 0 
110.5 -11.5t152.5 -52.5q67 -28 114 -41.5t99 -13.5q51 0 115.5 32t121.5 
89v-285q-107 -109 -262 -109q-62 0 -113.5 12.5t-148.5 51.5q-75 31 -118.5 
43t-92.5 12q-52 0 -114.5 -30t-125.5 -91z" />
+<glyph unicode="&#xa1;" horiz-adv-x="623" d="M-109 -338l254 946h328l-156 
-946h-426zM107 -324zM162 924q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5q0 
-107 -65 -170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1188" d="M154 586q0 306 140.5 510t371.5 
239l32 148h230l-33 -150q122 -19 231 -76l-122 -286q-79 37 -128 48t-98 11q-63 0 
-115 -49.5t-84 -146.5t-32 -207q0 -79 31 -113.5t90 -34.5q72 0 140 25t142 
65v-311q-145 -78 -307 -90l-41 -188h-229l51 208q-270 74 -270 398z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1188" d="M-18 0l63 313q76 21 120.5 49t69 
69.5t41.5 123.5l21 96h-188l57 279h188l23 129q26 149 85 243t150.5 137.5t237.5 
43.5q89 0 177 -19t196 -67l-144 -299q-66 31 -114 47t-99 16q-35 0 -56.5 
-24.5t-35.5 -92.5l-24 -114h251l-57 -279h-252l-20 -94 q-16 -74 -69.5 
-133.5t-133.5 -93.5h604l-72 -330h-1019z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1188" d="M106 1032l185 185l127 -125q96 43 
182 43q96 0 184 -48l125 130l189 -179l-129 -129q43 -82 43 -186q0 -94 -43 
-186l123 -123l-183 -183l-125 123q-96 -41 -184 -41q-108 0 -186 39l-123 -119l-182 
183l127 123q-46 90 -46 184q0 92 46 184zM451 723q0 -64 43 -108 t106 -44q65 0 
110.5 44.5t45.5 107.5q0 61 -44.5 106t-111.5 45q-64 0 -106.5 -44t-42.5 -107z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1188" d="M76 190l43 205h227l25 
129h-226l45 205h179l-187 733h385l72 -487l293 487h393l-489 -733h184l-45 
-205h-223l-27 -129h223l-43 -205h-223l-41 -190h-379l41 190h-227z" />
+<glyph unicode="&#xa6;" horiz-adv-x="1159" d="M444 395h271v-839h-271v839zM444 
705v841h271v-841h-271z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1036" d="M37 70v249q85 -52 173 -86t185 
-34q69 0 109.5 28.5t40.5 75.5q0 38 -31 70.5t-104 72.5q-130 71 -191 152t-61 
178q0 84 46 156t132 125q-38 38 -59 89.5t-21 102.5q0 160 116 244t339 84q184 0 
360 -102l-100 -224q-91 58 -159.5 79.5t-133.5 21.5q-60 0 -85.5 -22.5 t-25.5 
-51.5q0 -33 14 -53.5t46.5 -43t89.5 -48.5q244 -113 244 -312q0 -99 -38 -171t-130 
-124q32 -38 50.5 -90.5t18.5 -109.5q0 -170 -127 -260.5t-358 -90.5q-110 0 -197 
25.5t-143 69.5zM442 817q0 -43 37  [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M336 1384q0 187 201 187q170 0 
170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 187q168 0 
168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1688" d="M113 731q0 202 101.5 378t275.5 
275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 
0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 
-79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5 t-215 215t-294.5 
78.5t-295.5 -79.5t-215 -215.5t-77.5 -293zM461 735q0 220 113.5 341.5t320.5 
121.5q166 0 332 -82l-92 -205q-114 60 -222 60q-80 0 -126 -61t-46 -179q0 -128 44 
-185t135 -57q138 0 258 68v-231q [...]
+<glyph unicode="&#xaa;" horiz-adv-x="827" d="M139 1001q0 120 45 232t123 
177t176 65q64 0 111.5 -20t101.5 -79h9l36 86h199l-170 -721h-195l9 86h-9q-89 -98 
-223 -98q-60 0 -108 31.5t-76.5 91.5t-28.5 149zM412 1012q0 -48 19 -74.5t50 
-26.5q46 0 79 38.5t51 100t18 128.5q0 53 -19.5 83.5t-52.5 30.5 q-39 0 -72.5 
-40.5t-53 -107.5t-19.5 -132z" />
+<glyph unicode="&#xab;" horiz-adv-x="1276" d="M61 553v10l408 518l264 -204l-266 
-334l111 -330l-334 -137zM608 582v10l424 495l260 -210l-278 -306l123 -358l-334 
-137z" />
+<glyph unicode="&#xac;" horiz-adv-x="1159" d="M82 
586v272h975v-620h-271v348h-704z" />
+<glyph unicode="&#xad;" horiz-adv-x="674" d="M23 393l63 312h553l-64 
-312h-552z" />
+<glyph unicode="&#xae;" horiz-adv-x="1688" d="M113 731q0 202 101.5 378t275.5 
275t374 99t375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 -104q-206 
0 -380 102.5t-272.5 276.5t-98.5 372zM276 731q0 -158 78.5 -294t215 -215t294.5 
-79q157 0 293 77.5t215.5 214t79.5 296.5q0 158 -78.5 294.5 t-215 215t-294.5 
78.5t-295.5 -79.5t-215 -215.5t-77.5 -293zM535 313v875h290q214 0 317 -70.5t103 
-199.5q0 -91 -44.5 -153t-139.5 -97l211 -355h-285l-160 320h-12v-320h-280zM815 
809h10q78 0 108 22t30 76t-35. [...]
+<glyph unicode="&#xaf;" horiz-adv-x="922" d="M183 1554l57 246h930l-58 
-246h-929z" />
+<glyph unicode="&#xb0;" horiz-adv-x="864" d="M166 1114q0 97 49 182.5t135 
136t185 50.5q98 0 184 -50t135 -136.5t49 -182.5q0 -98 -49.5 -183t-135.5 
-133t-183 -48q-99 0 -185 49t-135 133t-49 182zM403 1114q0 -51 39.5 -89t92.5 
-38q52 0 91.5 38t39.5 89q0 53 -38.5 93t-92.5 40q-55 0 -93.5 -39.5t-38.5 -93.5 
z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1159" d="M102 0v270h975v-270h-975zM102 
694v271h353v352h270v-352h352v-271h-352v-350h-270v350h-353z" />
+<glyph unicode="&#xb2;" horiz-adv-x="848" d="M23 584l43 204l276 211q108 83 144 
124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 
29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319l-51 
-256h-704z" />
+<glyph unicode="&#xb3;" horiz-adv-x="848" d="M66 639v225q63 -43 131.5 
-62.5t124.5 -19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5t43.5 
66.5q0 28 -22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 
220 -57t83 -152q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5 t37 -112.5q0 
-127 -104 -205t-275 -78q-106 0 -177.5 16t-133.5 54z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M453 1241v23q123 102 282 
305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1288" d="M-82 -492l344 1625h387l-129 
-617q-18 -78 -18 -141q0 -44 22.5 -65t53.5 -21q52 0 82.5 26t53.5 87t48 180l117 
551h387l-240 -1133h-289l6 123h-8q-68 -143 -190 -143q-102 0 -131 77h-8q-10 -134 
-48 -303l-53 -246h-387z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1317" d="M102 1042q0 256 107.5 385t343.5 
129h633v-1816h-191v1587h-157v-1587h-191v819q-54 -18 -125 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="627" d="M115 684q0 106 65 168.5t178 
62.5q82 0 131.5 -40.5t49.5 -114.5q0 -117 -65.5 -173.5t-178.5 -56.5q-86 0 -133 
40t-47 114z" />
+<glyph unicode="&#xb8;" horiz-adv-x="383" d="M-221 -258q30 -9 78.5 -18t72.5 
-9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 -121 -82.5 
-188.5t-233.5 -67.5q-115 0 -192 29v205z" />
+<glyph unicode="&#xb9;" horiz-adv-x="848" d="M115 1202l426 260h252l-187 
-878h-317l82 364q21 102 55 207l-74 -59l-119 -78z" />
+<glyph unicode="&#xba;" horiz-adv-x="817" d="M139 1004q0 213 116.5 344t317.5 
131q143 0 222 -79t79 -218q0 -134 -51 -237t-149.5 -160.5t-231.5 -57.5q-144 0 
-223.5 75.5t-79.5 201.5zM412 1016q0 -84 55 -84q59 0 97 70.5t38 179.5q0 45 -11.5 
68.5t-43.5 23.5q-60 0 -97.5 -73t-37.5 -185z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1276" d="M-14 248l276 305l-121 358l332 
138l195 -506v-11l-424 -497zM543 248l266 334l-111 329l334 138l182 -478v-10l-407 
-518z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1991" d="M921 122l31 178l490 577h325l-119 
-557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM1198 320h162q62 239 73 274t15 
44q-13 -18 -35 -48.5t-215 -269.5zM195 0l1089 1462h291l-1083 -1462h-297zM79 
1202l426 260h252l-187 -878h-317l82 364q21 102 55 207l-74 -59 l-119 -78z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1991" d="M1002 -1l43 204l276 211q108 83 
144 124t36 75q0 51 -63 51q-35 0 -85 -18t-104 -62l-118 191q84 65 172.5 94t216.5 
29q134 0 218.5 -61t84.5 -156q0 -70 -31.5 -129.5t-102 -121t-251.5 -175.5h319l-51 
-256h-704zM104 1202l426 260h252l-187 -878h-317l82 364 q21 102 55 207l-74 
-59l-119 -78zM219 0l1089 1462h291l-1083 -1462h-297z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1991" d="M968 122l31 178l490 577h325l-119 
-557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM1245 320h162q62 239 73 274t15 
44q-13 -18 -35 -48.5t-215 -269.5zM195 639v225q63 -43 131.5 -62.5t124.5 
-19.5q151 0 151 80q0 68 -113 68h-120l43 194h96q71 0 114.5 21.5 t43.5 66.5q0 28 
-22 43t-54 15q-79 0 -185 -66l-100 182q83 52 161 73.5t181 21.5q137 0 220 -57t83 
-152q0 -91 -55.5 -146t-175.5 -84v-8q92 -23 129 -69.5t37 -112.5q0 -127 -104 
-205t-275 -78q-106 0 -177.5 1 [...]
+<glyph unicode="&#xbf;" horiz-adv-x="999" d="M-84 -16q0 89 27.5 155.5t77.5 
119t172 126.5q100 60 142.5 101t55.5 83l15 43h315l-12 -63q-15 -82 -43 -140t-72.5 
-104.5t-138.5 -107.5q-89 -58 -125.5 -95t-36.5 -77q0 -37 22.5 -53.5t67.5 
-16.5q124 0 313 108l119 -282q-227 -135 -461 -135q-201 0 -319.5 90 t-118.5 
248zM285 -324zM377 924q0 109 64 169t173 60q89 0 138 -39.5t49 -112.5q0 -107 -65 
-170t-179 -63q-87 0 -133.5 40.5t-46.5 115.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM551 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 
159t-102 148z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM709 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 
-157t-245.5 -156h-284z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM399 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 
-149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM459 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 
-42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85 
q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM502 1722q0 187 201 187q170 0 170 -125q0 -189 -201 
-189q-88 0 -129 31t-41 96zM989 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 
-143 t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1384" d="M-121 0l744 1462h503l123 
-1462h-381l-10 274h-448l-125 -274h-406zM553 586h293l-17 424l-2 86q0 75 4 
131q-24 -86 -61 -166zM608 1550q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 
-181.5q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5zM788 1550 q0 
-37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59q0 38 -26.5 62t-61.5 24q-36 0 
-62.5 -24t-26.5 -62z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1937" d="M-125 0l909 1462h1213l-66 
-317h-477l-47 -230h444l-71 -317h-445l-57 -276h477l-67 -322h-869l58 
274h-418l-170 -274h-414zM662 602h286l113 543h-68z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1290" d="M104 549q0 266 101.5 488t276 
335t399.5 113q265 0 481 -131l-148 -305q-93 55 -171 82.5t-162 27.5q-108 0 -195 
-78t-136.5 -215t-49.5 -297q0 -134 56 -200t161 -66q83 0 168 20.5t200 
69.5v-323q-203 -90 -440 -90q-260 0 -400.5 148.5t-140.5 420.5zM305 -258 q30 -9 
78.5 -18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 
-121 -82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 
-317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM443 
1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 
-317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM578 
1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xca;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 
-317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM303 1579v23q79 
72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 
174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1151" d="M33 0l309 1462h868l-65 
-317h-477l-47 -230h444l-72 -317h-444l-57 -276h477l-68 -322h-868zM383 1722q0 187 
201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM870 1722q0 187 
201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96 z" />
+<glyph unicode="&#xcc;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 
-1462h-397zM259 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" 
/>
+<glyph unicode="&#xcd;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 
-1462h-397zM345 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 
-156h-284z" />
+<glyph unicode="&#xce;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 
-1462h-397zM79 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 
-155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xcf;" horiz-adv-x="727" d="M31 0l309 1462h397l-309 
-1462h-397zM159 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 
31t-41 96zM646 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 
-46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1401" d="M10 563l70 320h139l123 
579h430q271 0 418 -143.5t147 -409.5q0 -434 -213 -671.5t-598 -237.5h-493l119 
563h-142zM494 324h69q111 0 198 71.5t134 204t47 301.5q0 116 -54 179t-151 
63h-71l-56 -260h178l-69 -320h-176z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1618" d="M33 0l309 1462h455l286 -983h9q29 
236 57 371l131 612h348l-309 -1462h-455l-289 1028h-8q-29 -291 -57 -418l-129 
-610h-348zM553 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 
66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85 q-33 0 -65 8t-61 
22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 
-301zM612 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 
-301zM717 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 
-156h-284z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 
-301zM432 1579v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 
-155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 
-301zM489 1575q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 
-33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 
22t-46 23q-73 45 -127 45q-31 0 - [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1509" d="M104 543q0 265 103 487t280.5 
338.5t409.5 116.5q260 0 404.5 -148.5t144.5 -414.5t-99.5 -486.5t-274.5 -338t-406 
-117.5q-269 0 -415.5 149t-146.5 414zM500 545q0 -242 200 -242q95 0 176.5 83t128 
224t46.5 308q0 114 -48 178.5t-139 64.5q-99 0 -182 -84 t-132.5 -231t-49.5 
-301zM512 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 
96zM999 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 0 
-129 31t-41 96z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1159" d="M102 1010l187 190l289 -285l292 
285l191 -184l-293 -293l287 -291l-185 -188l-292 288l-289 -286l-185 188l283 289z" 
/>
+<glyph unicode="&#xd8;" horiz-adv-x="1509" d="M94 31l117 145q-107 141 -107 
367q0 262 101 484.5t275.5 340t398.5 117.5q182 0 315 -72l92 115l156 -119l-99 
-125q103 -143 103 -362q0 -258 -98.5 -480.5t-271 -342t-392.5 -119.5q-192 0 -324 
69l-106 -135zM500 539l467 589q-45 33 -115 33q-94 0 -175 -82 t-129 -224t-48 
-306v-10zM586 332q46 -29 114 -29q95 0 176 81.5t128 222.5t47 308z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 
923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 
197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 
55t-158 154t-55.5 221zM555 1886v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159 
t-102 148z" />
+<glyph unicode="&#xda;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 
923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 
197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 
55t-158 154t-55.5 221zM725 1579v23q123 102 282 305h439v-15q-45 -54 -191.5 -157 
t-245.5 -156h-284z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 
923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 
197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 
55t-158 154t-55.5 221zM440 1579v23q79 72 170 162.5t139 142.5h447 q26 -59 78 
-149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1436" d="M125 410q0 64 12 129l199 
923h391l-195 -913q-14 -68 -14 -115q0 -127 121 -127q94 0 147.5 64.5t81.5 
197.5l191 893h391l-199 -932q-59 -281 -225 -415.5t-451 -134.5q-134 0 -236.5 
55t-158 154t-55.5 221zM533 1722q0 187 201 187q170 0 170 -125q0 -189 -201 -189 
q-88 0 -129 31t-41 96zM1020 1722q0 187 201 187q168 0 168 -125q0 -97 -49.5 
-143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 
542h436l-612 -895l-121 -567h-391l120 567zM615 1579v23q123 102 282 
305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xde;" horiz-adv-x="1276" d="M33 0l309 1462h391l-45 -211q251 
0 385.5 -114t134.5 -326q0 -250 -170.5 -393.5t-470.5 -143.5h-86l-57 
-274h-391zM551 594h63q94 0 148.5 49t54.5 156q0 58 -41.5 95.5t-107.5 37.5h-45z" 
/>
+<glyph unicode="&#xdf;" horiz-adv-x="1460" d="M-260 -162q63 -18 117 -18q74 0 
111.5 30t51.5 95l244 1151q53 249 201.5 360t417.5 111q243 0 379.5 -99t136.5 
-274q0 -118 -51 -198t-162 -132q-117 -56 -117 -102q0 -29 20.5 -50.5t87.5 
-56.5q95 -51 140 -118t45 -164q0 -117 -58.5 -205.5t-170 -138t-271.5 -49.5 q-161 
0 -274 45v299q59 -29 136.5 -45.5t133.5 -16.5q59 0 87 22t28 50q0 32 -19.5 
53.5t-113.5 83.5q-88 56 -127 111.5t-39 130.5q0 92 42 150.5t165 125.5q71 40 100 
76t29 80q0 58 -41.5 88.5t-116.5 30.5q [...]
+<glyph unicode="&#xe0;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM400 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="&#xe1;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM531 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 
-156h-284z" />
+<glyph unicode="&#xe2;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM262 1238v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 
-155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xe3;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM301 1237q32 172 108.5 257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 
-33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 
22t-46 23q-73 45 -127 45q-31 0 -60.5 - [...]
+<glyph unicode="&#xe4;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM331 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 
31t-41 96zM818 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 
-46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xe5;" d="M84 412q0 179 73 365t184.5 281t246.5 95q84 0 148 
-37.5t114 -122.5h8l53 140h310l-240 -1133h-309l10 123h-8q-56 -78 -121 
-110.5t-147 -32.5q-158 0 -240 111.5t-82 320.5zM479 434q0 -143 86 -143q50 0 95.5 
58.5t72.5 156.5t27 192q0 65 -20 104.5t-62 39.5 q-76 0 -137.5 -126.5t-61.5 
-281.5zM488 1489q0 114 73.5 184t195.5 70q118 0 193 -70.5t75 -181.5q0 -113 -74.5 
-183.5t-193.5 -70.5q-121 0 -195 68.5t-74 183.5zM668 1489q0 -37 23.5 -60.5t65.5 
-23.5q39 0 63.5 25t24.5 59q0 38 -2 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1788" d="M84 412q0 179 73 365t184.5 
281t246.5 95q92 0 152 -38t110 -122h8l53 140h207v-95q58 56 132.5 85.5t146.5 
29.5q157 0 251.5 -86.5t94.5 -228.5q0 -201 -157 -308.5t-451 -107.5h-60v-16q0 
-148 164 -148q79 0 155 23.5t173 74.5v-274q-99 -58 -182.5 -80t-192.5 -22 q-179 0 
-262 112l-31 -92h-227l10 123h-8q-56 -78 -121 -110.5t-147 -32.5q-158 0 -240 
111.5t-82 320.5zM479 434q0 -143 86 -143q76 0 134.5 123t58.5 284q0 65 -23 
104.5t-65 39.5q-49 0 -93 -57.5t-71 -155t [...]
+<glyph unicode="&#xe7;" horiz-adv-x="1032" d="M84 442q0 201 76.5 364.5t215 
255t314.5 91.5q195 0 367 -80l-123 -287q-133 60 -225 60q-62 0 -115 -48t-87 
-143.5t-34 -187.5q0 -91 30 -133.5t95 -42.5q72 0 139.5 23t143.5 63v-307q-80 -44 
-168.5 -67t-206.5 -23q-199 0 -310.5 120.5t-111.5 341.5zM176 -258 q30 -9 78.5 
-18t72.5 -9q68 0 68 49q0 73 -145 101l75 135h205l-24 -41q178 -37 178 -195q0 -121 
-82.5 -188.5t-233.5 -67.5q-115 0 -192 29v205z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 
257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 
-107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 
-79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 
109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM429 1548v21h396q29 -157 
94 -303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 
257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 
-107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 
-79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 
109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM523 1241v23q123 102 282 
305h439v-15q-45 -54 -191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xea;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 
257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 
-107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 
-79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 
109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM277 1241v23q79 72 170 
162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 
-110 -240 -174h-274z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1186" d="M84 428q0 211 83.5 380.5t229 
257t336.5 87.5q190 0 299 -86t109 -229q0 -201 -156.5 -308.5t-452.5 
-107.5h-59v-16q0 -148 164 -148q79 0 155 23.5t173 74.5v-274q-112 -57 -209 
-79.5t-224 -22.5q-212 0 -330 118.5t-118 329.5zM512 664h29q109 0 171 41.5t62 
109.5 q0 32 -20 54t-64 22q-61 0 -114 -69.5t-64 -157.5zM336 1384q0 187 201 
187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31t-41 96zM823 1384q0 187 201 
187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88  [...]
+<glyph unicode="&#xec;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387zM167 1548v21h396q29 -157 94 -303v-25h-236q-82 75 -152 159t-102 148z" 
/>
+<glyph unicode="&#xed;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387zM294 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 
-156h-284z" />
+<glyph unicode="&#xee;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387zM-7 1241v23q79 72 170 162.5t139 142.5h447q26 -59 78 -149.5t102 
-155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xef;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387zM91 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 
31t-41 96zM578 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 
-46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1155" d="M84 426q0 170 62.5 305t178.5 
209t267 74q130 0 203 -88l10 4q-19 142 -90 246l-273 -127l-82 168l220 102q-29 25 
-95 74l115 180q136 -61 231 -137l238 110l82 -166l-184 -90q71 -88 114 -249t43 
-324q0 -360 -154.5 -548.5t-449.5 -188.5q-201 0 -318.5 119 t-117.5 327zM471 
408q0 -148 84 -148q53 0 93 44.5t63.5 119t23.5 147.5q0 76 -18.5 119t-65.5 43q-81 
0 -130.5 -101t-49.5 -224z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1274" d="M23 0l239 1133h309l-12 -158h8q55 
95 129.5 136.5t182.5 41.5q141 0 220 -85.5t79 -236.5q0 -106 -25 -229l-127 
-602h-387l129 618q18 78 18 142q0 43 -22 64.5t-53 21.5q-57 0 -105.5 -71t-79.5 
-222l-116 -553h-387zM319 1237q32 172 108.5 257t204.5 85 q34 0 59.5 -6.5t94.5 
-42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 -257t-208.5 -85q-33 
0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 -73h-188z" />
+<glyph unicode="&#xf2;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 
322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 
113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 
33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM404 1548v21 h396q29 -157 94 
-303v-25h-236q-82 75 -152 159t-102 148z" />
+<glyph unicode="&#xf3;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 
322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 
113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 
33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM533 1241v23 q123 102 282 305h439v-15q-45 
-54 -191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xf4;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 
322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 
113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 
33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM247 1241v23 q79 72 170 162.5t139 
142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 
-174h-274z" />
+<glyph unicode="&#xf5;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 
322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 
113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 
33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM277 1237 q32 172 108.5 257t204.5 85q34 0 
59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 100h190q-34 -172 -112.5 
-257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 45q-31 0 -60.5 -27t-36.5 
-73h-188z" />
+<glyph unicode="&#xf6;" d="M84 416q0 210 79.5 379.5t223.5 263.5t336 94q209 0 
322.5 -113t113.5 -323t-79.5 -379.5t-223.5 -263.5t-336 -94q-209 0 -322.5 
113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 -23 99.5t-63 
33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM317 1384 q0 187 201 187q170 0 170 -125q0 
-189 -201 -189q-88 0 -129 31t-41 96zM804 1384q0 187 201 187q168 0 168 -125q0 
-97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1159" d="M102 586v272h975v-272h-975zM432 
373q0 83 41 127.5t117 44.5q74 0 114.5 -44.5t40.5 -127.5q0 -81 -41.5 
-126.5t-113.5 -45.5q-74 0 -116 46t-42 126zM432 1071q0 83 41 127.5t117 44.5q74 0 
114.5 -44.5t40.5 -127.5q0 -81 -41.5 -126.5t-113.5 -45.5q-74 0 -116 46 t-42 
126z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1286" d="M66 -2l112 131q-94 117 -94 287q0 
207 81.5 377.5t230.5 265t347 94.5q136 0 250 -57l105 121l127 -109l-105 -123q82 
-114 82 -268q0 -208 -81 -377.5t-229 -264.5t-343 -95q-127 0 -238 49l-118 
-140zM449 451l335 397q-35 29 -82 29q-67 0 -125 -55t-92 -153t-36 -218 zM518 
274q29 -14 72 -14q107 0 172 101.5t74 287.5z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 
603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 
214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 
-42.5q-141 0 -220 85.5t-79 235.5zM412 1548v21h396q29 -157 94 -303v-25 h-236q-82 
75 -152 159t-102 148z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 
603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 
214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 
-42.5q-141 0 -220 85.5t-79 235.5zM584 1241v23q123 102 282 305h439v-15 q-45 -54 
-191.5 -157t-245.5 -156h-284z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 
603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 
214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 
-42.5q-141 0 -220 85.5t-79 235.5zM285 1241v23q79 72 170 162.5t139 142.5 h447q26 
-59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 -110 -240 -174h-274z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1274" d="M96 301q0 106 25 229l127 
603h387l-129 -617q-19 -82 -19 -141q0 -44 22.5 -65t53.5 -21q59 0 107.5 78.5t77.5 
214.5l116 551h387l-239 -1133h-310l13 158h-8q-54 -93 -128.5 -135.5t-183.5 
-42.5q-141 0 -220 85.5t-79 235.5zM371 1384q0 187 201 187q170 0 170 -125 q0 -189 
-201 -189q-88 0 -129 31t-41 96zM858 1384q0 187 201 187q168 0 168 -125q0 -97 
-49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 
142.5 36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 
165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 
17v307zM492 1241v23q123 102 282 305h439v-15q-45 -54 -191.5 -157t-245.5 -156 
h-284z" />
+<glyph unicode="&#xfe;" d="M-82 -492l434 2048h387l-49 -231q-38 -175 -90 
-301h8q44 59 96.5 94t131.5 35q151 0 237 -112t86 -306q0 -203 -70 -382.5t-185.5 
-276t-252.5 -96.5q-143 0 -231 145h-8q-12 -166 -56 -371l-51 -246h-387zM485 434q0 
-65 23 -104t65 -39q48 0 92 57t71.5 153t27.5 197 q0 144 -86 144q-50 0 -95 
-57t-71.5 -154t-26.5 -197z" />
+<glyph unicode="&#xff;" horiz-adv-x="1114" d="M-129 -168q46 -12 109 -12q87 0 
142.5 36.5t98.5 114.5l23 41l-162 1121h389l43 -562l2 -62v-87h8q37 132 50 
165.5t239 545.5h416l-670 -1276q-96 -185 -223 -267t-311 -82q-92 0 -154 
17v307zM259 1384q0 187 201 187q170 0 170 -125q0 -189 -201 -189q-88 0 -129 31 
t-41 96zM746 1384q0 187 201 187q168 0 168 -125q0 -97 -49.5 -143t-149.5 -46q-88 
0 -129 31t-41 96z" />
+<glyph unicode="&#x131;" horiz-adv-x="666" d="M23 0l239 1133h389l-241 
-1133h-387z" />
+<glyph unicode="&#x152;" horiz-adv-x="1909" d="M104 528q0 196 58.5 379t164.5 
313t252.5 197.5t323.5 67.5q94 0 191 -23h874l-67 -319h-478l-47 -225h445l-72 
-322h-444l-58 -272h477l-65 -324h-815q-104 -20 -197 -20q-256 0 -399.5 
146.5t-143.5 401.5zM500 526q0 -217 182 -217q96 0 180 41l162 762 q-53 49 -154 
49q-96 0 -182.5 -88t-137 -235t-50.5 -312z" />
+<glyph unicode="&#x153;" horiz-adv-x="1802" d="M84 416q0 209 79 380t217.5 
264t319.5 93q187 0 277 -125q144 125 373 125q188 0 297.5 -86t109.5 -229q0 -203 
-157 -309.5t-451 -106.5h-59v-16q0 -148 163 -148q79 0 155 23.5t173 
74.5v-274q-114 -58 -210.5 -80t-221.5 -22q-203 0 -295 112q-124 -112 -334 -112 
q-209 0 -322.5 113t-113.5 323zM479 403q0 -133 84 -133q81 0 141 139t60 320q0 66 
-23 99.5t-63 33.5q-82 0 -140.5 -139.5t-58.5 -319.5zM1128 664h29q110 0 172 41t62 
110q0 32 -20.5 54t-63.5 22q-60 0 -112. [...]
+<glyph unicode="&#x178;" horiz-adv-x="1237" d="M164 1462h403l90 -542l312 
542h436l-612 -895l-121 -567h-391l120 567zM397 1722q0 187 201 187q170 0 170 
-125q0 -189 -201 -189q-88 0 -129 31t-41 96zM884 1722q0 187 201 187q168 0 168 
-125q0 -97 -49.5 -143t-149.5 -46q-88 0 -129 31t-41 96z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M254 1241v23q79 72 170 
162.5t139 142.5h447q26 -59 78 -149.5t102 -155.5v-23h-266q-46 41 -156 174q-140 
-110 -240 -174h-274z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M522 1489q0 114 73.5 184t195.5 
70q118 0 193 -70.5t75 -181.5q0 -113 -74.5 -183.5t-193.5 -70.5q-121 0 -195 
68.5t-74 183.5zM702 1489q0 -37 23.5 -60.5t65.5 -23.5q39 0 63.5 25t24.5 59q0 38 
-26.5 62t-61.5 24q-36 0 -62.5 -24t-26.5 -62z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M301 1237q32 172 108.5 
257t204.5 85q34 0 59.5 -6.5t94.5 -42.5q31 -17 66 -33t67 -16q78 0 115 
100h190q-34 -172 -112.5 -257t-208.5 -85q-33 0 -65 8t-61 22t-46 23q-73 45 -127 
45q-31 0 -60.5 -27t-36.5 -73h-188z" />
+<glyph unicode="&#x2000;" horiz-adv-x="959" />
+<glyph unicode="&#x2001;" horiz-adv-x="1919" />
+<glyph unicode="&#x2002;" horiz-adv-x="959" />
+<glyph unicode="&#x2003;" horiz-adv-x="1919" />
+<glyph unicode="&#x2004;" horiz-adv-x="639" />
+<glyph unicode="&#x2005;" horiz-adv-x="479" />
+<glyph unicode="&#x2006;" horiz-adv-x="319" />
+<glyph unicode="&#x2007;" horiz-adv-x="319" />
+<glyph unicode="&#x2008;" horiz-adv-x="239" />
+<glyph unicode="&#x2009;" horiz-adv-x="383" />
+<glyph unicode="&#x200a;" horiz-adv-x="106" />
+<glyph unicode="&#x2010;" horiz-adv-x="674" d="M23 393l63 312h553l-64 
-312h-552z" />
+<glyph unicode="&#x2011;" horiz-adv-x="674" d="M23 393l63 312h553l-64 
-312h-552z" />
+<glyph unicode="&#x2012;" horiz-adv-x="674" d="M23 393l63 312h553l-64 
-312h-552z" />
+<glyph unicode="&#x2013;" horiz-adv-x="983" d="M33 416l57 274h871l-60 
-274h-868z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M33 416l57 274h1854l-60 
-274h-1851z" />
+<glyph unicode="&#x2018;" horiz-adv-x="500" d="M109 983q104 235 258 
479h288q-26 -62 -53 -131t-135 -370h-348z" />
+<glyph unicode="&#x2019;" horiz-adv-x="500" d="M94 961q34 81 67.5 167.5t121.5 
333.5h348l8 -22q-92 -212 -256 -479h-289z" />
+<glyph unicode="&#x201a;" horiz-adv-x="621" d="M-104 -264q25 59 50 123t138 
379h348l8 -23q-94 -223 -256 -479h-288z" />
+<glyph unicode="&#x201c;" horiz-adv-x="997" d="M109 983q104 235 258 
479h288q-26 -62 -53 -131t-135 -370h-348zM606 983q109 246 256 479h289q-49 -115 
-100 -258l-88 -243h-349z" />
+<glyph unicode="&#x201d;" horiz-adv-x="997" d="M94 961q49 117 100 258l89 
243h348l8 -22q-92 -212 -256 -479h-289zM592 961q41 98 99 258l89 243h348l7 
-22q-39 -91 -110 -226t-144 -253h-289z" />
+<glyph unicode="&#x201e;" horiz-adv-x="1122" d="M-104 -264q25 59 50 123t138 
379h348l8 -23q-94 -223 -256 -479h-288zM397 -264q61 148 147 387l42 115h348l8 
-23q-51 -116 -124.5 -251t-133.5 -228h-287z" />
+<glyph unicode="&#x2022;" horiz-adv-x="803" d="M86 688q0 118 47 214t133.5 
150t200.5 54q148 0 221.5 -77.5t73.5 -223.5q0 -194 -101.5 -305t-281.5 -111q-137 
0 -215 80t-78 219zM594 1133z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1800" d="M12 127q0 109 65 171t179 62q84 
0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 115zM600 127q0 109 
65 171t179 62q84 0 132 -40t48 -115q0 -118 -60 -174t-190 -56q-78 0 -126 37t-48 
115zM1186 127q0 109 65 171t179 62q84 0 132 -40t48 -115 q0 -118 -60 -174t-190 
-56q-78 0 -126 37t-48 115z" />
+<glyph unicode="&#x202f;" horiz-adv-x="383" />
+<glyph unicode="&#x2039;" horiz-adv-x="719" d="M61 553v10l408 518l264 
-204l-266 -334l111 -330l-334 -137z" />
+<glyph unicode="&#x203a;" horiz-adv-x="719" d="M-14 248l266 334l-111 329l332 
138l184 -478v-10l-407 -518z" />
+<glyph unicode="&#x2044;" horiz-adv-x="248" d="M-563 0l1089 1462h291l-1083 
-1462h-297z" />
+<glyph unicode="&#x205f;" horiz-adv-x="479" />
+<glyph unicode="&#x2074;" horiz-adv-x="848" d="M16 707l31 178l490 577h325l-119 
-557h113l-41 -198h-113l-26 -123h-289l27 123h-398zM293 905h162q62 239 73 274t15 
44q-13 -18 -35 -48.5t-215 -269.5z" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1188" d="M53 451l43 204h109l22 
123h-106l47 205h117q84 243 243 373.5t377 130.5q115 0 202 -25t173 -80l-154 
-282q-120 78 -221 78q-142 0 -219 -195h297l-45 -205h-309q-18 -59 -25 
-123h246l-43 -204h-227q0 -82 27.5 -113t105.5 -31q75 0 145 18.5t148 49.5v-330 
q-126 -65 -355 -65q-231 0 -341.5 114t-116.5 357h-140z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1577" d="M102 
1286v176h537v-176h-170v-545h-197v545h-170zM711 741v721h286l138 -479l149 
479h277v-721h-195v400q0 74 6 110h-8l-152 -510h-163l-144 510h-8q6 -64 6 
-110v-400h-192z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1135" d="M0 
1135h1135v-1135h-1135v1135z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1505" d="M-209 -162q63 -18 117 -18q74 0 
112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 
0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 
-71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 
-207 27v303zM863 0l239 1133h389l-241 -1133h-387zM1149 1382q0 103 59.5 156t166.5 
53q91 0 140.5 -36.5t49.5 -104.5q0 -100 -58 -154.5t-167 -54.5q-191 0 -191 141z" 
/>
+<glyph unicode="&#xfb02;" horiz-adv-x="1505" d="M-209 -162q63 -18 117 -18q74 0 
112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 
0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 
-71h211l-66 -291h-209l-205 -959q-43 -192 -153.5 -283.5 t-292.5 -91.5q-110 0 
-207 27v303zM863 0l329 1556h387l-329 -1556h-387z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2163" d="M-209 -162q63 -18 117 -18q74 0 
112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 
0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 
-71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42 l-98 -264q-64 31 
-129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 
-192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 
30t51.5 95l191 897h-330l- [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="2159" d="M-209 -162q63 -18 117 -18q74 0 
112 30t52 95l190 897h-166l43 190l189 96l16 74q43 192 146.5 278.5t275.5 86.5q80 
0 155 -16t128 -42l-99 -264q-64 31 -129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 
-71h331l17 69q41 185 142.5 275t279.5 90q80 0 155 -16t127 -42 l-98 -264q-64 31 
-129 31q-35 0 -59.5 -18.5t-32.5 -53.5l-16 -71h210l-65 -291h-209l-205 -959q-43 
-192 -153.5 -283.5t-292.5 -91.5q-110 0 -207 27v303q63 -18 117 -18q74 0 111.5 
30t51.5 95l191 897h-330l- [...]
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
new file mode 100755
index 0000000..7e636eb
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.woff
new file mode 100755
index 0000000..f81b216
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-ExtraBoldItalic-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.eot
new file mode 100755
index 0000000..c315952
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.svg
new file mode 100755
index 0000000..be50857
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansItalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="530" d="M43 78q0 76 39.5 120t107.5 44q45 0 73 
-27.5t28 -81.5q0 -68 -39 -115t-105 -47q-49 0 -76.5 28t-27.5 79zM172 403q49 307 
176 1059h207l-274 -1059h-109z" />
+<glyph unicode="&#x22;" horiz-adv-x="791" d="M225 934l72 528h188l-153 
-528h-107zM573 934l72 528h189l-154 -528h-107z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M63 430l13 129h284l101 340h-277l13 
127h301l123 436h139l-125 -436h305l127 436h133l-125 -436h264l-12 -127h-291l-98 
-340h285l-13 -129h-309l-125 -430h-139l129 430h-303l-127 -430h-133l121 
430h-261zM500 559h303l96 340h-303z" />
+<glyph unicode="$" d="M72 176v154q82 -41 175.5 -63.5t166.5 -22.5l98 452q-139 
49 -201.5 123.5t-62.5 188.5q0 159 108 255t299 113l39 176h133l-39 -178q159 -12 
283 -76l-63 -135q-121 63 -248 72l-94 -440q149 -55 212.5 -125t63.5 -178q0 -162 
-112.5 -263t-309.5 -123l-49 -225h-133 l49 223q-195 14 -315 72zM401 1010q0 -53 
34.5 -97.5t107.5 -70.5l84 393q-108 -11 -167 -69t-59 -156zM549 250q107 13 170 
75t63 154q0 54 -33 96t-114 74z" />
+<glyph unicode="%" horiz-adv-x="1624" d="M168 860q0 166 50.5 318.5t136.5 
228.5t200 76q116 0 176 -72t60 -205q0 -108 -32 -237.5t-82.5 -217.5t-120.5 
-137t-157 -49q-109 0 -170 75t-61 220zM231 0l1086 1462h151l-1085 -1462h-152zM307 
864q0 -172 107 -172q52 0 94 39.5t73.5 114t50.5 175t19 171.5 q0 166 -108 166q-66 
0 -119 -63t-85 -187.5t-32 -243.5zM909 274q0 166 50.5 318.5t136.5 228.5t200 
76q116 0 176 -71.5t60 -204.5q0 -107 -31.5 -236t-82 -217.5t-121 -138t-156.5 
-49.5q-110 0 -171 74.5t-61 219.5zM10 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1372" d="M66 342q0 148 90 257.5t303 
211.5q-103 165 -103 309q0 164 106 264.5t281 100.5q149 0 236.5 -79t87.5 -212q0 
-78 -32.5 -137t-87.5 -108t-127.5 -90t-153.5 -83l278 -389q127 110 199 
295h168q-101 -236 -283 -412l203 -270h-201l-117 166q-120 -100 -230 -143 t-247 
-43q-168 0 -269 96t-101 266zM229 354q0 -106 66.5 -170.5t175.5 -64.5q87 0 168 
33t195 124l-306 433q-128 -67 -184 -116t-85.5 -107.5t-29.5 -131.5zM516 1118q0 
-120 82 -235q139 71 191 110t83 85t31 104q [...]
+<glyph unicode="'" horiz-adv-x="444" d="M225 934l72 528h188l-153 -528h-107z" />
+<glyph unicode="(" horiz-adv-x="584" d="M82 272q0 339 120 627t384 563h157q-246 
-270 -371.5 -570t-125.5 -618q0 -339 114 -598h-131q-147 266 -147 596z" />
+<glyph unicode=")" horiz-adv-x="584" d="M-160 -324q496 551 496 1188q0 341 -113 
598h131q146 -269 146 -598q0 -341 -121.5 -629.5t-382.5 -558.5h-156z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M215 1194l55 154l371 -185l41 400l172 
-35l-123 -383l422 18l-8 -157l-393 47l180 -383l-166 -52l-113 406l-258 -344l-116 
121l309 284z" />
+<glyph unicode="+" d="M127 
651v142h389v391h141v-391h390v-142h-390v-387h-141v387h-389z" />
+<glyph unicode="," horiz-adv-x="492" d="M-100 -264q126 286 204 502h187l8 
-23q-113 -235 -270 -479h-129z" />
+<glyph unicode="-" horiz-adv-x="639" d="M55 469l35 158h479l-34 -158h-480z" />
+<glyph unicode="." horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 
69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="/" horiz-adv-x="717" d="M-94 0l813 1462h174l-813 -1462h-174z" 
/>
+<glyph unicode="0" d="M121 477q0 270 82 514.5t216.5 369t307.5 124.5q365 0 365 
-471q0 -295 -78.5 -539t-214 -369.5t-314.5 -125.5q-176 0 -270 127.5t-94 
369.5zM293 479q0 -172 50 -264t161 -92q115 0 209 114t150.5 328t56.5 453q0 323 
-203 323q-113 0 -209 -115.5t-155.5 -323 t-59.5 -423.5z" />
+<glyph unicode="1" d="M303 1178l449 284h149l-313 -1462h-172l196 913q59 261 88 
359q-50 -53 -139 -111l-178 -110z" />
+<glyph unicode="2" d="M12 0l31 147l465 420q102 93 176.5 163.5t123 133t72 
124t23.5 136.5q0 99 -60 157t-163 58q-77 0 -150.5 -28.5t-162.5 -96.5l-82 115q191 
154 413 154q176 0 278.5 -88.5t102.5 -243.5q0 -111 -39.5 -204t-131 -197t-294.5 
-281l-352 -307v-8h678l-29 -154h-899z" />
+<glyph unicode="3" d="M47 59v164q94 -49 199 -75.5t190 -26.5q162 0 252 79.5t90 
217.5q0 131 -79 198.5t-220 67.5h-131l31 143h139q165 0 274 87t109 227q0 92 -58 
146t-157 54q-80 0 -157 -27t-175 -93l-80 118q195 144 424 144q179 0 277 -87t98 
-237q0 -156 -101 -264.5t-280 -140.5v-9 q124 -23 195 -106.5t71 -208.5q0 -133 -62 
-234.5t-181 -158.5t-283 -57q-210 0 -385 79z" />
+<glyph unicode="4" d="M16 334l29 158l834 978h196l-207 -983h232l-33 
-153h-233l-72 -334h-164l74 334h-656zM219 487h486q46 220 78 373t116 445h-8q-17 
-29 -66.5 -96.5t-72.5 -96.5z" />
+<glyph unicode="5" d="M80 59v164q164 -102 334 -102q191 0 298 96t107 268q0 126 
-73.5 199.5t-204.5 73.5q-48 0 -97 -6.5t-139 -30.5l-74 57l197 684h668l-33 
-153h-522l-127 -439q87 23 184 23q182 0 289.5 -104.5t107.5 -282.5q0 -161 -73 
-283t-204 -182.5t-308 -60.5q-193 0 -330 79z " />
+<glyph unicode="6" d="M133 424q0 209 60.5 415t163.5 351.5t246 219t327 73.5q111 
0 184 -23l-35 -145q-68 22 -170 22q-212 0 -356.5 -149t-212.5 -443h8q59 79 146.5 
126t193.5 47q154 0 244 -98.5t90 -270.5q0 -161 -66.5 -294.5t-180.5 -204t-261 
-70.5q-182 0 -281.5 115t-99.5 329z M299 416q0 -137 60.5 -216t172.5 -79q94 0 
167.5 54t114 149t40.5 208q0 248 -221 248q-66 0 -128 -28.5t-110 -76t-72 
-104.5t-24 -155z" />
+<glyph unicode="7" d="M174 0l768 1313h-719l31 149h891l-27 -139l-764 
-1323h-180z" />
+<glyph unicode="8" d="M96 346q0 148 95 256t296 184q-95 69 -135.5 144.5t-40.5 
171.5q0 111 54.5 198.5t153.5 136t222 48.5q174 0 271.5 -86.5t97.5 -235.5q0 -129 
-78 -225t-266 -176q127 -78 180 -165t53 -202q0 -122 -60 -217.5t-172.5 
-146.5t-264.5 -51q-190 0 -298 98.5t-108 267.5z M270 354q0 -107 69 -170t181 
-63q139 0 222 74t83 196q0 99 -52 174t-165 135q-185 -60 -261.5 -143.5t-76.5 
-202.5zM479 1100q0 -82 39 -144t127 -116q161 60 228 131.5t67 173.5q0 90 -57.5 
143t-153.5 53q-114 0 -182 -65.5t-68 -175 [...]
+<glyph unicode="9" d="M98 14v158q134 -47 246 -47q202 0 327 141t189 441h-10q-51 
-75 -132.5 -118.5t-180.5 -43.5q-169 0 -261 98.5t-92 288.5q0 153 64.5 280.5t180 
199t259.5 71.5q180 0 279.5 -114.5t99.5 -334.5q0 -194 -56 -406.5t-147.5 
-360t-221.5 -217.5t-302 -70q-136 0 -242 34z M350 938q0 -124 54.5 -190t162.5 
-66q76 0 140 28.5t108.5 81.5t65 114t20.5 151q0 131 -59 207.5t-160 76.5q-150 0 
-241 -113t-91 -290z" />
+<glyph unicode=":" horiz-adv-x="518" d="M43 74q0 77 40.5 122.5t111.5 45.5q43 0 
69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77zM203 956q0 77 
40 122.5t111 45.5q97 0 97 -104q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 
26.5t-27 75.5z" />
+<glyph unicode=";" horiz-adv-x="518" d="M-100 -264q126 286 204 502h187l8 
-23q-113 -235 -270 -479h-129zM203 956q0 77 40 122.5t111 45.5q97 0 97 -104q0 -73 
-41.5 -119.5t-106.5 -46.5q-46 0 -73 26.5t-27 75.5z" />
+<glyph unicode="&#x3c;" d="M121 664v98l919 479v-149l-747 -371l747 -328v-151z" 
/>
+<glyph unicode="=" d="M127 444v142h920v-142h-920zM127 858v139h920v-139h-920z" 
/>
+<glyph unicode="&#x3e;" d="M121 242v151l745 328l-745 371v149l919 -479v-98z" />
+<glyph unicode="?" horiz-adv-x="874" d="M158 74q0 77 40 122.5t111 45.5q44 0 
70.5 -26t26.5 -79q0 -73 -41.5 -119.5t-106.5 -46.5q-46 0 -73 26t-27 77zM197 
1382q92 51 192 76t182 25q167 0 259 -84t92 -238q0 -123 -65.5 -226.5t-225.5 
-223.5q-125 -91 -169 -147.5t-67 -160.5h-135q22 130 72.5 213.5 t165.5 174.5q128 
100 168 144t63 94t23 112q0 93 -51.5 143.5t-147.5 50.5q-81 0 -155 -25.5t-140 
-56.5z" />
+<glyph unicode="@" horiz-adv-x="1735" d="M111 504q0 261 126.5 485.5t343.5 
347.5t486 123q191 0 329 -75.5t210.5 -213.5t72.5 -319q0 -179 -55 -324t-155 
-227t-222 -82q-197 0 -213 184h-8q-111 -184 -291 -184q-115 0 -180.5 75.5t-65.5 
209.5q0 157 68 284t188.5 199t260.5 72q65 0 127.5 -12t150.5 -48 q-64 -242 -98 
-368t-31 -172q0 -117 102 -117q78 0 141.5 67t100.5 183.5t37 243.5q0 239 -128 
367t-370 128q-228 0 -406.5 -107t-277 -295.5t-98.5 -416.5q0 -270 143.5 
-418.5t409.5 -148.5q197 0 420 86v-127q-219  [...]
+<glyph unicode="A" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474z" />
+<glyph unicode="B" horiz-adv-x="1225" d="M86 0l309 1462h375q432 0 432 -336q0 
-141 -87 -238t-245 -126v-10q115 -32 176.5 -110.5t61.5 -188.5q0 -212 -152 
-332.5t-407 -120.5h-463zM287 145h266q181 0 278 80.5t97 227.5q0 116 -74.5 
177.5t-214.5 61.5h-236zM434 836h248q156 0 249 73t93 199 q0 104 -66.5 
155.5t-209.5 51.5h-211z" />
+<glyph unicode="C" horiz-adv-x="1198" d="M150 537q0 261 105.5 485.5t283.5 
342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69q-174 0 -311.5 -97t-218 
-284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 
-164 -45t-188 -14q-242 0 -380 149.5t-138 407.5z" />
+<glyph unicode="D" horiz-adv-x="1364" d="M86 0l309 1462h342q276 0 419.5 
-149.5t143.5 -435.5q0 -261 -105 -461t-300 -308t-457 -108h-352zM287 147h162q202 
0 355 91.5t234.5 258.5t81.5 382t-103 325.5t-302 110.5h-178z" />
+<glyph unicode="E" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 -153h-566l-98 
-469h527l-29 -152h-529l-114 -536h565l-33 -152h-735z" />
+<glyph unicode="F" horiz-adv-x="967" d="M86 0l309 1462h735l-30 -153h-568l-110 
-533h528l-32 -153h-529l-131 -623h-172z" />
+<glyph unicode="G" horiz-adv-x="1386" d="M150 528q0 269 101.5 489.5t281.5 
343t399 122.5q117 0 219.5 -20t206.5 -64l-66 -152q-77 34 -165.5 59t-194.5 
25q-169 0 -307.5 -101.5t-215.5 -283.5t-77 -407q0 -190 102.5 -299t286.5 -109q154 
0 260 39l96 444h-289l33 152h459l-154 -711q-216 -75 -419 -75 q-264 0 -410.5 
144.5t-146.5 403.5z" />
+<glyph unicode="H" horiz-adv-x="1389" d="M86 0l309 1462h170l-131 -622h660l133 
622h168l-310 -1462h-167l143 688h-660l-145 -688h-170z" />
+<glyph unicode="I" horiz-adv-x="559" d="M86 0l311 1462h168l-311 -1462h-168z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-319 -360l6 147q69 -20 145 -20q100 0 
165.5 62.5t90.5 182.5l307 1450h170l-309 -1468q-79 -379 -422 -379q-105 0 -153 
25z" />
+<glyph unicode="K" horiz-adv-x="1141" d="M86 0l309 1462h170l-151 -710l700 
710h209l-639 -637l350 -825h-186q-72 181 -146.5 359.5t-146.5 361.5l-174 
-131l-125 -590h-170z" />
+<glyph unicode="L" horiz-adv-x="971" d="M86 0l309 1462h170l-276 -1308h565l-33 
-154h-735z" />
+<glyph unicode="M" horiz-adv-x="1714" d="M84 0l309 1462h244l149 -1204h9l659 
1204h266l-303 -1462h-174q126 590 193 905.5t94 392.5h-6l-717 -1298h-131l-166 
1296h-8q-7 -72 -28.5 -197.5t-37.5 -199.5l-190 -899h-162z" />
+<glyph unicode="N" horiz-adv-x="1438" d="M84 0l309 1462h180l459 -1220h6q30 224 
72 405l174 815h164l-309 -1462h-181l-460 1223h-6q-32 -221 -74 -418l-172 
-805h-162z" />
+<glyph unicode="O" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 
118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 -116.5q-256 0 -399 
149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 272.5 97.5t190.5 
279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 t-192.5 -281t-68.5 
-398z" />
+<glyph unicode="P" horiz-adv-x="1159" d="M86 0l309 1462h330q214 0 324 
-94.5t110 -282.5q0 -248 -164 -379t-481 -131h-135l-123 -575h-170zM410 
721h133q216 0 328 91t112 267q0 125 -69.5 180.5t-213.5 55.5h-163z" />
+<glyph unicode="Q" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 336t377.5 
118q244 0 384 -154t140 -424q0 -333 -139 -576t-375 -321l274 -358h-219l-227 
330l-17 -2h-16q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 
-111.5q158 0 279 100t187.5 280.5t66.5 399.5q0 199 -94 310.5 t-261 111.5q-157 0 
-281 -101t-192.5 -281t-68.5 -398z" />
+<glyph unicode="R" horiz-adv-x="1165" d="M86 0l309 1462h320q446 0 446 -366q0 
-348 -368 -449l239 -647h-186l-209 608h-252l-129 -608h-170zM416 754h168q193 0 
297 85t104 244q0 121 -67.5 175.5t-219.5 54.5h-166q-102 -494 -116 -559z" />
+<glyph unicode="S" horiz-adv-x="1028" d="M39 43v170q162 -84 340 -84q162 0 257 
75.5t95 207.5q0 78 -52.5 137.5t-195.5 140.5q-151 85 -209.5 170t-58.5 201q0 187 
132 304.5t347 117.5q99 0 184.5 -19t180.5 -65l-66 -150q-66 38 -148 60t-151 
22q-134 0 -215.5 -69.5t-81.5 -188.5q0 -54 17 -92.5t54 -72.5 t142 -95q147 -88 
198.5 -138t78 -110.5t26.5 -140.5q0 -211 -140.5 -327.5t-395.5 -116.5q-106 0 
-186.5 14.5t-151.5 48.5z" />
+<glyph unicode="T" horiz-adv-x="1020" d="M186 1311l33 151h985l-30 
-151h-408l-279 -1311h-172l277 1311h-406z" />
+<glyph unicode="U" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 878h170l-191 
-891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 87.5t139.5 
289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 -126.5q-230 0 -341 
104t-111 299z" />
+<glyph unicode="V" horiz-adv-x="1122" d="M188 1462h170l97 -930q20 -196 20 
-335h4q61 144 162 338l479 927h191l-781 -1462h-180z" />
+<glyph unicode="W" horiz-adv-x="1745" d="M223 1462h170l31 -901l2 -88q0 -98 -10 
-258h6q89 243 156 383l405 864h178l43 -860q9 -153 9 -304l-1 -83h9q75 224 131 
354l387 893h182l-664 -1462h-170l-49 965q-8 136 -8 282h-6q-25 -72 -61 
-154.5t-504 -1092.5h-174z" />
+<glyph unicode="X" horiz-adv-x="1063" d="M-104 0l596 776l-263 686h172l203 
-563l443 563h186l-555 -694l278 -768h-180l-213 641l-481 -641h-186z" />
+<glyph unicode="Y" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 
747h193l-627 -921l-113 -541h-172l119 549z" />
+<glyph unicode="Z" horiz-adv-x="1087" d="M-16 0l28 137l924 1170h-655l32 
155h858l-26 -139l-924 -1169h697l-33 -154h-901z" />
+<glyph unicode="[" horiz-adv-x="586" d="M-16 -324l381 1786h387l-31 
-141h-227l-318 -1503h227l-32 -142h-387z" />
+<glyph unicode="\" horiz-adv-x="717" d="M221 1462h154l217 -1462h-154z" />
+<glyph unicode="]" horiz-adv-x="586" d="M-150 -324l31 142h225l320 1503h-227l30 
141h389l-380 -1786h-388z" />
+<glyph unicode="^" horiz-adv-x="1059" d="M53 553l598 920h109l266 
-920h-145l-201 747l-467 -747h-160z" />
+<glyph unicode="_" horiz-adv-x="807" d="M-188 -324l30 140h811l-30 -140h-811z" 
/>
+<glyph unicode="`" horiz-adv-x="1135" d="M575 1548v21h181q43 -136 147 
-303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
+<glyph unicode="a" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310z" />
+<glyph unicode="b" horiz-adv-x="1182" d="M59 0l330 1556h168q-51 -242 -78.5 
-370.5t-75.5 -300.5h9q93 118 183.5 173.5t186.5 55.5q141 0 220 -99t79 -272q0 
-209 -68.5 -386.5t-191 -277t-276.5 -99.5q-97 0 -170.5 51t-110.5 139h-10l-70 
-170h-125zM319 346q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81 t137.5 230.5t52 
317.5q0 227 -178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" />
+<glyph unicode="c" horiz-adv-x="922" d="M98 389q0 200 74 369t204.5 263.5t293.5 
94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 -76.5t-145 -213t-52.5 
-296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 47v-143q-124 -63 -276 
-63q-194 0 -301 107t-107 302z" />
+<glyph unicode="d" horiz-adv-x="1182" d="M98 350q0 214 72 392t194.5 275t274.5 
97q194 0 281 -190h10q17 155 45 274l78 358h166l-330 -1556h-139l22 209h-8q-101 
-125 -189 -177t-182 -52q-139 0 -217 98t-78 272zM270 346q0 -227 179 -227q94 0 
194 93.5t158.5 239t58.5 296.5q0 111 -54 169t-157 58 q-101 0 -187.5 -82.5t-139 
-232t-52.5 -314.5z" />
+<glyph unicode="e" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 
268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 
-80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 
-61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 
172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261z" />
+<glyph unicode="f" horiz-adv-x="641" d="M-229 -330q64 -22 112 -22q76 0 117 
62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 82.5q40 0 
98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 -177.5l-25 
-108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 -125 
21v141z" />
+<glyph unicode="g" horiz-adv-x="1026" d="M-127 -211q0 105 72 182t233 131q-78 
41 -78 121q0 69 51 118.5t142 92.5q-63 32 -103 94.5t-40 145.5q0 194 119.5 
318t305.5 124q78 0 154 -20h371l-25 -107l-211 -24q41 -62 41 -158q0 -191 -116.5 
-304.5t-311.5 -113.5q-55 0 -84 8q-139 -53 -139 -131 q0 -41 33 -54.5t96 
-21.5l117 -14q181 -22 262.5 -88t81.5 -194q0 -184 -146 -285t-411 -101q-194 0 
-304 73.5t-110 207.5zM35 -195q0 -77 65 -122t193 -45q182 0 284.5 63.5t102.5 
179.5q0 62 -54 98t-184 50l-159 16q-120 -25 [...]
+<glyph unicode="h" horiz-adv-x="1182" d="M59 0l330 1556h168q-18 -82 -34.5 
-159t-34 -156.5t-38 -166.5t-47.5 -189h11q94 123 185.5 176t191.5 53q131 0 202.5 
-72t71.5 -204q0 -62 -23 -166q-39 -193 -145 -672h-168l148 692q18 94 18 135q0 148 
-147 148q-89 0 -173.5 -59t-149 -171.5t-97.5 -271.5 l-101 -473h-168z" />
+<glyph unicode="i" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168zM340 1376q0 56 32 91.5t83 35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 
-38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="j" horiz-adv-x="520" d="M-258 -330q61 -22 119 -22q125 0 168 
205l264 1243h166l-266 -1258q-36 -171 -114.5 -250.5t-213.5 -79.5q-69 0 -123 
21v141zM340 1376q0 56 32 91.5t83 35.5q86 0 86 -90q0 -55 -33.5 -93t-77.5 -38q-38 
0 -64 24.5t-26 69.5z" />
+<glyph unicode="k" horiz-adv-x="999" d="M57 0l330 1556h170l-129 -602q-57 -266 
-102 -395h4l526 537h201l-469 -467l295 -629h-187l-235 524l-152 -123l-82 
-401h-170z" />
+<glyph unicode="l" horiz-adv-x="520" d="M57 0l332 1556h168l-332 -1556h-168z" />
+<glyph unicode="m" horiz-adv-x="1786" d="M59 0l234 1096h139l-22 -203h10q87 119 
173.5 171t178.5 52q113 0 174 -65t72 -181h8q86 125 183 185.5t196 60.5q127 0 
196.5 -68t69.5 -198q0 -68 -22 -178l-144 -672h-170l148 692q20 104 20 146q0 62 
-34.5 99.5t-108.5 37.5q-81 0 -160 -58t-138.5 -164.5 t-90.5 -252.5l-107 
-500h-168l148 692q18 94 18 135q0 70 -31 109t-106 39q-84 0 -163.5 -60t-140 
-171.5t-93.5 -268.5l-101 -475h-168z" />
+<glyph unicode="n" horiz-adv-x="1182" d="M59 0l234 1096h139l-22 -203h10q96 122 
185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 -180l-143 
-672h-170l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 -60t-149 
-171t-97.5 -269l-101 -475h-168z" />
+<glyph unicode="o" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 257t275 
89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 -91q-192 0 -301 
113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 73t129.5 
207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5z" />
+<glyph unicode="p" horiz-adv-x="1182" d="M-43 -492l336 1588h139l-26 -209h8q179 
227 372 227q137 0 216 -97.5t79 -273.5q0 -212 -69 -389t-191 -275.5t-276 
-98.5q-97 0 -170 50t-113 140h-10l-4 -38q-3 -25 -10.5 -70t-114.5 -554h-166zM319 
346q0 -110 55.5 -168.5t160.5 -58.5q99 0 184.5 81t137.5 230.5 t52 317.5q0 227 
-178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" />
+<glyph unicode="q" horiz-adv-x="1182" d="M98 350q0 212 72.5 392t196 277t274.5 
97q94 0 165.5 -50.5t108.5 -141.5h13l67 172h125l-336 -1588h-166l101 480q9 45 57 
221h-8q-95 -121 -185 -175t-186 -54q-140 0 -219.5 97.5t-79.5 272.5zM270 346q0 
-227 179 -227q92 0 190 92t158.5 237t60.5 300 q0 105 -54.5 166t-152.5 61q-101 0 
-189 -84.5t-140 -233t-52 -311.5z" />
+<glyph unicode="r" horiz-adv-x="811" d="M59 0l234 1096h139l-22 -203h10q72 95 
119 136.5t98.5 64t114.5 22.5q69 0 120 -14l-36 -150q-53 13 -105 13q-91 0 -170.5 
-60t-139 -166.5t-87.5 -236.5l-107 -502h-168z" />
+<glyph unicode="s" horiz-adv-x="877" d="M8 49v158q70 -42 151 -65t150 -23q126 0 
190 50t64 128q0 57 -35 96t-151 107q-130 73 -184 143t-54 166q0 138 101 222.5t266 
84.5q171 0 330 -74l-54 -137l-56 25q-101 43 -220 43q-93 0 -146 -43.5t-53 
-112.5q0 -56 35.5 -96t146.5 -103q107 -60 153.5 -103 t69.5 -92.5t23 -111.5q0 
-156 -110.5 -243.5t-311.5 -87.5q-169 0 -305 69z" />
+<glyph unicode="t" horiz-adv-x="664" d="M90 969l14 73l185 78l125 228h98l-55 
-252h274l-26 -127h-273l-129 -604q-18 -87 -18 -132q0 -56 29 -86t81 -30q55 0 144 
26v-129q-34 -14 -84 -24t-80 -10q-125 0 -191.5 59.5t-66.5 177.5q0 66 18 150l127 
602h-172z" />
+<glyph unicode="u" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 676h170l-150 
-695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 270l100 
475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 -201 
69.5t-73 198.5z" />
+<glyph unicode="v" horiz-adv-x="946" d="M98 1096h168l64 -613q24 -258 24 
-362h6q127 275 179 371l325 604h178l-591 -1096h-228z" />
+<glyph unicode="w" horiz-adv-x="1468" d="M117 1096h164l18 -594v-88q0 -147 -8 
-269h6q47 124 137 322l295 629h182l37 -594q6 -168 6 -262v-53l-2 -42h6q28 86 83 
218.5t323 732.5h178l-506 -1096h-205l-32 602q-4 94 -4 172v156h-9l-50 -118l-83 
-189l-291 -623h-202z" />
+<glyph unicode="x" horiz-adv-x="979" d="M-74 0l475 565l-239 531h170l174 
-412l330 412h194l-455 -539l252 -557h-168l-192 434l-346 -434h-195z" />
+<glyph unicode="y" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 140.5 
50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 
-216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 
-67q-72 0 -140 21v135z" />
+<glyph unicode="z" horiz-adv-x="909" d="M-29 0l23 117l694 854h-479l27 
125h657l-29 -140l-680 -831h531l-25 -125h-719z" />
+<glyph unicode="{" horiz-adv-x="715" d="M27 514l32 143q118 0 189.5 43.5t93.5 
147.5l68 326q34 160 117.5 224t254.5 64h33l-31 -141q-105 0 -151 -36.5t-66 
-123.5l-71 -321q-28 -123 -91 -184t-167 -78v-5q151 -41 151 -213q0 -59 -18 
-131l-47 -211q-15 -58 -15 -98q0 -53 36.5 -77.5t119.5 -24.5v-142h-23 q-141 0 
-216.5 52.5t-75.5 171.5q0 52 20 141q33 146 51.5 227.5t14.5 102.5q0 143 -209 
143z" />
+<glyph unicode="|" d="M541 -496v2052h139v-2052h-139z" />
+<glyph unicode="}" horiz-adv-x="715" d="M-74 -182q115 0 167 36t71 123l72 
322q25 117 88 179.5t170 80.5v6q-150 42 -150 211q0 59 18 131l50 213q14 65 14 
99q0 53 -40.5 77.5t-139.5 24.5l28 141h11q144 0 220.5 -52.5t76.5 -170.5q0 -48 
-21 -141l-49 -219q-16 -68 -16 -111q0 -143 209 -143l-33 -144 q-119 0 -190 
-43t-93 -147l-67 -326q-36 -164 -119 -226.5t-264 -62.5h-13v142z" />
+<glyph unicode="~" d="M115 592v151q98 109 243 109q69 0 127 -14.5t144 -51.5q64 
-27 112.5 -41t98.5 -14q55 0 119.5 33t115.5 88v-150q-100 -110 -244 -110q-72 0 
-135 16.5t-135 48.5q-75 32 -120 44t-93 12q-54 0 -118.5 -34.5t-114.5 -86.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="530" d="M-14 -373l274 1057h109l-176 
-1057h-207zM250 950q0 76 40.5 122t110.5 46q44 0 70.5 -26t26.5 -80q0 -71 -40.5 
-117.5t-105.5 -46.5q-48 0 -75 25.5t-27 76.5z" />
+<glyph unicode="&#xa2;" d="M225 590q0 185 63.5 344t178.5 258.5t260 120.5l35 
170h123l-37 -168q119 -9 217 -49l-47 -142q-109 52 -219 52q-112 0 -204.5 
-76.5t-145 -213t-52.5 -296.5q0 -125 66 -198t184 -73q72 0 136 20t126 
48v-143q-123 -62 -286 -66l-41 -198h-125l43 215 q-132 34 -203.5 137.5t-71.5 
257.5z" />
+<glyph unicode="&#xa3;" d="M-23 0l27 141q205 46 258 289l47 221h-200l26 
127h201l76 350q75 353 430 353q184 0 336 -86l-66 -133q-146 79 -278 79q-213 0 
-263 -237l-69 -326h370l-26 -127h-371l-47 -219q-22 -98 -66 -166.5t-124 
-111.5h725l-33 -154h-953z" />
+<glyph unicode="&#xa4;" d="M168 1067l92 92l127 -129q103 70 217 70t215 -70l129 
129l92 -90l-129 -129q70 -104 70 -217q0 -119 -70 -217l127 -127l-90 -90l-129 
127q-98 -68 -215 -68q-119 0 -217 70l-127 -127l-90 90l127 127q-68 96 -68 215q0 
117 68 215zM358 723q0 -103 71.5 -174.5 t174.5 -71.5q104 0 177 71.5t73 174.5q0 
104 -73 177t-177 73q-102 0 -174 -72.5t-72 -177.5z" />
+<glyph unicode="&#xa5;" d="M127 266l29 133h290l33 160h-291l29 133h225l-202 
770h163l179 -747l491 747h187l-533 -770h231l-28 -133h-297l-33 -160h297l-29 
-133h-295l-57 -266h-154l56 266h-291z" />
+<glyph unicode="&#xa6;" d="M541 281h139v-777h-139v777zM541 
780v776h139v-776h-139z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M59 53v148q56 -34 136.5 -56t156.5 
-22q133 0 204 44.5t71 129.5q0 48 -50.5 89t-152.5 87q-138 61 -194 130.5t-56 
166.5q0 201 238 307q-119 70 -119 203q0 127 103.5 206t279.5 79q189 0 321 -68l-53 
-123q-148 60 -266 60q-102 0 -162.5 -40.5t-60.5 -109.5 q0 -49 38 -83.5t162 
-90.5q100 -44 149 -83.5t75 -89.5t26 -114q0 -97 -61 -180t-172 -139q114 -71 114 
-189q0 -152 -114 -237.5t-318 -85.5q-176 0 -295 61zM326 791q0 -70 50.5 
-117t198.5 -111q80 44 127.5 107t47.5 [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M457 1378q0 46 28 79.5t74 
33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 
46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 
62z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 
276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 
-273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 
-323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 
323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM520 
733q0 208 110 330.5t300 122.5q130 0 248 -60l-60 -120q-106 53 -190 53q-125 0 
-191.5 -87t-66.5 -241q0 -169 65 -249.5t1 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M170 1014q0 127 41.5 234.5t116.5 
169t170 61.5q114 0 153 -103h6l37 90h86l-139 -665h-92l14 117h-4q-40 -56 -90 
-93t-123 -37q-77 0 -126.5 60t-49.5 166zM283 1030q0 -139 98 -139q61 0 112.5 
49t86 137.5t34.5 167.5q0 62 -28.5 96.5t-85.5 34.5q-92 0 -154.5 -103 t-62.5 
-243z" />
+<glyph unicode="&#xab;" horiz-adv-x="958" d="M88 555v29l391 374l78 -81l-297 
-328l172 -387l-113 -49zM483 510v31l367 405l86 -69l-283 -365l158 -350l-113 -49z" 
/>
+<glyph unicode="&#xac;" d="M127 651v142h920v-529h-140v387h-780z" />
+<glyph unicode="&#xad;" horiz-adv-x="639" d="M55 469l35 158h479l-34 
-158h-480z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M139 731q0 200 100 375t275 
276t377 101q197 0 370 -97t277 -272t104 -383q0 -204 -100.5 -376.5t-273 
-273.5t-377.5 -101q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM244 731q0 -173 87 
-323.5t237.5 -237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5 q0 174 -87 
323t-235.5 236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM645 
291v880h229q163 0 241.5 -63t78.5 -193q0 -78 -47.5 -141t-132.5 -98l227 
-385h-149l-207 352h-113v-352h-127zM772 762h92q [...]
+<glyph unicode="&#xaf;" horiz-adv-x="782" d="M227 1556l33 132h787l-35 
-132h-785z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M215 1171q0 128 90.5 220t220.5 
92q83 0 155.5 -41.5t114.5 -114t42 -156.5q0 -128 -90.5 -218.5t-221.5 -90.5t-221 
90.5t-90 218.5zM328 1171q0 -80 58 -138t140 -58q83 0 140 58.5t57 137.5q0 82 
-57.5 140.5t-139.5 58.5q-80 0 -139 -58.5t-59 -140.5z" />
+<glyph unicode="&#xb1;" d="M127 0v141h920v-141h-920zM127 
643v141h389v392h141v-392h390v-141h-390v-387h-141v387h-389z" />
+<glyph unicode="&#xb2;" horiz-adv-x="717" d="M96 586l23 106l264 228q115 100 
158.5 149.5t63.5 93t20 90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 
274 101q109 0 171.5 -56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 
-187h395l-25 -116h-561z" />
+<glyph unicode="&#xb3;" horiz-adv-x="717" d="M119 625v127q125 -72 239 -72q205 
0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 
30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151q0 -180 -207 
-234v-4q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5 q-125 0 -233 56z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M532 1241v27q56 60 125.5 
151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1194" d="M-43 -492l336 1588h168l-148 
-695q-18 -92 -18 -135q0 -147 147 -147q89 0 172 59t148.5 171t99.5 269l105 
478h163l-233 -1096h-139l24 205h-12q-93 -121 -183 -173t-188 -52q-112 0 -163 
96h-9q-11 -78 -22.5 -148t-83.5 -420h-164z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M199 1042q0 260 109 387t341 
127h557v-1816h-114v1661h-213v-1661h-115v819q-62 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="518" d="M170 690q0 77 40.5 122.5t111.5 
45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-170 -383q38 -6 68 -6q174 0 174 
110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 
-157t-214 -59q-41 0 -86 9v100z" />
+<glyph unicode="&#xb9;" horiz-adv-x="717" d="M258 1280l279 182h118l-186 
-876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5z" />
+<glyph unicode="&#xba;" horiz-adv-x="688" d="M168 1055q0 117 42 215.5t117.5 
153.5t174.5 55q117 0 180 -67t63 -193q0 -191 -88.5 -311t-240.5 -120q-113 0 
-180.5 71t-67.5 196zM281 1059q0 -85 38 -127.5t107 -42.5q94 0 152.5 88.5t58.5 
232.5q0 166 -137 166q-102 0 -160.5 -87.5t-58.5 -229.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="958" d="M23 197l282 360l-158 354l113 
50l217 -402v-31l-368 -401zM401 197l297 323l-172 391l113 50l233 -447v-29l-393 
-370z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1518" d="M123 0l1085 1462h154l-1086 
-1462h-153zM204 1280l279 182h118l-186 -876h-135l112 526q25 103 58 225q-25 -25 
-50 -46.5t-145 -100.5zM706 203l23 101l481 579h133l-121 -563h127l-22 
-117h-129l-43 -202h-127l43 202h-365zM870 320h225q69 322 90 395 q-20 -36 -110 
-149z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1518" d="M148 1280l279 182h118l-186 
-876h-135l112 526q25 103 58 225q-25 -25 -50 -46.5t-145 -100.5zM66 0l1085 
1462h154l-1086 -1462h-153zM782 1l23 106l264 228q115 100 158.5 149.5t63.5 93t20 
90.5q0 53 -31 85t-90 32q-90 0 -195 -80l-59 90q125 101 274 101 q109 0 171.5 
-56.5t62.5 -150.5q0 -99 -52.5 -179.5t-197.5 -205.5l-221 -187h395l-25 
-116h-561z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1565" d="M87 625v127q125 -72 239 -72q205 
0 205 170q0 137 -178 137h-90l22 107h95q97 0 155 41t58 112q0 60 -34.5 90.5t-93.5 
30.5q-102 0 -196 -68l-55 93q109 88 268 88q114 0 178 -56t64 -151q0 -180 -207 
-234v-4q69 -17 108 -68t39 -120q0 -132 -91 -205.5t-253 -73.5 q-125 0 -233 
56zM273 0l1085 1462h154l-1086 -1462h-153zM856 203l23 101l481 579h133l-121 
-563h127l-22 -117h-129l-43 -202h-127l43 202h-365zM1020 320h225q69 322 90 
395q-20 -36 -110 -149z" />
+<glyph unicode="&#xbf;" horiz-adv-x="874" d="M-4 -78q0 124 66 228t225 223q132 
98 172.5 152.5t62.5 154.5h135q-22 -130 -72 -212t-165 -175l-95 -75q-159 -127 
-159 -275q0 -93 51.5 -144t147.5 -51q80 0 154 25.5t140 56.5l62 -129q-90 -48 -189 
-74t-186 -26q-168 0 -259 83.5t-91 237.5zM512 946q0 71 40 118.5 t107 47.5q47 0 
74 -25.5t27 -76.5q0 -77 -40.5 -122.5t-111.5 -45.5q-43 0 -69.5 26t-26.5 78z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM535 1886v21h181q43 -136 147 -303v-25h-104q-61 61 
-128.5 154t-95.5 153z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM679 1579v27q56 60 125.5 151.5t106.5 
149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM465 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 
-99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189 h-109z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM432 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 
-39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258 q-40 0 -77.5 17.5t-73 
39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM523 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 
-29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM887 1716q0 46 28 79.5 t75 33.5q77 
0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1137" d="M-117 0l799 1462h174l184 
-1462h-170l-57 465h-496l-245 -465h-189zM401 621h394l-35 299q-24 179 -29 350q-37 
-88 -80.5 -175t-249.5 -474zM553 1583q0 94 62 152.5t157 58.5q101 0 160 -57t59 
-152q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 155.5zM657 1583 q0 -54 29.5 
-84.5t85.5 -30.5q51 0 83 30.5t32 84.5q0 53 -32 84t-83 31q-49 0 -82 -31t-33 
-84z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1673" d="M-119 0l938 1462h938l-33 
-153h-565l-100 -469h528l-28 -150h-529l-115 -538h566l-33 -152h-737l98 
465h-438l-293 -465h-197zM469 621h371l147 688h-84z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1198" d="M150 537q0 261 105.5 485.5t283.5 
342.5t403 118q197 0 348 -80l-69 -141q-138 69 -279 69q-174 0 -311.5 -97t-218 
-284.5t-80.5 -408.5q0 -187 97.5 -298.5t268.5 -111.5q139 0 322 57v-149q-86 -31 
-164 -45t-188 -14q-242 0 -380 149.5t-138 407.5zM377 -383 q38 -6 68 -6q174 0 174 
110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 
-157t-214 -59q-41 0 -86 9v100z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 
-153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM570 
1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 
-153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM657 
1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 
-156h-105z" />
+<glyph unicode="&#xca;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 
-153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM469 
1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 
48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1047" d="M86 0l309 1462h735l-32 
-153h-566l-98 -469h527l-29 -152h-529l-114 -536h565l-33 -152h-735zM523 1716q0 46 
28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 
62zM887 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34 q-35 0 
-58.5 22t-23.5 62z" />
+<glyph unicode="&#xcc;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 
-1462h-168zM265 1886v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 
153z" />
+<glyph unicode="&#xcd;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 
-1462h-168zM412 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 
-151t-177 -156h-105z" />
+<glyph unicode="&#xce;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 
-1462h-168zM193 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 
-66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xcf;" horiz-adv-x="559" d="M86 0l311 1462h168l-311 
-1462h-168zM265 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 
-34q-35 0 -58.5 22t-23.5 62zM629 1716q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 
-29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1364" d="M72 649l32 150h150l141 
663h342q276 0 419.5 -149.5t143.5 -435.5q0 -261 -105 -461t-300 -308t-457 
-108h-352l135 649h-149zM287 147h162q202 0 355 91.5t234.5 258.5t81.5 382t-103 
325.5t-302 110.5h-178l-111 -516h330l-33 -150h-330z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1438" d="M84 0l309 1462h180l459 
-1220h6q30 224 72 405l174 815h164l-309 -1462h-181l-460 1223h-6q-32 -221 -74 
-418l-172 -805h-162zM600 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 
-39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5 t-73 
39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 
336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 
272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 
t-192.5 -281t-68.5 -398zM679 1886v21h181q43 -136 147 -303v-25h-104q-61 61 
-128.5 154t-95.5 153z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 
336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 
272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 
t-192.5 -281t-68.5 -398zM821 1579v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 
-49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 
336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 
272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 
t-192.5 -281t-68.5 -398zM612 1579v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 
128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 
336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 
272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 
t-192.5 -281t-68.5 -398zM565 1579q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 
-39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 
39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1475" d="M150 549q0 264 96 482t263.5 
336t377.5 118q244 0 384 -154t140 -424q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-256 0 -399 149.5t-143 419.5zM332 553q0 -199 98 -310.5t266 -111.5q152 0 
272.5 97.5t190.5 279.5t70 403q0 199 -94 310.5t-261 111.5q-157 0 -281 -101 
t-192.5 -281t-68.5 -398zM664 1716q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 
-83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1028 1716q0 46 28 79.5t75 33.5q77 0 77 
-80q0 -49 -29.5 -83t-68.5 -34q-35 0 - [...]
+<glyph unicode="&#xd7;" d="M168 1044l98 99l320 -320l323 320l99 -96l-324 
-324l322 -322l-97 -96l-323 320l-320 -318l-96 96l317 320z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1475" d="M119 8l137 170q-106 136 -106 
371q0 264 96 482t263.5 336t377.5 118q99 0 178.5 -27t151.5 -84l131 166l114 
-92l-149 -184q48 -62 73 -156t25 -201q0 -269 -88 -481.5t-252 -329t-379 
-116.5q-200 0 -332 96l-129 -160zM332 553q0 -135 41 -227l737 919q-90 88 -236 88 
q-157 0 -281 -101t-192.5 -281t-68.5 -398zM463 205q91 -74 233 -74q152 0 272.5 
97.5t190.5 279.5t70 403q0 118 -33 205z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 
878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 
87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 
-126.5q-230 0 -341 104t-111 299zM663 1886v21h181q43 -136 147 -303v-25h-104 q-61 
61 -128.5 154t-95.5 153z" />
+<glyph unicode="&#xda;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 
878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 
87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 
-126.5q-230 0 -341 104t-111 299zM823 1579v27q56 60 125.5 151.5t106.5 
149.5h190v-21 q-38 -49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 
878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 
87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 
-126.5q-230 0 -341 104t-111 299zM602 1579v27q145 133 204.5 197.5t82.5 103.5h158 
q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1384" d="M164 383q0 81 24 201l189 
878h170l-191 -891q-22 -106 -22 -188q0 -117 73 -184.5t218 -67.5q172 0 267.5 
87.5t139.5 289.5l205 954h170l-205 -966q-55 -263 -197.5 -389.5t-388.5 
-126.5q-230 0 -341 104t-111 299zM643 1716q0 46 28 79.5t74 33.5q78 0 78 -80 q0 
-49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM1007 1716q0 46 28 79.5t75 
33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 
747h193l-627 -921l-113 -541h-172l119 549zM616 1579v27q56 60 125.5 151.5t106.5 
149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xde;" horiz-adv-x="1159" d="M86 0l309 1462h170l-53 
-256h160q213 0 323.5 -95t110.5 -282q0 -248 -164 -379t-483 -131h-133l-70 
-319h-170zM354 465h135q215 0 328 91t113 267q0 126 -70 181t-215 55h-166z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1182" d="M-256 -328q61 -22 111 -22q65 0 
107 47.5t65 157.5l280 1314q43 200 156 299t307 99q162 0 252 -71t90 -196q0 -57 
-21 -106.5t-61.5 -95t-178.5 -150.5q-110 -83 -110 -151q0 -56 95 -122q47 -34 101 
-87.5t79.5 -110t25.5 -123.5q0 -175 -108.5 -274.5t-292.5 -99.5 q-175 0 -268 
71v160q51 -41 118.5 -66.5t129.5 -25.5q113 0 181 58t68 159q0 40 -10.5 71t-33.5 
59t-89 83q-88 69 -122.5 124t-34.5 115q0 53 18.5 96t49.5 78.5t124 104.5q80 56 
111 87.5t48 65t17 70.5q0 64 - [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM496 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM600 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 
-156h-105z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM390 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 
-66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM354 1241q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 
69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 
17.5q-44 0 -69.5 -28.5t- [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM454 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 
-58.5 22t-23.5 62zM818 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 -29.5 
-83t-68.5 -34q-35 0 -58 [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1157" d="M98 350q0 208 71 386t196 279t274 
101q92 0 164 -49.5t112 -142.5h11l67 172h127l-233 -1096h-133l26 209h-8q-179 -229 
-377 -229q-139 0 -218 99t-79 271zM270 346q0 -114 47 -170.5t132 -56.5q97 0 193 
92.5t156 241t60 297.5q0 103 -56 164t-147 61 q-104 0 -193.5 -86t-140.5 -233t-51 
-310zM513 1454q0 94 62 152.5t157 58.5q101 0 160 -57t59 -152q0 -99 -60 -157t-159 
-58q-101 0 -160 57.5t-59 155.5zM617 1454q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 
30.5t32 84.5q0 53 - [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1669" d="M98 348q0 206 70.5 385t191.5 
281t263 102q82 0 145 -48.5t102 -143.5h11l67 172h109l-31 -146q123 166 332 
166q119 0 192.5 -68t73.5 -184q0 -182 -166.5 -283.5t-472.5 -101.5h-39l-4 -80q0 
-131 62.5 -204.5t193.5 -73.5q55 0 116.5 16.5t178.5 67.5v-150 q-164 -75 -328 
-75q-108 0 -189.5 39.5t-121.5 119.5l-31 -139h-114l26 209h-8q-109 -132 -191.5 
-180.5t-177.5 -48.5q-122 0 -191 99t-69 269zM270 348q0 -114 37 -171.5t105 
-57.5q95 0 188.5 91.5t153 240.5t59.5 299 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="922" d="M98 389q0 200 74 369t204.5 
263.5t293.5 94.5q137 0 268 -51l-47 -141q-120 51 -219 51q-112 0 -204.5 
-76.5t-145 -213t-52.5 -296.5q0 -128 66.5 -199t183.5 -71q72 0 136 20t126 
47v-143q-124 -63 -276 -63q-194 0 -301 107t-107 302zM211 -383q38 -6 68 -6 q174 0 
174 110q0 46 -39 67.5t-99 29.5l101 182h106l-61 -121q131 -38 131 -155q0 -98 -81 
-157t-214 -59q-41 0 -86 9v100z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 
268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 
-80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 
-61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 
172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM449 1548v21h181q43 
-136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 153z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 
268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 
-80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 
-61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 
172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM585 1241v27q56 60 
125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xea;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 
268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 
-80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 
-61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 
172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM351 1241v27q145 
133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 
189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1010" d="M98 391q0 188 74.5 360.5t197.5 
268.5t271 96q153 0 230 -66.5t77 -185.5q0 -180 -166 -282.5t-475 -102.5h-33l-4 
-80q0 -131 61.5 -204.5t190.5 -73.5q63 0 129.5 18t165.5 66v-146q-94 -44 -166 
-61.5t-159 -17.5q-184 0 -289 109t-105 302zM299 618h12 q228 0 349.5 59.5t121.5 
172.5q0 53 -36.5 88t-114.5 35q-103 0 -193.5 -94t-138.5 -261zM413 1378q0 46 28 
79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM777 
1378q0 46 28 79.5t75 33.5q [...]
+<glyph unicode="&#xec;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168zM164 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 154t-95.5 
153z" />
+<glyph unicode="&#xed;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168zM324 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 -140 
-151t-177 -156h-105z" />
+<glyph unicode="&#xee;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168zM93 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 -235l42 
-66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xef;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168zM161 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 -83t-68.5 
-34q-35 0 -58.5 22t-23.5 62zM525 1378q0 46 28 79.5t75 33.5q77 0 77 -80q0 -49 
-29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1165" d="M90 373q0 160 67.5 298t187 
217t267.5 79q105 0 181.5 -45.5t111.5 -124.5l6 2v17q0 136 -36.5 240t-110.5 
197l-270 -149l-56 108l238 131q-66 58 -146 113l95 117q118 -84 188 -154l260 
146l64 -105l-240 -133q87 -115 126.5 -240.5t39.5 -269.5q0 -253 -71.5 -447 t-203 
-292t-311.5 -98q-182 0 -284.5 104t-102.5 289zM262 377q0 -126 57.5 -191t167.5 
-65q107 0 190 56t134 168t51 226q0 118 -65.5 187t-178.5 69q-109 0 -189 
-57.5t-123.5 -161t-43.5 -231.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1182" d="M59 0l234 1096h139l-22 
-203h10q96 122 185.5 172.5t185.5 50.5q127 0 200.5 -69.5t73.5 -194.5q0 -79 -23 
-180l-143 -672h-170l148 692q20 104 20 144q0 63 -35.5 101t-113.5 38q-89 0 -173.5 
-60t-149 -171t-97.5 -269l-101 -475h-168zM369 1241q58 258 231 258 q44 0 83.5 
-18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 
0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 -86.5h-100z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 
257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 
-91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 
73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5zM470 1548v21h181q43 -136 147 -303v-25h-104q-61 61 -128.5 
154t-95.5 153z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 
257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 
-91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 
73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5zM589 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21q-38 -49 
-140 -151t-177 -156h-105z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 
257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 
-91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 
73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5zM382 1241v27q145 133 204.5 197.5t82.5 103.5h158q37 -99 128 
-235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 
257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 
-91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 
73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5zM342 1241q58 258 231 258q44 0 83.5 -18t75 -39.5t66.5 
-39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 -258q-40 0 -77.5 17.5t-73 
39t-69 39t-65.5 17.5q-44 0 -69.5 -28. [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1149" d="M98 406q0 190 73 357.5t197 
257t275 89.5q190 0 300 -112.5t110 -309.5q0 -188 -72 -355t-195 -258t-278 
-91q-192 0 -301 113t-109 309zM270 397q0 -131 63.5 -202.5t182.5 -71.5q104 0 187 
73t129.5 207.5t46.5 307.5q0 115 -62.5 186.5t-169.5 71.5q-109 0 -195.5 -74 t-134 
-205.5t-47.5 -292.5zM433 1378q0 46 28 79.5t74 33.5q78 0 78 -80q0 -49 -29.5 
-83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM797 1378q0 46 28 79.5t75 33.5q77 0 77 
-80q0 -49 -29.5 -83t-68.5 -34q-35 0  [...]
+<glyph unicode="&#xf7;" d="M127 651v142h920v-142h-920zM475 373q0 121 111 
121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 31t-29.5 90zM475 
1071q0 121 111 121q53 0 82.5 -30.5t29.5 -90.5q0 -58 -30 -89.5t-82 -31.5t-81.5 
31t-29.5 90z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1149" d="M61 6l109 135q-68 103 -68 265q0 
194 73.5 361t195.5 255t272 88q146 0 252 -68l104 129l105 -79l-119 -129q62 -97 62 
-258q0 -189 -69.5 -360t-191.5 -266t-276 -95q-146 0 -246 65l-98 -125zM264 416q0 
-92 17 -137l518 645q-54 47 -152 47q-108 0 -195.5 -73 t-137.5 -202t-50 -280zM358 
166q57 -45 158 -45q103 0 188.5 71.5t133 200.5t47.5 295q0 84 -13 119z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 
676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 
270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 
-201 69.5t-73 198.5zM472 1548v21h181q43 -136 147 -303v-25h-104 q-61 61 -128.5 
154t-95.5 153z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 
676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 
270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 
-201 69.5t-73 198.5zM636 1241v27q56 60 125.5 151.5t106.5 149.5h190v-21 q-38 -49 
-140 -151t-177 -156h-105z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 
676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 
270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 
-201 69.5t-73 198.5zM409 1241v27q145 133 204.5 197.5t82.5 103.5h158 q37 -99 128 
-235l42 -66v-27h-103q-57 48 -161 189q-134 -119 -242 -189h-109z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1182" d="M113 248q0 62 22 172l146 
676h170l-150 -695q-18 -89 -18 -139q0 -143 147 -143q88 0 173 60t150 172t99 
270l100 475h166l-231 -1096h-139l22 203h-12q-98 -125 -187 -174t-184 -49q-128 0 
-201 69.5t-73 198.5zM457 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 
-83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM821 1378q0 46 28 79.5t75 33.5q77 0 77 
-80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#xfd;" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 
140.5 50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 
-216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 
-67q-72 0 -140 21v135zM500 1241v27q56 60 125.5 151.5t106.5 149.5h190 v-21q-38 
-49 -140 -151t-177 -156h-105z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1182" d="M-43 -492l432 2048h168q-95 -441 
-115 -522t-39 -149h9q101 125 189 177t183 52q139 0 218 -97.5t79 -273.5q0 -212 
-69 -389t-191 -275.5t-276 -98.5q-98 0 -172 51t-113 139h-10q-8 -104 -25 
-176l-102 -486h-166zM319 346q0 -110 55.5 -168.5t160.5 -58.5 q99 0 184.5 
81t137.5 230.5t52 317.5q0 227 -178 227q-96 0 -195.5 -95t-158 -239t-58.5 -295z" 
/>
+<glyph unicode="&#xff;" horiz-adv-x="946" d="M-197 -336q63 -18 131 -18q82 0 
140.5 50.5t113.5 149.5l76 136l-166 1114h168l74 -545q10 -69 19.5 -203.5t9.5 
-216.5h6q35 87 87 200t77 156l325 609h178l-696 -1282q-93 -172 -184 -239t-219 
-67q-72 0 -140 21v135zM335 1378q0 46 28 79.5t74 33.5q78 0 78 -80 q0 -49 -29.5 
-83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM699 1378q0 46 28 79.5t75 33.5q77 0 77 
-80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62z" />
+<glyph unicode="&#x131;" horiz-adv-x="520" d="M59 0l234 1096h168l-234 
-1096h-168z" />
+<glyph unicode="&#x152;" horiz-adv-x="1751" d="M150 549q0 264 96 482t263.5 
336t377.5 118q152 0 237 -23h709l-31 -153h-565l-100 -469h528l-31 -150h-528l-115 
-538h565l-32 -152h-674q-78 -20 -158 -20q-256 0 -399 149.5t-143 419.5zM332 553q0 
-199 98 -310.5t266 -111.5q69 0 123 19l246 1161q-76 22 -191 22 q-157 0 -281 
-101t-192.5 -281t-68.5 -398z" />
+<glyph unicode="&#x153;" horiz-adv-x="1769" d="M98 406q0 193 75 360t201 
255.5t281 88.5q270 0 359 -225q75 109 177.5 170t221.5 61q139 0 217 -65.5t78 
-186.5q0 -183 -164.5 -284t-468.5 -101h-41l-4 -80q0 -131 61.5 -204.5t190.5 
-73.5q75 0 145 24.5t150 59.5v-150q-162 -75 -326 -75q-270 0 -356 225 q-69 -107 
-171.5 -164t-225.5 -57q-184 0 -292 114t-108 308zM270 410q0 -141 62 -214t172 
-73q177 0 278 160.5t101 427.5q0 124 -59.5 191t-174.5 67q-109 0 -196 -73t-135 
-202t-48 -284zM1053 618h18q231 0 351 61t [...]
+<glyph unicode="&#x178;" horiz-adv-x="1030" d="M188 1462h170l179 -747l489 
747h193l-627 -921l-113 -541h-172l119 549zM452 1716q0 46 28 79.5t74 33.5q78 0 78 
-80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22t-23.5 62zM816 1716q0 46 28 79.5t75 
33.5q77 0 77 -80q0 -49 -29.5 -83t-68.5 -34q-35 0 -58.5 22 t-23.5 62z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M399 1241v27q145 133 204.5 
197.5t82.5 103.5h158q37 -99 128 -235l42 -66v-27h-103q-57 48 -161 189q-134 -119 
-242 -189h-109z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M551 1454q0 94 62 152.5t157 
58.5q101 0 160 -57t59 -152q0 -99 -60 -157t-159 -58q-101 0 -160 57.5t-59 
155.5zM655 1454q0 -54 29.5 -84.5t85.5 -30.5q51 0 83 30.5t32 84.5q0 53 -32 
84t-83 31q-49 0 -82 -31t-33 -84z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M336 1241q58 258 231 258q44 0 
83.5 -18t75 -39.5t66.5 -39.5t58 -18q44 0 69.5 27t51.5 90h100q-66 -258 -233 
-258q-40 0 -77.5 17.5t-73 39t-69 39t-65.5 17.5q-44 0 -69.5 -28.5t-47.5 
-86.5h-100z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="639" d="M55 469l35 158h479l-34 
-158h-480z" />
+<glyph unicode="&#x2011;" horiz-adv-x="639" d="M55 469l35 158h479l-34 
-158h-480z" />
+<glyph unicode="&#x2012;" horiz-adv-x="639" d="M55 469l35 158h479l-34 
-158h-480z" />
+<glyph unicode="&#x2013;" horiz-adv-x="983" d="M55 469l35 160h823l-34 
-160h-824z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M55 469l35 160h1806l-34 
-160h-1807z" />
+<glyph unicode="&#x2018;" horiz-adv-x="348" d="M123 983q98 211 270 
479h127q-147 -345 -203 -501h-188z" />
+<glyph unicode="&#x2019;" horiz-adv-x="348" d="M125 961q134 298 203 501h188l8 
-22q-40 -91 -111 -218.5t-159 -260.5h-129z" />
+<glyph unicode="&#x201a;" horiz-adv-x="492" d="M-100 -264q126 286 204 
502h187l8 -23q-113 -235 -270 -479h-129z" />
+<glyph unicode="&#x201c;" horiz-adv-x="719" d="M123 983q98 211 270 
479h127q-147 -345 -203 -501h-188zM492 983q80 181 272 479h127q-162 -379 -203 
-501h-188z" />
+<glyph unicode="&#x201d;" horiz-adv-x="719" d="M125 961q134 298 203 501h188l8 
-22q-40 -91 -111 -218.5t-159 -260.5h-129zM494 961q57 126 115.5 272.5t86.5 
228.5h189l10 -22q-94 -206 -274 -479h-127z" />
+<glyph unicode="&#x201e;" horiz-adv-x="858" d="M-100 -264q126 286 204 
502h187l8 -23q-113 -235 -270 -479h-129zM268 -264q140 316 203 502h188l9 -23q-95 
-205 -271 -479h-129z" />
+<glyph unicode="&#x2022;" horiz-adv-x="774" d="M199 684q0 145 73.5 231t198.5 
86q92 0 139 -49t47 -141q0 -141 -74 -230t-202 -89q-89 0 -135.5 49.5t-46.5 
142.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1563" d="M563 74q0 77 40.5 122.5t111.5 
45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 
77zM1085 74q0 77 40.5 122.5t111.5 45.5q43 0 69.5 -26t26.5 -79q0 -71 -40 
-118.5t-108 -47.5q-46 0 -73 26t-27 77zM43 74q0 77 40.5 122.5t111.5 45.5 q43 0 
69.5 -26t26.5 -79q0 -71 -40 -118.5t-108 -47.5q-46 0 -73 26t-27 77z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="580" d="M88 549v29l391 380l78 -81l-297 
-334l172 -381l-113 -49z" />
+<glyph unicode="&#x203a;" horiz-adv-x="580" d="M23 197l296 333l-172 381l113 
50l232 -437v-28l-392 -381z" />
+<glyph unicode="&#x2044;" horiz-adv-x="268" d="M-487 0l1085 1462h154l-1086 
-1462h-153z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="717" d="M92 788l23 101l481 579h133l-121 
-563h127l-22 -117h-129l-43 -202h-127l43 202h-365zM256 905h225q69 322 90 395q-20 
-36 -110 -149z" />
+<glyph unicode="&#x20ac;" d="M63 504l27 131h154q8 80 30 164h-151l27 133h159q97 
267 259.5 408t369.5 141q89 0 160 -21.5t141 -70.5l-80 -138q-113 78 -231 78q-140 
0 -254 -99t-189 -298h426l-26 -133h-441q-21 -65 -32 -164h381l-29 -131h-361q0 
-373 297 -373q123 0 256 55v-147 q-127 -59 -278 -59q-212 0 -328.5 133.5t-116.5 
378.5v12h-170z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M121 
1358v104h516v-104h-199v-617h-121v617h-196zM705 741v721h180l182 -557l193 
557h170v-721h-121v430q0 73 4 121h-6l-197 -551h-96l-189 551h-6q4 -52 4 
-121v-430h-118z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1095" d="M0 
1095h1095v-1095h-1095v1095z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1165" d="M-229 -330q64 -22 112 -22q76 0 
117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 
82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 
-177.5l-25 -108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 
-125 21v141zM702 0l234 1096h168l-234 -1096h-168zM983 1376q0 56 32 91.5t83 
35.5q88 0 88 -90q0 -55 -33.5 -93t-77.5 -38q-40 0 -66 24.5t-26 69.5z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1165" d="M-229 -330q64 -22 112 -22q76 0 
117 62t66 177l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 
82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 
-177.5l-25 -108h238l-25 -127h-237l-232 -1098q-39 -189 -120 -276 t-213 -87q-69 0 
-125 21v141zM700 0l332 1556h168l-332 -1556h-168z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1815" d="M-229 -330q64 -22 112 -22q70 0 
114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 
82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 
-177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11 t92.5 -26l-45 
-129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 
-1098q-43 -195 -123.5 -279t-210.5 -84q-71 0 -125 21v141q61 -22 115 -22q68 0 111 
57.5t69 181.5l227 1082h-481l-2 [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="1815" d="M-229 -330q64 -22 112 -22q70 0 
114 58t69 181l227 1082h-193l13 67l206 66l23 100q46 200 127.5 282.5t241.5 
82.5q40 0 98 -11.5t90 -25.5l-43 -129q-76 29 -137 29q-87 0 -133.5 -48.5t-75.5 
-177.5l-25 -108h482l24 108q45 197 126 280t243 83q41 0 97.5 -11 t92.5 -26l-45 
-129q-76 29 -137 29q-89 0 -135 -51t-74 -175l-24 -108h239l-26 -127h-238l-231 
-1098q-43 -195 -123.5 -279t-210.5 -84q-71 0 -125 21v141q61 -22 115 -22q68 0 111 
57.5t69 181.5l227 1082h-481l-2 [...]
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.ttf
new file mode 100755
index 0000000..cb3fda6
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.woff
new file mode 100755
index 0000000..03eaf58
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Italic-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.eot
new file mode 100755
index 0000000..f17617e
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.svg
new file mode 100755
index 0000000..deadc3e
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.svg
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLight" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="492" d="M164 78q0 98 80 98q82 0 82 -98t-82 
-98q-80 0 -80 98zM186 1462h119l-29 -1085h-61z" />
+<glyph unicode="&#x22;" horiz-adv-x="723" d="M133 1462h127l-33 -528h-61zM463 
1462h127l-33 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M55 451v79h299l76 398h-297v80h311l86 
454h91l-89 -454h365l88 454h86l-88 -454h285v-80h-301l-76 -398h303v-79h-320l-86 
-451h-90l88 451h-360l-86 -451h-88l86 451h-283zM440 530h363l78 398h-363z" />
+<glyph unicode="$" d="M164 186v103q75 -36 179.5 -61t193.5 -25v508q-145 44 -215 
88t-102 104t-32 146q0 124 94.5 208.5t254.5 104.5v192h81v-190q197 -9 351 -72l-33 
-90q-141 62 -318 72v-486q213 -66 293 -144t80 -204q0 -133 -99 -217t-274 
-106v-236h-81v232q-92 2 -200.5 22.5 t-172.5 50.5zM297 1049q0 -86 57 -141t183 
-93v453q-119 -16 -179.5 -76t-60.5 -143zM618 209q122 13 192.5 75t70.5 160q0 85 
-63 140.5t-200 95.5v-471z" />
+<glyph unicode="%" horiz-adv-x="1653" d="M113 1026q0 223 72 340t212 117q139 0 
215 -120.5t76 -336.5q0 -226 -75 -343.5t-216 -117.5q-133 0 -208.5 120.5t-75.5 
340.5zM211 1026q0 -186 45 -279.5t141 -93.5q193 0 193 373q0 184 -49.5 
276.5t-143.5 92.5q-96 0 -141 -92.5t-45 -276.5zM373 0l811 1462h96 l-811 
-1462h-96zM965 438q0 225 73.5 341t212.5 116q137 0 213 -120t76 -337q0 -226 -74 
-343.5t-215 -117.5q-136 0 -211 121.5t-75 339.5zM1063 438q0 -185 45 -277.5t141 
-92.5q193 0 193 370q0 369 -193 369q-96 0  [...]
+<glyph unicode="&#x26;" horiz-adv-x="1460" d="M123 371q0 138 73.5 235t274.5 
205l-75 82q-66 71 -98 139t-32 142q0 143 95.5 227t256.5 84q155 0 245.5 -81t90.5 
-224q0 -105 -70 -192.5t-253 -194.5l452 -457q61 72 104 157t75 201h96q-63 -246 
-209 -426l266 -268h-135l-193 197q-92 -90 -164 -131.5t-157.5 -63.5 t-194.5 
-22q-209 0 -328.5 103t-119.5 288zM227 375q0 -143 93 -224t258 -81q128 0 234.5 
43.5t209.5 146.5l-483 485q-136 -72 -196.5 -122.5t-88 -109.5t-27.5 -138zM373 
1176q0 -79 40 -146t152 -174q159 8 [...]
+<glyph unicode="'" horiz-adv-x="393" d="M133 1462h127l-33 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="557" d="M82 561q0 265 77.5 496t223.5 
405h113q-148 -182 -227 -412.5t-79 -486.5q0 -483 304 -887h-111q-147 170 -224 
397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="557" d="M61 1462h113q147 -175 224 -406.5t77 
-494.5t-77.5 -490t-223.5 -395h-111q304 404 304 887q0 257 -79 487.5t-227 411.5z" 
/>
+<glyph unicode="*" horiz-adv-x="1128" d="M104 1124l19 131l401 -104l-39 
405h146l-37 -405l405 104l21 -131l-395 -39l247 -340l-124 -71l-191 379l-180 
-379l-125 71l242 340z" />
+<glyph unicode="+" d="M111 
682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="," horiz-adv-x="440" d="M68 -264q77 275 110 502h117l12 -21q-75 
-265 -174 -481h-65z" />
+<glyph unicode="-" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="." horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 
-98q-80 0 -80 98z" />
+<glyph unicode="/" horiz-adv-x="698" d="M25 0l544 1462h105l-545 -1462h-104z" />
+<glyph unicode="0" d="M115 735q0 382 115.5 566t351.5 184q231 0 352 -190.5t121 
-559.5q0 -385 -117.5 -570t-355.5 -185q-229 0 -348 190.5t-119 564.5zM223 735q0 
-340 89 -502.5t270 -162.5q189 0 275.5 168t86.5 497q0 324 -86.5 492t-275.5 
168t-274 -168t-85 -492z" />
+<glyph unicode="1" d="M199 1165l397 297h86v-1462h-98v1065q0 145 12 301q-15 -15 
-31 -29t-309 -243z" />
+<glyph unicode="2" d="M113 0v88l389 406q164 170 230 260t97 172t31 172q0 131 
-86 213t-223 82q-183 0 -350 -133l-54 69q183 154 406 154q191 0 300.5 -102t109.5 
-281q0 -145 -73.5 -280.5t-268.5 -334.5l-375 -385v-4h782v-96h-915z" />
+<glyph unicode="3" d="M94 63v99q84 -44 188.5 -69t196.5 -25q221 0 332 89.5t111 
252.5q0 145 -113.5 223t-333.5 78h-158v96h160q182 0 288.5 86.5t106.5 234.5q0 122 
-86.5 195.5t-226.5 73.5q-109 0 -199 -30.5t-202 -104.5l-49 67q85 71 205 
112.5t243 41.5q202 0 312 -95.5t110 -269.5 q0 -136 -85.5 -229t-229.5 -119v-6q176 
-22 268 -112t92 -242q0 -205 -139.5 -317.5t-401.5 -112.5q-223 0 -389 83z" />
+<glyph unicode="4" d="M43 373v67l725 
1030h121v-1011h252v-86h-252v-373h-94v373h-752zM162 459h633v418q0 302 14 
507h-8q-20 -37 -123 -188z" />
+<glyph unicode="5" d="M143 63v103q108 -55 192 -76.5t179 -21.5q192 0 308 
101.5t116 274.5q0 163 -113 256t-307 93q-130 0 -272 -39l-60 39l58 
669h704v-96h-610l-45 -516q156 29 244 29q234 0 368.5 -113t134.5 -311q0 -225 -140 
-350t-386 -125q-109 0 -207 21.5t-164 61.5z" />
+<glyph unicode="6" d="M131 623q0 285 77.5 479.5t220 288.5t343.5 94q94 0 172 
-23v-88q-73 27 -176 27q-247 0 -384.5 -178t-154.5 -518h13q76 98 174 148t207 
50q205 0 320.5 -117t115.5 -323q0 -224 -121.5 -353.5t-327.5 -129.5q-222 0 -350.5 
169.5t-128.5 473.5zM240 504 q0 -111 49.5 -213.5t134 -162.5t186.5 -60q164 0 255 
103t91 294q0 168 -90 262t-245 94q-102 0 -189.5 -45t-139.5 -119.5t-52 -152.5z" />
+<glyph unicode="7" d="M109 1366v96h946v-73l-604 -1389h-117l602 1366h-827z" />
+<glyph unicode="8" d="M121 375q0 131 83 230t257 169q-161 76 -227 160.5t-66 
202.5q0 105 53 184.5t148.5 122.5t212.5 43q186 0 299.5 -95t113.5 -257q0 -112 
-70.5 -198t-228.5 -159q192 -79 270 -173t78 -228q0 -181 -126.5 -289t-339.5 
-108q-221 0 -339 101t-118 294zM223 360 q0 -138 93.5 -214t261.5 -76q164 0 264 
80.5t100 218.5q0 124 -78.5 201.5t-302.5 162.5q-184 -71 -261 -157t-77 -216zM268 
1137q0 -70 31.5 -123.5t91 -97t199.5 -101.5q163 63 234 139t71 183q0 120 -84.5 
190t-230.5 70q-141 0 -226.5 -69.5t [...]
+<glyph unicode="9" d="M111 993q0 220 124.5 356t323.5 136q144 0 252 -75.5t166.5 
-221.5t58.5 -346q0 -288 -75.5 -482t-220 -287t-349.5 -93q-104 0 -192 26v86q43 
-14 103.5 -21.5t92.5 -7.5q247 0 387 178.5t156 520.5h-12q-73 -96 -174 
-147.5t-211 -51.5q-203 0 -316.5 112t-113.5 318z M213 999q0 -174 87 -264t249 
-90q101 0 188.5 45t139 119.5t51.5 151.5q0 117 -46.5 219t-130 159.5t-192.5 
57.5q-158 0 -252 -106.5t-94 -291.5z" />
+<glyph unicode=":" horiz-adv-x="487" d="M162 78q0 98 80 98q82 0 82 -98t-82 
-98q-80 0 -80 98zM162 971q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 
0 -57 23t-23 76z" />
+<glyph unicode=";" horiz-adv-x="487" d="M76 -264q29 97 62 245.5t48 
256.5h117l12 -21q-75 -265 -174 -481h-65zM162 971q0 98 80 98q82 0 82 -98q0 -53 
-23.5 -76t-58.5 -23q-34 0 -57 23t-23 76z" />
+<glyph unicode="&#x3c;" d="M111 682v61l948 474v-95l-823 -405l823 -355v-96z" />
+<glyph unicode="=" d="M111 477v82h948v-82h-948zM111 885v82h948v-82h-948z" />
+<glyph unicode="&#x3e;" d="M111 266v96l823 355l-823 405v95l948 -474v-61z" />
+<glyph unicode="?" horiz-adv-x="862" d="M57 1403q110 48 184.5 64t153.5 16q183 
0 288 -98.5t105 -270.5q0 -68 -18 -119t-50.5 -94.5t-78.5 -84t-102 -87.5q-64 -54 
-98.5 -98.5t-50 -93.5t-15.5 -146v-14h-82v37q0 123 37.5 201t138.5 167l91 79q72 
61 103 121t31 138q0 127 -83.5 202t-219.5 75 q-79 0 -148 -17.5t-149 -56.5zM260 
78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="@" horiz-adv-x="1815" d="M113 561q0 256 108.5 460.5t307 
317.5t448.5 113q215 0 380.5 -89t255 -254.5t89.5 -383.5q0 -228 -90.5 -366t-245.5 
-138q-89 0 -144.5 54t-64.5 147h-4q-43 -100 -124 -150.5t-189 -50.5q-148 0 -229 
96.5t-81 270.5q0 202 120.5 330.5t314.5 128.5q138 0 286 -41 l-22 -464v-30q0 -104 
35 -156.5t116 -52.5q103 0 168.5 116.5t65.5 303.5q0 194 -79 340t-225.5 
224.5t-334.5 78.5q-230 0 -405.5 -99.5t-270 -281.5t-94.5 -418q0 -322 167 
-497.5t474 -175.5q93 0 188.5 18t231.5 70 [...]
+<glyph unicode="A" horiz-adv-x="1229" d="M0 0l588 1468h65l576 -1468h-115l-203 
516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 172q-27 -96 -59 -174z" 
/>
+<glyph unicode="B" horiz-adv-x="1284" d="M207 0v1462h401q271 0 398 -92t127 
-278q0 -127 -77.5 -211.5t-226.5 -108.5v-6q175 -26 257.5 -110.5t82.5 -235.5q0 
-202 -134 -311t-380 -109h-448zM309 90h344q406 0 406 330q0 301 -428 
301h-322v-631zM309 811h322q206 0 299.5 68.5t93.5 214.5t-105.5 212 t-314.5 
66h-295v-561z" />
+<glyph unicode="C" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 
262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 
-482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 
199t-177 556z" />
+<glyph unicode="D" horiz-adv-x="1446" d="M207 0v1462h395q350 0 532.5 
-183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350zM309 90h242q655 0 655 651q0 
314 -159.5 472.5t-468.5 158.5h-269v-1282z" />
+<glyph unicode="E" horiz-adv-x="1130" d="M207 
0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799z" />
+<glyph unicode="F" horiz-adv-x="1028" d="M207 
0v1462h801v-94h-699v-620h660v-95h-660v-653h-102z" />
+<glyph unicode="G" horiz-adv-x="1481" d="M129 729q0 223 91.5 395.5t262 
266.5t391.5 94q239 0 429 -88l-41 -92q-190 88 -394 88q-289 0 -458.5 
-178.5t-169.5 -481.5q0 -330 161 -496.5t473 -166.5q202 0 343 
57v514h-435v96h539v-667q-212 -90 -477 -90q-346 0 -530.5 195.5t-184.5 553.5z" />
+<glyph unicode="H" horiz-adv-x="1473" d="M207 
0v1462h102v-649h854v649h103v-1462h-103v719h-854v-719h-102z" />
+<glyph unicode="I" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102z" />
+<glyph unicode="J" horiz-adv-x="506" d="M-184 -254q78 -20 149 -20q242 0 242 
264v1472h102v-1462q0 -369 -342 -369q-92 0 -151 27v88z" />
+<glyph unicode="K" horiz-adv-x="1190" d="M207 0v1462h102v-760l162 162l573 
598h130l-599 -618l615 -844h-125l-561 772l-195 -172v-600h-102z" />
+<glyph unicode="L" horiz-adv-x="1051" d="M207 0v1462h102v-1366h697v-96h-799z" 
/>
+<glyph unicode="M" horiz-adv-x="1767" d="M207 0v1462h158l518 -1286h6l518 
1286h154v-1462h-103v1108q0 116 12 240h-8l-547 -1348h-65l-545 1350h-8q8 -124 8 
-254v-1096h-98z" />
+<glyph unicode="N" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 180 -9 
342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98z" />
+<glyph unicode="O" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483z" />
+<glyph unicode="P" horiz-adv-x="1198" d="M207 0v1462h358q522 0 522 -420q0 -212 
-144 -325t-408 -113h-226v-604h-102zM309 692h201q247 0 357 81.5t110 264.5q0 169 
-104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="Q" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -294 -126 -486.5t-349 -246.5l333 
-348h-166l-282 330l-33 -2h-31q-305 0 -479 202.5t-174 552.5zM240 733q0 -314 140 
-485.5t402 -171.5q264 0 403.5 170t139.5 487q0 316 -139.5 484.5 t-401.5 
168.5q-261 0 -402.5 -170t-141.5 -483z" />
+<glyph unicode="R" horiz-adv-x="1217" d="M207 0v1462h348q272 0 402 -100.5t130 
-302.5q0 -147 -77.5 -248t-235.5 -145l397 -666h-122l-377 637h-363v-637h-102zM309 
725h279q185 0 287 82.5t102 243.5q0 167 -100 243t-326 76h-242v-645z" />
+<glyph unicode="S" horiz-adv-x="1116" d="M111 39v102q158 -67 403 -67q180 0 
285.5 82.5t105.5 216.5q0 83 -35 137.5t-114 99.5t-232 97q-224 77 -309.5 
166.5t-85.5 238.5q0 164 128.5 267.5t330.5 103.5q206 0 387 -78l-37 -88q-182 76 
-348 76q-162 0 -258 -75t-96 -204q0 -81 29.5 -133t96.5 -93.5 t230 -99.5q171 -59 
257 -114.5t125.5 -126t39.5 -170.5q0 -183 -134.5 -290t-357.5 -107q-268 0 -411 
59z" />
+<glyph unicode="T" horiz-adv-x="1073" d="M10 
1366v96h1053v-96h-475v-1366h-103v1366h-475z" />
+<glyph unicode="U" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 
-328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 
-142q-254 0 -396.5 142.5t-142.5 397.5z" />
+<glyph unicode="V" horiz-adv-x="1182" d="M0 1462h109l368 -995q84 -225 113 
-338q20 75 79 233l402 1100h111l-547 -1462h-90z" />
+<glyph unicode="W" horiz-adv-x="1827" d="M51 1462h107l256 -942q15 -57 28 
-105.5t23.5 -91t19 -82t15.5 -79.5q24 136 102 413l250 887h113l293 -1018q51 -176 
73 -284q13 72 33.5 153t308.5 1149h103l-404 -1462h-84l-321 1128q-40 139 -60 
228q-16 -87 -45.5 -200t-322.5 -1156h-86z" />
+<glyph unicode="X" horiz-adv-x="1102" d="M0 0l492 762l-447 700h115l395 
-626l401 626h109l-453 -698l490 -764h-117l-432 682l-440 -682h-113z" />
+<glyph unicode="Y" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 800h110l-487 
-897v-565h-105v557z" />
+<glyph unicode="Z" horiz-adv-x="1180" d="M82 0v76l856 
1290h-817v96h954v-76l-858 -1290h881v-96h-1016z" />
+<glyph unicode="[" horiz-adv-x="653" d="M174 
-324v1786h428v-94h-330v-1597h330v-95h-428z" />
+<glyph unicode="\" horiz-adv-x="698" d="M25 1462h102l547 -1462h-103z" />
+<glyph unicode="]" horiz-adv-x="653" d="M51 
-229h330v1597h-330v94h428v-1786h-428v95z" />
+<glyph unicode="^" d="M88 561l465 912h68l460 -912h-100l-395 791l-398 
-791h-100z" />
+<glyph unicode="_" horiz-adv-x="842" d="M-4 -184h850v-82h-850v82z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1552v17h142q26 -48 98.5 
-142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="a" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 93l207 
6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 267.5 
-93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 -43.5q-160 0 
-249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 274.5 99.5t100.5 
276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5z" />
+<glyph unicode="b" horiz-adv-x="1219" d="M182 0v1556h99v-391q0 -88 -4 -162l-3 
-85h7q62 98 149.5 144t210.5 46q228 0 343.5 -143.5t115.5 -419.5q0 -271 -121.5 
-418t-341.5 -147q-116 0 -209 48t-147 136h-9l-28 -164h-62zM281 528q0 -246 86.5 
-353t269.5 -107q178 0 268 124.5t90 354.5q0 471 -356 471 q-192 0 -275 -110t-83 
-363v-17z" />
+<glyph unicode="c" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 150.5q141 
0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 -220 103 
-344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 147t-132 410z" 
/>
+<glyph unicode="d" horiz-adv-x="1219" d="M119 528q0 282 118 431t343 149q118 0 
204 -43t154 -147h6q-6 126 -6 247v391h98v-1556h-65l-25 166h-8q-124 -186 -356 
-186q-225 0 -344 140t-119 408zM223 530q0 -462 359 -462q184 0 270 107t86 
353v17q0 252 -84.5 362.5t-273.5 110.5q-178 0 -267.5 -125 t-89.5 -363z" />
+<glyph unicode="e" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 
156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 
13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 
618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5z" />
+<glyph unicode="f" horiz-adv-x="614" d="M29 1001v58l202 37v84q0 200 73.5 
293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 -68.5t-48.5 
-222.5v-101h256v-86h-256v-1001h-99v1001h-202z" />
+<glyph unicode="g" horiz-adv-x="1071" d="M45 -193q0 112 69.5 186t188.5 101q-49 
21 -78.5 59.5t-29.5 88.5q0 109 139 192q-95 39 -148 122.5t-53 191.5q0 163 103.5 
261.5t279.5 98.5q107 0 166 -21h348v-69l-225 -14q90 -112 90 -246q0 -157 -104.5 
-254.5t-280.5 -97.5q-74 0 -104 6q-59 -31 -90 -73t-31 -89 q0 -52 39.5 -76t132.5 
-24h190q177 0 271 -71.5t94 -211.5q0 -172 -139.5 -265.5t-397.5 -93.5q-205 0 
-317.5 79t-112.5 220zM150 -184q0 -224 333 -224q428 0 428 273q0 98 -67 142t-217 
44h-178q-299 0 -299 -23 [...]
+<glyph unicode="h" horiz-adv-x="1208" d="M182 0v1556h99v-495l-5 -139h7q61 98 
154 142t231 44q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 
-285.5 -98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="i" horiz-adv-x="463" d="M168 1389q0 96 63 96q31 0 48.5 
-25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM182 0v1087h99v-1087h-99z" 
/>
+<glyph unicode="j" horiz-adv-x="463" d="M-98 -381q69 -20 129 -20q151 0 151 
176v1312h99v-1298q0 -135 -63.5 -208t-180.5 -73q-80 0 -135 25v86zM168 1389q0 96 
63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97z" />
+<glyph unicode="k" horiz-adv-x="991" d="M182 0v1556h99v-780l-7 -299h5l555 
610h120l-428 -464l465 -623h-119l-413 549l-178 -162v-387h-99z" />
+<glyph unicode="l" horiz-adv-x="463" d="M182 0v1556h99v-1556h-99z" />
+<glyph unicode="m" horiz-adv-x="1808" d="M182 0v1087h82l21 -149h6q45 81 128 
125.5t183 44.5q257 0 330 -193h4q53 93 142.5 143t203.5 50q178 0 267 -95t89 
-302v-711h-98v713q0 159 -62 232t-190 73q-167 0 -247 -92t-80 
-289v-637h-101v743q0 275 -252 275q-171 0 -249 -99.5t-78 -318.5v-600h-99z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 377 
170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 
-98.5t-90.5 -319.5v-600h-99z" />
+<glyph unicode="o" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z " />
+<glyph unicode="p" horiz-adv-x="1219" d="M182 -492v1579h84l19 -155h6q112 176 
358 176q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 -415.5t-331.5 -147.5q-251 
0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 -255 85.5 -364t278.5 
-109q167 0 258.5 124t91.5 347q0 479 -346 479 q-190 0 -279 -104.5t-89 
-340.5v-32z" />
+<glyph unicode="q" horiz-adv-x="1219" d="M119 532q0 275 118 425.5t338 
150.5q236 0 353 -174h6l18 153h84v-1579h-98v414q0 122 6 248h-6q-118 -190 -369 
-190q-214 0 -332 142t-118 410zM223 530q0 -229 89.5 -345.5t258.5 -116.5q198 0 
282.5 109t84.5 366v12q0 245 -85 354t-271 109q-176 0 -267.5 -124 t-91.5 -364z" />
+<glyph unicode="r" horiz-adv-x="797" d="M182 0v1087h84l10 -196h7q67 120 143 
168.5t184 48.5q69 0 148 -14l-19 -95q-68 17 -141 17q-139 0 -228 -118t-89 
-298v-600h-99z" />
+<glyph unicode="s" horiz-adv-x="954" d="M84 47v107q164 -82 346 -82q161 0 244.5 
53.5t83.5 142.5q0 82 -66.5 138t-218.5 110q-163 59 -229 101.5t-99.5 96t-33.5 
130.5q0 122 102.5 193t286.5 71q176 0 334 -66l-37 -90q-160 66 -297 66q-133 0 
-211 -44t-78 -122q0 -85 60.5 -136t236.5 -114 q147 -53 214 -95.5t100.5 
-96.5t33.5 -127q0 -146 -111 -224.5t-315 -78.5q-218 0 -346 67z" />
+<glyph unicode="t" horiz-adv-x="686" d="M25 1001v58l161 45l50 
246h51v-263h319v-86h-319v-688q0 -125 44 -185t138 -60t164 16v-80q-72 -24 -166 
-24q-144 0 -212.5 77t-68.5 242v702h-161z" />
+<glyph unicode="u" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 
-238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 
-377 -170q-371 0 -371 397z" />
+<glyph unicode="v" horiz-adv-x="940" d="M0 1087h102l281 -739q56 -142 84 
-248h6q41 136 84 250l281 737h102l-420 -1087h-100z" />
+<glyph unicode="w" horiz-adv-x="1481" d="M31 1087h106l174 -630q61 -234 80 
-344h6q59 234 86 311l224 663h90l213 -661q72 -235 88 -311h6q8 65 80 348l166 
624h100l-295 -1087h-104l-238 727q-23 74 -59 217h-6l-21 -74l-45 -145l-242 
-725h-98z" />
+<glyph unicode="x" horiz-adv-x="1020" d="M55 0l394 559l-379 528h114l324 
-458l321 458h109l-373 -528l400 -559h-115l-342 485l-344 -485h-109z" />
+<glyph unicode="y" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 
-379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 
-27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5z" />
+<glyph unicode="z" horiz-adv-x="944" d="M82 0v63l645 936h-598v88h727v-63l-649 
-936h651v-88h-776z" />
+<glyph unicode="{" horiz-adv-x="723" d="M61 528v80q122 2 176 51t54 148v350q0 
299 360 305v-90q-138 -5 -200 -58t-62 -157v-305q0 -130 -44 -194t-142 -85v-8q97 
-20 141.5 -83.5t44.5 -186.5v-322q0 -102 59.5 -152.5t202.5 -53.5v-91q-195 0 
-277.5 75t-82.5 231v337q0 205 -230 209z" />
+<glyph unicode="|" horiz-adv-x="1108" d="M508 -506v2067h92v-2067h-92z" />
+<glyph unicode="}" horiz-adv-x="723" d="M72 -233q141 2 201.5 52.5t60.5 
153.5v322q0 123 44.5 186.5t141.5 83.5v8q-97 20 -141.5 84t-44.5 195v305q0 103 
-61.5 156.5t-200.5 58.5v90q174 0 267 -77.5t93 -227.5v-350q0 -100 54.5 
-148.5t175.5 -50.5v-80q-230 -4 -230 -209v-337q0 -155 -82.5 -230.5 t-277.5 
-75.5v91z" />
+<glyph unicode="~" d="M111 625v94q108 110 233 110q61 0 115 -13.5t155 -57.5q126 
-58 220 -58q56 0 109.5 30.5t115.5 94.5v-96q-48 -49 -104.5 -81t-129.5 -32q-116 0 
-270 72q-124 57 -221 57q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="492" d="M166 1010q0 98 80 98q82 0 82 
-98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM186 -375l29 1086h61l29 
-1086h-119z" />
+<glyph unicode="&#xa2;" d="M211 745q0 232 102.5 381.5t288.5 
182.5v174h82v-166h14q131 0 275 -55l-31 -84q-134 51 -237 51q-187 0 -288.5 
-122.5t-101.5 -358.5q0 -225 100.5 -349.5t280.5 -124.5q131 0 267 58v-92q-110 -56 
-267 -56h-12v-204h-82v210q-186 30 -288.5 175t-102.5 380z" />
+<glyph unicode="&#xa3;" d="M78 0v84q110 21 171.5 110t61.5 
224v258h-211v82h211v297q0 204 98 315t281 111q175 0 330 -68l-35 -86q-157 66 -295 
66q-141 0 -209.5 -81t-68.5 -253v-301h411v-82h-411v-256q0 -116 -35 -196t-113 
-128h809v-96h-995z" />
+<glyph unicode="&#xa4;" d="M127 326l139 141q-90 106 -90 256q0 147 90 258l-139 
141l59 60l138 -142q103 93 260 93q155 0 260 -93l137 142l59 -60l-139 -141q90 -111 
90 -258q0 -151 -90 -256l139 -141l-59 -60l-137 142q-110 -93 -260 -93q-153 0 -260 
93l-138 -142zM260 723q0 -136 94.5 -232 t229.5 -96q134 0 228.5 95.5t94.5 232.5q0 
136 -95 233t-228 97q-134 0 -229 -97t-95 -233z" />
+<glyph unicode="&#xa5;" d="M43 1462h117l426 -796l428 796h110l-432 
-788h283v-82h-338v-205h338v-82h-338v-305h-105v305h-337v82h337v205h-337v82h278z" 
/>
+<glyph unicode="&#xa6;" horiz-adv-x="1108" d="M508 258h92v-764h-92v764zM508 
797v764h92v-764h-92z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M129 63v95q182 -78 332 -78q162 0 
247 49.5t85 140.5q0 55 -25 87.5t-88.5 65.5t-190.5 79q-200 73 -272 141.5t-72 
169.5q0 83 50.5 152.5t138.5 107.5q-86 47 -125 102t-39 136q0 117 101.5 
183.5t275.5 66.5q175 0 336 -64l-35 -80q-91 34 -158.5 47t-144.5 13 q-134 0 
-205.5 -44.5t-71.5 -119.5q0 -54 25.5 -88.5t85.5 -65.5t188 -74q192 -64 264 
-132.5t72 -170.5q0 -173 -186 -274q86 -42 129 -96t43 -136q0 -135 -113 
-207.5t-311 -72.5q-92 0 -171 15t-165 52zM246 825q0 [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M336 1389q0 46 15.5 66t47.5 
20q64 0 64 -86t-64 -86q-63 0 -63 86zM717 1389q0 46 15.5 66t47.5 20q64 0 64 
-86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 
-240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 
92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM489 725q0 208 111 332.5t297 
124.5q119 0 227 -52l-37 -83q-98 45 -190 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 
-186 74.5 -275t220.5 -89q84 0 19 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="686" d="M78 989q0 100 80 151.5t241 
59.5l95 4v43q0 77 -38 114.5t-106 37.5q-87 0 -196 -49l-33 73q117 56 231 56q228 0 
228 -215v-451h-68l-25 72q-84 -84 -202 -84q-95 0 -151 49t-56 139zM168 993q0 -54 
35 -85t96 -31q90 0 142.5 50t52.5 142v64l-88 -5q-116 -6 -177 -36.5 t-61 -98.5z" 
/>
+<glyph unicode="&#xab;" horiz-adv-x="885" d="M82 516v27l309 393l62 -43l-254 
-363l254 -362l-62 -43zM442 516v27l310 393l61 -43l-254 -363l254 -362l-61 -43z" />
+<glyph unicode="&#xac;" d="M111 682v82h927v-494h-82v412h-845z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM193 731q0 -178 88.5 -329.5t240.5 
-240.5t330 -89t329.5 88.5t240.5 240.5t89 330q0 174 -85.5 325 t-239 243t-334.5 
92q-176 0 -328.5 -88.5t-241.5 -242.5t-89 -329zM608 291v880h211q143 0 222 -62t79 
-191q0 -79 -38.5 -139.5t-110.5 -94.5l237 -393h-121l-210 360h-168v-360h-101zM709 
731h112q91 0 143 46.5t52  [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v82h1036v-82h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M139 1184q0 132 86.5 215.5t212.5 
83.5t212.5 -83.5t86.5 -215.5t-86.5 -215.5t-212.5 -83.5q-130 0 -214.5 83t-84.5 
216zM229 1184q0 -91 61 -154t148 -63q86 0 147.5 62t61.5 155q0 92 -60 154.5t-149 
62.5q-90 0 -149.5 -64t-59.5 -153z" />
+<glyph unicode="&#xb1;" d="M111 1v82h948v-82h-948zM111 
682v82h432v434h82v-434h434v-82h-434v-432h-82v432h-432z" />
+<glyph unicode="&#xb2;" horiz-adv-x="688" d="M53 586v78l242 237q125 121 172 
193t47 149q0 71 -46.5 112.5t-123.5 41.5q-108 0 -217 -82l-49 65q119 103 270 
103q124 0 194 -63.5t70 -174.5q0 -47 -13 -89t-40 -85.5t-68.5 -90t-308.5 
-306.5h447v-88h-576z" />
+<glyph unicode="&#xb3;" horiz-adv-x="688" d="M41 629v88q136 -62 266 -62q115 0 
174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 
120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 
-60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 
-201.5t-247.5 -71.5q-144 0 -264 60z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v16q73 79 144.5 
171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M182 -492v1579h99v-704q0 -164 69 
-238.5t213 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-50 -77 
-150 -123.5t-217 -46.5q-99 0 -167.5 27.5t-119.5 84.5q5 -92 5 -170v-414h-99z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 
127h543v-1816h-100v1722h-228v-1722h-100v819q-64 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="487" d="M162 721q0 98 80 98q82 0 82 
-98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M43 -393q30 -10 92 -10q78 0 119 
28t41 80q0 94 -193 121l93 174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 
-150.5t-188.5 -50.5q-68 0 -94 11v88z" />
+<glyph unicode="&#xb9;" horiz-adv-x="688" d="M76 1298l274 
164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145z" />
+<glyph unicode="&#xba;" horiz-adv-x="739" d="M70 1141q0 162 78 250t223 88q142 
0 220.5 -87t78.5 -251q0 -161 -80 -250.5t-223 -89.5t-220 86t-77 254zM160 1141q0 
-264 209 -264t209 264q0 131 -50 194.5t-159 63.5t-159 -63.5t-50 -194.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="885" d="M72 168l254 362l-254 363l61 
43l309 -391v-27l-309 -393zM432 168l254 362l-254 363l62 43l309 -391v-27l-309 
-393z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1516" d="M59 1298l274 
164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM243 0l811 1462h94l-811 
-1462h-94zM760 242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM864 
320h309v221q0 132 8 232q-6 -12 -21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1516" d="M11 1298l274 
164h92v-876h-98v547q0 99 12 233q-26 -23 -233 -145zM168 0l811 1462h94l-811 
-1462h-94zM827 1v78l242 237q125 121 172 193t47 149q0 71 -46.5 112.5t-123.5 
41.5q-108 0 -217 -82l-49 65q119 103 270 103q124 0 194 -63.5t70 -174.5q0 -47 -13 
-89 t-40 -85.5t-68.5 -90t-308.5 -306.5h447v-88h-576z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1516" d="M41 629v88q136 -62 266 -62q115 0 
174.5 49t59.5 136q0 83 -59.5 122t-178.5 39h-131v84h135q105 0 158 43.5t53 
120.5q0 67 -47 107.5t-127 40.5q-128 0 -246 -78l-47 70q130 94 293 94q127 0 199.5 
-60t72.5 -163q0 -78 -44 -131.5t-117 -75.5q186 -45 186 -211 q0 -130 -88.5 
-201.5t-247.5 -71.5q-144 0 -264 60zM395 0l811 1462h94l-811 -1462h-94zM863 
242v60l407 581h96v-563h129v-78h-129v-241h-90v241h-413zM967 320h309v221q0 132 8 
232q-6 -12 -21.5 -35.5t-295.5 -417 [...]
+<glyph unicode="&#xbf;" horiz-adv-x="862" d="M74 -27q0 70 20 124t58.5 
102t171.5 159q64 53 98.5 98.5t49.5 94t15 145.5v15h82v-37q0 -125 -39.5 
-204.5t-136.5 -164.5l-90 -79q-73 -61 -104 -120.5t-31 -138.5q0 -124 82 -200t221 
-76q125 0 233 46l64 27l37 -79q-111 -48 -185.5 -64t-152.5 -16q-184 0 -288.5 99 
t-104.5 269zM440 1010q0 98 80 98q82 0 82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 
-57 23t-23 76z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM337 1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 
79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM504 1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 
-122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM328 1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 
-312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM287 1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 
-28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 -69 -177t-132 -61 q-36 0 
-75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM367 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 
-63 86zM748 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1229" d="M0 0l588 1468h65l576 
-1468h-115l-203 516h-594l-204 -516h-113zM354 608h523l-199 527q-25 62 -60 
172q-27 -96 -59 -174zM402 1610q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 
-155t-157 -58t-157 58t-60 155zM482 1610q0 -66 37.5 -103.5t99.5 -37.5 t99.5 
37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 -38t-37.5 -101z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1653" d="M-2 0l653 
1462h877v-94h-615v-553h576v-94h-576v-627h615v-94h-717v516h-475l-227 
-516h-111zM377 608h434v760h-100z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1272" d="M129 735q0 223 84.5 393t243 
262.5t368.5 92.5q214 0 383 -80l-41 -92q-160 80 -336 80q-275 0 -433 -176t-158 
-482q0 -313 149 -486t426 -173q184 0 338 47v-90q-145 -51 -362 -51q-308 0 -485 
199t-177 556zM561 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 
174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 
11v88z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1130" d="M207 
0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM314 1890v17h142q26 -48 
98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1130" d="M207 
0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM463 1579v16q73 79 
144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xca;" horiz-adv-x="1130" d="M207 
0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM315 1579v16q62 67 
131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 
-221 -207h-70z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1130" d="M207 
0v1462h799v-94h-697v-553h658v-94h-658v-627h697v-94h-799zM354 1727q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM735 1727q0 46 15.5 66t47.5 20q64 0 
64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xcc;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-63 
1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM191 
1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xce;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM-32 
1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xcf;" horiz-adv-x="516" d="M207 0v1462h102v-1462h-102zM5 
1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM386 1727q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1466" d="M47 678v94h160v690h395q350 0 
532.5 -183t182.5 -534q0 -368 -193 -556.5t-567 -188.5h-350v678h-160zM309 
90h242q655 0 655 651q0 314 -159.5 472.5t-468.5 
158.5h-269v-600h406v-94h-406v-588z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1477" d="M207 0v1462h102l865 -1296h6q-9 
180 -9 342v954h99v-1462h-103l-866 1298h-8q12 -232 12 -350v-948h-98zM400 1581q10 
111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 
119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5 q-32 26 -62.5 
46t-62.5 20q-45 0 -75 -34.5t-48 -121.5h-73z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM502 
1890v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM686 
1579v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM492 
1579v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM443 
1581q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 
36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 
-62.5 46t-62.5 20q-45 0 -75 -34. [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q306 0 479 -201.5t173 -550.5q0 -348 -174 -550.5t-480 -202.5q-305 0 -479 
202.5t-174 552.5zM240 733q0 -314 140 -485.5t402 -171.5q264 0 403.5 170t139.5 
487q0 316 -139.5 484.5t-401.5 168.5q-261 0 -402.5 -170 t-141.5 -483zM529 1727q0 
46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM910 1727q0 46 15.5 66t47.5 
20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xd7;" d="M119 1130l57 58l408 -408l409 408l58 -58l-408 
-407l406 -408l-58 -57l-407 408l-406 -408l-57 57l405 408z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1565" d="M129 735q0 349 175.5 549.5t479.5 
200.5q232 0 392 -121l108 152l72 -60l-111 -153q191 -207 191 -570q0 -348 -174 
-550.5t-480 -202.5q-236 0 -395 120l-86 -120l-74 59l90 127q-188 200 -188 
569zM240 733q0 -312 139 -483l739 1034q-133 102 -334 102 q-261 0 -402.5 
-170t-141.5 -483zM444 182q133 -106 338 -106q264 0 403.5 170t139.5 487q0 315 
-139 486z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 
-328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 
-142q-254 0 -396.5 142.5t-142.5 397.5zM450 1890v17h142q26 -48 98.5 -142t142.5 
-170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 
-328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 
-142q-254 0 -396.5 142.5t-142.5 397.5zM633 1579v16q73 79 144.5 171.5t97.5 
140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 
-328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 
-142q-254 0 -396.5 142.5t-142.5 397.5zM444 1579v16q62 67 131.5 156t110.5 
156h98q68 -120 242 -312v-16h-70q-122 101 -221 207 q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1473" d="M190 520v942h103v-946q0 -211 117 
-328.5t331 -117.5q209 0 324 115.5t115 320.5v956h102v-946q0 -252 -146 -394t-407 
-142q-254 0 -396.5 142.5t-142.5 397.5zM481 1727q0 46 15.5 66t47.5 20q64 0 64 
-86t-64 -86q-63 0 -63 86zM862 1727q0 46 15.5 66t47.5 20 q64 0 64 -86t-64 
-86q-63 0 -63 86z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 
800h110l-487 -897v-565h-105v557zM434 1579v16q73 79 144.5 171.5t97.5 
140.5h141v-17q-36 -52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xde;" horiz-adv-x="1198" d="M207 0v1462h102v-264h256q522 0 
522 -420q0 -212 -144 -325t-408 -113h-226v-340h-102zM309 428h201q247 0 357 
81.5t110 264.5q0 169 -104 250.5t-322 81.5h-242v-678z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1194" d="M182 0v1206q0 173 103.5 
267t292.5 94q188 0 285.5 -72.5t97.5 -210.5q0 -139 -139 -250q-81 -64 -110.5 
-100.5t-29.5 -75.5q0 -44 14.5 -68t51.5 -57t102 -78q106 -75 151.5 -124.5t68 
-103t22.5 -120.5q0 -156 -88 -241.5t-246 -85.5q-95 0 -174.5 18.5t-126.5 48.5 
v107q65 -38 148.5 -62t152.5 -24q114 0 174.5 54.5t60.5 160.5q0 83 -39 144t-149 
136q-127 87 -175 147t-48 146q0 60 32.5 110t106.5 108q74 57 106.5 105.5t32.5 
106.5q0 93 -70 143t-202 50q-145 0 -226 -69 [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM255 
1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM422 
1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM251 
1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM200 
1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 
36.5t48 119.5h76q-16 -116 -69 -177t-132  [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM282 
1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM663 1389q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -6 [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1085" d="M98 289q0 159 132.5 247t383.5 
93l207 6v72q0 155 -63 234t-203 79q-151 0 -313 -84l-37 86q179 84 354 84q179 0 
267.5 -93t88.5 -290v-723h-73l-25 172h-8q-82 -105 -168.5 -148.5t-204.5 
-43.5q-160 0 -249 82t-89 227zM203 285q0 -102 62.5 -158.5t176.5 -56.5 q174 0 
274.5 99.5t100.5 276.5v107l-190 -8q-229 -11 -326.5 -71.5t-97.5 -188.5zM325 
1456q0 94 60 152.5t157 58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 
155zM405 1456q0 -66 37.5 -103.5t99.5 - [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1731" d="M98 289q0 154 125 243t377 97l201 
6v72q0 155 -61.5 234t-198.5 79q-148 0 -305 -84l-37 86q173 84 346 84q261 0 325 
-211q111 213 347 213q184 0 289.5 -134.5t105.5 -363.5v-80h-715q0 -460 348 
-460q85 0 150 12t174 57v-90q-92 -41 -165 -55t-161 -14 q-295 0 -397 256q-68 -133 
-168 -194.5t-252 -61.5q-156 0 -242 82.5t-86 226.5zM203 285q0 -102 61 -158.5t170 
-56.5q169 0 266 99.5t97 276.5v107l-187 -8q-219 -11 -313 -71.5t-94 -188.5zM903 
618h604q0 188 -77.5 295t [...]
+<glyph unicode="&#xe7;" horiz-adv-x="973" d="M119 537q0 270 137 420.5t375 
150.5q141 0 270 -49l-27 -88q-141 47 -245 47q-200 0 -303 -123.5t-103 -355.5q0 
-220 103 -344.5t288 -124.5q148 0 275 53v-92q-104 -51 -273 -51q-233 0 -365 
147t-132 410zM373 -393q30 -10 92 -10q78 0 119 28t41 80q0 94 -193 121 l93 
174h96l-66 -117q168 -37 168 -174q0 -100 -67.5 -150.5t-188.5 -50.5q-68 0 -94 
11v88z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 
156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 
13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 
618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM302 
1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 
156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 
13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 
618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM452 
1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xea;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 
156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 
13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 
618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM290 
1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1124" d="M119 535q0 260 128 416.5t345 
156.5q192 0 303 -134t111 -364v-80h-783q2 -224 104.5 -342t293.5 -118q93 0 163.5 
13t178.5 56v-90q-92 -40 -170 -54.5t-172 -14.5q-237 0 -369.5 146t-132.5 409zM229 
618h672q0 189 -82 295.5t-227 106.5q-157 0 -252 -103.5 t-111 -298.5zM331 1389q0 
46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM712 1389q0 46 15.5 66t47.5 
20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xec;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-34 
1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM107 
1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xee;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-58 
1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xef;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99zM-21 
1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM360 1389q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M117 471q0 228 126.5 357.5t342.5 
129.5q108 0 187.5 -33t148.5 -96l4 2q-64 270 -269 459l-270 -157l-49 77l244 
146q-86 62 -199 119l45 81q147 -69 248 -145l225 137l49 -84l-202 -121q154 -151 
230.5 -353t76.5 -431q0 -276 -124 -427.5t-349 -151.5 q-214 0 -339.5 130t-125.5 
361zM221 463q0 -186 94.5 -289.5t268.5 -103.5q179 0 272.5 123t93.5 364q0 146 -97 
228.5t-267 82.5q-185 0 -275 -100.5t-90 -304.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M182 0v1087h84l19 -149h6q106 170 
377 170q370 0 370 -397v-711h-98v705q0 164 -69 238.5t-214 74.5q-195 0 -285.5 
-98.5t-90.5 -319.5v-600h-99zM282 1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 
-59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76 q-16 -116 -69 -177t-132 
-61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 -34.5t-48 
-121.5h-73z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M335 
1552v17h142q26 -48 98.5 -142t142.5 -170v-16h-69q-96 79 -188.5 171.5t-125.5 
139.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M499 
1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M309 
1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 
207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M264 
1243q10 111 63 174.5t137 63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 
36.5t48 119.5h76q-16 -116 -69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 
-62.5 46t-62.5 20q-45 0 -75 -34.5t-48  [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q224 0 351.5 -150.5t127.5 -412.5q0 -266 -129 -415.5t-356 -149.5q-143 0 
-252 69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5t278.5 
125.5t98.5 349.5q0 225 -99.5 349t-279.5 124t-277.5 -123.5t-97.5 -349.5z M346 
1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86zM727 1389q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#xf7;" d="M111 682v82h948v-82h-948zM504 371q0 98 80 98q82 0 
82 -98q0 -53 -23.5 -76t-58.5 -23q-34 0 -57 23t-23 76zM504 1075q0 99 80 99q82 0 
82 -99q0 -52 -23.5 -75t-58.5 -23q-34 0 -57 23t-23 75z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1200" d="M119 545q0 266 129 414.5t354 
148.5q179 0 301 -104l96 124l74 -55l-104 -137q112 -147 112 -391q0 -266 -129 
-415.5t-356 -149.5q-173 0 -291 98l-86 -113l-72 58l93 120q-121 153 -121 402zM223 
545q0 -200 78 -322l543 705q-98 90 -246 90q-180 0 -277.5 -123.5 t-97.5 
-349.5zM362 152q94 -82 238 -82q180 0 278.5 125.5t98.5 349.5q0 190 -72 309z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 
-238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 
-377 -170q-371 0 -371 397zM304 1552v17h142q26 -48 98.5 -142t142.5 
-170v-16h-69q-96 79 -188.5 171.5t-125.5 139.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 
-238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 
-377 -170q-371 0 -371 397zM495 1241v16q73 79 144.5 171.5t97.5 140.5h141v-17q-36 
-52 -122.5 -138t-190.5 -173h-70z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 
-238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 
-377 -170q-371 0 -371 397zM313 1241v16q62 67 131.5 156t110.5 156h98q68 -120 242 
-312v-16h-70q-122 101 -221 207q-108 -114 -221 -207h-70z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M170 377v710h98v-704q0 -164 69 
-238.5t214 -74.5q194 0 285.5 98t91.5 319v600h98v-1087h-84l-18 150h-6q-106 -170 
-377 -170q-371 0 -371 397zM350 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 
-86q-63 0 -63 86zM731 1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 
86z" />
+<glyph unicode="&#xfd;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 
-379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 
-27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM361 
1241v16q73 79 144.5 171.5t97.5 140.5h141v-17 q-36 -52 -122.5 -138t-190.5 
-173h-70z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1219" d="M182 -492v2048h99v-391l-7 
-247h7q114 190 368 190q220 0 335.5 -144.5t115.5 -420.5q0 -268 -121.5 
-415.5t-331.5 -147.5q-251 0 -366 188h-7l3 -84q4 -74 4 -162v-414h-99zM281 541q0 
-255 85.5 -364t278.5 -109q167 0 258.5 124t91.5 347q0 479 -348 479 q-193 0 
-279.5 -105t-86.5 -354v-18z" />
+<glyph unicode="&#xff;" horiz-adv-x="940" d="M0 1087h102l230 -610q105 -281 133 
-379h6q42 129 137 385l230 604h102l-487 -1263q-59 -154 -99 -208t-93.5 -81t-129.5 
-27q-57 0 -127 21v86q58 -16 125 -16q51 0 90 24t70.5 74.5t73 160t53.5 142.5zM214 
1389q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86 q-63 0 -63 86zM595 1389q0 46 15.5 
66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 86z" />
+<glyph unicode="&#x131;" horiz-adv-x="463" d="M182 0v1087h99v-1087h-99z" />
+<glyph unicode="&#x152;" horiz-adv-x="1839" d="M129 735q0 347 174.5 
545.5t480.5 198.5q78 0 183 
-17h747v-94h-655v-553h616v-94h-616v-627h655v-94h-756q-76 -16 -176 -16q-305 0 
-479 200t-174 551zM240 733q0 -315 140.5 -484t401.5 -169q109 0 174 18v1266q-62 
16 -172 16q-262 0 -403 -167.5t-141 -479.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1942" d="M119 545q0 266 129 414.5t354 
148.5q151 0 251 -70t157 -209q110 279 399 279q192 0 303 -134t111 -364v-80h-762q2 
-230 100.5 -345t276.5 -115q93 0 163.5 13t178.5 56v-90q-92 -40 -170 -54.5t-172 
-14.5q-156 0 -266.5 67.5t-165.5 198.5q-59 -128 -158 -197 t-252 -69q-143 0 -252 
69t-167 198t-58 298zM223 545q0 -224 98.5 -349.5t278.5 -125.5q174 0 265 122.5t91 
352.5q0 224 -93 348.5t-265 124.5q-180 0 -277.5 -123.5t-97.5 -349.5zM1065 
618h653q0 189 -82 295.5t-2 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1081" d="M0 1462h117l426 -800l428 
800h110l-487 -897v-565h-105v557zM288 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 
-86q-63 0 -63 86zM669 1727q0 46 15.5 66t47.5 20q64 0 64 -86t-64 -86q-63 0 -63 
86z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1182" d="M299 1241v16q62 67 131.5 
156t110.5 156h98q68 -120 242 -312v-16h-70q-122 101 -221 207q-108 -114 -221 
-207h-70z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M371 1456q0 94 60 152.5t157 
58.5t157 -59t60 -152q0 -97 -60 -155t-157 -58t-157 58t-60 155zM451 1456q0 -66 
37.5 -103.5t99.5 -37.5t99.5 37.5t37.5 103.5q0 64 -39 101.5t-98 37.5q-62 0 -99.5 
-38t-37.5 -101z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1182" d="M283 1243q10 111 63 174.5t137 
63.5q48 0 88 -25t82 -59q34 -28 66 -50t61 -22q46 0 77 36.5t48 119.5h76q-16 -116 
-69 -177t-132 -61q-36 0 -75 18.5t-101 71.5q-32 26 -62.5 46t-62.5 20q-45 0 -75 
-34.5t-48 -121.5h-73z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M92 512v82h475v-82h-475z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 512v82h860v-82h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 512v82h1884v-82h-1884z" />
+<glyph unicode="&#x2018;" horiz-adv-x="297" d="M29 981q32 112 81.5 251t92.5 
230h65q-30 -101 -64.5 -257t-45.5 -244h-117z" />
+<glyph unicode="&#x2019;" horiz-adv-x="297" d="M29 961q29 96 61 241.5t49 
259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M68 -263q29 96 61 241.5t49 
259.5h117l12 -20q-75 -265 -174 -481h-65z" />
+<glyph unicode="&#x201c;" horiz-adv-x="614" d="M29 981q32 112 81.5 251t92.5 
230h65q-30 -101 -64.5 -257t-45.5 -244h-117zM346 981q34 120 83 255t91 226h66q-30 
-98 -63 -248.5t-48 -252.5h-117z" />
+<glyph unicode="&#x201d;" horiz-adv-x="614" d="M29 961q29 96 61 241.5t49 
259.5h117l12 -20q-75 -265 -174 -481h-65zM346 961q30 98 63 248.5t48 252.5h116l13 
-20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x201e;" horiz-adv-x="768" d="M68 -263q29 96 61 241.5t49 
259.5h117l12 -20q-75 -265 -174 -481h-65zM385 -263q30 98 63 248.5t48 
252.5h116l13 -20q-36 -128 -85 -261t-89 -220h-66z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M231 748q0 89 40.5 134.5t113.5 
45.5t113.5 -47t40.5 -133q0 -85 -41 -133t-113 -48t-113 47t-41 134z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1466" d="M162 78q0 98 80 98q82 0 82 
-98t-82 -98q-80 0 -80 98zM651 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 
98zM1141 78q0 98 80 98q82 0 82 -98t-82 -98q-80 0 -80 98z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="524" d="M82 516v27l309 393l62 -43l-254 
-363l254 -362l-62 -43z" />
+<glyph unicode="&#x203a;" horiz-adv-x="524" d="M72 168l254 362l-254 363l61 
43l309 -391v-27l-309 -393z" />
+<glyph unicode="&#x2044;" horiz-adv-x="246" d="M-332 0l811 1462h94l-811 
-1462h-94z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="688" d="M25 827v60l407 
581h96v-563h129v-78h-129v-241h-90v241h-413zM129 905h309v221q0 132 8 232q-6 -12 
-21.5 -35.5t-295.5 -417.5z" />
+<glyph unicode="&#x20ac;" d="M74 528v82h172q-4 38 -4 113l4 102h-172v82h184q39 
272 183 425t362 153q88 0 161 -17t148 -57l-39 -86q-132 72 -270 72q-174 0 -288 
-125.5t-155 -364.5h502v-82h-510l-4 -104v-24q0 -65 4 -87h449v-82h-443q30 -217 
147.5 -338.5t301.5 -121.5q148 0 287 65v-94 q-81 -34 -150.5 -46.5t-140.5 
-12.5q-228 0 -367.5 140t-181.5 408h-180z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1485" d="M10 
1384v78h522v-78h-219v-643h-86v643h-217zM608 741v721h125l221 -606l224 
606h125v-721h-86v398l4 207h-7l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#x2212;" d="M111 682v82h948v-82h-948z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 
1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 
73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 
-68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM782 1389q0 96 63 
96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM796 0v1087 
h99v-1087h-99z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1077" d="M29 1001v58l202 37v84q0 200 
73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 
-68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM796 
0v1556h99v-1556h-99z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 
73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 
-68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 
37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 
-164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1397 1389q0 96 
63 96q31 0 48.5 -25t17.5 -71q0 -45 -17.5 -71t-48.5 -26q-63 0 -63 97zM1411 
0v1087h99v-1087h-99z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1692" d="M29 1001v58l202 37v84q0 200 
73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25q-116 0 -164.5 
-68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM643 1001v58l202 
37v84q0 200 73.5 293.5t240.5 93.5q90 0 180 -27l-23 -86q-80 25 -159 25 q-116 0 
-164.5 -68.5t-48.5 -222.5v-101h256v-86h-256v-1001h-99v1001h-202zM1411 
0v1556h99v-1556h-99z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.ttf
new file mode 100755
index 0000000..b83078a
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.woff
new file mode 100755
index 0000000..ff882b6
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Light-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.eot
new file mode 100755
index 0000000..95c6c61
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.svg
new file mode 100755
index 0000000..1ac169c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.svg
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansLightItalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="502" d="M80 57q0 56 25 88.5t69 32.5q66 0 66 
-72q0 -53 -25 -87.5t-68 -34.5q-67 0 -67 73zM186 377l203 1085h119l-260 
-1085h-62z" />
+<glyph unicode="&#x22;" horiz-adv-x="721" d="M248 934l80 528h127l-146 
-528h-61zM578 934l79 528h127l-145 -528h-61z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M82 451l8 79h299l119 398h-297l8 
80h311l134 454h90l-136 -454h365l135 454h86l-135 -454h285l-8 -80h-302l-118 
-398h303l-8 -79h-320l-133 -451h-90l135 451h-360l-134 -451h-88l134 451h-283zM475 
530h363l120 398h-362z" />
+<glyph unicode="$" d="M141 182v94q65 -34 153.5 -53.5t160.5 -19.5l110 512q-110 
53 -153 91t-66.5 87.5t-23.5 116.5q0 155 105.5 250.5t272.5 99.5l41 192h80l-41 
-192q149 -5 277 -68l-35 -78q-110 61 -256 70l-109 -514q124 -60 172.5 -99.5t73.5 
-88.5t25 -115q0 -151 -110.5 -243 t-297.5 -103l-53 -240h-82l51 240q-79 2 -158 
18t-137 43zM410 1018q0 -78 37 -128.5t137 -96.5l102 491q-134 -9 -205 -80t-71 
-186zM537 203q142 7 223.5 74.5t81.5 183.5q0 76 -48 129.5t-157 97.5z" />
+<glyph unicode="%" horiz-adv-x="1556" d="M145 862q0 160 52 312t138 229.5t193 
77.5q232 0 232 -283q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 
223.5zM213 0l1135 1462h110l-1139 -1462h-106zM231 868q0 -115 41 -173t113 -58q84 
0 148.5 72t102.5 204t38 277q0 109 -36 163t-114 54 q-79 0 -145 -71.5t-107 
-203t-41 -264.5zM905 276q0 160 52 312t138 229.5t193 77.5q121 0 176.5 -71.5t55.5 
-211.5q0 -175 -50 -327t-136 -230t-197 -78q-112 0 -172 75.5t-60 223.5zM991 283q0 
-116 41 -174t113 -58q130 0  [...]
+<glyph unicode="&#x26;" horiz-adv-x="1331" d="M78 324q0 162 99 277.5t325 
215.5l-41 67q-78 128 -78 251q0 157 101 253.5t264 96.5q145 0 227 -76.5t82 
-206.5q0 -85 -41 -154t-121 -128t-256 -138l330 -463q73 75 135.5 176.5t91.5 
186.5h111q-102 -247 -285 -436l184 -246h-123l-131 184q-121 -108 -242 -156 t-266 
-48q-167 0 -266.5 94t-99.5 250zM176 328q0 -119 78 -192t211 -73q108 0 211.5 
42.5t222.5 146.5l-352 493q-164 -79 -232 -134.5t-103.5 -124t-35.5 -158.5zM485 
1135q0 -132 109 -281q203 89 279.5 163.5t7 [...]
+<glyph unicode="'" horiz-adv-x="403" d="M254 934l80 528h127l-146 -528h-61z" />
+<glyph unicode="(" horiz-adv-x="526" d="M104 270q0 343 122 633t382 
559h105q-259 -276 -384.5 -568t-125.5 -618q0 -317 127 -600h-80q-146 262 -146 
594z" />
+<glyph unicode=")" horiz-adv-x="526" d="M-156 -324q257 274 383.5 566.5t126.5 
619.5q0 148 -28.5 294t-98.5 306h80q146 -262 146 -594q0 -345 -123.5 -636t-380.5 
-556h-105z" />
+<glyph unicode="*" horiz-adv-x="1137" d="M233 1217l39 102l394 -168l47 408l121 
-19l-109 -405l438 8l-8 -107l-416 29l181 -401l-115 -37l-135 417l-285 -348l-78 
78l318 318z" />
+<glyph unicode="+" d="M162 
672v100h401v404h101v-404h401v-100h-401v-400h-101v400h-401z" />
+<glyph unicode="," horiz-adv-x="451" d="M-90 -264q79 132 141 271t88 231h111l8 
-23q-34 -92 -114 -233.5t-160 -245.5h-74z" />
+<glyph unicode="-" horiz-adv-x="629" d="M82 502l18 90h457l-16 -90h-459z" />
+<glyph unicode="." horiz-adv-x="485" d="M82 55q0 56 25 88.5t69 32.5q66 0 66 
-72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="/" horiz-adv-x="641" d="M-100 0l815 1462h112l-817 -1462h-110z" 
/>
+<glyph unicode="0" d="M139 494q0 186 44.5 381.5t124 334t187 207t240.5 68.5q340 
0 340 -469q0 -201 -41 -405t-116.5 -346t-183.5 -213.5t-242 -71.5q-176 0 -264.5 
126.5t-88.5 387.5zM242 504q0 -222 62.5 -329t197.5 -107q139 0 244 112t166 337t61 
489q0 199 -59.5 295t-190.5 96 q-134 0 -241.5 -113t-173.5 -329t-66 -451z" />
+<glyph unicode="1" d="M354 1204l406 258h90l-313 -1462h-105l225 1055q19 92 74 
293q-42 -36 -75.5 -61t-249.5 -161z" />
+<glyph unicode="2" d="M39 0l22 104l449 402q198 177 284 276.5t126.5 186.5t40.5 
180q0 112 -66 178t-197 66q-176 0 -333 -129l-54 73q180 146 394 146q173 0 268.5 
-85t95.5 -237q0 -110 -43.5 -208.5t-141.5 -211.5t-311 -303l-383 -338v-4h736l-17 
-96h-870z" />
+<glyph unicode="3" d="M55 53v101q172 -86 344 -86q197 0 303.5 89.5t106.5 
252.5q0 145 -89 223t-247 78h-117l21 96h110q209 0 333 95.5t124 258.5q0 114 -63.5 
175t-188.5 61q-167 0 -344 -131l-49 75q84 67 188 104.5t218 37.5q161 0 252.5 
-82.5t91.5 -226.5q0 -162 -106 -275t-286 -143 v-4q117 -24 185.5 -115.5t68.5 
-226.5q0 -134 -64 -233t-179.5 -148t-274.5 -49q-96 0 -184.5 20.5t-153.5 52.5z" />
+<glyph unicode="4" d="M23 371l20 96l881 1010h118l-215 -1018h265l-21 
-88h-264l-80 -371h-96l80 371h-688zM150 459h579q79 369 119 558.5t86 354.5h-4q-66 
-91 -129 -166z" />
+<glyph unicode="5" d="M88 51v107q170 -90 340 -90q208 0 328.5 114.5t120.5 
313.5q0 140 -85 219.5t-225 79.5q-133 0 -243 -41l-66 49l193 659h624l-18 
-96h-541l-149 -516q98 29 215 29q188 0 292.5 -102t104.5 -279q0 -237 -148 
-377.5t-407 -140.5q-84 0 -177.5 20t-158.5 51z" />
+<glyph unicode="6" d="M170 428q0 283 105 544.5t269.5 385t383.5 123.5q123 0 182 
-21l-18 -90q-86 23 -170 23q-233 0 -393.5 -174t-233.5 -502h8q68 94 164 143t211 
49q161 0 250.5 -100.5t89.5 -282.5q0 -156 -60 -281t-171 -195t-257 -70q-171 0 
-265.5 119t-94.5 329zM270 414 q0 -164 72.5 -255t200.5 -91q112 0 196.5 58.5t130 
162t45.5 229.5q0 146 -67 224.5t-195 78.5q-81 0 -154 -31.5t-129 -87t-78 -115t-22 
-173.5z" />
+<glyph unicode="7" d="M244 0l796 1366h-766l23 96h858l-20 -110l-779 
-1352h-112z" />
+<glyph unicode="8" d="M98 326q0 159 100.5 268.5t321.5 187.5q-100 72 -144 
152t-44 180q0 159 114 265t291 106q163 0 258 -85t95 -229q0 -138 -84 -234.5t-285 
-172.5q130 -78 190 -170.5t60 -208.5t-58 -208t-165.5 -144.5t-260.5 -52.5q-178 0 
-283.5 92.5t-105.5 253.5zM201 340 q0 -136 77.5 -206.5t219.5 -70.5q168 0 270 
91t102 233q0 104 -62 189t-198 157q-218 -73 -313.5 -167.5t-95.5 -225.5zM428 
1114q0 -91 41.5 -159t157.5 -142q192 62 279 144t87 206q0 109 -70.5 172.5t-195.5 
63.5q-130 0 -214.5 -82t-84.5 -2 [...]
+<glyph unicode="9" d="M115 2v90q87 -29 192 -29q474 0 627 674h-8q-140 -192 -367 
-192q-162 0 -255 105t-93 284q0 155 59.5 281t170.5 196t257 70q174 0 267.5 
-115.5t93.5 -333.5q0 -288 -101.5 -548t-263.5 -382t-393 -122q-114 0 -186 22zM313 
942q0 -145 67.5 -225t192.5 -80 q83 0 157.5 32.5t129 87.5t76.5 114t22 176q0 166 
-71 256t-201 90q-112 0 -197.5 -58.5t-130.5 -162.5t-45 -230z" />
+<glyph unicode=":" horiz-adv-x="485" d="M102 55q0 56 25.5 88.5t69.5 32.5q65 0 
65 -72q0 -55 -25.5 -88.5t-66.5 -33.5q-68 0 -68 73zM260 989q0 57 25.5 89t68.5 
32q66 0 66 -72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
+<glyph unicode=";" horiz-adv-x="485" d="M-53 -264q79 132 141 271t88 231h111l8 
-23q-35 -96 -118.5 -242t-156.5 -237h-73zM266 989q0 57 25.5 89t68.5 32q66 0 66 
-72q0 -55 -25 -89t-67 -34q-68 0 -68 74z" />
+<glyph unicode="&#x3c;" d="M137 676v74l914 471v-103l-801 -399l801 -350v-107z" 
/>
+<glyph unicode="=" d="M168 461v98h903v-98h-903zM168 885v100h903v-100h-903z" />
+<glyph unicode="&#x3e;" d="M170 262v107l801 350l-801 399v103l915 -471v-74z" />
+<glyph unicode="?" horiz-adv-x="799" d="M170 59q0 56 25 88.5t69 32.5q66 0 66 
-71q0 -54 -24.5 -88.5t-67.5 -34.5q-68 0 -68 73zM182 1376q85 49 171.5 78t187.5 
29q159 0 250.5 -84.5t91.5 -229.5q0 -127 -66 -234t-231 -226q-85 -61 -132.5 
-108.5t-73 -95t-46.5 -143.5h-92l6 29q29 132 82 206.5t157 147.5 q118 84 175 
145.5t86.5 127.5t29.5 141q0 108 -67.5 170t-182.5 62q-139 0 -307 -101z" />
+<glyph unicode="@" horiz-adv-x="1724" d="M125 508q0 276 121.5 493.5t337 
337t473.5 119.5q189 0 330.5 -72.5t221 -213t79.5 -314.5q0 -179 -56 -323.5t-154.5 
-227t-211.5 -82.5q-98 0 -154.5 55t-56.5 144h-4q-54 -97 -132.5 -148t-168.5 
-51q-112 0 -178 73t-66 202q0 156 63 283t178 198.5t261 71.5 q122 0 252 -52l-84 
-315q-39 -140 -39 -221q0 -71 34.5 -111.5t100.5 -40.5q86 0 160 73.5t117.5 
198t43.5 251.5q0 156 -65 277t-187 188t-292 67q-235 0 -424.5 -108.5t-295.5 
-304t-106 -439.5q0 -288 155 -449t435 -161 [...]
+<glyph unicode="A" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563z" />
+<glyph unicode="B" horiz-adv-x="1202" d="M102 0l310 1462h379q190 0 290.5 
-84t100.5 -241q0 -153 -90 -249t-254 -124v-4q125 -31 188.5 -113.5t63.5 -204.5q0 
-205 -140.5 -323.5t-390.5 -118.5h-457zM223 90h342q201 0 309.5 87.5t108.5 
256.5q0 145 -90 216t-275 71h-260zM377 811h278q206 0 313 81t107 238 q0 119 -78 
180.5t-229 61.5h-272z" />
+<glyph unicode="C" horiz-adv-x="1169" d="M170 535q0 266 104.5 488t284.5 
341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17q-197 0 -351.5 
-104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 
51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410z" />
+<glyph unicode="D" horiz-adv-x="1350" d="M102 0l310 1462h305q282 0 426.5 
-147.5t144.5 -435.5q0 -253 -109.5 -461.5t-300.5 -313t-446 -104.5h-330zM221 
90h209q226 0 394.5 94.5t261 275.5t92.5 412q0 498 -476 498h-206z" />
+<glyph unicode="E" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 -94h-624l-117 
-553h590l-21 -94h-588l-135 -627h627l-21 -94h-727z" />
+<glyph unicode="F" horiz-adv-x="981" d="M102 0l310 1462h708l-20 -94h-604l-134 
-620h570l-21 -95h-569l-137 -653h-103z" />
+<glyph unicode="G" horiz-adv-x="1374" d="M170 547q0 265 105 483.5t283.5 
335.5t395.5 117q113 0 203 -19t184 -59l-38 -94q-110 46 -189.5 62t-167.5 16q-184 
0 -339 -107.5t-244 -301.5t-89 -433q0 -229 114.5 -352t326.5 -123q155 0 309 
47l117 526h-303l18 90h406l-150 -682q-211 -73 -405 -73 q-257 0 -397 146t-140 
421z" />
+<glyph unicode="H" horiz-adv-x="1366" d="M102 0l310 1462h102l-139 -649h760l137 
649h100l-309 -1462h-100l151 719h-760l-149 -719h-103z" />
+<glyph unicode="I" horiz-adv-x="504" d="M102 0l310 1462h98l-309 -1462h-99z" />
+<glyph unicode="J" horiz-adv-x="477" d="M-324 -336l11 92q57 -20 137 -20q213 0 
262 241l309 1485h105l-314 -1491q-35 -170 -125 -250.5t-241 -80.5q-48 0 -88 8t-56 
16z" />
+<glyph unicode="K" horiz-adv-x="1122" d="M102 0l310 1462h102l-158 -723l133 
121l680 602h138l-699 -610l371 -852h-111l-342 788l-190 -153l-131 -635h-103z" />
+<glyph unicode="L" horiz-adv-x="938" d="M102 0l310 1462h102l-289 -1366h621l-23 
-96h-721z" />
+<glyph unicode="M" horiz-adv-x="1669" d="M109 0l309 1462h143l205 -1257h6l733 
1257h150l-301 -1462h-101l191 901q79 369 100 447h-6l-780 -1348h-51l-222 
1348h-6q-20 -154 -78 -426l-196 -922h-96z" />
+<glyph unicode="N" horiz-adv-x="1372" d="M102 0l310 1462h80l522 -1294h8q23 176 
74 416l188 878h94l-309 -1462h-86l-516 1284h-8q-23 -149 -48 -273t-214 
-1011h-95z" />
+<glyph unicode="O" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 
115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417z" />
+<glyph unicode="P" horiz-adv-x="1145" d="M102 0l310 1462h315q202 0 310 
-92.5t108 -267.5q0 -500 -610 -500h-201l-129 -602h-103zM350 694h191q252 0 373.5 
96.5t121.5 305.5q0 274 -329 274h-211z" />
+<glyph unicode="Q" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 331t373 
115.5q247 0 378.5 -148.5t131.5 -423.5q0 -216 -70 -418t-186.5 -324t-274.5 
-167l267 -350h-142l-231 332l-74 -4q-250 0 -385 149t-135 430zM276 573q0 -245 
109.5 -373t319.5 -128q169 0 300 98.5t210 300t79 430.5 q0 240 -104.5 364t-310.5 
124q-174 0 -308.5 -101t-214.5 -298t-80 -417z" />
+<glyph unicode="R" horiz-adv-x="1145" d="M102 0l310 1462h303q430 0 430 -360q0 
-182 -103.5 -303t-281.5 -152q201 -591 221 -647h-111l-211 633h-323l-131 
-633h-103zM358 725h252q208 0 317 95.5t109 281.5q0 268 -329 268h-211z" />
+<glyph unicode="S" horiz-adv-x="1020" d="M37 55v109q163 -92 348 -92q188 0 
295.5 86.5t107.5 232.5q0 61 -17 104.5t-52.5 78.5t-91 68t-131.5 75q-150 76 
-209.5 164t-59.5 206t59 207.5t165 139t237 49.5q99 0 180 -17.5t168 -60.5l-32 
-94q-66 40 -151.5 63t-164.5 23q-163 0 -259.5 -82.5t-96.5 -218.5 q0 -103 49 
-170t182 -133q154 -79 213.5 -130t89 -113t29.5 -147q0 -126 -65.5 -224.5t-179.5 
-148.5t-269 -50q-88 0 -172.5 17t-171.5 58z" />
+<glyph unicode="T" horiz-adv-x="985" d="M193 1368l20 94h973l-19 -94h-440l-289 
-1368h-102l289 1368h-432z" />
+<glyph unicode="U" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 880h103l-193 
-899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 318.5l207 
977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 401z" />
+<glyph unicode="V" horiz-adv-x="1079" d="M201 1462h100l117 -950q26 -217 35 
-365h4q51 111 124 247l572 1068h117l-799 -1462h-88z" />
+<glyph unicode="W" horiz-adv-x="1702" d="M238 1462h100l47 -1031l4 -165l-2 
-86h6q85 226 170 398l434 884h105l61 -878q19 -266 19 -410h6q30 86 61.5 163t493.5 
1125h108q-169 -365 -330.5 -731t-328.5 -731h-78l-78 1075q-11 142 -11 219l1 
47h-8q-27 -76 -62 -153.5t-563 -1187.5h-82z" />
+<glyph unicode="X" horiz-adv-x="971" d="M-135 0l608 766l-272 696h106l240 
-626l483 626h119l-555 -719l285 -743h-107l-254 678l-526 -678h-127z" />
+<glyph unicode="Y" horiz-adv-x="965" d="M193 1462h100l201 -817l544 
817h117l-631 -932l-108 -530h-105l119 545z" />
+<glyph unicode="Z" d="M-12 0l22 92l1069 1276h-764l23 94h887l-19 -88l-1069 
-1280h799l-23 -94h-925z" />
+<glyph unicode="[" horiz-adv-x="537" d="M-57 -324l376 1786h429l-19 
-90h-330l-340 -1605h330l-20 -91h-426z" />
+<glyph unicode="\" horiz-adv-x="641" d="M209 1462h86l242 -1462h-82z" />
+<glyph unicode="]" horiz-adv-x="537" d="M-176 -324l18 91h330l340 1605h-330l21 
90h426l-377 -1786h-428z" />
+<glyph unicode="^" horiz-adv-x="1047" d="M70 569l587 906h91l260 -906h-105l-217 
809l-500 -809h-116z" />
+<glyph unicode="_" horiz-adv-x="801" d="M-182 -291l18 86h807l-18 -86h-807z" />
+<glyph unicode="`" horiz-adv-x="1135" d="M487 1548v21h115q46 -129 164 
-303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
+<glyph unicode="a" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5z" />
+<glyph unicode="b" horiz-adv-x="1151" d="M76 0l327 1556h95q-131 -628 -162 
-751h6q93 156 199 229.5t231 73.5q281 0 281 -375q0 -203 -76 -380t-201 -273t-276 
-96q-113 0 -186 59t-97 166h-6l-55 -209h-80zM268 346q0 -129 64 -202.5t166 
-73.5q124 0 224 83t164 245t64 325q0 152 -49 223.5t-151 71.5 q-91 0 -180 
-61.5t-160.5 -169.5t-106.5 -235t-35 -206z" />
+<glyph unicode="c" horiz-adv-x="887" d="M102 397q0 193 73.5 361.5t198.5 
257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 
-222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 
-57 -273 -57q-174 0 -274.5 110.5t-100.5 306.5z" />
+<glyph unicode="d" horiz-adv-x="1133" d="M102 354q0 193 71.5 370t197.5 
278.5t284 101.5q230 0 279 -219h4q12 66 143 671h99l-330 -1556h-82l45 274h-6q-173 
-294 -424 -294q-281 0 -281 374zM205 365q0 -295 201 -295q89 0 178.5 62.5t160 
168t106.5 231t36 209.5q0 126 -61.5 201.5t-168.5 75.5 q-124 0 -224 -83t-164 
-242.5t-64 -327.5z" />
+<glyph unicode="e" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 264t274.5 
98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 -98q0 -165 
74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 109.5t-97 
305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 -243.5 
-115.5t-162.5 -308.5z" />
+<glyph unicode="f" horiz-adv-x="578" d="M-233 -383q53 -16 100 -16q88 0 134 
53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 
-31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 
-81h-248l-252 -1190q-33 -161 -104 -234.5t-195 -73.5 q-48 0 -102 19v90z" />
+<glyph unicode="g" horiz-adv-x="1040" d="M-88 -217q0 236 309 334q-78 42 -78 
123q0 123 191 202q-71 36 -110.5 105.5t-39.5 157.5q0 111 53.5 204t148 146t206.5 
53q69 0 147 -21h361l-17 -79l-243 -11q26 -28 43.5 -84t17.5 -114q0 -109 -54.5 
-206.5t-148 -145.5t-213.5 -48q-63 0 -77 9q-80 -33 -124 -73 t-44 -81t31.5 
-64.5t113.5 -31.5l121 -11q346 -31 346 -264q0 -112 -65 -197.5t-187 -131.5t-291 
-46q-186 0 -291.5 72t-105.5 203zM14 -207q0 -101 81 -150t224 -49q203 0 317 
74.5t114 204.5q0 85 -62.5 130.5t-218 [...]
+<glyph unicode="h" horiz-adv-x="1143" d="M76 0l332 1556h96l-86 -411q-44 -200 
-66 -279h6q78 113 186.5 175.5t229.5 62.5q124 0 192 -65t68 -183q0 -70 -24 
-182l-148 -674h-98l149 692q21 92 21 156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 
-67t-166 -188t-103.5 -286l-102 -477h-98z" />
+<glyph unicode="i" horiz-adv-x="475" d="M76 0l231 1087h96l-229 -1087h-98zM350 
1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 -44.5 19.5t-15.5 
54.5z" />
+<glyph unicode="j" horiz-adv-x="475" d="M-279 -381q47 -22 113 -22q82 0 128.5 
51.5t72.5 177.5l266 1261h96l-268 -1271q-35 -165 -106.5 -236.5t-188.5 -71.5q-62 
0 -113 19v92zM350 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 
-44.5 19.5t-15.5 54.5z" />
+<glyph unicode="k" horiz-adv-x="944" d="M76 0l330 1556h96l-166 -780l-70 
-299h4l609 610h125l-474 -469l297 -618h-106l-264 559l-205 -188l-80 -371h-96z" />
+<glyph unicode="l" horiz-adv-x="475" d="M76 0l334 1556h94l-334 -1556h-94z" />
+<glyph unicode="m" horiz-adv-x="1751" d="M72 0l231 1087h80l-33 -210h6q80 113 
181.5 170t212.5 57q106 0 163 -67t60 -195h6q77 129 181 195.5t222 66.5q117 0 
182.5 -61.5t65.5 -176.5q0 -29 -2.5 -56.5t-19.5 -119.5l-152 -690h-100l149 680q25 
120 25 176q0 77 -43 119.5t-119 42.5q-157 0 -277.5 -137.5 t-168.5 -362.5l-109 
-518h-102l147 674q25 125 25 162q0 182 -154 182q-106 0 -200 -67.5t-159 
-188.5t-100 -287l-100 -475h-98z" />
+<glyph unicode="n" horiz-adv-x="1143" d="M76 0l231 1087h82l-37 -221h6q164 238 
416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98l149 692q21 92 21 
156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 
-477h-98z" />
+<glyph unicode="o" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5z" />
+<glyph unicode="p" horiz-adv-x="1149" d="M-33 -492l336 1579h82l-45 -274h6q91 
153 195.5 224t228.5 71q135 0 208 -92.5t73 -282.5q0 -195 -72 -371t-197.5 
-277t-283.5 -101q-230 0 -279 219h-4q-13 -72 -149 -695h-99zM266 346q0 -125 61.5 
-200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5 q0 295 -200 295q-87 0 -174 
-58.5t-161.5 -167.5t-110.5 -237.5t-36 -208.5z" />
+<glyph unicode="q" horiz-adv-x="1157" d="M98 354q0 201 75.5 379t200.5 
274.5t277 96.5q109 0 183.5 -58t99.5 -167h6l55 208h80l-327 -1556h-95l98 470l64 
282h-6q-93 -156 -199 -229.5t-231 -73.5q-281 0 -281 374zM201 365q0 -143 45.5 
-219t154.5 -76q92 0 182 62.5t160.5 171.5t105 236.5t34.5 200.5 q0 130 -63.5 
203.5t-166.5 73.5q-124 0 -224 -83t-164 -245t-64 -325z" />
+<glyph unicode="r" horiz-adv-x="752" d="M72 0l231 1087h80l-29 -204h6q73 94 123 
135.5t106.5 64.5t123.5 23q69 0 123 -14l-21 -93q-47 15 -113 15q-94 0 -179 
-64t-153 -192t-100 -277l-100 -481h-98z" />
+<glyph unicode="s" horiz-adv-x="827" d="M25 55v107q74 -46 153 -71t148 -25q138 
0 211 57.5t73 163.5q0 42 -15.5 74t-50 61.5t-132.5 85.5q-148 80 -200 145.5t-52 
159.5q0 128 98.5 209.5t259.5 81.5q75 0 158.5 -17.5t140.5 -46.5l-35 -88q-136 64 
-264 64q-116 0 -186 -53t-70 -138q0 -55 17 -88t60.5 -68.5 t119.5 -76.5q114 -63 
161.5 -103.5t70 -86.5t22.5 -107q0 -144 -103 -229.5t-280 -85.5q-173 0 -305 75z" 
/>
+<glyph unicode="t" horiz-adv-x="616" d="M113 1006l14 67l184 17l97 253h55l-55 
-256h286l-18 -81h-283l-135 -635q-22 -99 -22 -164q0 -139 126 -139q68 0 152 
26v-86q-101 -28 -170 -28q-99 0 -153 54.5t-54 158.5q0 73 29 206l129 607h-182z" />
+<glyph unicode="u" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 690h100l-152 
-698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 65.5t164 
187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 -221q-131 0 
-198.5 62t-67.5 181z" />
+<glyph unicode="v" horiz-adv-x="895" d="M104 1087h101l108 -735q26 -165 33 
-254h6q51 115 129 256l406 733h102l-600 -1087h-113z" />
+<glyph unicode="w" horiz-adv-x="1393" d="M121 1087h92l13 -821l-3 -157h6q61 134 
150 297l373 681h77l64 -681q14 -147 14 -297h6l24 61l101 236l320 681h96l-508 
-1087h-108l-60 686q-14 224 -14 266h-6q-34 -92 -144 -290l-356 -662h-117z" />
+<glyph unicode="x" horiz-adv-x="922" d="M-72 0l471 559l-245 528h100l207 
-462l373 462h120l-448 -534l258 -553h-98l-224 483l-393 -483h-121z" />
+<glyph unicode="y" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 147 
49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 
367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 
21v92z" />
+<glyph unicode="z" horiz-adv-x="887" d="M-29 0l15 72l776 932h-543l17 
83h659l-18 -83l-762 -920h602l-17 -84h-729z" />
+<glyph unicode="{" horiz-adv-x="709" d="M59 528l21 78q126 0 191 49t89 158l89 
393q30 135 106 195.5t215 60.5h29l-17 -86q-86 -2 -129 -20.5t-69.5 -61.5t-44.5 
-120l-74 -338q-30 -134 -91.5 -194.5t-164.5 -78.5v-4q68 -18 105.5 -68.5t37.5 
-121.5q0 -52 -24 -164l-47 -225q-13 -58 -13 -101 q0 -61 37.5 -89t138.5 
-28v-86h-20q-256 0 -256 199q0 45 16 115l56 252q18 90 18 127q0 159 -199 159z" />
+<glyph unicode="|" d="M584 -510v2071h100v-2071h-100z" />
+<glyph unicode="}" horiz-adv-x="709" d="M-41 -238q96 2 138 21t68.5 61t43.5 
121l74 338q27 126 87.5 189.5t168.5 82.5v5q-75 20 -109.5 72.5t-34.5 117.5q0 55 
18 131l54 258q12 61 12 101q0 44 -18 69t-54 36t-116 11l20 86h21q131 0 189.5 
-51t58.5 -147q0 -41 -17 -115l-55 -252q-19 -95 -19 -127 q0 -77 49.5 -118.5t149.5 
-41.5l-20 -78q-125 0 -191 -48.5t-90 -157.5l-88 -394q-32 -139 -108.5 
-197.5t-213.5 -58.5h-18v86z" />
+<glyph unicode="~" d="M127 625v94q108 110 233 110q61 0 115 -13.5t156 -57.5q126 
-58 219 -58q54 0 107.5 29t117.5 96v-96q-111 -113 -233 -113q-117 0 -271 72q-62 
29 -112.5 43t-108.5 14q-49 0 -108 -30.5t-115 -89.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="502" d="M4 -375l260 1086h62l-203 
-1086h-119zM272 981q0 55 25 89t68 34q67 0 67 -74q0 -56 -25 -88.5t-69 -32.5q-66 
0 -66 72z" />
+<glyph unicode="&#xa2;" d="M250 600q0 184 63.5 341t178 253t256.5 111l36 
178h90l-38 -176q116 -4 217 -43l-29 -90q-107 47 -217 47q-130 0 -233 -76t-162.5 
-221t-59.5 -322q0 -164 74.5 -247t208.5 -83q127 0 264 60v-92q-118 -58 -281 
-58l-40 -202h-93l45 215q-132 25 -206 132.5t-74 272.5z " />
+<glyph unicode="&#xa3;" d="M-4 0l16 84q93 11 165.5 95.5t107.5 236.5l57 
260h-199l17 82h198l76 350q41 187 155 279t290 92q170 0 313 -78l-39 -84l-54 
26q-108 50 -231 50q-134 0 -220.5 -74.5t-117.5 -220.5l-73 -340h409l-18 
-82h-408l-57 -268q-50 -225 -188 -314h759l-20 -94h-938z" />
+<glyph unicode="&#xa4;" d="M207 1077l63 64l127 -129q105 78 230 78q118 0 223 
-78l131 129l61 -62l-129 -129q78 -106 78 -227q0 -135 -78 -227l129 -127l-61 
-62l-131 127q-104 -76 -223 -76q-126 0 -228 80l-129 -129l-61 62l127 127q-74 98 
-74 225q0 118 74 225zM350 723q0 -116 80 -196.5 t197 -80.5t198.5 81t81.5 196q0 
75 -36.5 140t-102.5 104t-141 39q-114 0 -195.5 -82t-81.5 -201z" />
+<glyph unicode="&#xa5;" d="M166 289l18 84h299l41 190h-301l17 76h258l-215 
823h100l201 -817l544 817h117l-559 -823h266l-16 -76h-315l-39 -190h317l-18 
-84h-316l-59 -289h-105l64 289h-299z" />
+<glyph unicode="&#xa6;" d="M578 246h100v-756h-100v756zM578 
805v756h100v-756h-100z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M102 51v99q47 -27 126 -46.5t153 
-19.5q149 0 228 52.5t79 150.5q0 62 -42.5 106t-166.5 96q-155 65 -211.5 130t-56.5 
159q0 101 69.5 182t198.5 130q-64 31 -103.5 85.5t-39.5 120.5q0 74 46 134.5t132.5 
94.5t202.5 34q163 0 289 -58l-31 -80q-138 54 -264 54 q-124 0 -202.5 -46.5t-78.5 
-123.5q0 -59 46 -104.5t183 -106.5q112 -52 158.5 -89.5t71 -85t24.5 -110.5q0 -197 
-249 -317q122 -64 122 -197q0 -86 -48 -153.5t-139.5 -105.5t-221.5 -38q-157 0 
-275 53zM303 786q0 - [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M492 1366q0 49 20.5 78t56.5 
29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM836 1366q0 49 20.5 78t56.5 
29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M147 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM240 731q0 -178 88.5 -329.5t240.5 
-240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330 t-240.5 241t-330.5 
89q-182 0 -335 -92t-238.5 -243t-85.5 -325zM537 725q0 207 110 332t297 125q119 0 
227 -52l-36 -83q-99 45 -191 45q-142 0 -222.5 -94.5t-80.5 -264.5q0 -186 74.5 
-275t220.5 -89q85 0 199 43v- [...]
+<glyph unicode="&#xaa;" horiz-adv-x="643" d="M170 1032q0 189 90.5 321t226.5 
132q55 0 97.5 -29t66.5 -86h6l35 103h66l-137 -650h-72l22 125h-4q-96 -137 -223 
-137q-80 0 -127 56.5t-47 164.5zM258 1028q0 -143 111 -143q66 0 133.5 75.5t97.5 
184.5q16 51 16 123q0 58 -36 100.5t-93 42.5q-94 0 -161.5 -111.5 t-67.5 -271.5z" 
/>
+<glyph unicode="&#xab;" horiz-adv-x="860" d="M61 541l2 26l363 365l57 -49l-317 
-336l213 -385l-64 -39zM422 541l2 26l362 365l58 -49l-314 -336l209 -385l-63 -39z" 
/>
+<glyph unicode="&#xac;" d="M125 672v100h903v-500h-100v400h-803z" />
+<glyph unicode="&#xad;" horiz-adv-x="629" d="M77 502l18 90h457l-16 -90h-459z" 
/>
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M150 731q0 207 103.5 382t276.5 
272.5t371 97.5q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-204 0 -376.5 100.5t-273.5 273t-101 377.5zM242 731q0 -178 88.5 
-329.5t240.5 -240.5t330 -89q174 0 325 85.5t243 239t92 334.5q0 178 -89 330 
t-240.5 241t-330.5 89q-182 0 -335 -92t-238.5 -243t-85.5 -325zM657 
291v880h211q143 0 222 -62t79 -191q0 -80 -39.5 -141t-109.5 -93l237 
-393h-120l-211 360h-168v-360h-101zM758 731h112q93 0 144 46.5t5 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="655" d="M348 1556l53 97h654l-54 
-97h-653z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M242 1190q0 120 85 206.5t208 
86.5q122 0 207 -86.5t85 -206.5q0 -122 -85.5 -207.5t-206.5 -85.5q-122 0 -207.5 
85.5t-85.5 207.5zM315 1190q0 -89 64.5 -153t155.5 -64q92 0 155.5 64t63.5 153q0 
90 -64 155.5t-155 65.5q-90 0 -155 -65.5t-65 -155.5z" />
+<glyph unicode="&#xb1;" d="M127 0v100h903v-100h-903zM127 
629v98h401v406h101v-406h401v-98h-401v-400h-101v400h-401z" />
+<glyph unicode="&#xb2;" horiz-adv-x="643" d="M82 586l16 80l297 258q137 118 
182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 
90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 
-223h416l-17 -78h-522z" />
+<glyph unicode="&#xb3;" horiz-adv-x="643" d="M109 625v90q46 -28 108 -48t125 
-20q99 0 159 52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5t66.5 
129.5q0 68 -37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 
159 -56.5t59 -148.5q0 -85 -48.5 -148t-154.5 -88v-4 q66 -16 105.5 -68t39.5 
-124q0 -77 -39 -141t-109 -99t-161 -35q-59 0 -123.5 15.5t-105.5 40.5z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M580 1241v21q66 51 150.5 
142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1171" d="M-29 -492l338 1579h101l-152 
-698q-20 -96 -20 -147q0 -82 48.5 -127t135.5 -45q110 0 207 64.5t162.5 
182.5t101.5 285l104 485h99l-234 -1087h-78l29 205h-6q-164 -221 -404 -221q-85 0 
-139 32.5t-76 89.5h-6q-18 -132 -51 -284l-63 -314h-97z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M215 1042q0 260 109 387t342 
127h542v-1816h-100v1722h-227v-1722h-101v819q-64 -18 -145 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="485" d="M207 698q0 56 25 88.5t69 32.5q66 
0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-174 -406q30 -6 72 -6q198 0 198 
115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 
-148.5t-217.5 -54.5q-46 0 -78 7v79z" />
+<glyph unicode="&#xb9;" horiz-adv-x="643" d="M254 1288l258 174h80l-186 
-876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 
-93.5z" />
+<glyph unicode="&#xba;" horiz-adv-x="655" d="M190 1059q0 112 41.5 209.5t116 
154t170.5 56.5q105 0 165 -64t60 -180q0 -115 -40 -214t-114 -156.5t-175 
-57.5q-114 0 -169 67.5t-55 184.5zM270 1067q0 -186 156 -186q73 0 125.5 46.5t81.5 
127.5t29 176q0 83 -39 128.5t-115 45.5q-70 0 -124 -46.5t-84 -124.5 t-30 -167z" />
+<glyph unicode="&#xbb;" horiz-adv-x="860" d="M33 172l313 336l-209 385l64 
39l254 -418l-2 -27l-363 -364zM393 172l314 336l-209 385l63 39l254 -418l-2 
-27l-362 -364z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1481" d="M715 230l21 76l506 577h86l-125 
-581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM830 302h291q61 294 79 365.5t29 
105.5q-10 -16 -61 -79t-338 -392zM129 0l1086 1462h108l-1087 -1462h-107zM251 
1288l258 174h80l-186 -876h-84l118 569q5 21 11.5 50.5t14 60t15.5 59 t15 49.5q-34 
-31 -60 -51.5t-143 -93.5z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1458" d="M756 1l16 80l297 258q137 118 
182.5 190.5t45.5 153.5q0 59 -38.5 97t-105.5 38q-95 0 -194 -76l-41 62q108 90 239 
90q73 0 125 -27t78.5 -72t26.5 -100q0 -106 -59 -198.5t-183 -194.5l-266 
-223h416l-17 -78h-522zM173 1288l258 174h80l-186 -876h-84l118 569 q5 21 11.5 
50.5t14 60t15.5 59t15 49.5q-34 -31 -60 -51.5t-143 -93.5zM53 0l1086 
1462h108l-1087 -1462h-107z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1458" d="M776 230l21 76l506 577h86l-125 
-581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM891 302h291q61 294 79 365.5t29 
105.5q-10 -16 -61 -79t-338 -392zM71 625v90q46 -28 108 -48t125 -20q99 0 159 
52.5t60 142.5q0 162 -196 162h-84l16 79h86q102 0 168.5 49.5 t66.5 129.5q0 68 
-37.5 102.5t-105.5 34.5q-100 0 -199 -68l-40 64q109 86 251 86q100 0 159 -56.5t59 
-148.5q0 -85 -48.5 -148t-154.5 -88v-4q66 -16 105.5 -68t39.5 -124q0 -77 -39 
-141t-109 -99t-161 -35q-59 0 - [...]
+<glyph unicode="&#xbf;" horiz-adv-x="799" d="M0 -90q0 133 70 240.5t227 
220.5q85 61 133.5 109t73 95t45.5 142h92l-6 -29q-28 -127 -79 -200t-161 -154q-118 
-84 -175 -145.5t-86.5 -127.5t-29.5 -141q0 -106 65.5 -168.5t184.5 -62.5q141 0 
308 100l38 -86q-85 -49 -170.5 -77.5t-187.5 -28.5q-159 0 -250.5 84.5 t-91.5 
228.5zM553 971q0 56 25 89.5t67 33.5q68 0 68 -74q0 -56 -25.5 -88.5t-69.5 
-32.5q-65 0 -65 72z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM536 1886v21h115q46 -129 164 -303v-25h-66q-50 52 
-114 144.5t-99 162.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM668 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 
-66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM493 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 
72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5 t-125 
-92.5h-54z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM426 1581q19 108 71 166.5t134 58.5q41 0 73.5 
-14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76 q-26 -118 -74.5 
-173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 
-28.5t-51 -100.5h-74z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM535 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 
-77t-55 -29q-55 0 -55 63zM879 1704q0 49 20.5 78t56.5 29q54 0 54 -64 q0 -48 -21 
-77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1059" d="M-111 0l822 1468h67l201 
-1468h-105l-69 520h-512l-287 -520h-117zM344 612h449l-39 291q-31 242 -39 402q-30 
-63 -64.5 -130t-306.5 -563zM539 1592q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 
-142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145zM619 1592 q0 -57 33 -90t90 
-33q56 0 90.5 36t34.5 93t-33.5 90t-87.5 33q-60 0 -93.5 -36t-33.5 -93z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1640" d="M-117 0l946 1462h883l-20 
-94h-625l-117 -553h590l-20 -94h-588l-135 -627h626l-20 -94h-727l110 
522h-444l-328 -522h-131zM408 627h401l156 741h-88z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1169" d="M170 535q0 266 104.5 488t284.5 
341t402 119q177 0 307 -68l-45 -90q-55 30 -124.5 47t-137.5 17q-197 0 -351.5 
-104.5t-245 -304.5t-90.5 -441q0 -225 110.5 -346t317.5 -121q140 0 304 
51v-94q-156 -49 -316 -49q-252 0 -386 145t-134 410zM381 -406q30 -6 72 -6 q198 0 
198 115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 
-148.5t-217.5 -54.5q-46 0 -78 7v79z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 
-94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM612 
1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 
-94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM654 1579v21q66 
51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xca;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 
-94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM522 1579v29q68 
56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 
-161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1067" d="M102 0l310 1462h727l-21 
-94h-624l-117 -553h590l-21 -94h-588l-135 -627h627l-21 -94h-727zM558 1704q0 49 
20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM902 1704q0 49 
20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xcc;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 
-1462h-99zM246 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 
162.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 
-1462h-99zM419 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 
-158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xce;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 
-1462h-99zM224 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 
-146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xcf;" horiz-adv-x="504" d="M102 0l310 1462h98l-309 
-1462h-99zM260 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 
0 -55 63zM604 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 
-55 63z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1352" d="M90 676l21 96h155l146 
690h305q282 0 426.5 -147.5t144.5 -435.5q0 -253 -109.5 -461.5t-300.5 -313t-446 
-104.5h-330l144 676h-156zM221 90h209q226 0 394.5 94.5t261 275.5t92.5 412q0 498 
-476 498h-206l-129 -598h378l-20 -96h-379z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1372" d="M102 0l310 1462h80l522 
-1294h8q23 176 74 416l188 878h94l-309 -1462h-86l-516 1284h-8q-23 -149 -48 
-273t-214 -1011h-95zM577 1581q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 
-72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55 
q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 
-100.5h-74z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 
331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417zM710 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 
162.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 
331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417zM844 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 
-158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 
331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417zM657 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 
-152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" 
/>
+<glyph unicode="&#xd5;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 
331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417zM592 1581q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 
94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 
19t-75.5 45q-34 23 -64. [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1464" d="M172 559q0 262 93 477.5t255 
331t373 115.5q247 0 378.5 -148.5t131.5 -423.5q0 -255 -94 -481.5t-252 -338t-365 
-111.5q-250 0 -385 149t-135 430zM276 573q0 -245 109.5 -373t319.5 -128q169 0 300 
98.5t210 300t79 430.5q0 240 -104.5 364t-310.5 124 q-174 0 -308.5 -101t-214.5 
-298t-80 -417zM687 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 
-29q-55 0 -55 63zM1031 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 
-29q-55 0 -55 63z" />
+<glyph unicode="&#xd7;" d="M221 1055l70 69l330 -329l333 329l68 -67l-332 
-334l332 -332l-68 -67l-333 329l-330 -327l-68 67l328 330z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1464" d="M139 -14l146 172q-113 149 -113 
401q0 263 94 479.5t256.5 330.5t370.5 114q219 0 352 -121l133 168l70 -53l-145 
-183q45 -51 72.5 -161t27.5 -222q0 -187 -52 -365.5t-144.5 -304.5t-223 
-193.5t-291.5 -67.5q-215 0 -348 112l-139 -170zM276 573q0 -105 21.5 -191 t56.5 
-138l826 1032q-107 113 -301 113q-134 0 -244 -59.5t-188.5 -170t-124.5 -267.5t-46 
-319zM412 172q107 -100 293 -100q170 0 301 100t209.5 296.5t78.5 432.5q0 85 -17.5 
172t-43.5 129z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 
880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 
318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 
401zM667 1886v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 
880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 
318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 
401zM838 1579v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 -158.5 
t-192.5 -146.5h-67z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 
880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 
318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 
401zM634 1579v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5 t92.5 
-146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1370" d="M176 381q0 83 27 201l186 
880h103l-193 -899q-20 -89 -20 -184q0 -309 342 -309q195 0 307.5 96.5t158.5 
318.5l207 977h101l-207 -977q-58 -270 -197 -387.5t-375 -117.5q-440 0 -440 
401zM678 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29 q-55 0 -55 
63zM1022 1704q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 -55 
63z" />
+<glyph unicode="&#xdd;" horiz-adv-x="965" d="M193 1462h100l201 -817l544 
817h117l-631 -932l-108 -530h-105l119 545zM563 1579v21q66 51 150.5 142t129.5 
165h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xde;" horiz-adv-x="1145" d="M102 0l310 1462h102l-57 
-266h213q200 0 308.5 -92.5t108.5 -267.5q0 -247 -153 -373.5t-457 -126.5h-201l-71 
-336h-103zM293 428h190q256 0 376 98.5t120 302.5q0 275 -330 275h-211z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1094" d="M-281 -379q53 -24 115 -24q79 0 
123 50.5t66 153.5l305 1409q80 357 405 357q137 0 215 -61.5t78 -174.5q0 -75 -44.5 
-140.5t-166.5 -148.5q-107 -76 -141.5 -124.5t-34.5 -106.5q0 -51 34 -88.5t93 
-75.5q96 -63 138 -133.5t42 -165.5q0 -170 -106.5 -269t-286.5 -99 q-143 0 -234 
65v109q45 -36 112.5 -59t129.5 -23q132 0 208.5 71t76.5 195q0 75 -31.5 129t-109.5 
108q-82 58 -119 110.5t-37 121.5q0 57 21 103t60.5 88.5t137.5 113.5q101 70 131.5 
116t30.5 101q0 70 -55 11 [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM530 1548v21h115q46 -129 164 -303v-25h-66q-50 52 
-114 144.5t-99 162.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM586 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 
-66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM441 1243v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 
72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 
-92.5h-54z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM373 1243q19 108 71 166.5t134 58.5q41 0 73.5 
-14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 
-173t-124.5 -55q-40 0 -77.5 19t-75.5 45q- [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM491 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 
-77t-55 -29q-55 0 -55 63zM835 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 
-77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1133" d="M102 354q0 197 75 376t200.5 
276.5t277.5 97.5q232 0 279 -219h6l59 202h80l-229 -1087h-82l45 274h-6q-84 -142 
-187 -218t-237 -76q-281 0 -281 374zM205 365q0 -152 50 -223.5t151 -71.5q89 0 
177.5 62t159 166t107.5 230t37 213q0 79 -26 141.5t-77 99t-127 36.5 q-124 0 -224 
-82t-164 -245.5t-64 -325.5zM521 1440q0 88 59.5 144t149.5 56q88 0 142.5 -50t54.5 
-142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 145zM601 1440q0 -57 33 -90t90 
-33q56 0 90.5 36t34.5 93t- [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1602" d="M102 344q0 206 70.5 384.5t192.5 
277t274 98.5q106 0 166 -56.5t74 -156.5h10l59 192h66l-35 -186q139 207 350 
207q112 0 175 -61.5t63 -172.5q0 -179 -158.5 -271.5t-470.5 -92.5h-39q-8 -51 -8 
-96q0 -161 69.5 -250.5t217.5 -89.5q69 0 133.5 21t130.5 52v-94 q-80 -37 -147 
-53t-140 -16q-123 0 -211 60t-117 165l-39 -205h-77l41 254h-9q-94 -142 -189 
-208t-208 -66q-120 0 -182 94t-62 270zM205 352q0 -150 42.5 -216t121.5 -66q67 0 
138.5 42t134 117.5t106 170.5t63.5 1 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="887" d="M102 397q0 193 73.5 361.5t198.5 
257t290 88.5q134 0 241 -43l-28 -90q-107 47 -218 47q-129 0 -232.5 -77t-162.5 
-222t-59 -320q0 -158 73.5 -243.5t208.5 -85.5q71 0 131.5 13t131.5 46v-92q-116 
-57 -273 -57q-174 0 -274.5 110.5t-100.5 306.5zM203 -406 q30 -6 72 -6q198 0 198 
115q0 97 -151 107l110 190h80l-78 -137q140 -30 140 -152q0 -94 -75.5 
-148.5t-217.5 -54.5q-46 0 -78 7v79z" />
+<glyph unicode="&#xe8;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 
264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 
-98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 
109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 
-243.5 -115.5t-162.5 -308.5zM472 1548v21h115q46 -129 164 -303v-25h-66q-50 52 
-114 144.5t-99 162.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 
264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 
-98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 
109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 
-243.5 -115.5t-162.5 -308.5zM532 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 
-66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xea;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 
264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 
-98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 
109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 
-243.5 -115.5t-162.5 -308.5zM390 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 
-64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 
-92.5h-54z" />
+<glyph unicode="&#xeb;" horiz-adv-x="928" d="M102 395q0 181 71 347t195.5 
264t274.5 98q114 0 182 -61t68 -166q0 -181 -163.5 -276t-485.5 -95h-33q-6 -44 -6 
-98q0 -165 74 -251.5t213 -86.5q132 0 276 73v-94q-140 -69 -299 -69q-173 0 -270 
109.5t-97 305.5zM225 594h49q517 0 517 270q0 67 -43.5 110.5 t-116.5 43.5q-131 0 
-243.5 -115.5t-162.5 -308.5zM436 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 
-21 -77t-55 -29q-55 0 -55 63zM780 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 
-21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xec;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 
-1087h-98zM175 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 
162.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 
-1087h-98zM284 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 
-158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xee;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 
-1087h-98zM128 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 
-146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xef;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 
-1087h-98zM171 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 
0 -55 63zM515 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 
-55 63z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1124" d="M102 381q0 170 63 301.5t178.5 
203.5t262.5 72q107 0 188 -49.5t121 -142.5h5q0 139 -43 289t-115 243l-295 
-163l-39 73l285 156q-54 60 -158 139l59 68q32 -26 81 -66t100 -94l266 150l39 
-74l-256 -141q87 -116 131.5 -276t44.5 -335q0 -355 -141.5 -555t-399.5 -200 q-177 
0 -277 106.5t-100 294.5zM205 389q0 -153 73.5 -236t210.5 -83q118 0 208.5 61t144 
186.5t53.5 270.5q0 77 -35 142t-100 101.5t-156 36.5q-124 0 -213.5 -61.5t-137.5 
-169.5t-48 -248z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1143" d="M76 0l231 1087h82l-37 -221h6q164 
238 416 238q130 0 195 -64t65 -184q0 -70 -24 -182l-148 -674h-98l149 692q21 92 21 
156q0 80 -43.5 125t-134.5 45q-112 0 -210.5 -67t-166 -187.5t-103.5 -286.5l-102 
-477h-98zM389 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14 t117.5 -72q52 -36 94 
-36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 
19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 0 -74 -28.5t-51 -100.5h-74z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5zM465 1548v21h115q46 -129 164 -303v-25h-66q-50 52 -114 144.5t-99 162.5z" 
/>
+<glyph unicode="&#xf3;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5zM573 1241v21q66 51 150.5 142t129.5 165h137v-23q-51 -66 -157.5 
-158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5zM427 1241v29q68 56 157.5 148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 
-146.5v-29h-49q-70 60 -161 207q-55 -57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5zM354 1243q19 108 71 166.5t134 58.5q41 0 73.5 -14t117.5 -72q52 -36 94 
-36q43 0 71.5 30.5t46.5 100.5h76q-26 -118 -74.5 -173t-124.5 -55q-40 0 -77.5 
19t-75.5 45q-34 23 -64.5 41t-68.5 18 [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1124" d="M98 403q0 191 73 358t197 257t281 
90q180 0 278.5 -108.5t98.5 -299.5q0 -197 -71.5 -368.5t-195.5 -261.5t-286 
-90q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 -342 282 -342q127 0 225.5 
77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 -223 -78.5 t-158 -225t-59 
-310.5zM468 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 
-55 63zM812 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 
-55 63z" />
+<glyph unicode="&#xf7;" d="M168 672v100h903v-100h-903zM522 373q0 106 96 106q48 
0 73.5 -27.5t25.5 -78.5q0 -57 -29 -82t-70 -25q-96 0 -96 107zM522 1071q0 107 96 
107q46 0 72.5 -27.5t26.5 -79.5q0 -57 -29 -81.5t-70 -24.5q-96 0 -96 106z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1124" d="M45 -18l119 145q-66 106 -66 
276q0 191 73 358t197 257t281 90q150 0 250 -82l109 133l65 -53l-117 -143q70 -105 
70 -263q0 -197 -71.5 -368.5t-195.5 -261.5t-286 -90q-163 0 -254 83l-110 
-135zM201 408q0 -125 32 -197l605 739q-74 72 -197 72q-124 0 -223 -78.5 t-158 
-225t-59 -310.5zM281 139q67 -73 202 -73q127 0 225.5 77.5t157 228t58.5 330.5q0 
101 -35 179z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 
690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 
65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 
-221q-131 0 -198.5 62t-67.5 181zM495 1548v21h115q46 -129 164 -303v-25h-66 q-50 
52 -114 144.5t-99 162.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 
690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 
65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 
-221q-131 0 -198.5 62t-67.5 181zM627 1241v21q66 51 150.5 142t129.5 165 
h137v-23q-51 -66 -157.5 -158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 
690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 
65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 
-221q-131 0 -198.5 62t-67.5 181zM443 1241v29q68 56 157.5 148.5 t127.5 
150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 -57 -125 
-114.5t-125 -92.5h-54z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1143" d="M109 227q0 60 22 170l150 
690h100l-152 -698q-22 -106 -22 -158q0 -74 47.5 -117.5t138.5 -43.5q110 0 207.5 
65.5t164 187t99.5 279.5l105 485h98l-231 -1087h-80l28 205h-6q-167 -221 -403 
-221q-131 0 -198.5 62t-67.5 181zM483 1366q0 49 20.5 78t56.5 29 q54 0 54 -64q0 
-48 -21 -77t-55 -29q-55 0 -55 63zM827 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 
-48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#xfd;" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 
147 49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 
367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 
21v92zM505 1241v21q66 51 150.5 142t129.5 165h137v-23 q-51 -66 -157.5 
-158.5t-192.5 -146.5h-67z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1163" d="M-33 -492l434 2048h99q-114 -535 
-164 -751h6q93 156 199 229.5t231 73.5q133 0 206 -92.5t73 -282.5q0 -195 -72 
-371t-197.5 -277t-283.5 -101q-230 0 -279 219h-4q-13 -72 -149 -695h-99zM266 
346q0 -125 61.5 -200.5t168.5 -75.5q124 0 225 84t164 243.5t63 325.5 q0 295 -200 
295q-86 0 -172.5 -57.5t-162.5 -169.5t-111.5 -238t-35.5 -207z" />
+<glyph unicode="&#xff;" horiz-adv-x="920" d="M-217 -379q71 -27 137 -27q80 0 
147 49.5t130 164.5t100 184l-174 1095h100l82 -548q51 -351 55 -449h11q43 105 186 
367l348 630h103l-713 -1290q-72 -127 -122.5 -178t-114 -81t-146.5 -30q-68 0 -129 
21v92zM354 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77 t-55 -29q-55 0 
-55 63zM698 1366q0 49 20.5 78t56.5 29q54 0 54 -64q0 -48 -21 -77t-55 -29q-55 0 
-55 63z" />
+<glyph unicode="&#x131;" horiz-adv-x="475" d="M76 0l231 1087h96l-229 
-1087h-98z" />
+<glyph unicode="&#x152;" horiz-adv-x="1767" d="M172 559q0 263 96 482t262 
330.5t381 111.5q130 0 240 -21h688l-20 -94h-625l-117 -553h590l-20 -94h-588l-135 
-627h626l-20 -94h-666q-25 -6 -77.5 -13t-94.5 -7q-251 0 -385.5 149.5t-134.5 
429.5zM276 573q0 -245 109 -373t320 -128q68 0 116 12l271 1290 q-110 15 -189 
15q-182 0 -321.5 -98.5t-222.5 -293.5t-83 -424z" />
+<glyph unicode="&#x153;" horiz-adv-x="1720" d="M98 403q0 191 73 358t197 
257t281 90q141 0 237 -74.5t126 -212.5q70 132 182.5 207.5t241.5 75.5q114 0 182 
-61t68 -166q0 -181 -163.5 -276t-486.5 -95h-32q-7 -38 -7 -98q0 -165 74 
-251.5t213 -86.5q133 0 277 73v-94q-140 -69 -299 -69q-135 0 -228 69t-125 201 
q-65 -127 -179 -198.5t-257 -71.5q-184 0 -279.5 109.5t-95.5 313.5zM201 408q0 
-342 282 -342q127 0 225.5 77.5t157 228t58.5 330.5q0 154 -73 237t-210 83q-124 0 
-223 -78.5t-158 -225t-59 -310.5zM1018 594 [...]
+<glyph unicode="&#x178;" horiz-adv-x="965" d="M193 1462h100l201 -817l544 
817h117l-631 -932l-108 -530h-105l119 545zM454 1704q0 49 20.5 78t56.5 29q54 0 54 
-64q0 -48 -21 -77t-55 -29q-55 0 -55 63zM798 1704q0 49 20.5 78t56.5 29q54 0 54 
-64q0 -48 -21 -77t-55 -29q-55 0 -55 63z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M444 1241v29q68 56 157.5 
148.5t127.5 150.5h64q23 -64 72.5 -152.5t92.5 -146.5v-29h-49q-70 60 -161 207q-55 
-57 -125 -114.5t-125 -92.5h-54z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M561 1440q0 88 59.5 144t149.5 
56q88 0 142.5 -50t54.5 -142t-57.5 -148.5t-145.5 -56.5q-93 0 -148 52t-55 
145zM641 1440q0 -57 33 -90t90 -33q56 0 90.5 36t34.5 93t-33.5 90t-87.5 33q-60 0 
-93.5 -36t-33.5 -93z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M346 1243q19 108 71 166.5t134 
58.5q41 0 73.5 -14t117.5 -72q52 -36 94 -36q43 0 71.5 30.5t46.5 100.5h76q-26 
-118 -74.5 -173t-124.5 -55q-40 0 -77.5 19t-75.5 45q-34 23 -64.5 41t-68.5 18q-45 
0 -74 -28.5t-51 -100.5h-74z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="629" d="M82 502l18 90h457l-16 
-90h-459z" />
+<glyph unicode="&#x2011;" horiz-adv-x="629" d="M82 502l18 90h457l-16 
-90h-459z" />
+<glyph unicode="&#x2012;" horiz-adv-x="629" d="M82 502l18 90h457l-16 
-90h-459z" />
+<glyph unicode="&#x2013;" horiz-adv-x="983" d="M66 502l18 90h807l-17 
-90h-808z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M68 502l18 90h1788l-16 
-90h-1790z" />
+<glyph unicode="&#x2018;" horiz-adv-x="299" d="M129 983q41 100 116 231t161 
248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="&#x2019;" horiz-adv-x="299" d="M129 961q66 106 129.5 
242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74z" />
+<glyph unicode="&#x201a;" horiz-adv-x="451" d="M-100 -264q68 110 131.5 
248t101.5 254h113l4 -23q-40 -97 -115.5 -230t-161.5 -249h-73z" />
+<glyph unicode="&#x201c;" horiz-adv-x="631" d="M129 983q41 100 116 231t161 
248h73q-66 -106 -129.5 -242.5t-103.5 -258.5h-113zM463 983q43 104 120 238.5t156 
240.5h74q-66 -106 -129.5 -242.5t-103.5 -258.5h-113z" />
+<glyph unicode="&#x201d;" horiz-adv-x="631" d="M129 961q66 106 129.5 
242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 -243.5h-74zM463 
961q66 106 129.5 242.5t103.5 258.5h113l4 -22q-43 -105 -117.5 -235.5t-158.5 
-243.5h-74z" />
+<glyph unicode="&#x201e;" horiz-adv-x="776" d="M-119 -264q73 119 135.5 
254.5t98.5 247.5h112l4 -23q-43 -105 -117.5 -235.5t-158.5 -243.5h-74zM215 
-264q66 108 129 242.5t105 259.5h112l4 -23q-43 -105 -117.5 -235.5t-158.5 
-243.5h-74z" />
+<glyph unicode="&#x2022;" horiz-adv-x="793" d="M248 682q0 137 63 213t172 76q76 
0 116 -39.5t40 -118.5q0 -125 -66 -207t-176 -82q-149 0 -149 158z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1489" d="M69 55q0 56 25 88.5t69 32.5q66 
0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM569 55q0 56 25 88.5t69 32.5q66 
0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73zM1071 55q0 56 25 88.5t69 
32.5q66 0 66 -72q0 -53 -25 -87.5t-67 -34.5q-68 0 -68 73z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="537" d="M86 541l2 26l363 365l57 
-49l-318 -336l213 -385l-63 -39z" />
+<glyph unicode="&#x203a;" horiz-adv-x="537" d="M37 172l317 336l-213 385l64 
39l254 -418l-2 -27l-363 -364z" />
+<glyph unicode="&#x2044;" horiz-adv-x="274" d="M-463 0l1086 1462h108l-1087 
-1462h-107z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="643" d="M53 815l21 76l506 577h86l-125 
-581h133l-17 -72h-131l-49 -229h-82l49 229h-391zM168 887h291q61 294 79 365.5t29 
105.5q-10 -16 -61 -79t-338 -392z" />
+<glyph unicode="&#x20ac;" d="M80 541l16 82h172q5 101 35 217h-170l19 82h174q95 
273 270 417t399 144q166 0 287 -90l-53 -82q-102 78 -238 78q-186 0 -330.5 
-120.5t-226.5 -346.5h457l-21 -82h-460q-30 -98 -39 -217h442l-20 -82h-424q0 -243 
89 -356t265 -113q115 0 252 57v-94q-129 -55 -270 -55 q-209 0 -325 139.5t-116 
394.5v27h-184z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M174 
1384v78h522v-78h-219v-643h-86v643h-217zM772 741v721h125l221 -606l223 
606h125v-721h-86v398l4 207h-6l-227 -605h-74l-221 609h-6l4 -201v-408h-82z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 
1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb00;" horiz-adv-x="1155" d="M-233 -383q53 -16 100 -16q88 0 
134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 
166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 
160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 
-54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 
-236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 
1166h-477l-252 -1190q-33 -16 [...]
+<glyph unicode="&#xfb01;" horiz-adv-x="1040" d="M641 0l231 1087h96l-229 
-1087h-98zM915 1366q0 55 22 88t60 33q57 0 57 -72q0 -57 -22 -90t-57 -33q-29 0 
-44.5 19.5t-15.5 54.5zM-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 
1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80 
q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 
-1190q-33 -161 -104 -234.5t-195 -73.5q-48 0 -102 19v90z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1042" d="M643 0l334 1556h94l-334 
-1556h-94zM-250 -383q53 -16 100 -16q88 0 134 53t75 186l246 1166h-205l14 67l205 
14l35 160q35 168 116.5 244t227.5 76q73 0 166 -31l-25 -80q-87 27 -147 27q-96 0 
-153.5 -53.5t-84.5 -178.5l-35 -164h248l-16 -81h-248l-252 -1190 q-33 -161 -104 
-234.5t-195 -73.5q-48 0 -102 19v90z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1616" d="M-250 -383q53 -16 100 -16q88 0 
134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 
166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 
160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 
-54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 
-236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 
1166h-477l-252 -1190q-33 -16 [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="1626" d="M-250 -383q53 -16 100 -16q88 0 
134 53t75 186l246 1166h-205l14 67l205 14l35 160q35 168 116.5 244t227.5 76q73 0 
166 -31l-25 -80q-87 27 -147 27q-96 0 -153.5 -53.5t-84.5 -178.5l-35 -164h477l35 
160q35 168 116.5 244t227.5 76q73 0 166 -31l-24 -80 q-87 27 -148 27q-97 0 -154.5 
-54.5t-82.5 -177.5l-35 -164h248l-17 -81h-248l-252 -1190q-34 -165 -105.5 
-236.5t-193.5 -71.5q-48 0 -102 19v90q53 -16 100 -16q88 0 134 53t75 186l244 
1166h-477l-252 -1190q-33 -16 [...]
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.ttf
new file mode 100755
index 0000000..3162ff8
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.woff
new file mode 100755
index 0000000..f6e97d5
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-LightItalic-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.eot
new file mode 100755
index 0000000..545b7c1
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.svg
new file mode 100755
index 0000000..46a8f4c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.svg
@@ -0,0 +1,252 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansRegular" horiz-adv-x="1171" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="547" d="M152 106q0 136 120 136q58 0 89.5 
-35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 103.5zM170 
1462h207l-51 -1059h-105z" />
+<glyph unicode="&#x22;" horiz-adv-x="821" d="M133 1462h186l-40 -528h-105zM502 
1462h186l-41 -528h-104z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 430v129h287l68 
340h-277v127h299l82 436h139l-82 -436h305l84 436h134l-84 -436h264v-127h-289l-66 
-340h283v-129h-307l-84 -430h-137l84 430h-303l-82 -430h-136l80 430h-262zM475 
559h303l66 340h-303z" />
+<glyph unicode="$" d="M131 170v156q83 -37 191.5 -60.5t197.5 -23.5v440q-205 65 
-287.5 151t-82.5 222q0 131 101.5 215t268.5 102v182h129v-180q184 -5 355 -74l-52 
-131q-149 59 -303 70v-434q157 -50 235 -97.5t115 -109t37 -149.5q0 -136 -102 
-224.5t-285 -111.5v-232h-129v223 q-112 0 -217 17.5t-172 48.5zM319 1057q0 -76 45 
-122t156 -87v387q-99 -16 -150 -62.5t-51 -115.5zM649 252q217 30 217 184q0 72 
-44.5 116.5t-172.5 88.5v-389z" />
+<glyph unicode="%" horiz-adv-x="1686" d="M104 1026q0 227 74.5 342t220.5 
115q145 0 223 -119t78 -338q0 -228 -76.5 -344.5t-224.5 -116.5q-140 0 -217.5 
119t-77.5 342zM242 1026q0 -170 37 -255t120 -85q164 0 164 340q0 338 -164 338q-83 
0 -120 -84t-37 -254zM365 0l811 1462h147l-811 -1462h-147zM985 440 q0 227 74.5 
342t220.5 115q142 0 221.5 -117.5t79.5 -339.5q0 -227 -76.5 -343.5t-224.5 
-116.5q-142 0 -218.5 119t-76.5 341zM1122 440q0 -171 37 -255.5t121 -84.5t124 
83.5t40 256.5q0 171 -40 253.5t-124 82.5t [...]
+<glyph unicode="&#x26;" horiz-adv-x="1495" d="M113 379q0 130 69.5 230t249.5 
202q-85 95 -115.5 144t-48.5 102t-18 110q0 150 98 234t273 84q162 0 255 -83.5t93 
-232.5q0 -107 -68 -197.5t-225 -183.5l407 -391q56 62 89.5 145.5t56.5 
182.5h168q-68 -286 -205 -434l299 -291h-229l-185 178q-118 -106 -240 -152 t-272 
-46q-215 0 -333.5 106t-118.5 293zM285 383q0 -117 77.5 -185.5t206.5 -68.5q241 0 
400 154l-437 424q-111 -68 -157 -112.5t-68 -95.5t-22 -116zM414 1171q0 -69 36 
-131.5t123 -150.5q129 75 179.5 138.5 [...]
+<glyph unicode="'" horiz-adv-x="453" d="M133 1462h186l-40 -528h-105z" />
+<glyph unicode="(" horiz-adv-x="606" d="M82 561q0 265 77.5 496t223.5 
405h162q-144 -193 -216.5 -424t-72.5 -475q0 -240 74 -469t213 -418h-160q-147 170 
-224 397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="606" d="M61 1462h162q147 -175 224 -406.5t77 
-494.5t-77.5 -490t-223.5 -395h-160q139 188 213 417.5t74 469.5q0 244 -72.5 
475t-216.5 424z" />
+<glyph unicode="*" horiz-adv-x="1130" d="M86 1090l29 182l391 -111l-43 
395h194l-43 -395l398 111l26 -182l-381 -31l248 -326l-172 -94l-176 362l-160 
-362l-176 94l242 326z" />
+<glyph unicode="+" d="M104 
653v138h410v428h139v-428h412v-138h-412v-426h-139v426h-410z" />
+<glyph unicode="," horiz-adv-x="502" d="M63 -264q27 104 59.5 257t45.5 
245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125z" />
+<glyph unicode="-" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="." horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 
0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" 
/>
+<glyph unicode="/" horiz-adv-x="752" d="M20 0l545 1462h166l-545 -1462h-166z" />
+<glyph unicode="0" d="M102 733q0 382 119 567t363 185q238 0 361.5 -193t123.5 
-559q0 -379 -119.5 -566t-365.5 -187q-236 0 -359 191.5t-123 561.5zM270 733q0 
-319 75 -464.5t239 -145.5q166 0 240.5 147.5t74.5 462.5t-74.5 461.5t-240.5 
146.5q-164 0 -239 -144.5t-75 -463.5z" />
+<glyph unicode="1" d="M188 1163l387 299h140v-1462h-162v1042q0 130 8 246q-21 
-21 -47 -44t-238 -195z" />
+<glyph unicode="2" d="M100 0v143l385 387q176 178 232 254t84 148t28 155q0 117 
-71 185.5t-197 68.5q-91 0 -172.5 -30t-181.5 -109l-88 113q202 168 440 168q206 0 
323 -105.5t117 -283.5q0 -139 -78 -275t-292 -344l-320 -313v-8h752v-154h-961z" />
+<glyph unicode="3" d="M94 59v158q95 -47 202.5 -71.5t203.5 -24.5q379 0 379 
297q0 266 -418 266h-144v143h146q171 0 271 75.5t100 209.5q0 107 -73.5 168t-199.5 
61q-96 0 -181 -26t-194 -96l-84 112q90 71 207.5 111.5t247.5 40.5q213 0 331 
-97.5t118 -267.5q0 -140 -78.5 -229 t-222.5 -119v-8q176 -22 261 -112t85 -236q0 
-209 -145 -321.5t-412 -112.5q-116 0 -212.5 17.5t-187.5 61.5z" />
+<glyph unicode="4" d="M43 336v145l694 
989h176v-983h217v-151h-217v-336h-159v336h-711zM209 487h545v486q0 143 10 
323h-8q-48 -96 -90 -159z" />
+<glyph unicode="5" d="M133 59v160q70 -45 174 -70.5t205 -25.5q176 0 273.5 
83t97.5 240q0 306 -375 306q-95 0 -254 -29l-86 55l55 684h727v-153h-585l-37 
-439q115 23 229 23q231 0 363.5 -114.5t132.5 -313.5q0 -227 -144.5 -356t-398.5 
-129q-247 0 -377 79z" />
+<glyph unicode="6" d="M117 625q0 431 167.5 644.5t495.5 213.5q113 0 178 
-19v-143q-77 25 -176 25q-235 0 -359 -146.5t-136 -460.5h12q110 172 348 172q197 0 
310.5 -119t113.5 -323q0 -228 -124.5 -358.5t-336.5 -130.5q-227 0 -360 170.5t-133 
474.5zM287 506q0 -103 40 -192t113.5 -141 t167.5 -52q142 0 220.5 89.5t78.5 
258.5q0 145 -73 228t-218 83q-90 0 -165 -37t-119.5 -102t-44.5 -135z" />
+<glyph unicode="7" d="M94 1309v153h973v-133l-598 -1329h-184l606 1309h-797z" />
+<glyph unicode="8" d="M104 373q0 251 306 391q-138 78 -198 168.5t-60 202.5q0 
159 117.5 253.5t314.5 94.5q200 0 317 -93t117 -257q0 -108 -67 -197t-214 -162q178 
-85 253 -178.5t75 -216.5q0 -182 -127 -290.5t-348 -108.5q-234 0 -360 102.5t-126 
290.5zM268 369q0 -120 83.5 -187 t234.5 -67q149 0 232 70t83 192q0 97 -78 
172.5t-272 146.5q-149 -64 -216 -141.5t-67 -185.5zM315 1128q0 -92 59 -158t218 
-132q143 60 202.5 129t59.5 161q0 101 -72.5 160.5t-199.5 59.5q-125 0 -196 
-60t-71 -160z" />
+<glyph unicode="9" d="M106 991q0 228 127.5 360t335.5 132q149 0 260.5 
-76.5t171.5 -223t60 -345.5q0 -858 -664 -858q-116 0 -184 20v143q80 -26 182 
-26q240 0 362.5 148.5t133.5 455.5h-12q-55 -83 -146 -126.5t-205 -43.5q-194 0 
-308 116t-114 324zM270 993q0 -144 72 -226.5t219 -82.5 q91 0 167.5 37t120.5 
101t44 134q0 105 -41 194t-114.5 140t-168.5 51q-143 0 -221 -92t-78 -256z" />
+<glyph unicode=":" horiz-adv-x="545" d="M152 106q0 67 30.5 101.5t87.5 34.5q58 
0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 
103.5zM152 989q0 135 118 135q123 0 123 -135q0 -65 -33 -100t-90 -35q-51 0 -84.5 
31.5t-33.5 103.5z" />
+<glyph unicode=";" horiz-adv-x="545" d="M63 -264q27 104 59.5 257t45.5 
245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125zM147 989q0 135 119 135q123 
0 123 -135q0 -65 -33 -100t-90 -35q-58 0 -88.5 35t-30.5 100z" />
+<glyph unicode="&#x3c;" d="M104 664v98l961 479v-149l-782 -371l782 -328v-151z" 
/>
+<glyph unicode="=" d="M119 449v137h930v-137h-930zM119 858v137h930v-137h-930z" 
/>
+<glyph unicode="&#x3e;" d="M104 242v151l783 326l-783 373v149l961 -479v-98z" />
+<glyph unicode="?" horiz-adv-x="879" d="M27 1384q189 99 395 99q191 0 297 
-94t106 -265q0 -73 -19.5 -128.5t-57.5 -105t-164 -159.5q-101 -86 -133.5 
-143t-32.5 -152v-33h-129v54q0 117 36 192.5t134 159.5q136 115 171.5 173t35.5 
140q0 102 -65.5 157.5t-188.5 55.5q-79 0 -154 -18.5t-172 -67.5zM240 106 q0 136 
120 136q58 0 89.5 -35t31.5 -101q0 -64 -32 -99.5t-89 -35.5q-52 0 -86 31.5t-34 
103.5z" />
+<glyph unicode="@" horiz-adv-x="1841" d="M121 571q0 260 107 463t305 314.5t454 
111.5q215 0 382.5 -90.5t259 -257t91.5 -383.5q0 -142 -44 -260t-124 -183t-184 
-65q-86 0 -145 52t-70 133h-8q-40 -87 -114.5 -136t-176.5 -49q-150 0 -234.5 
102.5t-84.5 278.5q0 204 118 331.5t310 127.5q68 0 154 -12.5 t155 -34.5l-25 
-470v-22q0 -178 133 -178q91 0 148 107.5t57 279.5q0 181 -74 317t-210.5 
209.5t-313.5 73.5q-223 0 -388 -92.5t-252 -264t-87 -396.5q0 -305 161 -469t464 
-164q210 0 436 86v-133q-192 -84 -436 -84q-3 [...]
+<glyph unicode="A" horiz-adv-x="1296" d="M0 0l578 1468h143l575 -1468h-176l-182 
465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 211q-22 -96 -63 -211z" 
/>
+<glyph unicode="B" horiz-adv-x="1327" d="M201 0v1462h413q291 0 421 -87t130 
-275q0 -130 -72.5 -214.5t-211.5 -109.5v-10q333 -57 333 -350q0 -196 -132.5 
-306t-370.5 -110h-510zM371 145h305q177 0 266.5 68.5t89.5 214.5q0 136 -91.5 
200t-278.5 64h-291v-547zM371 836h280q180 0 259 56.5t79 190.5 q0 123 -88 
177.5t-280 54.5h-250v-479z" />
+<glyph unicode="C" horiz-adv-x="1292" d="M125 733q0 226 84.5 396t244 262t375.5 
92q230 0 402 -84l-72 -146q-166 78 -332 78q-241 0 -380.5 -160.5t-139.5 -439.5q0 
-287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 -57q-323 0 
-498.5 196t-175.5 557z" />
+<glyph unicode="D" horiz-adv-x="1493" d="M201 0v1462h448q341 0 530 -189t189 
-528q0 -362 -196.5 -553.5t-565.5 -191.5h-405zM371 147h207q304 0 457 149.5t153 
442.5q0 286 -143.5 431t-426.5 145h-247v-1168z" />
+<glyph unicode="E" horiz-adv-x="1139" d="M201 
0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815z" />
+<glyph unicode="F" horiz-adv-x="1057" d="M201 
0v1462h815v-151h-645v-535h606v-151h-606v-625h-170z" />
+<glyph unicode="G" horiz-adv-x="1491" d="M125 731q0 228 91.5 399.5t263.5 
262t403 90.5q234 0 436 -86l-66 -150q-198 84 -381 84q-267 0 -417 -159t-150 
-441q0 -296 144.5 -449t424.5 -153q152 0 297 35v450h-327v152h497v-711q-116 -37 
-236 -56t-278 -19q-332 0 -517 197.5t-185 553.5z" />
+<glyph unicode="H" horiz-adv-x="1511" d="M201 
0v1462h170v-622h770v622h170v-1462h-170v688h-770v-688h-170z" />
+<glyph unicode="I" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170z" />
+<glyph unicode="J" horiz-adv-x="547" d="M-160 -213q71 -20 148 -20q99 0 150.5 
60t51.5 173v1462h170v-1448q0 -190 -96 -294.5t-276 -104.5q-94 0 -148 27v145z" />
+<glyph unicode="K" horiz-adv-x="1257" d="M201 0v1462h170v-725l663 725h201l-588 
-635l610 -827h-200l-533 709l-153 -136v-573h-170z" />
+<glyph unicode="L" horiz-adv-x="1063" d="M201 0v1462h170v-1308h645v-154h-815z" 
/>
+<glyph unicode="M" horiz-adv-x="1849" d="M201 0v1462h256l463 -1206h8l467 
1206h254v-1462h-170v942q0 162 14 352h-8l-500 -1294h-137l-496 1296h-8q14 -154 14 
-366v-930h-157z" />
+<glyph unicode="N" horiz-adv-x="1544" d="M201 0v1462h192l797 -1222h8q-2 28 -9 
174q-5 114 -5 177v32v839h159v-1462h-194l-799 1227h-8q16 -216 16 
-396v-831h-157z" />
+<glyph unicode="O" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5z" />
+<glyph unicode="P" horiz-adv-x="1233" d="M201 0v1462h379q548 0 548 -426q0 -222 
-151.5 -341.5t-433.5 -119.5h-172v-575h-170zM371 721h153q226 0 327 73t101 234q0 
145 -95 216t-296 71h-190v-594z" />
+<glyph unicode="Q" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -281 -113 -467t-319 -252l348 -362h-247l-285 
330l-55 -2q-323 0 -498.5 197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 
-153.5q243 0 367 153t124 451q0 295 -123.5 447.5t-365.5 152.5 q-243 0 -369.5 
-153.5t-126.5 -446.5z" />
+<glyph unicode="R" horiz-adv-x="1266" d="M201 0v1462h401q269 0 397.5 
-103t128.5 -310q0 -290 -294 -392l397 -657h-201l-354 608h-305v-608h-170zM371 
754h233q180 0 264 71.5t84 214.5q0 145 -85.5 209t-274.5 64h-221v-559z" />
+<glyph unicode="S" horiz-adv-x="1124" d="M106 47v164q90 -38 196 -60t210 
-22q170 0 256 64.5t86 179.5q0 76 -30.5 124.5t-102 89.5t-217.5 93q-204 73 -291.5 
173t-87.5 261q0 169 127 269t336 100q218 0 401 -80l-53 -148q-181 76 -352 76q-135 
0 -211 -58t-76 -161q0 -76 28 -124.5t94.5 -89t203.5 -89.5 q230 -82 316.5 
-176t86.5 -244q0 -193 -140 -301t-380 -108q-260 0 -400 67z" />
+<glyph unicode="T" horiz-adv-x="1133" d="M18 
1311v151h1096v-151h-463v-1311h-170v1311h-463z" />
+<glyph unicode="U" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 
-281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 
-143t-408.5 144t-144.5 396z" />
+<glyph unicode="V" horiz-adv-x="1219" d="M0 1462h180l336 -946q58 -163 92 
-317q36 162 94 323l334 940h183l-527 -1462h-168z" />
+<glyph unicode="W" horiz-adv-x="1896" d="M27 1462h180l231 -903q48 -190 70 
-344q27 183 80 358l262 889h180l275 -897q48 -155 81 -350q19 142 72 346l230 
901h180l-391 -1462h-168l-295 979q-21 65 -47 164t-27 119q-22 -132 -70 -289l-286 
-973h-168z" />
+<glyph unicode="X" horiz-adv-x="1182" d="M8 0l486 764l-453 698h188l363 
-579l366 579h181l-453 -692l488 -770h-193l-393 643l-400 -643h-180z" />
+<glyph unicode="Y" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 731h184l-488 
-895v-567h-172v559z" />
+<glyph unicode="Z" horiz-adv-x="1169" d="M82 0v133l776 
1176h-752v153h959v-133l-776 -1175h798v-154h-1005z" />
+<glyph unicode="[" horiz-adv-x="674" d="M166 
-324v1786h457v-141h-289v-1503h289v-142h-457z" />
+<glyph unicode="\" horiz-adv-x="752" d="M23 1462h163l547 -1462h-166z" />
+<glyph unicode="]" horiz-adv-x="674" d="M51 
-182h289v1503h-289v141h457v-1786h-457v142z" />
+<glyph unicode="^" horiz-adv-x="1110" d="M49 551l434 922h99l477 -922h-152l-372 
745l-334 -745h-152z" />
+<glyph unicode="_" horiz-adv-x="918" d="M-4 -184h926v-131h-926v131z" />
+<glyph unicode="`" horiz-adv-x="1182" d="M393 1548v21h203q32 -69 89 -159.5t101 
-143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="a" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 129 
-55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 0 
290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5z" />
+<glyph unicode="b" horiz-adv-x="1255" d="M176 0v1556h166v-378q0 -127 -8 
-228h8q116 164 344 164q216 0 335.5 -147.5t119.5 -417.5t-120.5 -419.5t-334.5 
-149.5q-107 0 -195.5 39.5t-148.5 121.5h-12l-35 -141h-119zM342 549q0 -231 77 
-330.5t247 -99.5q153 0 228 111.5t75 320.5q0 214 -75 319t-232 105 q-170 0 -245 
-97.5t-75 -328.5z" />
+<glyph unicode="c" horiz-adv-x="975" d="M115 541q0 275 132.5 425t377.5 150q79 
0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 -202 
81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57q-238 0 -368.5 
146.5t-130.5 414.5z" />
+<glyph unicode="d" horiz-adv-x="1255" d="M115 545q0 271 120 421t334 150q223 0 
342 -162h13l-7 79l-4 77v446h166v-1556h-135l-22 147h-9q-115 -167 -344 -167q-215 
0 -334.5 147t-119.5 418zM287 543q0 -210 77 -317t226 -107q170 0 246.5 92.5t76.5 
298.5v35q0 233 -77.5 332.5t-247.5 99.5 q-146 0 -223.5 -113.5t-77.5 -320.5z" />
+<glyph unicode="e" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 
156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 
74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 
653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z " />
+<glyph unicode="f" horiz-adv-x="694" d="M29 967v75l196 60v61q0 404 353 404q87 
0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129h-279v-967h-166v967h-196z" />
+<glyph unicode="g" horiz-adv-x="1122" d="M39 -186q0 100 64 173t180 99q-42 19 
-70.5 59t-28.5 93q0 60 32 105t101 87q-85 35 -138.5 119t-53.5 192q0 180 108 
277.5t306 97.5q86 0 155 -20h379v-105l-203 -24q28 -35 50 -91.5t22 -127.5q0 -161 
-110 -257t-302 -96q-49 0 -92 8q-106 -56 -106 -141 q0 -45 37 -66.5t127 
-21.5h194q178 0 273.5 -75t95.5 -218q0 -182 -146 -277.5t-426 -95.5q-215 0 -331.5 
80t-116.5 226zM199 -184q0 -89 75 -135t215 -46q209 0 309.5 62.5t100.5 169.5q0 89 
-55 123.5t-207 34.5h-199q-113 0 [...]
+<glyph unicode="h" horiz-adv-x="1257" d="M176 0v1556h166v-471q0 -85 -8 
-141h10q49 79 139.5 124.5t206.5 45.5q201 0 301.5 -95.5t100.5 
-303.5v-715h-166v709q0 134 -61 200t-191 66q-173 0 -252.5 -94t-79.5 
-308v-573h-166z" />
+<glyph unicode="i" horiz-adv-x="518" d="M162 1393q0 57 28 83.5t70 26.5q40 0 69 
-27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM176 
0v1096h166v-1096h-166z" />
+<glyph unicode="j" horiz-adv-x="518" d="M-111 -332q69 -20 136 -20q78 0 114.5 
42.5t36.5 129.5v1276h166v-1264q0 -324 -299 -324q-95 0 -154 25v135zM162 1393q0 
57 28 83.5t70 26.5q40 0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 
83.5z" />
+<glyph unicode="k" horiz-adv-x="1075" d="M176 0v1556h164v-825q0 -55 -8 
-170h8q43 61 131 160l354 375h197l-444 -467l475 -629h-201l-387 518l-125 
-108v-410h-164z" />
+<glyph unicode="l" horiz-adv-x="518" d="M176 0v1556h166v-1556h-166z" />
+<glyph unicode="m" horiz-adv-x="1905" d="M176 0v1096h135l27 -150h8q47 80 132.5 
125t191.5 45q257 0 336 -186h8q49 86 142 136t212 50q186 0 278.5 -95.5t92.5 
-305.5v-715h-166v713q0 131 -56 196.5t-174 65.5q-155 0 -229 -89t-74 
-274v-612h-166v713q0 131 -56 196.5t-175 65.5q-156 0 -228.5 -93.5 t-72.5 
-306.5v-575h-166z" />
+<glyph unicode="n" horiz-adv-x="1257" d="M176 0v1096h135l27 -150h8q51 81 143 
125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166v709q0 134 -61 200t-191 
66q-172 0 -252 -93t-80 -307v-575h-166z" />
+<glyph unicode="o" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319z" />
+<glyph unicode="p" horiz-adv-x="1255" d="M176 -492v1588h135l23 -150h8q64 90 
149 130t195 40q218 0 336.5 -149t118.5 -418q0 -270 -120.5 -419.5t-334.5 
-149.5q-107 0 -195.5 39.5t-148.5 121.5h-12q12 -96 12 -182v-451h-166zM342 549q0 
-231 77 -330.5t247 -99.5q142 0 222.5 115t80.5 317 q0 205 -80.5 314.5t-226.5 
109.5q-168 0 -243 -93t-77 -296v-37z" />
+<glyph unicode="q" horiz-adv-x="1255" d="M115 545q0 269 120 420t334 151q225 0 
346 -170h9l24 150h131v-1588h-166v469q0 100 11 170h-13q-115 -167 -346 -167q-212 
0 -331 149t-119 416zM287 543q0 -207 76.5 -315.5t226.5 -108.5q166 0 242 89t81 
300v37q0 230 -78 331t-247 101q-146 0 -223.5 -113.5 t-77.5 -320.5z" />
+<glyph unicode="r" horiz-adv-x="836" d="M176 0v1096h137l19 -203h8q61 107 147 
165t189 58q73 0 131 -12l-23 -154q-68 15 -120 15q-133 0 -227.5 -108t-94.5 
-269v-588h-166z" />
+<glyph unicode="s" horiz-adv-x="977" d="M106 827q0 134 109 211.5t299 77.5q177 
0 346 -72l-59 -135q-165 68 -299 68q-118 0 -178 -37t-60 -102q0 -44 22.5 -75t72.5 
-59t192 -81q195 -71 263.5 -143t68.5 -181q0 -153 -114 -236t-320 -83q-218 0 -340 
69v154q79 -40 169.5 -63t174.5 -23q130 0 200 41.5 t70 126.5q0 64 -55.5 
109.5t-216.5 107.5q-153 57 -217.5 99.5t-96 96.5t-31.5 129z" />
+<glyph unicode="t" horiz-adv-x="723" d="M31 967v80l157 69l70 
234h96v-254h318v-129h-318v-645q0 -99 47 -152t129 -53q44 0 85 6.5t65 
13.5v-127q-27 -13 -79.5 -21.5t-94.5 -8.5q-318 0 -318 335v652h-157z" />
+<glyph unicode="u" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 
-200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 
-141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304z" />
+<glyph unicode="v" horiz-adv-x="1026" d="M0 1096h178l236 -650q80 -228 94 
-296h8q11 53 69.5 219.5t262.5 726.5h178l-416 -1096h-194z" />
+<glyph unicode="w" horiz-adv-x="1593" d="M23 1096h174q106 -413 161.5 -629t63.5 
-291h8q11 57 35.5 147.5t42.5 143.5l201 629h180l196 -629q56 -172 76 -289h8q4 36 
21.5 111t208.5 807h172l-303 -1096h-197l-201 643q-19 59 -71 268h-8q-40 -175 -70 
-270l-207 -641h-192z" />
+<glyph unicode="x" horiz-adv-x="1073" d="M39 0l401 561l-381 535h189l289 
-420l288 420h187l-381 -535l401 -561h-188l-307 444l-310 -444h-188z" />
+<glyph unicode="y" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 
-309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 
-262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156z" />
+<glyph unicode="z" horiz-adv-x="958" d="M82 0v113l598 
854h-561v129h743v-129l-590 -838h605v-129h-795z" />
+<glyph unicode="{" horiz-adv-x="776" d="M61 498v141q130 2 188 48t58 142v306q0 
155 108 241t290 86v-139q-230 -6 -230 -199v-295q0 -215 -223 -254v-12q223 -39 223 
-254v-297q0 -102 58.5 -148t171.5 -48v-140q-190 2 -294 87t-104 239v303q0 104 -63 
148.5t-183 44.5z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M494 -496v2052h141v-2052h-141z" />
+<glyph unicode="}" horiz-adv-x="776" d="M72 -184q111 2 169 48t58 148v297q0 114 
55 174t168 80v12q-223 39 -223 254v295q0 193 -227 199v139q184 0 289.5 -87t105.5 
-240v-306q0 -97 59 -142.5t189 -47.5v-141q-122 0 -185 -44.5t-63 -148.5v-303q0 
-153 -102.5 -238.5t-292.5 -87.5v140z" />
+<glyph unicode="~" d="M104 592v151q100 109 244 109q68 0 124.5 -14t145.5 -52q66 
-28 115 -41.5t96 -13.5q54 0 118 32t118 89v-150q-102 -110 -244 -110q-72 0 -135 
16.5t-135 48.5q-75 32 -120 44t-93 12q-53 0 -116.5 -33.5t-117.5 -87.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="547" d="M152 983q0 63 31.5 99t88.5 36q51 
0 86 -32t35 -103q0 -135 -121 -135q-60 0 -90 35.5t-30 99.5zM168 -373l51 
1057h105l51 -1057h-207z" />
+<glyph unicode="&#xa2;" d="M190 741q0 508 396 570v172h135v-164q75 -3 146 
-19.5t120 -39.5l-49 -140q-133 51 -242 51q-172 0 -253 -105.5t-81 -322.5q0 -212 
79.5 -313.5t246.5 -101.5q141 0 283 59v-147q-105 -54 -252 -60v-200h-133v206q-203 
32 -299.5 168.5t-96.5 386.5z" />
+<glyph unicode="&#xa3;" d="M63 0v141q205 47 205 291v223h-198v127h198v316q0 178 
112 280.5t302 102.5t360 -84l-61 -133q-154 77 -297 77q-123 0 -185.5 -62t-62.5 
-202v-295h422v-127h-422v-221q0 -100 -32.5 -168t-106.5 -112h795v-154h-1029z" />
+<glyph unicode="&#xa4;" d="M123 1092l94 92l135 -133q104 73 234 73q127 0 229 
-73l137 133l95 -92l-134 -138q74 -113 74 -231q0 -131 -74 -234l131 -135l-92 
-92l-137 133q-102 -71 -229 -71q-134 0 -234 73l-135 -133l-92 92l133 136q-74 107 
-74 231q0 122 74 229zM313 723q0 -112 78.5 -192 t194.5 -80t195 79.5t79 192.5q0 
114 -80 195t-194 81q-116 0 -194.5 -82t-78.5 -194z" />
+<glyph unicode="&#xa5;" d="M31 1462h178l375 -727l379 727h174l-416 
-770h262v-127h-317v-170h317v-127h-317v-268h-164v268h-316v127h316v170h-316v127h256z"
 />
+<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M494 281h141v-777h-141v777zM494 
780v776h141v-776h-141z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1057" d="M123 57v148q78 -37 175 -59.5t179 
-22.5q134 0 204.5 38t70.5 109q0 46 -24 75t-78 58t-169 72q-142 52 -209 97t-100 
102t-33 135q0 86 43 154.5t121 105.5q-74 40 -116 95.5t-42 140.5q0 121 103.5 
190.5t300.5 69.5q94 0 173.5 -14.5t176.5 -53.5l-53 -131 q-98 39 -165.5 
52.5t-143.5 13.5q-116 0 -174 -29.5t-58 -93.5q0 -60 61.5 -102t215.5 -97q186 -68 
261 -143.5t75 -182.5q0 -90 -41 -160.5t-115 -111.5q153 -81 153 -227q0 -140 -117 
-216.5t-329 -76.5q-218 0 -346 65 [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1182" d="M309 1393q0 52 26.5 75t63.5 
23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 
74.5zM690 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 
-24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 
-237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323 t-235.5 
236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM481 731q0 209 
110.5 332t301.5 123q128 0 246 -60l-58 -118q-108 51 -188 51q-125 0 -192.5 
-87t-67.5 -241q0 -168 63.5 -249t194.5 -81 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="725" d="M70 989q0 102 77 154.5t242 
58.5l117 4v39q0 133 -148 133q-100 0 -204 -51l-43 96q114 56 247 56q130 0 198.5 
-52.5t68.5 -173.5v-452h-93l-24 84q-92 -97 -232 -97q-95 0 -150.5 49.5t-55.5 
151.5zM193 989q0 -100 112 -100q201 0 201 180v49l-98 -4 q-112 -4 -163.5 
-32.5t-51.5 -92.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="1018" d="M82 524v27l342 407l119 -69l-289 
-350l289 -351l-119 -71zM477 524v27l344 407l117 -69l-287 -350l287 -351l-117 
-71z" />
+<glyph unicode="&#xac;" d="M104 653v138h961v-527h-137v389h-824z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM205 731q0 -173 87 -323.5t237.5 
-237t322.5 -86.5q174 0 323 87t236.5 235.5t87.5 324.5q0 174 -87 323 t-235.5 
236.5t-324.5 87.5q-174 0 -323 -87t-236.5 -235.5t-87.5 -324.5zM575 
285v891h261q166 0 243.5 -65t77.5 -198q0 -80 -42.5 -141.5t-119.5 -91.5l238 
-395h-168l-207 354h-135v-354h-148zM723 762h108q80  [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v127h1036v-127h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M127 1171q0 130 90.5 221t220.5 
91t221 -90.5t91 -221.5q0 -84 -41 -155.5t-114 -113.5t-157 -42q-130 0 -220.5 
90t-90.5 221zM242 1171q0 -82 58.5 -139t139.5 -57q80 0 137.5 56.5t57.5 139.5q0 
84 -56.5 140.5t-138.5 56.5q-83 0 -140.5 -57t-57.5 -140z" />
+<glyph unicode="&#xb1;" d="M104 
653v138h410v428h139v-428h412v-138h-412v-426h-139v426h-410zM104 
1v138h961v-138h-961z" />
+<glyph unicode="&#xb2;" horiz-adv-x="711" d="M49 586v104l236 230q89 86 130 
134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 34.5q-52 0 -101 -19t-118 -69l-66 
88q131 111 283 111q132 0 205.5 -65t73.5 -177q0 -80 -44.5 -155.5t-191.5 
-213.5l-174 -165h440v-119h-604z" />
+<glyph unicode="&#xb3;" horiz-adv-x="711" d="M33 625v123q147 -68 270 -68q211 0 
211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 
95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90q63 45 133 72t164 27q136 0 214.5 
-59.5t78.5 -166.5q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209 q0 -128 -92 
-199.5t-260 -71.5q-152 0 -268 56z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1182" d="M393 1241v25q48 62 103.5 
150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1268" d="M176 -492v1588h166v-715q0 -262 
254 -262q171 0 250.5 94.5t79.5 306.5v576h166v-1096h-136l-26 147h-10q-111 -167 
-340 -167q-150 0 -238 92h-10q10 -84 10 -244v-320h-166z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 
127h557v-1816h-114v1712h-213v-1712h-115v819q-62 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="545" d="M152 723q0 66 31 100.5t87 34.5q58 
0 90.5 -34.5t32.5 -100.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5z" 
/>
+<glyph unicode="&#xb8;" horiz-adv-x="465" d="M37 -377q45 -8 104 -8q79 0 119.5 
20t40.5 74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 
-97 -76.5 -150t-226.5 -53q-51 0 -96 9v106z" />
+<glyph unicode="&#xb9;" horiz-adv-x="711" d="M76 1280l262 
182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 -117.5z" />
+<glyph unicode="&#xba;" horiz-adv-x="768" d="M66 1135q0 163 84 253.5t235 
90.5q152 0 234.5 -91t82.5 -253q0 -164 -85.5 -255.5t-235.5 -91.5q-146 0 -230.5 
93t-84.5 254zM188 1135q0 -122 45.5 -183t149.5 -61q105 0 151 61t46 183q0 123 -46 
182t-151 59q-103 0 -149 -59t-46 -182z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1018" d="M80 188l287 351l-287 350l117 
69l344 -407v-27l-344 -407zM475 188l287 351l-287 350l117 69l344 -407v-27l-344 
-407z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1597" d="M252 0l903 1462h143l-903 
-1462h-143zM75 1280l262 182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 
-117.5zM817 203v101l408 579h139v-563h125v-117h-125v-202h-145v202h-402zM957 
320h262v195q0 134 6 209q-5 -12 -17 -31.5t-27 -41.5l-30 -46 q-15 -22 -26 -39z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1597" d="M184 0l903 1462h143l-903 
-1462h-143zM46 1280l262 182h143v-876h-133v579q0 91 6 181q-22 -22 -49 -44.5t-162 
-117.5zM895 1v104l236 230q89 86 130 134.5t57.5 86.5t16.5 92q0 68 -40 102.5t-103 
34.5q-52 0 -101 -19t-118 -69l-66 88q131 111 283 111 q132 0 205.5 -65t73.5 
-177q0 -80 -44.5 -155.5t-191.5 -213.5l-174 -165h440v-119h-604z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1597" d="M26 625v123q147 -68 270 -68q211 
0 211 162q0 145 -231 145h-117v107h119q103 0 152.5 39.5t49.5 107.5q0 61 -40 
95t-107 34q-66 0 -122 -21.5t-112 -56.5l-69 90q63 45 133 72t164 27q136 0 214.5 
-59.5t78.5 -166.5q0 -80 -41 -131.5t-109 -74.5q176 -47 176 -209 q0 -128 -92 
-199.5t-260 -71.5q-152 0 -268 56zM344 0l903 1462h143l-903 -1462h-143zM897 
203v101l408 579h139v-563h125v-117h-125v-202h-145v202h-402zM1037 320h262v195q0 
134 6 209q-5 -12 -17 -31.5t-27 -41 [...]
+<glyph unicode="&#xbf;" horiz-adv-x="879" d="M51 -37q0 70 17.5 122.5t49.5 
97t76.5 85.5t98.5 88q101 88 133.5 146t32.5 151v31h131v-51q0 -122 -37.5 
-196t-134.5 -158q-121 -106 -151.5 -143.5t-43 -76t-12.5 -94.5q0 -100 66 
-156.5t188 -56.5q80 0 155 19t173 67l59 -135q-197 -96 -395 -96q-190 0 -298 93 
t-108 263zM397 983q0 64 33 99.5t88 35.5q51 0 86 -32t35 -103q0 -135 -121 
-135q-59 0 -90 34.5t-31 100.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM331 1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 
52 -154 148t-129 159z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM526 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 
-160t-151 -147h-111z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM303 1579v23q127 136 178 200t74 105h166q22 -42 76.5 
-108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM268 1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 
-41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5 
q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM364 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 
-50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM745 1731q0 52 26.5 75 
t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 
74.5z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1296" d="M0 0l578 1468h143l575 
-1468h-176l-182 465h-586l-180 -465h-172zM412 618h473l-170 453q-33 86 -68 
211q-22 -96 -63 -211zM424 1585q0 98 60.5 155.5t160.5 57.5q101 0 163 -59.5t62 
-151.5q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 58.5t-60 156.5zM528 1585 q0 
-56 30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5t-33 86.5t-84 30.5t-84 -30.5t-33 
-86.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1788" d="M-2 0l698 
1462h969v-151h-580v-471h541v-150h-541v-538h580v-152h-750v465h-514l-227 
-465h-176zM469 618h446v693h-118z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1292" d="M125 733q0 226 84.5 396t244 
262t375.5 92q230 0 402 -84l-72 -146q-166 78 -332 78q-241 0 -380.5 -160.5t-139.5 
-439.5q0 -287 134.5 -443.5t383.5 -156.5q153 0 349 55v-149q-152 -57 -375 
-57q-323 0 -498.5 196t-175.5 557zM551 -377q45 -8 104 -8q79 0 119.5 20 t40.5 
74q0 43 -39.5 69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 -97 -76.5 
-150t-226.5 -53q-51 0 -96 9v106z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1139" d="M201 
0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM320 1886v21h203q32 
-69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1139" d="M201 
0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM456 1579v25q48 62 
103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xca;" horiz-adv-x="1139" d="M201 
0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM263 1579v23q127 136 
178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 
186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1139" d="M201 
0v1462h815v-151h-645v-471h606v-150h-606v-538h645v-152h-815zM327 1731q0 52 26.5 
75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 
24.5t-26.5 74.5zM708 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 
-74.5 t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM5 
1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xcd;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM179 
1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xce;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM-57 
1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 
55 -221 186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xcf;" horiz-adv-x="571" d="M201 0v1462h170v-1462h-170zM5 
1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 
-24.5q-37 0 -63.5 24.5t-26.5 74.5zM386 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 
-75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1479" d="M47 649v150h154v663h434q337 0 
527 -187.5t190 -529.5q0 -362 -196.5 -553.5t-565.5 -191.5h-389v649h-154zM371 
147h190q610 0 610 592q0 576 -569 576h-231v-516h379v-150h-379v-502z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1544" d="M201 0v1462h192l797 -1222h8q-2 
28 -9 174q-5 114 -5 177v32v839h159v-1462h-194l-799 1227h-8q16 -216 16 
-396v-831h-157zM411 1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 
-41t68 -18.5q49 0 73 29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5 q-43 0 
-84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM514 
1886v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM659 
1579v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM448 
1579v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 
55 -221 186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM418 
1579q13 121 70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 
29.5t39 91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 
41t-70.5 18.5q-50 0 -75.5 -3 [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q315 0 492 -200t177 -552q0 -351 -177.5 -552t-493.5 -201q-323 0 -498.5 
197.5t-175.5 557.5zM305 733q0 -297 126.5 -450.5t367.5 -153.5q243 0 367 153t124 
451q0 295 -123.5 447.5t-365.5 152.5q-243 0 -369.5 -153.5 t-126.5 -446.5zM522 
1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 
-24.5q-37 0 -63.5 24.5t-26.5 74.5zM903 1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 
-75q0 -50 -27.5 -74.5t-64.5 -24.5t [...]
+<glyph unicode="&#xd7;" d="M133 1075l100 101l353 -355l354 355l96 -99l-352 
-354l350 -352l-96 -99l-354 351l-348 -351l-101 99l350 352z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1595" d="M125 735q0 357 176 553.5t500 
196.5q209 0 366 -94l97 135l120 -80l-106 -148q192 -202 192 -565q0 -351 -177.5 
-552t-493.5 -201q-235 0 -383 100l-101 -141l-120 79l108 154q-178 198 -178 
563zM305 733q0 -262 101 -416l669 943q-106 73 -274 73 q-243 0 -369.5 
-153.5t-126.5 -446.5zM508 211q115 -82 291 -82q243 0 367 153t124 451q0 272 -110 
426z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 
-281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 
-143t-408.5 144t-144.5 396zM463 1886v21h203q32 -69 89 -159.5t101 
-143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xda;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 
-281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 
-143t-408.5 144t-144.5 396zM600 1579v25q48 62 103.5 150t87.5 153h202v-21q-44 
-65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 
-281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 
-143t-408.5 144t-144.5 396zM393 1579v23q127 136 178 200t74 105h166q22 -42 76.5 
-108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 -186 h-115z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1491" d="M186 520v942h170v-954q0 -183 100 
-281t294 -98q185 0 285 98.5t100 282.5v952h170v-946q0 -250 -151 -393t-415 
-143t-408.5 144t-144.5 396zM461 1731q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 
-75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5z M842 1731q0 52 
26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 
24.5t-26.5 74.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 
731h184l-488 -895v-567h-172v559zM442 1579v25q48 62 103.5 150t87.5 
153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xde;" horiz-adv-x="1251" d="M201 0v1462h170v-256h215q281 0 
420 -103.5t139 -318.5q0 -227 -151.5 -346t-438.5 -119h-184v-319h-170zM371 
465h168q226 0 327 71.5t101 235.5q0 149 -95 218t-297 69h-204v-594z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1274" d="M176 0v1202q0 178 110 271.5t332 
93.5q206 0 318.5 -78.5t112.5 -222.5q0 -135 -143 -250q-88 -70 -116 -103.5t-28 
-66.5q0 -32 13.5 -53t49 -49.5t113.5 -79.5q140 -95 191 -173.5t51 -179.5q0 -160 
-97 -245.5t-276 -85.5q-188 0 -295 69v154q63 -39 141 -62.5 t150 -23.5q215 0 215 
182q0 75 -41.5 128.5t-151.5 123.5q-127 82 -175 143.5t-48 145.5q0 63 34.5 
116t105.5 106q75 57 107 102t32 98q0 80 -68 122.5t-195 42.5q-276 0 -276 
-223v-1204h-166z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM279 
1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM436 1241v25q48 
62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM228 1241v23q127 
136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 
186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM197 1241q13 121 
70.5 189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 
91.5h99q-13 -121 -69.5 -189.5t [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM279 1393q0 52 
26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 
-63.5 24.5t-26.5 74.5zM660 1393q [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1139" d="M94 303q0 332 531 348l186 6v68q0 
129 -55.5 190.5t-177.5 61.5q-137 0 -310 -84l-51 127q81 44 177.5 69t193.5 25q196 
0 290.5 -87t94.5 -279v-748h-123l-33 156h-8q-82 -103 -163.5 -139.5t-203.5 
-36.5q-163 0 -255.5 84t-92.5 239zM268 301q0 -90 54.5 -137 t152.5 -47q155 0 
243.5 85t88.5 238v99l-166 -7q-198 -7 -285.5 -61.5t-87.5 -169.5zM358 1456q0 98 
60.5 155.5t160.5 57.5q101 0 163 -59.5t62 -151.5q0 -98 -61.5 -157.5t-163.5 
-59.5q-101 0 -161 58.5t-60 156.5z [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1757" d="M94 303q0 161 124 250.5t378 
97.5l184 6v68q0 129 -58 190.5t-177 61.5q-144 0 -307 -84l-52 127q74 41 173.5 
67.5t197.5 26.5q130 0 212.5 -43.5t123.5 -138.5q53 88 138.5 136t195.5 48q192 0 
308 -133.5t116 -355.5v-107h-701q8 -395 322 -395q91 0 169.5 17.5 t162.5 
56.5v-148q-86 -38 -160.5 -54.5t-175.5 -16.5q-289 0 -414 233q-81 -127 -179.5 
-180t-232.5 -53q-163 0 -255.5 85t-92.5 238zM268 301q0 -95 53.5 -139.5t141.5 
-44.5q145 0 229 84.5t84 238.5v99l-158 -7q [...]
+<glyph unicode="&#xe7;" horiz-adv-x="975" d="M115 541q0 275 132.5 425t377.5 
150q79 0 158 -17t124 -40l-51 -141q-55 22 -120 36.5t-115 14.5q-334 0 -334 -426q0 
-202 81.5 -310t241.5 -108q137 0 281 59v-147q-110 -57 -277 -57q-238 0 -368.5 
146.5t-130.5 414.5zM363 -377q45 -8 104 -8q79 0 119.5 20t40.5 74 q0 43 -39.5 
69.5t-148.5 43.5l88 178h110l-55 -115q180 -39 180 -174q0 -97 -76.5 -150t-226.5 
-53q-51 0 -96 9v106z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 
156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 
74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 
653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M318 
1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 
156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 
74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 
653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M471 1241v25q48 
62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xea;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 
156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 
74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 
653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M259 
1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 
55 -221 186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1149" d="M115 539q0 265 130.5 421t350.5 
156q206 0 326 -135.5t120 -357.5v-105h-755q5 -193 97.5 -293t260.5 -100q177 0 350 
74v-148q-88 -38 -166.5 -54.5t-189.5 -16.5q-243 0 -383.5 148t-140.5 411zM291 
653h573q0 157 -70 240.5t-200 83.5q-132 0 -210.5 -86t-92.5 -238z M319 1393q0 52 
26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 
-63.5 24.5t-26.5 74.5zM700 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 
-27.5 -74.5t-64.5 -24.5t-63. [...]
+<glyph unicode="&#xec;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-38 
1548v21h203q32 -69 89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xed;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM169 
1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xee;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-77 
1241v23q127 136 178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 
55 -221 186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xef;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166zM-20 
1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 
-24.5q-37 0 -63.5 24.5t-26.5 74.5zM361 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 
-75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1221" d="M113 475q0 230 131.5 361t351.5 
131q226 0 326 -121l8 4q-57 214 -262 405l-271 -155l-73 108l233 133q-92 62 -186 
111l69 117q156 -73 258 -148l238 138l76 -107l-207 -119q152 -143 234.5 -342t82.5 
-428q0 -281 -130.5 -432t-377.5 -151q-222 0 -361.5 134.5 t-139.5 360.5zM281 
469q0 -167 87.5 -258.5t249.5 -91.5q175 0 255.5 100.5t80.5 292.5q0 147 -90 
232t-246 85q-337 0 -337 -360z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1257" d="M176 0v1096h135l27 -150h8q51 81 
143 125.5t205 44.5q198 0 298 -95.5t100 -305.5v-715h-166v709q0 134 -61 200t-191 
66q-172 0 -252 -93t-80 -307v-575h-166zM278 1241q13 121 70.5 189.5t148.5 68.5q46 
0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 91.5h99 q-13 -121 -69.5 
-189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 18.5q-50 0 -75.5 
-30t-39.5 -91h-98z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM349 1548v21 h203q32 -69 
89 -159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM479 1241v25 q48 62 
103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM282 1241v23 q127 136 
178 200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 
186q-136 -134 -219 -186h-115z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM249 1241 q13 121 70.5 
189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 
91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 
18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q230 0 365.5 -153t135.5 -414q0 -268 -135 -418.5t-373 -150.5q-147 0 -261 
69t-176 198t-62 302zM287 549q0 -210 84 -320t247 -110t247.5 109.5t84.5 320.5q0 
209 -84.5 317.5t-249.5 108.5q-163 0 -246 -107t-83 -319zM336 1393 q0 52 26.5 
75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 
24.5t-26.5 74.5zM717 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 
-74.5t-64.5 -24.5t-63.5 24.5t-26. [...]
+<glyph unicode="&#xf7;" d="M104 653v138h961v-138h-961zM471 373q0 60 29.5 
90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 -29.5 -89t-80.5 -32q-52 0 -82.5 
31.5t-30.5 89.5zM471 1071q0 60 29.5 90.5t83.5 30.5q52 0 81 -31.5t29 -89.5q0 -57 
-29.5 -89t-80.5 -32q-52 0 -82.5 31.5t-30.5 89.5z " />
+<glyph unicode="&#xf8;" horiz-adv-x="1237" d="M115 549q0 268 134 417.5t372 
149.5q154 0 270 -76l84 119l117 -76l-97 -133q127 -152 127 -401q0 -268 -135 
-418.5t-373 -150.5q-154 0 -266 69l-84 -117l-114 78l94 131q-129 152 -129 
408zM287 549q0 -171 53 -273l465 646q-75 53 -189 53q-163 0 -246 -107t-83 -319 
zM434 170q71 -51 184 -51q163 0 247.5 109.5t84.5 320.5q0 164 -51 264z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 
-200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 
-141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM333 1548v21h203q32 -69 89 
-159.5t101 -143.5v-25h-110q-65 52 -154 148t-129 159z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 
-200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 
-141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM506 1241v25q48 62 103.5 
150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 
-200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 
-141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM286 1241v23q127 136 178 
200t74 105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119 q-88 55 -221 186q-136 
-134 -219 -186h-115z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1257" d="M164 379v717h168v-711q0 -134 61 
-200t191 -66q172 0 251.5 94t79.5 307v576h166v-1096h-137l-24 147h-9q-51 -81 
-141.5 -124t-206.5 -43q-200 0 -299.5 95t-99.5 304zM342 1393q0 52 26.5 75t63.5 
23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5 q-37 0 -63.5 24.5t-26.5 
74.5zM723 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 
-24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 
-309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 
-262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM411 
1241v25q48 62 103.5 150t87.5 153h202v-21q-44 -65 -131 -160t-151 -147h-111 z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1255" d="M176 -492v2048h166v-466q0 -52 -6 
-142h8q66 89 151 128.5t191 39.5q215 0 335 -150t120 -417q0 -268 -120.5 
-418.5t-334.5 -150.5q-222 0 -344 161h-12l4 -34q8 -77 8 -140v-459h-166zM342 
549q0 -231 77 -330.5t247 -99.5q303 0 303 432q0 215 -74 319.5t-231 104.5 q-168 0 
-244 -92t-78 -293v-41z" />
+<glyph unicode="&#xff;" horiz-adv-x="1032" d="M2 1096h178l240 -625q79 -214 98 
-309h8q13 51 54.5 174.5t271.5 759.5h178l-471 -1248q-70 -185 -163.5 
-262.5t-229.5 -77.5q-76 0 -150 17v133q55 -12 123 -12q171 0 244 192l61 156zM234 
1393q0 52 26.5 75t63.5 23q38 0 65.5 -23t27.5 -75q0 -50 -27.5 -74.5 t-65.5 
-24.5q-37 0 -63.5 24.5t-26.5 74.5zM615 1393q0 52 26.5 75t63.5 23t64.5 -23t27.5 
-75q0 -50 -27.5 -74.5t-64.5 -24.5t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="518" d="M176 0v1096h166v-1096h-166z" />
+<glyph unicode="&#x152;" horiz-adv-x="1890" d="M125 735q0 360 174 555t494 
195q102 0 192 -23h782v-151h-589v-471h551v-150h-551v-538h589v-152h-768q-102 -20 
-194 -20q-327 0 -503.5 196.5t-176.5 558.5zM305 733q0 -297 128.5 -450.5t375.5 
-153.5q112 0 199 33v1141q-87 30 -197 30q-249 0 -377.5 -152.5 t-128.5 -447.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1929" d="M113 549q0 265 131 415t366 
150q131 0 233.5 -59.5t164.5 -173.5q58 112 154 172.5t222 60.5q201 0 320 
-132.5t119 -358.5v-105h-729q8 -393 338 -393q94 0 174.5 17.5t167.5 56.5v-148q-88 
-39 -164 -55t-180 -16q-293 0 -418 235q-62 -116 -166.5 -175.5t-241.5 -59.5 q-223 
0 -357 152.5t-134 416.5zM287 549q0 -211 76 -320.5t243 -109.5q163 0 239.5 
106.5t76.5 315.5q0 221 -77.5 327.5t-242.5 106.5q-166 0 -240.5 -108t-74.5 
-318zM1098 653h544q0 158 -66 240t-194 82q [...]
+<glyph unicode="&#x178;" horiz-adv-x="1147" d="M0 1462h186l387 -731l390 
731h184l-488 -895v-567h-172v559zM294 1731q0 52 26.5 75t63.5 23q38 0 65.5 
-23t27.5 -75q0 -50 -27.5 -74.5t-65.5 -24.5q-37 0 -63.5 24.5t-26.5 74.5zM675 
1731q0 52 26.5 75t63.5 23t64.5 -23t27.5 -75q0 -50 -27.5 -74.5t-64.5 -24.5 
t-63.5 24.5t-26.5 74.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1212" d="M268 1241v23q127 136 178 200t74 
105h166q22 -42 76.5 -108.5t179.5 -196.5v-23h-119q-88 55 -221 186q-136 -134 -219 
-186h-115z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M367 1456q0 98 60.5 155.5t160.5 
57.5q101 0 163 -59.5t62 -151.5q0 -98 -61.5 -157.5t-163.5 -59.5q-101 0 -161 
58.5t-60 156.5zM471 1456q0 -56 30 -86.5t87 -30.5q52 0 84.5 30.5t32.5 86.5t-33 
86.5t-84 30.5t-84 -30.5t-33 -86.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1212" d="M264 1241q13 121 70.5 
189.5t148.5 68.5q46 0 89 -18.5t82 -41t75 -41t68 -18.5q49 0 73 29.5t39 
91.5h99q-13 -121 -69.5 -189.5t-150.5 -68.5q-43 0 -84 18.5t-80.5 41t-76 41t-70.5 
18.5q-50 0 -75.5 -30t-39.5 -91h-98z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M84 473v152h491v-152h-491z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 473v152h860v-152h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 473v152h1884v-152h-1884z" 
/>
+<glyph unicode="&#x2018;" horiz-adv-x="348" d="M25 983q22 90 71 224t105 
255h123q-66 -254 -103 -501h-184z" />
+<glyph unicode="&#x2019;" horiz-adv-x="348" d="M25 961q70 285 102 501h182l15 
-22q-26 -100 -75 -232.5t-102 -246.5h-122z" />
+<glyph unicode="&#x201a;" horiz-adv-x="502" d="M63 -264q27 104 59.5 257t45.5 
245h182l15 -23q-26 -100 -75 -232.5t-102 -246.5h-125z" />
+<glyph unicode="&#x201c;" horiz-adv-x="717" d="M25 983q22 90 71 224t105 
255h123q-66 -254 -103 -501h-184zM391 983q56 215 178 479h123q-30 -115 -59.5 
-259.5t-42.5 -241.5h-184z" />
+<glyph unicode="&#x201d;" horiz-adv-x="717" d="M25 961q70 285 102 501h182l15 
-22q-26 -100 -75 -232.5t-102 -246.5h-122zM391 961q26 100 59 254t46 247h182l14 
-22q-24 -91 -72 -224t-104 -255h-125z" />
+<glyph unicode="&#x201e;" horiz-adv-x="829" d="M25 -263q70 285 102 501h182l15 
-22q-26 -100 -75 -232.5t-102 -246.5h-122zM391 -263q26 100 59 254t46 247h182l14 
-22q-24 -91 -72 -224t-104 -255h-125z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M164 748q0 121 56.5 184t164.5 
63q105 0 163 -62t58 -185q0 -119 -57.5 -183.5t-163.5 -64.5q-107 0 -164 65.5t-57 
182.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1606" d="M152 106q0 67 30.5 101.5t87.5 
34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 
103.5zM682 106q0 67 30.5 101.5t87.5 34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 
-100t-90 -35q-51 0 -84.5 31.5t-33.5 103.5zM1213 106 q0 67 30.5 101.5t87.5 
34.5q58 0 90.5 -34.5t32.5 -101.5q0 -65 -33 -100t-90 -35q-51 0 -84.5 31.5t-33.5 
103.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="623" d="M82 524v27l342 407l119 -69l-289 
-350l289 -351l-119 -71z" />
+<glyph unicode="&#x203a;" horiz-adv-x="623" d="M80 188l287 351l-287 350l117 
69l344 -407v-27l-344 -407z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-391 0l903 1462h143l-903 
-1462h-143z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="711" d="M20 788v101l408 
579h139v-563h125v-117h-125v-202h-145v202h-402zM160 905h262v195q0 134 6 209q-5 
-12 -17 -31.5t-27 -41.5l-30 -46q-15 -22 -26 -39z" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1208" d="M63 506v129h152l-2 42v44l2 
80h-152v129h164q39 261 185 407t383 146q201 0 366 -97l-71 -139q-166 86 -295 
86q-319 0 -398 -403h510v-129h-524l-2 -57v-64l2 -45h463v-129h-447q37 -180 138.5 
-278.5t271.5 -98.5q156 0 309 66v-150q-146 -65 -317 -65 q-237 0 -381.5 
134.5t-190.5 391.5h-166z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1589" d="M37 
1356v106h543v-106h-211v-615h-123v615h-209zM647 741v721h187l196 -559l203 
559h180v-721h-127v420l6 137h-8l-211 -557h-104l-201 559h-8l6 -129v-430h-119z" />
+<glyph unicode="&#x2212;" d="M104 653v138h961v-138h-961z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1095" d="M0 
1095h1095v-1095h-1095v1095z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1212" d="M29 967v75l196 60v61q0 404 353 
404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129h-279v-967h-166v967h-196zM856 1393q0 57 28 83.5t70 26.5q40 0 
69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM870 0v1096h166 
v-1096h-166z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1212" d="M29 967v75l196 60v61q0 404 353 
404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129h-279v-967h-166v967h-196zM870 0v1556h166v-1556h-166z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1909" d="M717 967v75l196 60v61q0 404 
353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129h-279v-967h-166v967h-196zM29 967v75l196 60v61q0 404 353 
404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129 h-279v-967h-166v967h-196zM1551 1393q0 57 28 83.5t70 26.5q40 
0 69 -27t29 -83t-29 -83.5t-69 -27.5q-42 0 -70 27.5t-28 83.5zM1565 
0v1096h166v-1096h-166z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1909" d="M717 967v75l196 60v61q0 404 
353 404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129h-279v-967h-166v967h-196zM29 967v75l196 60v61q0 404 353 
404q87 0 204 -35l-43 -133q-96 31 -164 31q-94 0 -139 -62.5t-45 
-200.5v-71h279v-129 h-279v-967h-166v967h-196zM1565 0v1556h166v-1556h-166z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.ttf
new file mode 100755
index 0000000..a5b2378
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.woff
new file mode 100755
index 0000000..11698af
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Regular-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.eot
new file mode 100755
index 0000000..acc32c4
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.svg
new file mode 100755
index 0000000..ef8b7a2
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  2011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansSemibold" horiz-adv-x="1169" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="565" d="M133 125q0 74 39 112.5t111 38.5q71 0 
109 -40t38 -111t-38.5 -112.5t-108.5 -41.5q-71 0 -110.5 40t-39.5 114zM145 
1462h277l-51 -1018h-174z" />
+<glyph unicode="&#x22;" horiz-adv-x="893" d="M133 1462h232l-41 -528h-150zM528 
1462h232l-41 -528h-150z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M47 418v168h283l57 
284h-264v168h293l80 422h180l-80 -422h252l80 422h174l-80 -422h252v-168h-285l-55 
-284h270v-168h-303l-80 -418h-178l80 418h-248l-80 -418h-174l76 418h-250zM506 
586h250l57 284h-250z" />
+<glyph unicode="$" d="M111 168v211q86 -42 201 -70.5t206 -29.5v374l-84 31q-164 
63 -239.5 150.5t-75.5 216.5q0 138 107.5 227t291.5 108v168h133v-165q203 -7 385 
-82l-73 -183q-157 62 -312 74v-364l76 -29q190 -73 263 -154t73 -198q0 -145 -106 
-239t-306 -116v-217h-133v211 q-248 4 -407 76zM354 1053q0 -57 35.5 -95t128.5 
-75v311q-80 -12 -122 -49t-42 -92zM651 287q176 27 176 151q0 58 -40.5 95.5t-135.5 
72.5v-319z" />
+<glyph unicode="%" horiz-adv-x="1765" d="M84 1026q0 457 319 457q157 0 241.5 
-118.5t84.5 -338.5q0 -230 -82.5 -345.5t-243.5 -115.5q-152 0 -235.5 119.5t-83.5 
341.5zM279 1024q0 -149 29 -222t95 -73q132 0 132 295t-132 295q-66 0 -95 -73t-29 
-222zM379 0l811 1462h194l-811 -1462h-194zM1036 440 q0 457 320 457q154 0 239.5 
-118t85.5 -339q0 -230 -83 -345t-242 -115q-152 0 -236 118.5t-84 341.5zM1231 
440q0 -149 29.5 -223t95.5 -74q131 0 131 297q0 293 -131 293q-66 0 -95.5 
-72t-29.5 -221z" />
+<glyph unicode="&#x26;" horiz-adv-x="1516" d="M96 387q0 131 64 228.5t231 
193.5q-95 111 -129.5 187.5t-34.5 158.5q0 152 108.5 240t291.5 88q177 0 278 
-85.5t101 -230.5q0 -114 -67.5 -207t-225.5 -186l346 -334q81 107 135 314h242q-70 
-284 -224 -463l301 -291h-303l-149 145q-102 -82 -217.5 -123.5 t-255.5 -41.5q-230 
0 -361 109t-131 298zM344 403q0 -98 69.5 -159.5t186.5 -61.5q183 0 313 107l-383 
377q-106 -68 -146 -127.5t-40 -135.5zM451 1147q0 -63 33.5 -119t93.5 -119q113 64 
158.5 119.5t45.5 124.5q0 65 - [...]
+<glyph unicode="'" horiz-adv-x="498" d="M133 1462h232l-41 -528h-150z" />
+<glyph unicode="(" horiz-adv-x="649" d="M82 561q0 265 77.5 496t223.5 
405h205q-139 -188 -213 -421.5t-74 -477.5t74 -473t211 -414h-203q-147 170 -224 
397t-77 488z" />
+<glyph unicode=")" horiz-adv-x="649" d="M61 1462h205q147 -175 224 -406.5t77 
-494.5t-77.5 -490t-223.5 -395h-203q138 187 211.5 415t73.5 472q0 245 -74 
477.5t-213 421.5z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M74 1065l35 217l376 -108l-41 
382h228l-41 -382l385 108l28 -217l-360 -29l236 -311l-199 -107l-166 338l-149 
-338l-205 107l231 311z" />
+<glyph unicode="+" d="M96 
633v178h398v408h180v-408h399v-178h-399v-406h-180v406h-398z" />
+<glyph unicode="," horiz-adv-x="547" d="M63 -264q69 270 103 502h231l15 -23q-48 
-186 -176 -479h-173z" />
+<glyph unicode="-" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="." horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 
-40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="/" horiz-adv-x="799" d="M16 0l545 1462h221l-544 -1462h-222z" />
+<glyph unicode="0" d="M88 731q0 387 122.5 570.5t373.5 183.5q245 0 371 -192t126 
-562q0 -381 -122.5 -566t-374.5 -185q-244 0 -370 191t-126 560zM326 731q0 -299 
61.5 -427t196.5 -128t197.5 130t62.5 425q0 294 -62.5 425.5t-197.5 131.5t-196.5 
-129t-61.5 -428z" />
+<glyph unicode="1" d="M154 1124l430 338h196v-1462h-235v944q0 169 8 268q-23 -24 
-56.5 -53t-224.5 -184z" />
+<glyph unicode="2" d="M90 0v178l377 379q167 171 221.5 242.5t79.5 134.5t25 
135q0 99 -59.5 156t-164.5 57q-84 0 -162.5 -31t-181.5 -112l-127 155q122 103 237 
146t245 43q204 0 327 -106.5t123 -286.5q0 -99 -35.5 -188t-109 -183.5t-244.5 
-255.5l-254 -246v-10h694v-207h-991z" />
+<glyph unicode="3" d="M86 59v209q93 -46 197 -71t200 -25q170 0 254 63t84 195q0 
117 -93 172t-292 55h-127v191h129q350 0 350 242q0 94 -61 145t-180 51q-83 0 -160 
-23.5t-182 -91.5l-115 164q201 148 467 148q221 0 345 -95t124 -262q0 -139 -81 
-231.5t-228 -124.5v-8q176 -22 264 -109.5 t88 -232.5q0 -211 -149 -325.5t-424 
-114.5q-243 0 -410 79z" />
+<glyph unicode="4" d="M39 319v181l668 
966h229v-952h197v-195h-197v-319h-229v319h-668zM258 514h449v367q0 196 10 
321h-8q-28 -66 -88 -160z" />
+<glyph unicode="5" d="M117 59v213q81 -46 186 -71t195 -25q159 0 242 71t83 208q0 
262 -334 262q-47 0 -116 -9.5t-121 -21.5l-105 62l56 714h760v-209h-553l-33 
-362q35 6 85.5 14t123.5 8q221 0 350 -117t129 -319q0 -234 -146.5 -365.5t-416.5 
-131.5q-245 0 -385 79z" />
+<glyph unicode="6" d="M94 623q0 858 699 858q110 0 186 -17v-196q-76 22 -176 
22q-235 0 -353 -126t-128 -404h12q47 81 132 125.5t200 44.5q199 0 310 -122t111 
-331q0 -230 -128.5 -363.5t-350.5 -133.5q-157 0 -273 75.5t-178.5 220t-62.5 
347.5zM332 508q0 -141 76.5 -237.5t195.5 -96.5 q121 0 186.5 78t65.5 223q0 126 
-61.5 198t-184.5 72q-76 0 -140 -32.5t-101 -89t-37 -115.5z" />
+<glyph unicode="7" d="M74 1253v207h1011v-164l-575 -1296h-254l578 1253h-760z" />
+<glyph unicode="8" d="M88 371q0 122 68.5 219.5t224.5 173.5q-134 80 -191 
169t-57 200q0 159 125 253.5t326 94.5q208 0 329 -95.5t121 -255.5q0 -225 -270 
-358q172 -86 244.5 -181t72.5 -212q0 -181 -133 -290t-360 -109q-238 0 -369 
102t-131 289zM313 379q0 -104 73 -161.5t198 -57.5 q129 0 200.5 59.5t71.5 161.5q0 
81 -66 148t-200 124l-29 13q-132 -58 -190 -127.5t-58 -159.5zM360 1116q0 -52 22 
-93t64 -74.5t142 -80.5q120 53 169.5 111.5t49.5 136.5q0 85 -61.5 134.5t-163.5 
49.5q-100 0 -161 -49.5t-61 -134.5z" />
+<glyph unicode="9" d="M86 981q0 229 128.5 364.5t350.5 135.5q156 0 272 -76t179 
-220.5t63 -346.5q0 -432 -174 -645t-524 -213q-133 0 -191 16v197q89 -25 179 
-25q238 0 355 128t128 402h-12q-59 -90 -142.5 -130t-195.5 -40q-194 0 -305 
121t-111 332zM317 983q0 -125 60.5 -196.5 t183.5 -71.5q119 0 200 71t81 166q0 89 
-34.5 166.5t-96.5 122.5t-142 45q-122 0 -187 -79.5t-65 -223.5z" />
+<glyph unicode=":" horiz-adv-x="563" d="M133 125q0 73 38 112t110 39q73 0 111 
-40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM133 979q0 151 
148 151q75 0 112 -40t37 -111t-38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode=";" horiz-adv-x="569" d="M63 -264q69 270 103 502h231l15 -23q-48 
-186 -176 -479h-173zM131 979q0 151 148 151q75 0 112 -40t37 -111t-38.5 
-112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="&#x3c;" d="M96 651v121l977 488v-195l-733 -344l733 -303v-197z" 
/>
+<glyph unicode="=" d="M102 432v178h963v-178h-963zM102 831v179h963v-179h-963z" 
/>
+<glyph unicode="&#x3e;" d="M96 221v197l733 303l-733 344v195l977 -488v-121z" />
+<glyph unicode="?" horiz-adv-x="928" d="M16 1370q203 113 435 113q196 0 311 
-96t115 -265q0 -75 -22 -133.5t-66.5 -111.5t-153.5 -138q-93 -73 -124.5 
-121t-31.5 -129v-45h-196v64q0 110 40 183t140 151q119 94 153.5 146t34.5 124q0 84 
-56 129t-161 45q-95 0 -176 -27t-158 -65zM242 125q0 151 147 151 q72 0 110 
-39.5t38 -111.5q0 -71 -38.5 -112.5t-109.5 -41.5t-109 40.5t-38 113.5z" />
+<glyph unicode="@" horiz-adv-x="1839" d="M111 586q0 261 112 464.5t310.5 
311.5t449.5 108q217 0 386.5 -90t263 -256.5t93.5 -384.5q0 -143 -45 -261.5t-126.5 
-184.5t-188.5 -66q-79 0 -137 42t-78 114h-12q-49 -78 -121 -117t-162 -39q-163 0 
-256.5 105t-93.5 284q0 206 124 334.5t333 128.5 q76 0 168.5 -13.5t164.5 
-37.5l-22 -465v-24q0 -160 104 -160q79 0 125.5 102t46.5 260q0 171 -70 300.5t-199 
199.5t-296 70q-213 0 -370.5 -88t-240.5 -251.5t-83 -379.5q0 -290 155 -446t445 
-156q221 0 461 90v-164q-210 -86 -4 [...]
+<glyph unicode="A" horiz-adv-x="1354" d="M0 0l547 1468h260l547 -1468h-254l-146 
406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 126t-36.5 126q-27 
-123 -79 -269z" />
+<glyph unicode="B" horiz-adv-x="1352" d="M193 0v1462h434q302 0 436.5 -88t134.5 
-278q0 -128 -66 -213t-190 -107v-10q154 -29 226.5 -114.5t72.5 -231.5q0 -197 
-137.5 -308.5t-382.5 -111.5h-528zM432 201h254q150 0 226.5 57.5t76.5 181.5q0 114 
-78 169t-237 55h-242v-463zM432 858h230q150 0 219 47.5 t69 161.5q0 103 -74.5 
149t-236.5 46h-207v-404z" />
+<glyph unicode="C" horiz-adv-x="1298" d="M121 731q0 228 83.5 399t241.5 262t371 
91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5q-206 0 -324 -146t-118 
-403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 -65 -390 
-65q-321 0 -493 194.5t-172 556.5z" />
+<glyph unicode="D" horiz-adv-x="1503" d="M193 0v1462h452q349 0 543 -188t194 
-529q0 -362 -201 -553.5t-579 -191.5h-409zM432 201h170q528 0 528 536q0 525 -491 
525h-207v-1061z" />
+<glyph unicode="E" horiz-adv-x="1143" d="M193 
0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827z" />
+<glyph unicode="F" horiz-adv-x="1090" d="M193 
0v1462h825v-202h-588v-457h551v-203h-551v-600h-237z" />
+<glyph unicode="G" horiz-adv-x="1487" d="M121 731q0 353 203 552.5t559 
199.5q229 0 434 -88l-84 -199q-178 82 -356 82q-234 0 -370 -147t-136 -402q0 -268 
122.5 -407.5t352.5 -139.5q116 0 248 29v377h-303v205h538v-734q-132 -43 -253.5 
-61t-262.5 -18q-332 0 -512 196.5t-180 554.5z" />
+<glyph unicode="H" horiz-adv-x="1538" d="M193 
0v1462h239v-598h674v598h240v-1462h-240v659h-674v-659h-239z" />
+<glyph unicode="I" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239z" />
+<glyph unicode="J" horiz-adv-x="612" d="M-156 -182q84 -21 146 -21q196 0 196 
248v1417h240v-1409q0 -224 -106.5 -342.5t-311.5 -118.5q-98 0 -164 25v201z" />
+<glyph unicode="K" horiz-adv-x="1309" d="M193 0v1462h239v-698q98 120 195 
231l395 467h272q-383 -450 -549 -641l564 -821h-277l-459 662l-141 
-115v-547h-239z" />
+<glyph unicode="L" horiz-adv-x="1110" d="M193 0v1462h239v-1257h619v-205h-858z" 
/>
+<glyph unicode="M" horiz-adv-x="1890" d="M193 0v1462h337l406 -1163h6l418 
1163h338v-1462h-230v723q0 109 5.5 284t9.5 212h-8l-439 -1219h-211l-424 
1221h-8q17 -272 17 -510v-711h-217z" />
+<glyph unicode="N" horiz-adv-x="1604" d="M193 0v1462h290l717 -1159h6q-2 23 -8 
167.5t-6 225.5v766h219v-1462h-293l-719 1165h-8l5 -65q14 -186 14 
-340v-760h-217z" />
+<glyph unicode="O" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z" />
+<glyph unicode="P" horiz-adv-x="1260" d="M193 0v1462h421q274 0 410.5 
-112t136.5 -330q0 -229 -150 -351t-427 -122h-152v-547h-239zM432 748h127q184 0 
270 64t86 200q0 126 -77 188t-240 62h-166v-514z" />
+<glyph unicode="Q" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -266 -101.5 -448t-295.5 -256l350 -377h-322l-276 
328h-39q-331 0 -508.5 196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 
-139.5q213 0 321.5 138t108.5 411q0 269 -107.5 408t-320.5 139 q-215 0 -324.5 
-139t-109.5 -408z" />
+<glyph unicode="R" horiz-adv-x="1309" d="M193 0v1462h413q283 0 419 -106t136 
-320q0 -273 -284 -389l413 -647h-272l-350 584h-236v-584h-239zM432 782h166q167 0 
242 62t75 184q0 124 -81 178t-244 54h-158v-478z" />
+<glyph unicode="S" horiz-adv-x="1126" d="M100 57v226q100 -47 212.5 -74t209.5 
-27q142 0 209.5 54t67.5 145q0 82 -62 139t-256 135q-200 81 -282 185t-82 250q0 
183 130 288t349 105q210 0 418 -92l-76 -195q-195 82 -348 82q-116 0 -176 
-50.5t-60 -133.5q0 -57 24 -97.5t79 -76.5t198 -95q161 -67 236 -125 t110 -131t35 
-172q0 -195 -141 -306t-389 -111t-406 77z" />
+<glyph unicode="T" horiz-adv-x="1159" d="M29 
1257v205h1099v-205h-430v-1257h-239v1257h-430z" />
+<glyph unicode="U" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 
-267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 
-65.5q-272 0 -423 144t-151 396z" />
+<glyph unicode="V" horiz-adv-x="1274" d="M0 1462h246l305 -909q24 -65 51 
-167.5t35 -152.5q13 76 40 176t44 148l305 905h248l-512 -1462h-252z" />
+<glyph unicode="W" horiz-adv-x="1937" d="M12 1462h244l209 -852q49 -205 70 
-362q11 85 33 190t40 170l238 854h237l244 -858q35 -119 74 -356q15 143 72 364l208 
850h242l-381 -1462h-260l-248 872q-16 57 -40 164.5t-29 149.5q-10 -64 -32.5 
-166t-37.5 -152l-242 -868h-260l-189 732z" />
+<glyph unicode="X" horiz-adv-x="1274" d="M4 0l485 758l-454 704h266l338 
-553l338 553h258l-457 -708l492 -754h-275l-366 598l-369 -598h-256z" />
+<glyph unicode="Y" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 667h260l-487 
-895v-567h-240v559z" />
+<glyph unicode="Z" horiz-adv-x="1178" d="M66 0v166l737 
1091h-717v205h1006v-168l-740 -1089h760v-205h-1046z" />
+<glyph unicode="[" horiz-adv-x="676" d="M154 
-324v1786h471v-176h-256v-1433h256v-177h-471z" />
+<glyph unicode="\" horiz-adv-x="799" d="M16 1462h222l544 -1462h-221z" />
+<glyph unicode="]" horiz-adv-x="676" d="M51 
-147h256v1433h-256v176h469v-1786h-469v177z" />
+<glyph unicode="^" horiz-adv-x="1100" d="M29 535l436 935h121l485 
-935h-194l-349 694l-307 -694h-192z" />
+<glyph unicode="_" horiz-adv-x="879" d="M-4 -184h887v-135h-887v135z" />
+<glyph unicode="`" horiz-adv-x="1212" d="M362 1548v21h273q38 -70 103.5 
-161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
+<glyph unicode="a" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5z" />
+<glyph unicode="b" horiz-adv-x="1276" d="M168 0v1556h235v-370q0 -41 -4 -122t-6 
-103h10q112 165 330 165q207 0 322.5 -150t115.5 -421q0 -272 -117 -423.5t-325 
-151.5q-210 0 -326 151h-16l-43 -131h-176zM403 555q0 -202 64 -292.5t209 
-90.5q125 0 189.5 99t64.5 286q0 377 -258 377q-142 0 -204.5 -83.5 t-64.5 
-279.5v-16z" />
+<glyph unicode="c" horiz-adv-x="1014" d="M102 547q0 279 136.5 429t394.5 
150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 
-279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16q-251 0 
-381.5 146.5t-130.5 420.5z" />
+<glyph unicode="d" horiz-adv-x="1276" d="M102 551q0 272 117.5 423.5t325.5 
151.5q218 0 332 -161h12q-17 119 -17 188v403h236v-1556h-184l-41 145h-11q-113 
-165 -331 -165q-207 0 -323 150t-116 421zM344 547q0 -184 65 -280.5t195 -96.5q145 
0 211 81.5t68 264.5v33q0 209 -68 297t-213 88 q-124 0 -191 -100.5t-67 -286.5z" />
+<glyph unicode="e" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 155q219 0 
346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 18.5t181.5 
61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 414.5zM348 
670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z" />
+<glyph unicode="f" horiz-adv-x="743" d="M35 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182z" />
+<glyph unicode="g" horiz-adv-x="1139" d="M23 -184q0 102 64.5 171.5t180.5 
96.5q-47 20 -77.5 64.5t-30.5 93.5q0 62 35 105t104 85q-86 37 -139.5 120.5t-53.5 
195.5q0 180 113.5 279t323.5 99q47 0 98.5 -6.5t77.5 -13.5h383v-129l-189 -35q26 
-35 43 -86t17 -108q0 -171 -118 -269t-325 -98q-53 0 -96 8 q-76 -47 -76 -110q0 
-38 35.5 -57t130.5 -19h193q183 0 278 -78t95 -225q0 -188 -155 -290t-448 
-102q-226 0 -345 80t-119 228zM233 -172q0 -76 68.5 -117t192.5 -41q192 0 286 
55t94 146q0 72 -51.5 102.5t-191.5 30.5h [...]
+<glyph unicode="h" horiz-adv-x="1300" d="M168 0v1556h235v-395q0 -95 -12 
-203h15q48 80 133.5 124t199.5 44q402 0 402 -405v-721h-236v680q0 128 -51.5 
191t-163.5 63q-148 0 -217.5 -88.5t-69.5 -296.5v-549h-235z" />
+<glyph unicode="i" horiz-adv-x="571" d="M154 1399q0 63 34.5 97t98.5 34q62 0 
96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 
94.5zM168 0v1106h235v-1106h-235z" />
+<glyph unicode="j" horiz-adv-x="571" d="M-121 -281q68 -18 139 -18q150 0 150 
170v1235h235v-1251q0 -171 -89.5 -259t-258.5 -88q-106 0 -176 25v186zM154 1399q0 
63 34.5 97t98.5 34q62 0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 
-98.5 34.5t-34.5 94.5z" />
+<glyph unicode="k" horiz-adv-x="1171" d="M168 0v1556h233v-759l-12 -213h6l133 
166l334 356h271l-445 -475l473 -631h-276l-355 485l-129 -106v-379h-233z" />
+<glyph unicode="l" horiz-adv-x="571" d="M168 0v1556h235v-1556h-235z" />
+<glyph unicode="m" horiz-adv-x="1958" d="M168 0v1106h184l33 -145h12q46 79 
133.5 122t192.5 43q255 0 338 -174h16q49 82 138 128t204 46q198 0 288.5 -100t90.5 
-305v-721h-235v682q0 127 -48.5 189.5t-150.5 62.5q-137 0 -200.5 -85.5t-63.5 
-262.5v-586h-236v682q0 127 -48 189.5t-150 62.5 q-136 0 -199.5 -88.5t-63.5 
-294.5v-551h-235z" />
+<glyph unicode="n" horiz-adv-x="1300" d="M168 0v1106h184l33 -145h12q50 79 142 
122t204 43q398 0 398 -405v-721h-236v680q0 128 -51.5 191t-163.5 63q-149 0 -218 
-88t-69 -295v-551h-235z" />
+<glyph unicode="o" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 151q240 0 
380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 201t-64 
304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281z" />
+<glyph unicode="p" horiz-adv-x="1276" d="M168 -492v1598h190q8 -31 33 
-148h12q110 168 330 168q207 0 322.5 -150t115.5 -421t-117.5 -423t-324.5 
-152q-210 0 -326 151h-14q14 -140 14 -170v-453h-235zM403 555q0 -202 64 
-292.5t209 -90.5q122 0 188 100t66 285q0 186 -65.5 281.5t-192.5 95.5 q-140 0 
-204.5 -82t-64.5 -262v-35z" />
+<glyph unicode="q" horiz-adv-x="1276" d="M102 551q0 270 118 422.5t325 
152.5q104 0 186.5 -38.5t147.5 -126.5h8l26 145h195v-1598h-236v469q0 44 4 93t7 
75h-13q-104 -165 -331 -165q-205 0 -321 150.5t-116 420.5zM344 547q0 -379 262 
-379q148 0 212.5 85.5t64.5 258.5v37q0 205 -66.5 295t-214.5 90 q-126 0 -192 
-100t-66 -287z" />
+<glyph unicode="r" horiz-adv-x="883" d="M168 0v1106h184l31 -195h12q55 99 143.5 
157t190.5 58q71 0 117 -10l-23 -219q-50 12 -104 12q-141 0 -228.5 -92t-87.5 
-239v-578h-235z" />
+<glyph unicode="s" horiz-adv-x="997" d="M98 827q0 142 114.5 220.5t311.5 
78.5q195 0 369 -79l-76 -177q-179 74 -301 74q-186 0 -186 -106q0 -52 48.5 
-88t211.5 -99q137 -53 199 -97t92 -101.5t30 -137.5q0 -162 -118 -248.5t-338 
-86.5q-221 0 -355 67v203q195 -90 363 -90q217 0 217 131q0 42 -24 70t-79 58 t-153 
68q-191 74 -258.5 148t-67.5 192z" />
+<glyph unicode="t" horiz-adv-x="805" d="M39 928v104l162 86l80 
234h145v-246h315v-178h-315v-592q0 -85 42.5 -125.5t111.5 -40.5q86 0 172 
27v-177q-39 -17 -100.5 -28.5t-127.5 -11.5q-334 0 -334 352v596h-151z" />
+<glyph unicode="u" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 
-190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 
-77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303z" />
+<glyph unicode="v" horiz-adv-x="1096" d="M0 1106h248l225 -643q58 -162 70 
-262h8q9 72 70 262l225 643h250l-422 -1106h-254z" />
+<glyph unicode="w" horiz-adv-x="1673" d="M20 1106h240l141 -545q48 -202 68 
-346h6q10 73 30.5 167.5t35.5 141.5l168 582h258l163 -582q15 -49 37.5 -150t26.5 
-157h8q15 123 70 344l143 545h236l-312 -1106h-264l-143 516q-26 82 -94 381h-9q-58 
-270 -92 -383l-147 -514h-260z" />
+<glyph unicode="x" horiz-adv-x="1128" d="M25 0l389 565l-371 541h268l252 
-387l254 387h266l-372 -541l391 -565h-266l-273 414l-272 -414h-266z" />
+<glyph unicode="y" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 
-252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 
17v186q53 -12 121 -12q170 0 239 197l41 104z" />
+<glyph unicode="z" horiz-adv-x="979" d="M68 0v145l559 
781h-525v180h789v-164l-547 -762h563v-180h-839z" />
+<glyph unicode="{" horiz-adv-x="791" d="M45 473v191q135 0 200.5 45.5t65.5 
138.5v311q0 156 108.5 229.5t325.5 73.5v-182q-114 -5 -165.5 -46.5t-51.5 
-123.5v-297q0 -199 -229 -238v-12q229 -36 229 -237v-299q0 -82 51 -124t166 
-44v-183q-231 2 -332.5 78.5t-101.5 247.5v285q0 186 -266 186z" />
+<glyph unicode="|" horiz-adv-x="1128" d="M473 -481v2033h180v-2033h-180z" />
+<glyph unicode="}" horiz-adv-x="760" d="M45 -141q95 1 148 38.5t53 129.5v262q0 
121 53 187t176 87v12q-229 39 -229 238v297q0 82 -45.5 123.5t-155.5 46.5v182q223 
0 320.5 -76.5t97.5 -250.5v-287q0 -100 63.5 -142t188.5 -42v-191q-123 0 -187.5 
-42.5t-64.5 -143.5v-307q0 -156 -99.5 -229t-318.5 -75v183z " />
+<glyph unicode="~" d="M96 571v191q99 108 250 108q66 0 125 -13t147 -50q131 -55 
220 -55q52 0 114.5 31t120.5 89v-190q-105 -111 -250 -111q-65 0 -127.5 
15.5t-146.5 50.5q-127 55 -219 55q-50 0 -111.5 -30t-122.5 -91z" />
+<glyph unicode="&#xa1;" horiz-adv-x="565" d="M133 965q0 69 38 111t110 42t110.5 
-40.5t38.5 -112.5q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5zM141 
-371l52 1016h174l51 -1016h-277z" />
+<glyph unicode="&#xa2;" d="M166 741q0 254 100.5 397t306.5 175v170h158v-162q152 
-5 283 -66l-70 -188q-146 59 -250 59q-146 0 -216 -95t-70 -288q0 -194 72 -283t210 
-89q75 0 142.5 15t154.5 52v-200q-119 -59 -258 -64v-194h-156v200q-207 31 -307 
171t-100 390z" />
+<glyph unicode="&#xa3;" d="M72 0v195q98 30 145 96t47 
178v184h-188v172h188v256q0 188 113.5 294t312.5 106q194 0 375 -82l-76 -182q-162 
71 -284 71q-205 0 -205 -219v-244h397v-172h-397v-182q0 -91 -33 -155t-113 
-109h756v-207h-1038z" />
+<glyph unicode="&#xa4;" d="M117 1069l121 119l131 -129q100 63 215 63t213 
-65l133 131l121 -117l-131 -133q63 -100 63 -215q0 -119 -63 -217l129 -129l-119 
-119l-133 129q-99 -61 -213 -61q-126 0 -215 61l-131 -127l-119 119l131 129q-64 99 
-64 215q0 109 64 213zM354 723q0 -98 68 -164.5 t162 -66.5q97 0 165 66.5t68 
164.5q0 97 -68 165t-165 68q-93 0 -161.5 -68t-68.5 -165z" />
+<glyph unicode="&#xa5;" d="M18 1462h246l320 -665l321 665h244l-399 
-760h227v-151h-281v-154h281v-153h-281v-244h-225v244h-283v153h283v154h-283v151h224z"
 />
+<glyph unicode="&#xa6;" horiz-adv-x="1128" d="M473 315h180v-796h-180v796zM473 
758v794h180v-794h-180z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1026" d="M115 57v179q77 -40 173 -65.5t177 
-25.5q235 0 235 131q0 43 -21 70t-71 54t-147 65q-141 55 -206 101.5t-95.5 
105t-30.5 135.5q0 80 38.5 145.5t111.5 108.5q-146 83 -146 235q0 129 109.5 
202t294.5 73q91 0 174 -17t182 -59l-68 -162q-116 50 -176 63t-121 13 q-194 0 -194 
-109q0 -54 55 -93.5t191 -90.5q175 -68 250 -146.5t75 -187.5q0 -177 -139 -266q139 
-80 139 -223q0 -142 -118 -224.5t-326 -82.5q-212 0 -346 71zM313 827q0 -45 24 
-80t78.5 -69t194.5 -90q109 65 10 [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1212" d="M293 1399q0 62 33.5 89.5t81.5 
27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 
1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 
0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 
-229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5 t-231 
230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317zM471 731q0 214 110 
337.5t306 123.5q138 0 274 -70l-65 -143q-106 55 -203 55q-111 0 -171 -80.5t-60 
-222.5q0 -147 54 -226t177 -79q55 0 11 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="754" d="M57 981q0 104 84 159.5t252 
61.5l107 4q0 72 -34.5 108t-103.5 36q-90 0 -210 -56l-54 115q144 70 285 70q138 0 
207 -62.5t69 -187.5v-447h-112l-29 97q-46 -55 -105 -82t-130 -27q-113 0 -169.5 
52.5t-56.5 158.5zM221 983q0 -88 96 -88q91 0 137 41t46 123v43l-99 -4 q-71 -2 
-125.5 -34t-54.5 -81z" />
+<glyph unicode="&#xab;" horiz-adv-x="1139" d="M82 535v26l356 432l168 -94l-282 
-350l282 -348l-168 -97zM532 535v26l357 432l168 -94l-283 -350l283 -348l-168 
-97z" />
+<glyph unicode="&#xac;" d="M96 633v178h977v-555h-178v377h-799z" />
+<glyph unicode="&#xad;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M100 731q0 200 100 375t275 
276t377 101q200 0 375 -100t276 -275t101 -377q0 -197 -97 -370t-272 -277t-383 
-104q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM223 731q0 -170 84.5 -315.5t230.5 
-229.5t314 -84q170 0 316 85.5t229.5 230t83.5 313.5q0 168 -84.5 314.5 t-231 
230.5t-313.5 84q-168 0 -312.5 -83t-230.5 -229t-86 -317zM559 279v903h262q174 0 
255 -68t81 -205q0 -171 -153 -233l237 -397h-211l-192 346h-90v-346h-189zM748 
770h69q74 0 112 35t38 100q0 72 -36. [...]
+<glyph unicode="&#xaf;" horiz-adv-x="1024" d="M-6 1556v164h1036v-164h-1036z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M109 1153q0 135 95 232.5t234 
97.5q138 0 233 -96t95 -234q0 -139 -96 -233.5t-232 -94.5q-88 0 -164.5 
43.5t-120.5 119.5t-44 165zM262 1153q0 -70 51 -122t125 -52t125 51.5t51 122.5q0 
76 -52 127t-124 51t-124 -52t-52 -126z" />
+<glyph unicode="&#xb1;" d="M96 0v178h977v-178h-977zM96 
664v178h398v407h180v-407h399v-178h-399v-406h-180v406h-398z" />
+<glyph unicode="&#xb2;" horiz-adv-x="743" d="M51 586v135l230 225q117 112 149.5 
165t32.5 112q0 52 -32 79t-83 27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 
211.5 -66t75.5 -180q0 -83 -46 -158.5t-183 -202.5l-139 -129h397v-159h-627z" />
+<glyph unicode="&#xb3;" horiz-adv-x="743" d="M45 631v157q145 -79 270 -79q179 0 
179 135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80t-90.5 28q-57 0 
-105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 
-168.5q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76 t47.5 -132q0 -127 -93 
-196t-266 -69q-148 0 -270 62z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1212" d="M362 1241v25q57 70 117.5 
156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1309" d="M168 -492v1598h235v-684q0 -252 
218 -252q146 0 215 88.5t69 296.5v551h236v-1106h-183l-34 147h-13q-48 -83 -119.5 
-125t-175.5 -42q-140 0 -219 90h-4q3 -28 6.5 -117t3.5 -125v-320h-235z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M113 1042q0 260 109 387t341 
127h580v-1816h-137v1663h-191v-1663h-137v819q-62 -18 -146 -18q-216 0 -317.5 
125t-101.5 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="563" d="M133 723q0 73 38 112t110 39q73 0 
111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="&#xb8;" horiz-adv-x="442" d="M0 -340q54 -14 123 -14q54 0 85.5 
16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 
-222 -305 -222q-66 0 -121 15v137z" />
+<glyph unicode="&#xb9;" horiz-adv-x="743" d="M84 1253l281 
209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 -40t-141.5 -111z" />
+<glyph unicode="&#xba;" horiz-adv-x="780" d="M61 1124q0 169 88.5 262t241.5 
93q152 0 240 -94.5t88 -260.5q0 -164 -87.5 -259t-244.5 -95q-150 0 -238 95.5t-88 
258.5zM223 1124q0 -111 39 -166t127 -55t127 55t39 166q0 113 -39 167.5t-127 
54.5t-127 -54.5t-39 -167.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1139" d="M80 201l282 348l-282 350l168 
94l358 -432v-26l-358 -431zM530 201l283 348l-283 350l168 94l359 -432v-26l-359 
-431z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1700" d="M285 0l858 1462h190l-856 
-1462h-192zM60 1253l281 209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 
-40t-141.5 -111zM876 177v127l396 
579h188v-563h125v-143h-125v-176h-192v176h-392zM1038 320h230v178q0 97 6 197q-52 
-104 -88 -158z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1700" d="M250 0l858 1462h190l-856 
-1462h-192zM46 1253l281 209h167v-876h-186v512l3 103l5 91q-17 -18 -40.5 
-40t-141.5 -111zM981 1v135l230 225q117 112 149.5 165t32.5 112q0 52 -32 79t-83 
27q-93 0 -201 -88l-94 121q139 119 309 119q136 0 211.5 -66t75.5 -180 q0 -83 -46 
-158.5t-183 -202.5l-139 -129h397v-159h-627z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1700" d="M367 0l858 1462h190l-856 
-1462h-192zM931 177v127l396 579h188v-563h125v-143h-125v-176h-192v176h-392zM1093 
320h230v178q0 97 6 197q-52 -104 -88 -158zM55 631v157q145 -79 270 -79q179 0 179 
135q0 125 -199 125h-115v133h105q184 0 184 129q0 52 -34.5 80 t-90.5 28q-57 0 
-105.5 -20t-105.5 -57l-84 114q61 46 134 75.5t171 29.5q134 0 212.5 -61.5t78.5 
-168.5q0 -75 -40.5 -122.5t-119.5 -86.5q94 -21 141.5 -76t47.5 -132q0 -127 -93 
-196t-266 -69q-148 0 -270 62z" />
+<glyph unicode="&#xbf;" horiz-adv-x="928" d="M55 -33q0 73 21 130t64 109t157 
142q94 76 125 124.5t31 127.5v45h198v-63q0 -106 -41 -181t-143 -155q-124 -98 -155 
-147t-31 -124q0 -78 54 -125t161 -47q90 0 174 27.5t166 65.5l82 -179q-220 -110 
-424 -110q-207 0 -323 95.5t-116 264.5zM395 965q0 69 38 111 t110 42t110.5 
-40.5t38.5 -112.5q0 -74 -37.5 -113t-111.5 -39q-72 0 -110 39.5t-38 112.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM334 1886v21h273q38 -70 103.5 -161t109.5 
-142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM532 1579v25q57 70 117.5 156t95.5 
147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM286 1579v25q191 198 254 303h260q63 -110 256 
-303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM281 1577q12 139 77.5 212t167.5 73q43 0 84 
-17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5 t-169 
-75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM363 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 
-31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM756 1737 q0 62 33.5 
89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 
29t-33.5 88z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1354" d="M0 0l547 1468h260l547 
-1468h-254l-146 406h-559l-143 -406h-252zM465 612h426l-137 398q-15 40 -41.5 
126t-36.5 126q-27 -123 -79 -269zM438 1575q0 101 63.5 163.5t172.5 62.5q104 0 
171.5 -62t67.5 -162q0 -102 -65.5 -165.5t-173.5 -63.5t-172 62.5t-64 164.5z M567 
1575q0 -106 107 -106q46 0 76 27.5t30 78.5q0 50 -30 78.5t-76 28.5q-47 0 -77 
-28.5t-30 -78.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1868" d="M-2 0l678 
1462h1071v-202h-571v-398h532v-200h-532v-459h571v-203h-811v406h-504l-188 
-406h-246zM522 612h414v641h-123z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1298" d="M121 731q0 228 83.5 399t241.5 
262t371 91q224 0 414 -94l-86 -199q-74 35 -156.5 61.5t-173.5 26.5q-206 0 -324 
-146t-118 -403q0 -269 113.5 -407t328.5 -138q93 0 180 18.5t181 47.5v-205q-172 
-65 -390 -65q-321 0 -493 194.5t-172 556.5zM526 -340q54 -14 123 -14 q54 0 85.5 
16.5t31.5 61.5q0 85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 
-222 -305 -222q-66 0 -121 15v137z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1143" d="M193 
0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM289 1886v21h273q38 
-70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1143" d="M193 
0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM440 1579v25q57 70 
117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xca;" horiz-adv-x="1143" d="M193 
0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM220 1579v25q191 198 
254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 
-180h-158z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1143" d="M193 
0v1462h827v-202h-588v-398h551v-200h-551v-459h588v-203h-827zM297 1737q0 62 33.5 
89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 
29t-33.5 88zM690 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 
-85.5t-84 -31.5 q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xcc;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM-6 
1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 
156.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM179 
1579v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 
-149.5h-156z" />
+<glyph unicode="&#xce;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM-75 
1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 
-103 -225 -180h-158z" />
+<glyph unicode="&#xcf;" horiz-adv-x="625" d="M193 0v1462h239v-1462h-239zM1 
1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 
0 -81.5 29t-33.5 88zM394 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 
-33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1497" d="M47 623v200h146v639h446q347 0 
541 -188.5t194 -528.5q0 -360 -201 -552.5t-579 -192.5h-401v623h-146zM432 
201h160q530 0 530 536q0 260 -124.5 392.5t-368.5 
132.5h-197v-439h307v-200h-307v-422z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1604" d="M193 0v1462h290l717 -1159h6q-2 
23 -8 167.5t-6 225.5v766h219v-1462h-293l-719 1165h-8l5 -65q14 -186 14 
-340v-760h-217zM414 1577q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 
-39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5 q-42 0 -82.5 
17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M481 
1886v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 
156.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M657 1579v25q57 
70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M413 
1579v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 
-103 -225 -180h-158z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M410 1577q12 
139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 
115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 
17.5q-81 0 -109 -115h-122z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q326 0 504 -197t178 -555q0 -357 -178.5 -555t-505.5 -198q-331 0 -508.5 
196.5t-177.5 558.5zM375 733q0 -270 109 -409.5t323 -139.5q213 0 321.5 138t108.5 
411q0 269 -107.5 408t-320.5 139q-215 0 -324.5 -139t-109.5 -408z M496 1737q0 62 
33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 
29t-33.5 88zM889 1737q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 
-85.5t-84 -31.5q-48 0 -81.5 29t [...]
+<glyph unicode="&#xd7;" d="M131 1049l125 127l328 -326l329 326l125 -123l-329 
-330l325 -328l-123 -125l-329 326l-324 -326l-125 125l324 328z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1612" d="M121 735q0 362 178.5 556t509.5 
194q199 0 354 -82l90 129l142 -92l-99 -140q195 -199 195 -567q0 -357 -178.5 
-555t-505.5 -198q-213 0 -361 81l-94 -137l-141 94l98 144q-188 196 -188 573zM375 
733q0 -231 78 -362l587 850q-92 59 -231 59q-215 0 -324.5 -139 t-109.5 -408zM571 
244q97 -60 236 -60q213 0 321.5 138t108.5 411q0 225 -80 361z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 
-267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 
-65.5q-272 0 -423 144t-151 396zM417 1886v21h273q38 -70 103.5 -161t109.5 
-142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 
-267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 
-65.5q-272 0 -423 144t-151 396zM600 1579v25q57 70 117.5 156t95.5 
147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 
-267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 
-65.5q-272 0 -423 144t-151 396zM366 1579v25q191 198 254 303h260q63 -110 256 
-303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1520" d="M180 520v942h240v-925q0 -181 84 
-267t258 -86q338 0 338 355v923h239v-946q0 -162 -69.5 -283.5t-201 -187t-314.5 
-65.5q-272 0 -423 144t-151 396zM445 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 
-31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88z M838 1737q0 62 33.5 
89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 
29t-33.5 88z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 
667h260l-487 -895v-567h-240v559zM450 1579v25q57 70 117.5 156t95.5 
147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xde;" horiz-adv-x="1268" d="M193 0v1462h239v-243h197q268 0 
404 -112t136 -331q0 -227 -146 -349t-423 -122h-168v-305h-239zM432 504h133q187 0 
273 63t86 203q0 127 -78 188.5t-250 61.5h-164v-516z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1364" d="M168 0v1169q0 193 128.5 
295.5t367.5 102.5q225 0 355 -84t130 -230q0 -74 -38.5 -140.5t-104.5 -117.5q-90 
-69 -117 -98t-27 -57q0 -30 22.5 -55.5t79.5 -63.5l95 -64q92 -62 135.5 
-109.5t65.5 -103.5t22 -127q0 -165 -107 -251t-311 -86q-190 0 -299 65v199 q58 -37 
139 -61.5t148 -24.5q192 0 192 151q0 61 -34.5 105t-155.5 118q-119 73 -171 
135t-52 146q0 63 34 115.5t105 105.5q75 55 107 97.5t32 93.5q0 72 -67 112.5t-178 
40.5q-127 0 -194 -54t-67 -159v-1165h-235z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM259 1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 
150.5t-153.5 156.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM438 1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 
-157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM203 1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 
180q-103 -103 -225 -180h-158z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM208 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 -39t75.5 -39t70.5 
-17.5q79 0 106 115h125q-12 -134 -77  [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM282 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 
-85t-84 -32q-48 0 -81.5 29t-33.5 88zM6 [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1188" d="M90 317q0 171 127 258t387 95l191 
6v59q0 106 -49.5 158.5t-153.5 52.5q-85 0 -163 -25t-150 -59l-76 168q90 47 197 
71.5t202 24.5q211 0 318.5 -92t107.5 -289v-745h-168l-47 154h-8q-80 -101 -161 
-137.5t-208 -36.5q-163 0 -254.5 88t-91.5 249zM334 315 q0 -74 44 -114.5t132 
-40.5q128 0 205.5 71.5t77.5 200.5v96l-142 -6q-166 -6 -241.5 -55.5t-75.5 
-151.5zM366 1466q0 101 63.5 163.5t172.5 62.5q104 0 171.5 -62t67.5 -162q0 -102 
-65.5 -165.5t-173.5 -63.5t-172 62.5 [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1817" d="M90 317q0 172 121.5 258.5t370.5 
94.5l188 6v76q0 194 -201 194q-141 0 -307 -82l-74 166q88 47 192.5 71.5t203.5 
24.5q241 0 340 -155q120 155 346 155q206 0 328 -134.5t122 -362.5v-127h-712q10 
-336 301 -336q184 0 356 80v-191q-86 -41 -171.5 -58t-195.5 -17 q-140 0 -248.5 
54.5t-175.5 164.5q-94 -125 -190.5 -172t-241.5 -47q-165 0 -258.5 90t-93.5 
247zM334 315q0 -155 166 -155q124 0 196 72.5t72 199.5v96l-135 -6q-155 -6 -227 
-54.5t-72 -152.5zM1014 670h473q0 1 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="1014" d="M102 547q0 279 136.5 429t394.5 
150q175 0 315 -65l-71 -189q-149 58 -246 58q-287 0 -287 -381q0 -186 71.5 
-279.5t209.5 -93.5q157 0 297 78v-205q-63 -37 -134.5 -53t-173.5 -16q-251 0 
-381.5 146.5t-130.5 420.5zM356 -340q54 -14 123 -14q54 0 85.5 16.5 t31.5 61.5q0 
85 -179 110l84 166h152l-41 -88q80 -21 125 -68.5t45 -113.5q0 -222 -305 -222q-66 
0 -121 15v137z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 
155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 
18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 
414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M281 
1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 
156.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 
155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 
18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 
414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M458 
1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 
-149.5h-156z" />
+<glyph unicode="&#xea;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 
155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 
18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 
414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M227 
1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 
-103 -225 -180h-158z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1180" d="M102 545q0 271 135 426t371 
155q219 0 346 -133t127 -366v-127h-737q5 -161 87 -247.5t231 -86.5q98 0 182.5 
18.5t181.5 61.5v-191q-86 -41 -174 -58t-201 -17q-258 0 -403.5 150.5t-145.5 
414.5zM348 670h502q-2 137 -66 207.5t-176 70.5t-179.5 -71t-80.5 -207z M307 
1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 
0 -81.5 29t-33.5 88zM700 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 
-33 -85.5t-84 -31.5q-48 0 -81.5 29t- [...]
+<glyph unicode="&#xec;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-69 
1548v21h273q38 -70 103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 
156.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM156 
1241v25q57 70 117.5 156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 
-149.5h-156z" />
+<glyph unicode="&#xee;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-100 
1241v25q191 198 254 303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 
-103 -225 -180h-158z" />
+<glyph unicode="&#xef;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235zM-25 
1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 
0 -81.5 29t-33.5 88zM368 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 
-33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1243" d="M102 481q0 231 131 365.5t351 
134.5q214 0 301 -111l8 4q-62 189 -227 345l-250 -150l-88 133l204 119q-86 59 -167 
102l84 146q140 -63 258 -144l231 138l88 -129l-188 -113q152 -140 231.5 -330t79.5 
-424q0 -279 -137.5 -433t-388.5 -154q-235 0 -378 136t-143 365z M342 477q0 -153 
74 -234t211 -81q148 0 215 91t67 269q0 127 -75.5 202t-206.5 75q-151 0 -218 
-82t-67 -240z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1300" d="M168 0v1106h184l33 -145h12q50 79 
142 122t204 43q398 0 398 -405v-721h-236v680q0 128 -51.5 191t-163.5 63q-149 0 
-218 -88t-69 -295v-551h-235zM269 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5t80 
-39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5 t-169 -75.5q-42 0 
-82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 
201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281zM293 1548v21h273q38 -70 103.5 -161t109.5 -142v-25 h-158q-69 52 
-174.5 150.5t-153.5 156.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 
201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281zM473 1241v25q57 70 117.5 156t95.5 147h273v-21 q-52 -61 -155.5 
-157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 
201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281zM239 1241v25q191 198 254 303h260q63 -110 256 -303 v-25h-159q-123 
73 -228 180q-103 -103 -225 -180h-158z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 
201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281zM235 1239q12 139 77.5 212t167.5 73q43 0 84 -17.5 t80 -39t75.5 
-39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 -209.5t-169 -75.5q-42 0 -82.5 
17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 -115h-122z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q240 0 380 -154.5t140 -416.5q0 -271 -139 -423t-387 -152q-155 0 -274 70t-183 
201t-64 304zM344 555q0 -383 283 -383q280 0 280 383q0 379 -282 379q-148 0 -214.5 
-98t-66.5 -281zM311 1399q0 62 33.5 89.5t81.5 27.5q53 0 84.5 -31 t31.5 -86q0 -53 
-32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM704 1399q0 62 33.5 89.5t81.5 27.5q53 0 
85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xf7;" d="M96 633v178h977v-178h-977zM457 373q0 64 31.5 
99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 -37q-60 0 -93.5 35.5t-33.5 
101.5zM457 1071q0 64 31.5 99.5t95.5 35.5q61 0 93 -36t32 -99t-34 -100t-91 
-37q-60 0 -93.5 35.5t-33.5 101.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1251" d="M102 555q0 269 138 420t389 
151q144 0 258 -63l69 100l136 -92l-78 -108q135 -152 135 -408q0 -271 -139 
-423t-387 -152q-144 0 -250 57l-76 -109l-135 90l82 117q-142 155 -142 420zM344 
555q0 -135 37 -219l391 559q-60 39 -147 39q-148 0 -214.5 -98t-66.5 -281z M487 
205q54 -33 140 -33q280 0 280 383q0 121 -33 203z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 
-190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 
-77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM289 1548v21h273q38 -70 
103.5 -161t109.5 -142v-25h-158q-69 52 -174.5 150.5t-153.5 156.5z " />
+<glyph unicode="&#xfa;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 
-190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 
-77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM501 1241v25q57 70 117.5 
156t95.5 147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z " />
+<glyph unicode="&#xfb;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 
-190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 
-77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM260 1241v25q191 198 254 
303h260q63 -110 256 -303v-25h-159q-123 73 -228 180 q-103 -103 -225 -180h-158z" 
/>
+<glyph unicode="&#xfc;" horiz-adv-x="1300" d="M158 383v723h237v-682q0 -127 52 
-190.5t163 -63.5q148 0 217.5 88.5t69.5 296.5v551h236v-1106h-185l-33 145h-12q-49 
-77 -139.5 -121t-206.5 -44q-201 0 -300 100t-99 303zM332 1399q0 62 33.5 
89.5t81.5 27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32 q-48 0 -81.5 
29t-33.5 88zM725 1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 
-85.5t-84 -31.5q-48 0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 
-252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 
17v186q53 -12 121 -12q170 0 239 197l41 104zM401 1241v25q57 70 117.5 156t95.5 
147h273v-21q-52 -61 -155.5 -157.5t-174.5 -149.5h-156z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1276" d="M168 -492v2048h235v-430l-7 
-138l-3 -27h10q61 86 142.5 125.5t187.5 39.5q206 0 322 -151t116 -420q0 -272 
-116.5 -423.5t-321.5 -151.5q-219 0 -330 149h-14l8 -72l6 -92v-457h-235zM403 
555q0 -202 64 -292.5t209 -90.5q254 0 254 385q0 190 -61.5 283.5t-194.5 93.5 
q-142 0 -206.5 -82t-64.5 -260v-37z" />
+<glyph unicode="&#xff;" horiz-adv-x="1098" d="M0 1106h256l225 -627q51 -134 68 
-252h8q9 55 33 133.5t254 745.5h254l-473 -1253q-129 -345 -430 -345q-78 0 -152 
17v186q53 -12 121 -12q170 0 239 197l41 104zM239 1399q0 62 33.5 89.5t81.5 
27.5q53 0 84.5 -31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29 t-33.5 88zM632 
1399q0 62 33.5 89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5q-48 
0 -81.5 29t-33.5 88z" />
+<glyph unicode="&#x131;" horiz-adv-x="571" d="M168 0v1106h235v-1106h-235z" />
+<glyph unicode="&#x152;" horiz-adv-x="1942" d="M121 735q0 360 172 555t491 
195q115 0 209 -23h826v-202h-576v-398h539v-200h-539v-459h576v-203h-820q-102 -20 
-211 -20q-320 0 -493.5 196.5t-173.5 558.5zM371 733q0 -269 106 -409t314 -140q129 
0 213 35v1024q-80 37 -211 37q-208 0 -315 -139t-107 -408z" />
+<glyph unicode="&#x153;" horiz-adv-x="1966" d="M102 555q0 272 137 421.5t382 
149.5q121 0 223 -49t168 -145q131 194 379 194q221 0 349 -133.5t128 
-365.5v-127h-738q11 -164 85.5 -249t228.5 -85q102 0 187 18.5t181 61.5v-191q-84 
-40 -171.5 -57.5t-202.5 -17.5q-281 0 -420 194q-132 -194 -400 -194 q-236 0 -376 
155t-140 420zM344 555q0 -189 65.5 -286t211.5 -97q141 0 206.5 95.5t65.5 283.5q0 
192 -66 287.5t-211 95.5q-143 0 -207.5 -95t-64.5 -284zM1137 670h497q0 134 -63 
206t-178 72q-110 0 -177.5 -69.5t-78.5 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1212" d="M0 1462h260l346 -667l346 
667h260l-487 -895v-567h-240v559zM293 1737q0 62 33.5 89.5t81.5 27.5q53 0 84.5 
-31t31.5 -86q0 -53 -32 -85t-84 -32q-48 0 -81.5 29t-33.5 88zM686 1737q0 62 33.5 
89.5t81.5 27.5q53 0 85 -31t32 -86q0 -54 -33 -85.5t-84 -31.5 q-48 0 -81.5 
29t-33.5 88z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1227" d="M227 1241v25q191 198 254 
303h260q63 -110 256 -303v-25h-159q-123 73 -228 180q-103 -103 -225 -180h-158z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M352 1466q0 101 63.5 
163.5t172.5 62.5q104 0 171.5 -62t67.5 -162q0 -102 -65.5 -165.5t-173.5 
-63.5t-172 62.5t-64 164.5zM481 1466q0 -106 107 -106q46 0 76 27.5t30 78.5q0 50 
-30 78.5t-76 28.5q-47 0 -77 -28.5t-30 -78.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1227" d="M236 1239q12 139 77.5 212t167.5 
73q43 0 84 -17.5t80 -39t75.5 -39t70.5 -17.5q79 0 106 115h125q-12 -134 -77 
-209.5t-169 -75.5q-42 0 -82.5 17.5t-79.5 39t-76 39t-71 17.5q-81 0 -109 
-115h-122z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="&#x2011;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="&#x2012;" horiz-adv-x="659" d="M72 449v200h514v-200h-514z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M82 455v190h860v-190h-860z" />
+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M82 455v190h1884v-190h-1884z" 
/>
+<glyph unicode="&#x2018;" horiz-adv-x="395" d="M25 983q20 83 71 224t105 
255h170q-64 -256 -101 -501h-233z" />
+<glyph unicode="&#x2019;" horiz-adv-x="395" d="M25 961q69 289 100 501h231l15 
-22q-53 -209 -176 -479h-170z" />
+<glyph unicode="&#x201a;" horiz-adv-x="549" d="M63 -264q69 270 103 502h231l15 
-23q-48 -186 -176 -479h-173z" />
+<glyph unicode="&#x201c;" horiz-adv-x="813" d="M25 983q20 83 71 224t105 
255h170q-64 -256 -101 -501h-233zM440 983q53 203 178 479h170q-69 -296 -100 
-501h-233z" />
+<glyph unicode="&#x201d;" horiz-adv-x="813" d="M25 961q69 289 100 501h231l15 
-22q-53 -209 -176 -479h-170zM440 961q69 271 103 501h231l14 -22q-53 -209 -176 
-479h-172z" />
+<glyph unicode="&#x201e;" horiz-adv-x="944" d="M43 -264q66 260 102 502h232l14 
-23q-55 -214 -176 -479h-172zM461 -264q66 260 102 502h232l14 -23q-48 -186 -176 
-479h-172z" />
+<glyph unicode="&#x2022;" horiz-adv-x="770" d="M131 748q0 138 66 210t188 
72q121 0 187.5 -72.5t66.5 -209.5q0 -135 -67 -209t-187 -74t-187 72.5t-67 210.5z" 
/>
+<glyph unicode="&#x2026;" horiz-adv-x="1677" d="M133 125q0 73 38 112t110 39q73 
0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113zM690 
125q0 73 38 112t110 39q73 0 111 -40.5t38 -110.5q0 -71 -38.5 -112.5t-110.5 
-41.5t-110 41t-38 113zM1247 125q0 73 38 112t110 39q73 0 111 -40.5 t38 -110.5q0 
-71 -38.5 -112.5t-110.5 -41.5t-110 41t-38 113z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="688" d="M82 535v26l356 432l168 -94l-282 
-350l282 -348l-168 -97z" />
+<glyph unicode="&#x203a;" horiz-adv-x="688" d="M80 201l282 348l-282 350l168 
94l358 -432v-26l-358 -431z" />
+<glyph unicode="&#x2044;" horiz-adv-x="266" d="M-393 0l858 1462h190l-856 
-1462h-192z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="743" d="M16 762v127l396 
579h188v-563h125v-143h-125v-176h-192v176h-392zM178 905h230v178q0 97 6 197q-52 
-104 -88 -158z" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1188" d="M63 494v153h136l-2 37v37l2 
65h-136v154h150q38 251 191 394t395 143q200 0 358 -88l-84 -187q-154 76 -274 
76q-141 0 -230.5 -84t-119.5 -254h456v-154h-471l-2 -45v-55l2 
-39h408v-153h-391q64 -312 364 -312q143 0 293 62v-203q-131 -61 -305 -61q-241 0 
-391.5 132 t-196.5 382h-152z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1561" d="M27 
1333v129h553v-129h-205v-592h-146v592h-202zM635 741v721h217l178 -534l187 
534h210v-721h-147v414l4 129h-6l-193 -543h-122l-185 543h-6l4 -119v-424h-141z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 
1105h1105v-1105h-1105v1105z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1315" d="M35 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM897 1399q0 63 34.5 97t98.5 34q62 0 
96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5 q-64 0 -98.5 34.5t-34.5 
94.5zM911 0v1106h235v-1106h-235z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1315" d="M35 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM911 0v1556h235v-1556h-235z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="2058" d="M35 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM778 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28 q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM1641 1399q0 63 34.5 97t98.5 34q62 
0 96.5 -34t34.5 -97q0 -60 -34.5 -94.5t-96.5 -34.5q-64 0 -98.5 34.5t-34.5 
94.5zM1655 0v1106h235v-1106h [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="2058" d="M35 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM778 928v110l182 72v72q0 196 92 
290.5t281 94.5q124 0 244 -41l-62 -178q-87 28 -166 28 q-80 0 -116.5 -49.5t-36.5 
-148.5v-72h270v-178h-270v-928h-236v928h-182zM1655 0v1556h235v-1556h-235z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.ttf
new file mode 100755
index 0000000..a5b9691
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.woff
new file mode 100755
index 0000000..17fb5dc
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-Semibold-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.eot
new file mode 100755
index 0000000..0048da0
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.svg
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.svg
new file mode 100755
index 0000000..46cfd5c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.svg
@@ -0,0 +1,251 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"; >
+<svg xmlns="http://www.w3.org/2000/svg";>
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright   : Digitized data copyright  20102011 Google Corporation
+Foundry     : Ascender Corporation
+Foundry URL : httpwwwascendercorpcom
+</metadata>
+<defs>
+<font id="OpenSansSemiboldItalic" horiz-adv-x="1128" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="532" />
+<glyph unicode=" "  horiz-adv-x="532" />
+<glyph unicode="&#x09;" horiz-adv-x="532" />
+<glyph unicode="&#xa0;" horiz-adv-x="532" />
+<glyph unicode="!" horiz-adv-x="557" d="M33 96q0 80 45.5 130t130.5 50q57 0 91 
-32.5t34 -93.5q0 -79 -47 -128t-123 -49q-62 0 -96.5 33.5t-34.5 89.5zM160 444l168 
1018h272l-264 -1018h-176z" />
+<glyph unicode="&#x22;" horiz-adv-x="858" d="M213 934l72 528h231l-151 
-528h-152zM588 934l74 528h231l-152 -528h-153z" />
+<glyph unicode="#" horiz-adv-x="1323" d="M51 418l17 168h280l84 286h-264l16 
168h295l121 422h178l-121 -422h252l121 422h174l-121 -422h252l-14 -168h-285l-84 
-286h271l-15 -168h-303l-121 -418h-180l123 418h-248l-121 -418h-174l117 
418h-250zM526 586h250l82 286h-250z" />
+<glyph unicode="$" d="M61 172v209q78 -42 179.5 -70t193.5 -30l84 387q-156 56 
-223.5 138.5t-67.5 199.5q0 167 118.5 267.5t324.5 117.5l37 163h135l-35 -165q161 
-16 289 -82l-86 -185q-134 66 -244 74l-80 -371q128 -51 186.5 -95t86.5 -101t28 
-135q0 -172 -119.5 -277t-337.5 -125 l-45 -211h-135l45 211q-197 13 -334 80zM451 
1016q0 -98 110 -139l68 319q-89 -11 -133.5 -57.5t-44.5 -122.5zM571 285q86 11 
136.5 60t50.5 126q0 101 -115 145z" />
+<glyph unicode="%" horiz-adv-x="1688" d="M141 872q0 166 53 313.5t142.5 
222.5t208.5 75q127 0 193.5 -76t66.5 -221q0 -160 -55.5 -313.5t-146.5 -230.5t-206 
-77q-124 0 -190 79t-66 228zM231 0l1086 1462h194l-1085 -1462h-195zM334 866q0 
-135 80 -135q52 0 95.5 58t73 175.5t29.5 219.5q0 131 -82 131 q-55 0 -99 
-61t-70.5 -173t-26.5 -215zM940 279q0 171 53 320t142.5 223.5t207.5 74.5q127 0 
195 -75t68 -218q0 -161 -55.5 -315.5t-146.5 -231.5t-204 -77q-127 0 -193.5 
76.5t-66.5 222.5zM1133 281q0 -134 81 -134q52 [...]
+<glyph unicode="&#x26;" horiz-adv-x="1411" d="M66 350q0 147 85.5 254t286.5 
205q-88 151 -88 283q0 180 112.5 286.5t297.5 106.5q160 0 252 -81t92 -218q0 -129 
-89.5 -230t-293.5 -192l235 -326q109 112 181 295h233q-113 -270 -297 -454l205 
-279h-277l-94 131q-106 -80 -211 -115.5t-229 -35.5 q-190 0 -295.5 97.5t-105.5 
272.5zM305 371q0 -86 56 -140.5t147 -54.5q77 0 147 27t144 82l-264 381q-133 -74 
-181.5 -141.5t-48.5 -153.5zM567 1102q0 -109 62 -201q147 75 199.5 133.5t52.5 
126.5q0 66 -36 101.5t-97 35.5q- [...]
+<glyph unicode="'" horiz-adv-x="483" d="M213 934l72 528h231l-151 -528h-152z" />
+<glyph unicode="(" horiz-adv-x="639" d="M78 276q0 343 124.5 632.5t379.5 
553.5h209q-498 -548 -498 -1190q0 -329 115 -596h-183q-147 261 -147 600z" />
+<glyph unicode=")" horiz-adv-x="639" d="M-154 -324q498 548 498 1190q0 327 -115 
596h183q147 -265 147 -602q0 -342 -123 -629.5t-381 -554.5h-209z" />
+<glyph unicode="*" horiz-adv-x="1122" d="M193 1167l71 195l354 -178l37 383l213 
-43l-116 -367l403 23l-12 -205l-367 45l170 -361l-205 -61l-102 371l-227 -312l-162 
144l293 266z" />
+<glyph unicode="+" d="M117 
631v180h379v381h180v-381h377v-180h-377v-375h-180v375h-379z" />
+<glyph unicode="," horiz-adv-x="530" d="M-102 -264q105 238 200 502h236l8 
-23q-125 -260 -266 -479h-178z" />
+<glyph unicode="-" horiz-adv-x="649" d="M47 446l45 203h502l-45 -203h-502z" />
+<glyph unicode="." horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 
89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 
87.5z" />
+<glyph unicode="/" horiz-adv-x="788" d="M-92 0l811 1462h233l-811 -1462h-233z" 
/>
+<glyph unicode="0" d="M92 471q0 284 83 526t222.5 365t321.5 123q187 0 284 
-118.5t97 -354.5q0 -306 -79 -546.5t-219 -363t-325 -122.5q-194 0 -289.5 
127.5t-95.5 363.5zM330 469q0 -143 39 -218t129 -75q100 0 182.5 113.5t132 
316.5t49.5 414q0 268 -162 268q-97 0 -180 -112 t-136.5 -312.5t-53.5 -394.5z" />
+<glyph unicode="1" d="M242 1145l508 317h198l-311 -1462h-238l189 870q28 150 82 
324q-57 -55 -135 -102l-187 -117z" />
+<glyph unicode="2" d="M-18 0l36 180l471 422q176 159 238.5 231t90.5 133.5t28 
131.5q0 85 -49.5 134.5t-139.5 49.5q-70 0 -139 -30t-170 -109l-115 160q120 97 231 
138.5t228 41.5q181 0 288 -93t107 -251q0 -108 -39 -201t-123 -190.5t-284 
-268.5l-311 -264v-8h622l-41 -207h-929z" />
+<glyph unicode="3" d="M31 59v215q84 -49 185.5 -75.5t195.5 -26.5q157 0 245 
71.5t88 196.5q0 219 -278 219h-133l37 183h106q164 0 267.5 74.5t103.5 199.5q0 79 
-49.5 124.5t-139.5 45.5q-72 0 -146.5 -25.5t-162.5 -84.5l-104 161q120 81 225.5 
113.5t226.5 32.5q183 0 286 -88.5 t103 -241.5q0 -158 -99 -264t-269 -137v-7q127 
-24 196.5 -106t69.5 -205q0 -133 -68 -236.5t-196.5 -160.5t-304.5 -57q-225 0 -385 
79z" />
+<glyph unicode="4" d="M-4 317l37 197l803 952h254l-201 -952h201l-43 
-197h-201l-68 -317h-229l69 317h-622zM262 514h397l68 309q31 136 100 377h-8q-51 
-86 -135 -186z" />
+<glyph unicode="5" d="M53 59v217q167 -100 342 -100q173 0 270 83t97 230q0 105 
-62 168.5t-188 63.5q-95 0 -225 -35l-88 68l200 708h713l-45 -209h-506l-106 
-364q93 18 155 18q181 0 288.5 -103.5t107.5 -285.5q0 -161 -70 -283t-204 
-188.5t-324 -66.5q-214 0 -355 79z" />
+<glyph unicode="6" d="M111 446q0 205 60.5 406t165 343t251 215t342.5 73q117 0 
203 -25l-43 -194q-72 22 -181 22q-205 0 -337 -129.5t-197 -392.5h6q125 170 326 
170q156 0 243.5 -99t87.5 -272q0 -162 -68.5 -301t-185.5 -210.5t-270 -71.5q-194 0 
-298.5 120t-104.5 346zM340 418 q0 -110 49.5 -177t140.5 -67q81 0 143 48.5t96 
134.5t34 188q0 200 -178 200q-51 0 -95.5 -19t-79 -48t-58.5 -64.5t-39 -82t-13 
-113.5z" />
+<glyph unicode="7" d="M125 0l754 1257h-674l43 205h932l-33 -168l-758 
-1294h-264z" />
+<glyph unicode="8" d="M76 348q0 297 368 432q-91 70 -130.5 145t-39.5 162q0 179 
127 288.5t330 109.5q179 0 283 -89t104 -239q0 -132 -79 -229.5t-248 -163.5q120 
-78 172.5 -165.5t52.5 -201.5q0 -121 -61.5 -216.5t-175.5 -148t-271 -52.5q-203 0 
-317.5 100t-114.5 268zM311 369 q0 -93 59 -149t158 -56q115 0 184.5 64t69.5 167q0 
91 -48.5 157.5t-139.5 119.5q-149 -54 -216 -126.5t-67 -176.5zM504 1096q0 -83 39 
-137t104 -93q115 43 177.5 105t62.5 157q0 81 -48 126.5t-128 45.5q-93 0 -150 
-56t-57 -148z" />
+<glyph unicode="9" d="M92 12v207q121 -43 236 -43q188 0 306 123t177 389h-6q-113 
-160 -305 -160q-165 0 -255.5 102t-90.5 288q0 156 67 289t186.5 204.5t274.5 
71.5q192 0 294.5 -119.5t102.5 -345.5q0 -205 -58 -414.5t-152.5 -349t-226 
-207t-310.5 -67.5q-133 0 -240 32zM387 932 q0 -105 46 -160t134 -55q117 0 198 
94t81 240q0 108 -48 172.5t-134 64.5q-82 0 -145.5 -47t-97.5 -130t-34 -179z" />
+<glyph unicode=":" horiz-adv-x="551" d="M33 94q0 83 47 132.5t131 49.5q56 0 
89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 
87.5zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -79 -48.5 
-130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
+<glyph unicode=";" horiz-adv-x="551" d="M-100 -264q95 214 198 502h236l8 
-23q-125 -260 -266 -479h-176zM205 948q0 83 47 132.5t131 49.5q56 0 89.5 
-31.5t33.5 -92.5q0 -79 -48.5 -130t-125.5 -51q-66 0 -96.5 35.5t-30.5 87.5z" />
+<glyph unicode="&#x3c;" d="M115 651v121l936 488v-195l-697 -344l697 -303v-197z" 
/>
+<glyph unicode="=" d="M117 430v180h936v-180h-936zM117 831v179h936v-179h-936z" 
/>
+<glyph unicode="&#x3e;" d="M115 221v197l694 303l-694 344v195l936 -488v-121z" />
+<glyph unicode="?" horiz-adv-x="907" d="M162 94q0 83 47 132.5t131 49.5q56 0 
89.5 -31.5t33.5 -92.5q0 -79 -49 -129t-125 -50q-66 0 -96.5 34.5t-30.5 86.5zM186 
1370q207 113 410 113q171 0 269 -85.5t98 -242.5q0 -120 -63.5 -217.5t-231.5 
-216.5q-104 -74 -150 -133t-61 -144h-197q18 133 71.5 220.5 t176.5 177.5q107 77 
146.5 117t58 80.5t18.5 88.5q0 70 -42.5 114t-123.5 44q-77 0 -150 -27.5t-151 
-64.5z" />
+<glyph unicode="@" horiz-adv-x="1743" d="M100 502q0 270 122.5 489t343 
344t493.5 125q200 0 346 -74.5t223.5 -214.5t77.5 -325q0 -176 -59.5 -322.5t-166.5 
-229.5t-239 -83q-98 0 -150.5 46t-64.5 120h-6q-101 -166 -277 -166q-123 0 -189.5 
78.5t-66.5 218.5q0 151 67.5 279.5t188 203t263.5 74.5 q52 0 94.5 -5t79.5 -13t129 
-39l-101 -392q-30 -114 -30 -159q0 -92 79 -92q72 0 134 66.5t97.5 174.5t35.5 
230q0 228 -128.5 347.5t-363.5 119.5q-214 0 -385 -99.5t-266.5 -281.5t-95.5 
-406q0 -259 140.5 -401t391.5 -142q [...]
+<glyph unicode="A" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307z" />
+<glyph unicode="B" horiz-adv-x="1247" d="M70 0l309 1462h399q222 0 335.5 
-84t113.5 -248q0 -146 -86.5 -243t-239.5 -127v-8q108 -28 167.5 -103.5t59.5 
-183.5q0 -217 -150 -341t-417 -124h-491zM348 201h223q147 0 230.5 68t83.5 194q0 
98 -60 149.5t-176 51.5h-200zM489 858h199q139 0 215 60.5t76 171.5 q0 172 -223 
172h-181z" />
+<glyph unicode="C" horiz-adv-x="1225" d="M135 545q0 260 105.5 483t281.5 
339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24q-154 0 -275 
-89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 
68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5z" />
+<glyph unicode="D" horiz-adv-x="1374" d="M70 0l309 1462h369q271 0 417 -145t146 
-424q0 -271 -100 -473t-291 -311t-449 -109h-401zM348 201h135q177 0 309 86t202.5 
242t70.5 356q0 184 -88 280.5t-256 96.5h-146z" />
+<glyph unicode="E" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 -205h-539l-84 
-395h502l-41 -203h-504l-96 -456h539l-43 -203h-776z" />
+<glyph unicode="F" horiz-adv-x="1026" d="M70 0l309 1462h774l-43 -205h-537l-96 
-454h502l-45 -203h-500l-127 -600h-237z" />
+<glyph unicode="G" horiz-adv-x="1399" d="M135 539q0 264 102.5 483t290 
340t426.5 121q111 0 213 -20.5t205 -69.5l-90 -203q-174 86 -334 86q-158 0 -287 
-90.5t-203.5 -258t-74.5 -372.5q0 -183 89 -277t253 -94q109 0 215 33l80 
371h-277l43 205h512l-157 -736q-112 -40 -218.5 -58.5t-238.5 -18.5 q-261 0 -405 
146t-144 413z" />
+<glyph unicode="H" horiz-adv-x="1411" d="M70 0l309 1462h237l-127 -598h566l127 
598h237l-309 -1462h-238l140 659h-566l-139 -659h-237z" />
+<glyph unicode="I" horiz-adv-x="608" d="M70 0l311 1462h235l-311 -1462h-235z" />
+<glyph unicode="J" horiz-adv-x="612" d="M-322 -383l5 201q84 -21 153 -21q201 0 
254 250l299 1415h238l-305 -1446q-46 -217 -161.5 -320.5t-312.5 -103.5q-104 0 
-170 25z" />
+<glyph unicode="K" horiz-adv-x="1198" d="M70 0l309 1462h237l-151 -706l141 
166l492 540h284l-616 -669l321 -793h-262l-252 655l-149 -100l-117 -555h-237z" />
+<glyph unicode="L" horiz-adv-x="1016" d="M70 0l309 1462h237l-266 -1257h539l-43 
-205h-776z" />
+<glyph unicode="M" horiz-adv-x="1757" d="M68 0l309 1462h323l109 -1149h6l606 
1149h344l-305 -1462h-227l182 872q39 186 86 342h-6l-643 -1214h-205l-115 
1214h-6q-9 -118 -55 -340l-184 -874h-219z" />
+<glyph unicode="N" horiz-adv-x="1491" d="M68 0l309 1462h268l399 -1149h7q6 54 
31 192.5t40 203.5l160 753h219l-309 -1462h-260l-410 1163h-6l-10 -69q-24 -149 
-35.5 -212.5t-183.5 -881.5h-219z" />
+<glyph unicode="O" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5z" />
+<glyph unicode="P" horiz-adv-x="1174" d="M70 0l309 1462h334q229 0 345 
-100.5t116 -300.5q0 -248 -169.5 -381t-472.5 -133h-110l-115 -547h-237zM465 
748h94q178 0 275.5 79.5t97.5 225.5q0 109 -58.5 159t-179.5 50h-119z" />
+<glyph unicode="Q" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -322 -130 -563t-355 -332l264 
-375h-289l-202 328h-31q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 
-267t227.5 -94q138 0 248.5 94t172 263.5t61.5 378.5q0 170 -79 265t-223 95 q-138 
0 -250 -96t-175.5 -266.5t-63.5 -372.5z" />
+<glyph unicode="R" horiz-adv-x="1206" d="M70 0l309 1462h338q223 0 342 
-94.5t119 -290.5q0 -165 -86.5 -278.5t-257.5 -165.5l249 -633h-260l-207 
584h-186l-123 -584h-237zM473 782h123q170 0 254 75t84 206q0 105 -59 151t-183 
46h-119z" />
+<glyph unicode="S" horiz-adv-x="1057" d="M39 55v224q173 -97 350 -97q137 0 216 
58.5t79 162.5q0 69 -41 122.5t-172 136.5q-105 67 -155 122t-76.5 120.5t-26.5 
144.5q0 128 61.5 227t174 153t253.5 54q205 0 381 -92l-86 -191q-161 78 -295 
78q-109 0 -175 -58.5t-66 -152.5q0 -47 15 -82.5t46.5 -66 t134.5 -95.5q155 -97 
214 -187.5t59 -207.5q0 -210 -144.5 -329t-398.5 -119q-210 0 -348 75z" />
+<glyph unicode="T" horiz-adv-x="1053" d="M176 1257l45 205h998l-43 
-205h-381l-267 -1257h-237l264 1257h-379z" />
+<glyph unicode="U" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 901h237l-192 
-905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 80.5t124 
261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 -335.5 
106t-118.5 305z" />
+<glyph unicode="V" horiz-adv-x="1165" d="M186 1462h232l74 -905q9 -103 11 
-233l-1 -76h4q70 178 137 309l455 905h254l-764 -1462h-258z" />
+<glyph unicode="W" horiz-adv-x="1788" d="M203 1462h229l19 -850q0 -136 -13 
-346h6q83 221 142 355l387 841h225l31 -839l3 -169l-3 -188h8q28 88 70 197.5t61 
152.5l358 846h246l-655 -1462h-258l-37 842l-6 185l4 106h-6q-47 -144 -117 
-291l-385 -842h-256z" />
+<glyph unicode="X" horiz-adv-x="1151" d="M-111 0l586 770l-250 692h246l178 
-540l402 540h266l-551 -710l274 -752h-256l-192 592l-438 -592h-265z" />
+<glyph unicode="Y" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 
669h266l-623 -913l-114 -549h-238l119 553z" />
+<glyph unicode="Z" horiz-adv-x="1092" d="M-39 0l33 168l850 1087h-598l43 
207h897l-35 -172l-852 -1085h645l-43 -205h-940z" />
+<glyph unicode="[" horiz-adv-x="631" d="M-27 -324l381 1786h430l-39 
-176h-221l-303 -1433h221l-39 -177h-430z" />
+<glyph unicode="\" horiz-adv-x="788" d="M221 1462h207l219 -1462h-209z" />
+<glyph unicode="]" horiz-adv-x="631" d="M-143 -324l37 177h219l305 1433h-221l39 
176h430l-381 -1786h-428z" />
+<glyph unicode="^" horiz-adv-x="1069" d="M37 537l608 933h127l272 
-933h-184l-188 690l-434 -690h-201z" />
+<glyph unicode="_" horiz-adv-x="813" d="M-188 -324l30 140h817l-30 -140h-817z" 
/>
+<glyph unicode="`" horiz-adv-x="1135" d="M541 1548v21h245q47 -154 132 
-303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
+<glyph unicode="a" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5z" />
+<glyph unicode="b" horiz-adv-x="1200" d="M47 0l330 1556h235l-71 -333q-13 -63 
-38 -156.5t-40 -140.5h8q90 113 165 156.5t161 43.5q145 0 226 -103.5t81 -285.5q0 
-202 -69.5 -379.5t-190.5 -277.5t-266 -100q-98 0 -168.5 45t-110.5 131h-10l-64 
-156h-178zM369 373q0 -96 46.5 -149.5t131.5 -53.5t159 78.5 t117 210t43 274.5q0 
201 -155 201q-81 0 -162 -80t-130.5 -210.5t-49.5 -270.5z" />
+<glyph unicode="c" horiz-adv-x="954" d="M94 389q0 207 73.5 376.5t206.5 265t302 
95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 -379.5q0 
-111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 -71q-196 0 -304 
106t-108 303z" />
+<glyph unicode="d" horiz-adv-x="1198" d="M94 369q0 205 71.5 383t191.5 276t266 
98q179 0 268 -178h8q13 146 37 250l76 358h233l-330 -1556h-184l19 176h-7q-88 -106 
-170 -151t-174 -45q-143 0 -224 101.5t-81 287.5zM332 373q0 -203 157 -203q82 0 
162.5 82t129 214t48.5 267q0 91 -43.5 146t-132.5 55 q-85 0 -159 -77t-118 
-211t-44 -273z" />
+<glyph unicode="e" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 
263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 
-102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 
-44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 
294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227z" />
+<glyph unicode="f" horiz-adv-x="702" d="M-225 -279q64 -20 114 -20q134 0 177 
205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 211 
-43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 
-178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190z" />
+<glyph unicode="g" horiz-adv-x="1067" d="M-121 -211q0 103 69.5 178t223.5 
127q-76 45 -76 127q0 69 46.5 119.5t146.5 97.5q-135 81 -135 252q0 196 122.5 
316t323.5 120q80 0 160 -20h383l-31 -137l-192 -33q28 -58 28 -137q0 -193 -119 
-306.5t-319 -113.5q-52 0 -92 8q-111 -40 -111 -104q0 -38 31.5 -52 t91.5 -22l127 
-16q176 -22 252 -87.5t76 -187.5q0 -196 -151 -303t-429 -107q-203 0 -314.5 
75t-111.5 206zM92 -184q0 -65 55.5 -103.5t169.5 -38.5q163 0 255 54t92 155q0 51 
-45 80t-158 41l-137 14q-112 -18 -172 - [...]
+<glyph unicode="h" horiz-adv-x="1208" d="M47 0l330 1556h235l-57 -262q-27 -126 
-73 -293l-19 -75h8q84 106 168.5 153t177.5 47q136 0 208.5 -77.5t72.5 -221.5q0 
-76 -23 -174l-139 -653h-234l142 672q18 90 18 127q0 135 -129 135q-112 0 -209.5 
-125t-142.5 -342l-98 -467h-236z" />
+<glyph unicode="i" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236zM330 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 -71 -40 
-112t-105 -41q-53 0 -88 26t-35 82z" />
+<glyph unicode="j" horiz-adv-x="563" d="M-262 -279q64 -20 117 -20q131 0 170 
186l260 1219h233l-266 -1247q-38 -181 -127.5 -266t-237.5 -85q-90 0 -149 
23v190zM332 1378q0 68 38 110t109 42q54 0 86.5 -26.5t32.5 -80.5q0 -71 -40 
-112t-105 -41q-53 0 -87 25.5t-34 82.5z" />
+<glyph unicode="k" horiz-adv-x="1081" d="M47 0l330 1556h235q-135 -627 -159.5 
-729.5t-59.5 -226.5h4l490 506h272l-483 -485l291 -621h-262l-209 471l-136 -96l-77 
-375h-236z" />
+<glyph unicode="l" horiz-adv-x="563" d="M47 0l330 1556h235l-331 -1556h-234z" />
+<glyph unicode="m" horiz-adv-x="1819" d="M47 0l236 1106h184l-21 -205h9q148 225 
352 225q220 0 254 -235h8q75 116 170.5 175.5t198.5 59.5q133 0 202.5 -76.5t69.5 
-215.5q0 -64 -22 -181l-140 -653h-235l143 672q19 95 19 133q0 129 -121 129q-108 0 
-201.5 -124t-136.5 -329l-101 -481h-235l143 672 q17 82 17 127q0 135 -117 
135q-110 0 -203.5 -127t-138.5 -338l-98 -469h-236z" />
+<glyph unicode="n" horiz-adv-x="1208" d="M47 0l236 1106h184l-21 -205h9q83 118 
171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 -653h-236l142 
672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 -243.5l-98 
-469h-236z" />
+<glyph unicode="o" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5z" />
+<glyph unicode="p" horiz-adv-x="1200" d="M-55 -492l338 1598h184l-21 -188h9q157 
208 344 208q143 0 224 -103t81 -286q0 -204 -70 -381.5t-190.5 -276.5t-265.5 
-99q-181 0 -269 176h-10q-7 -97 -25 -185l-96 -463h-233zM369 373q0 -96 46.5 
-149.5t131.5 -53.5t159 78.5t117 210t43 274.5q0 201 -155 201 q-81 0 -161 
-79.5t-130.5 -210.5t-50.5 -271z" />
+<glyph unicode="q" horiz-adv-x="1198" d="M94 367q0 208 73 387t192.5 
275.5t265.5 96.5q183 0 274 -178h10l64 158h178l-340 -1598h-233l75 349q12 56 43.5 
180t38.5 141h-8q-84 -108 -164 -153t-170 -45q-139 0 -219 102.5t-80 284.5zM332 
373q0 -203 160 -203q80 0 159 81t127.5 213t48.5 269q0 94 -45.5 147.5 t-126.5 
53.5q-86 0 -160 -77.5t-118.5 -209.5t-44.5 -274z" />
+<glyph unicode="r" horiz-adv-x="836" d="M47 0l236 1106h184l-21 -205h9q83 120 
166 172.5t176 52.5q62 0 108 -12l-51 -219q-54 14 -102 14q-126 0 -225 -113t-138 
-296l-106 -500h-236z" />
+<glyph unicode="s" horiz-adv-x="922" d="M14 47v203q153 -90 312 -90q97 0 157 
40t60 109q0 51 -34.5 87.5t-141.5 97.5q-125 67 -176.5 136.5t-51.5 164.5q0 155 
107 243t289 88q196 0 346 -84l-76 -176q-140 76 -266 76q-73 0 -118.5 -33t-45.5 
-92q0 -45 33 -80t135 -90q105 -59 149 -101t67 -91.5t23 -114.5 q0 -173 -118 
-266.5t-328 -93.5q-190 0 -322 67z" />
+<glyph unicode="t" horiz-adv-x="752" d="M92 928l21 110l190 82l129 232h146l-52 
-246h279l-39 -178h-277l-122 -572q-13 -55 -13 -92q0 -43 25 -68.5t76 -25.5q68 0 
151 31v-178q-35 -17 -95 -30t-120 -13q-274 0 -274 247q0 57 16 131l121 570h-162z" 
/>
+<glyph unicode="u" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 123.5l123 
584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 162.5t85 
247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 -54.5q-134 
0 -207 76t-73 218z" />
+<glyph unicode="v" horiz-adv-x="997" d="M100 1106h232l55 -598q14 -159 14 
-297h7q28 74 70 165t65 132l311 598h250l-598 -1106h-275z" />
+<glyph unicode="w" horiz-adv-x="1540" d="M121 1106h221l13 -646q-2 -87 -11 
-245h6q66 176 109 272l278 619h254l19 -604l1 -53l-3 -234h6q17 50 57 158.5t63.5 
163.5t251.5 569h244l-518 -1106h-268l-19 627l-1 70l3 200q-25 -62 -51.5 
-125t-345.5 -772h-262z" />
+<glyph unicode="x" horiz-adv-x="1032" d="M-86 0l475 569l-231 537h245l144 
-373l287 373h274l-461 -549l248 -557h-246l-160 387l-305 -387h-270z" />
+<glyph unicode="y" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 134 
43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 215 
135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 
19v188z" />
+<glyph unicode="z" horiz-adv-x="920" d="M-39 0l29 147l635 781h-439l39 
178h705l-37 -170l-623 -758h486l-37 -178h-758z" />
+<glyph unicode="{" horiz-adv-x="721" d="M8 485l39 187q120 0 191.5 42.5t93.5 
143.5l59 275q28 134 73 201.5t120 97.5t198 30h60l-41 -184q-96 0 -139.5 -34t-61.5 
-116l-70 -309q-24 -108 -87 -170.5t-179 -79.5v-6q160 -45 160 -215q0 -38 -16 
-121l-43 -194q-11 -48 -11 -74q0 -51 32.5 -74.5t109.5 -23.5 v-185h-39q-316 0 
-316 236q0 61 17 133l45 201q14 65 14 98q0 141 -209 141z" />
+<glyph unicode="|" d="M498 -481v2033h178v-2033h-178z" />
+<glyph unicode="}" horiz-adv-x="721" d="M-88 -141q106 2 152.5 36.5t64.5 
114.5l70 309q24 109 87 170t179 78v6q-158 48 -158 215q0 55 17 121l43 197q10 44 
10 74q0 58 -43 78t-121 20l35 184h22q318 0 318 -235q0 -61 -17 -133l-45 -203q-14 
-65 -14 -98q0 -142 209 -142l-39 -186q-121 0 -192 -42t-93 -142 l-63 -306q-34 
-165 -123.5 -232t-269.5 -67h-29v183z" />
+<glyph unicode="~" d="M111 571v191q100 108 249 108q64 0 118.5 -12t146.5 -51q70 
-30 115 -42.5t94 -12.5q50 0 112.5 31t120.5 89v-190q-103 -111 -250 -111q-63 0 
-124 16.5t-138 49.5q-76 32 -119.5 43.5t-91.5 11.5q-51 0 -112 -31t-121 -90z" />
+<glyph unicode="&#xa1;" horiz-adv-x="557" d="M-45 -373l266 1018h174l-166 
-1018h-274zM221 936q0 82 49 132t127 50q65 0 95 -35.5t30 -89.5q0 -80 -47 
-130t-127 -50q-59 0 -93 31.5t-34 91.5z" />
+<glyph unicode="&#xa2;" d="M195 586q0 190 63.5 351t178 260.5t261.5 121.5l35 
164h156l-37 -164q124 -12 221 -57l-69 -185q-125 53 -222 53q-99 0 -180 
-71.5t-125.5 -194.5t-44.5 -266q0 -111 56 -171t155 -60q74 0 138.5 21.5t129.5 
53.5v-194q-133 -69 -293 -74l-40 -194h-156l45 213 q-132 34 -202 134.5t-70 
258.5z" />
+<glyph unicode="&#xa3;" d="M-18 0l38 193q200 45 250 276l35 164h-196l36 
172h197l61 299q38 185 153 282t300 97q188 0 352 -86l-88 -183q-143 74 -258 
74q-185 0 -227 -205l-57 -278h333l-34 -172h-336l-33 -152q-21 -98 -68.5 
-165t-130.5 -109h690l-45 -207h-972z" />
+<glyph unicode="&#xa4;" d="M141 1057l119 119l127 -127q102 61 207 61q108 0 207 
-63l127 129l121 -117l-129 -129q61 -99 61 -207q0 -114 -61 -209l127 -125l-119 
-119l-127 127q-95 -59 -207 -59q-120 0 -207 59l-127 -125l-117 119l127 125q-61 95 
-61 207q0 110 61 205zM377 723 q0 -91 62.5 -154t154.5 -63q91 0 156 62t65 155t-65 
156t-156 63q-92 0 -154.5 -64t-62.5 -155z" />
+<glyph unicode="&#xa5;" d="M106 244l33 155h273l30 148h-272l35 155h211l-199 
760h232l145 -669l432 669h248l-518 -760h217l-35 -155h-274l-31 -148h274l-33 
-155h-272l-53 -244h-221l51 244h-273z" />
+<glyph unicode="&#xa6;" d="M498 315h178v-796h-178v796zM498 
758v794h178v-794h-178z" />
+<glyph unicode="&#xa7;" horiz-adv-x="995" d="M39 53v187q152 -93 319 -93q116 0 
174 40.5t58 111.5q0 43 -39 79.5t-141 84.5q-130 60 -189 131.5t-59 169.5q0 188 
219 307q-47 32 -78 82t-31 115q0 138 111.5 220.5t296.5 82.5q178 0 332 -78l-68 
-158q-62 29 -129.5 50.5t-144.5 21.5q-86 0 -134.5 -34.5 t-48.5 -94.5q0 -43 36.5 
-76.5t148.5 -83.5q127 -56 186.5 -127.5t59.5 -167.5q0 -92 -52.5 -171t-160.5 
-140q102 -76 102 -193q0 -157 -123 -245t-330 -88q-188 0 -315 67zM358 793q0 -61 
46.5 -104.5t173.5 -100.5q62  [...]
+<glyph unicode="&#xa8;" horiz-adv-x="1135" d="M426 1380q0 60 35 98t98 38q48 0 
76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM809 
1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 
0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 
-312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 
310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM502 
727q0 216 113.5 340.5t312.5 124.5q138 0 266 -66l-68 -147q-106 55 -196 55q-113 0 
-175.5 -76t-62.5 -231q0 -301 238 -301 [...]
+<glyph unicode="&#xaa;" horiz-adv-x="729" d="M160 1016q0 128 47 238.5t122.5 
167.5t168.5 57q113 0 166 -103h6l39 90h118l-147 -684h-123l10 105h-4q-50 -62 -98 
-89.5t-109 -27.5q-91 0 -143.5 66t-52.5 180zM319 1022q0 -125 93 -125q50 0 97.5 
48t77 127.5t29.5 158.5q0 119 -102 119q-82 0 -138.5 -97.5 t-56.5 -230.5z" />
+<glyph unicode="&#xab;" horiz-adv-x="1055" d="M80 553v22l395 420l135 -118l-288 
-332l153 -369l-178 -76zM520 530v25l385 434l137 -112l-280 -351l147 -350l-180 
-76z" />
+<glyph unicode="&#xac;" d="M117 631v180h936v-555h-179v375h-757z" />
+<glyph unicode="&#xad;" horiz-adv-x="649" d="M47 446l45 203h502l-45 
-203h-502z" />
+<glyph unicode="&#xae;" horiz-adv-x="1704" d="M131 731q0 200 100 375t275 
276t377 101q199 0 373.5 -99t276 -275.5t101.5 -377.5q0 -199 -98.5 -373t-272.5 
-276t-380 -102q-207 0 -382 103.5t-272.5 276.5t-97.5 371zM254 731q0 -168 83 
-312.5t229 -230.5t317 -86q173 0 319.5 87t227.5 231.5t81 310.5 q0 165 -82 
310.5t-227.5 232t-318.5 86.5q-168 0 -314.5 -84.5t-230.5 -231t-84 -313.5zM608 
291v878h269q337 0 337 -262q0 -83 -45.5 -145t-130.5 -98l211 -373h-200l-172 
325h-91v-325h-178zM786 760h72q84 0 129 36t4 [...]
+<glyph unicode="&#xaf;" horiz-adv-x="903" d="M111 1556l39 166h911l-41 
-166h-909z" />
+<glyph unicode="&#xb0;" horiz-adv-x="877" d="M188 1153q0 136 97 233t233 97t232 
-97t96 -233q0 -137 -96 -231.5t-232 -94.5q-88 0 -165 44t-121 119t-44 163zM340 
1153q0 -70 52 -122t126 -52q72 0 124 52t52 122q0 74 -51.5 126t-124.5 52q-74 0 
-126 -51.5t-52 -126.5z" />
+<glyph unicode="&#xb1;" d="M117 0v180h936v-180h-936zM117 
657v181h379v381h180v-381h377v-181h-377v-374h-180v374h-379z" />
+<glyph unicode="&#xb2;" horiz-adv-x="745" d="M78 586l28 135l269 223q111 95 
148.5 136t55 77t17.5 74q0 46 -28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 
81.5t168.5 27.5q115 0 183.5 -60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 
-146l-174 -142h371l-33 -157h-604z" />
+<glyph unicode="&#xb3;" horiz-adv-x="745" d="M104 625v159q126 -71 248 -71q90 0 
139.5 37t49.5 106q0 113 -146 113h-108l28 133h93q89 0 142.5 34t53.5 99q0 100 
-117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 0 193 -55.5t69 -153.5q0 -90 
-54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115 q0 -129 -99.5 -206t-269.5 
-77q-138 0 -250 56z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1135" d="M508 1241v25q97 108 225 
303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1221" d="M-55 -492l338 1598h235l-141 
-670q-19 -84 -19 -129q0 -65 33 -101t96 -36q113 0 209.5 125.5t141.5 337.5l102 
473h231l-235 -1106h-184l22 190h-10q-75 -111 -153 -160.5t-165 -49.5q-108 0 -155 
81h-8q-9 -73 -39 -235l-66 -318h-233z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1341" d="M172 1042q0 260 109 387t342 
127h581v-1816h-139v1638h-188v-1638h-140v819q-62 -18 -145 -18q-216 0 -318 
125t-102 376z" />
+<glyph unicode="&#xb7;" horiz-adv-x="551" d="M150 692q0 83 47 132.5t131 
49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 
35.5t-31.5 87.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="420" d="M-188 -342q47 -14 96 -14q137 0 
137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101q0 -106 
-82 -167t-224 -61q-64 0 -118 15v135z" />
+<glyph unicode="&#xb9;" horiz-adv-x="745" d="M193 1247l339 215h162l-186 
-876h-191l99 461q17 79 57 217q-21 -20 -49.5 -43t-153.5 -103z" />
+<glyph unicode="&#xba;" horiz-adv-x="721" d="M164 1047q0 122 44 221.5t125.5 
155t188.5 55.5q124 0 189 -71.5t65 -201.5q0 -126 -42 -225t-121 -155t-189 
-56q-122 0 -191 73t-69 204zM326 1042q0 -141 112 -141q77 0 127.5 87.5t50.5 
219.5q0 138 -106 138q-81 0 -132.5 -87.5t-51.5 -216.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1055" d="M10 211l281 348l-146 352l179 
76l211 -432v-25l-385 -432zM444 211l287 330l-153 370l180 76l217 -455v-22l-397 
-418z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1661" d="M149 0l1085 1462h195l-1083 
-1462h-197zM151 1247l339 215h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 
-49.5 -43t-153.5 -103zM775 177l26 137l477 569h197l-121 -563h123l-29 
-143h-122l-39 -176h-183l39 176h-368zM973 320h199l52 221l34 129q-32 -51 -98 
-131z " />
+<glyph unicode="&#xbd;" horiz-adv-x="1661" d="M121 0l1085 1462h195l-1083 
-1462h-197zM122 1247l339 215h162l-186 -876h-191l99 461q17 79 57 217q-21 -20 
-49.5 -43t-153.5 -103zM860 1l28 135l269 223q111 95 148.5 136t55 77t17.5 74q0 46 
-28 72t-76 26q-91 0 -191 -80l-80 123q68 54 142.5 81.5t168.5 27.5 q115 0 183.5 
-60t68.5 -155q0 -69 -23.5 -124.5t-74 -110.5t-168.5 -146l-174 -142h371l-33 
-157h-604z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1683" d="M291 0l1085 1462h195l-1083 
-1462h-197zM881 177l26 137l477 569h197l-121 -563h123l-29 -143h-122l-39 
-176h-183l39 176h-368zM1079 320h199l52 221l34 129q-32 -51 -98 -131zM108 
625v159q126 -71 248 -71q90 0 139.5 37t49.5 106q0 113 -146 113h-108l28 133h93 
q89 0 142.5 34t53.5 99q0 100 -117 100q-92 0 -188 -65l-68 121q126 90 291 90q124 
0 193 -55.5t69 -153.5q0 -90 -54.5 -149t-158.5 -85v-4q78 -18 115 -67t37 -115q0 
-129 -99.5 -206t-269.5 -77q-138 0 -250 56z" />
+<glyph unicode="&#xbf;" horiz-adv-x="907" d="M-35 -68q0 120 64 219t231 216q93 
64 141 122.5t70 153.5h197q-25 -146 -79.5 -231t-170.5 -168q-107 -79 -145.5 
-118t-57 -79t-18.5 -88q0 -71 42 -114.5t123 -43.5q76 0 149.5 27.5t152.5 65.5l75 
-177q-205 -112 -409 -112q-174 0 -269.5 85.5t-95.5 241.5zM465 934 q0 78 46.5 
129t125.5 51q66 0 97.5 -34t31.5 -87q0 -85 -48 -134.5t-130 -49.5q-56 0 -89.5 
32.5t-33.5 92.5z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM538 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 
151.5t-101 155.5z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM707 1579v25q97 108 225 303h264v-19q-54 -66 -158 
-161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM444 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM441 1577q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 
-38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17 t-71.5 
37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM518 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 
-71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM901 1718 q0 60 35 
98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 
23.5t-31 74.5z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1210" d="M-121 0l783 1464h274l166 
-1464h-234l-41 406h-485l-209 -406h-254zM446 614h365q-40 416 -45.5 503.5t-5.5 
139.5q-55 -139 -142 -307zM568 1573q0 103 65 164.5t168 61.5q104 0 171 -60.5t67 
-163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164zM697 1573 q0 -49 26.5 
-76.5t77.5 -27.5q47 0 77 27.5t30 76.5q0 50 -30 78.5t-77 28.5q-45 0 -74.5 
-28.5t-29.5 -78.5z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1753" d="M-121 0l930 1462h1020l-43 
-205h-539l-84 -395h504l-43 -200h-502l-98 -459h539l-43 -203h-777l86 
406h-432l-256 -406h-262zM528 614h344l138 643h-82z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1225" d="M135 545q0 260 105.5 483t281.5 
339t402 116q217 0 389 -92l-94 -195q-63 34 -134 58t-161 24q-154 0 -275 
-89t-193.5 -259.5t-72.5 -374.5q0 -180 82.5 -275.5t243.5 -95.5q141 0 329 
68v-205q-180 -67 -374 -67q-248 0 -388.5 148.5t-140.5 416.5zM367 -342 q47 -14 96 
-14q137 0 137 96q0 40 -35 61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 
-101q0 -106 -82 -167t-224 -61q-64 0 -118 15v135z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 
-205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM526 
1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 
-205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM633 1579v25q97 
108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xca;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 
-205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM417 
1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 
178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1077" d="M70 0l309 1462h776l-43 
-205h-539l-84 -395h502l-41 -203h-504l-96 -456h539l-43 -203h-776zM479 1718q0 60 
35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 
23.5t-31 74.5zM862 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 
-35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 
-1462h-235zM253 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 
155.5z" />
+<glyph unicode="&#xcd;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 
-1462h-235zM415 1579v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 
-147.5h-156z" />
+<glyph unicode="&#xce;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 
-1462h-235zM160 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xcf;" horiz-adv-x="608" d="M70 0l311 1462h235l-311 
-1462h-235zM243 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 
-102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM626 1718q0 60 35 98t98 38q48 0 76.5 
-23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1374" d="M53 623l45 200h144l137 
639h369q271 0 417 -145t146 -424q0 -271 -100 -473t-291 -311t-449 -109h-401l129 
623h-146zM348 201h135q177 0 309 86t202.5 242t70.5 356q0 184 -88 280.5t-256 
96.5h-146l-94 -439h285l-45 -200h-283z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1491" d="M68 0l309 1462h268l399 -1149h7q6 
54 31 192.5t40 203.5l160 753h219l-309 -1462h-260l-410 1163h-6l-10 -69q-24 -149 
-35.5 -212.5t-183.5 -881.5h-219zM582 1577q57 285 256 285q46 0 85 -17.5t72.5 
-38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137 q-66 -285 -260 -285q-45 0 -82.5 
17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5zM652 1886v21h245q47 -154 132 -303v-25h-144q-65 63 -132 
151.5t-101 155.5z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5zM787 1579v25q97 108 225 303h264v-19q-54 -66 -158 
-161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5zM555 1579v25q138 128 201 195.5t90 107.5h248q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5zM543 1577q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 
-17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 
37.5t-65.5 37.5t-63.5 17q-38 0 [...]
+<glyph unicode="&#xd6;" horiz-adv-x="1485" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q251 0 390.5 -149t139.5 -414q0 -279 -95 -497t-261.5 -331.5t-386.5 
-113.5q-259 0 -401 149.5t-142 413.5zM383 545q0 -173 81.5 -267t227.5 -94q138 0 
248.5 95.5t172 265t61.5 375.5q0 170 -79 265t-223 95 q-138 0 -250 -96t-175.5 
-266.5t-63.5 -372.5zM623 1718q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 
-35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM1006 1718q0 60 35 98t98 38q48 0 
76.5 -23.5t28.5 -71.5q0 [...]
+<glyph unicode="&#xd7;" d="M147 1034l125 125l312 -309l313 309l127 -123l-315 
-313l311 -313l-123 -123l-313 309l-312 -307l-122 123l307 311z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1485" d="M109 18l129 160q-103 138 -103 
365q0 267 98.5 487.5t269.5 337.5t388 117q189 0 317 -94l119 149l133 -104l-133 
-166q94 -130 94 -348q0 -279 -95 -497t-261.5 -331.5t-386.5 -113.5q-193 0 -318 
83l-118 -149zM377 545q0 -88 24 -164l668 836q-80 65 -197 65 q-141 0 -253 
-93t-177 -265t-65 -379zM500 238q75 -56 194 -56q139 0 250.5 95.5t173.5 264.5t62 
378q0 88 -19 143z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 
901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 
80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 
-335.5 106t-118.5 305zM619 1886v21h245q47 -154 132 -303v-25h-144 q-65 63 -132 
151.5t-101 155.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 
901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 
80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 
-335.5 106t-118.5 305zM791 1579v25q97 108 225 303h264v-19 q-54 -66 -158 
-161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 
901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 
80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 
-335.5 106t-118.5 305zM536 1579v25q138 128 201 195.5t90 107.5h248 q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1399" d="M152 391q0 83 20 170l193 
901h237l-192 -905q-21 -88 -21 -158q0 -102 59.5 -158.5t180.5 -56.5q145 0 230 
80.5t124 261.5l199 936h237l-202 -956q-56 -267 -208 -396.5t-403 -129.5q-217 0 
-335.5 106t-118.5 305zM602 1718q0 60 35 98t98 38q48 0 76.5 -23.5 t28.5 -71.5q0 
-65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM985 1718q0 60 35 98t98 38q48 
0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 
669h266l-623 -913l-114 -549h-238l119 553zM610 1579v25q97 108 225 
303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xde;" horiz-adv-x="1174" d="M70 0l309 1462h237l-51 
-243h97q227 0 344.5 -101t117.5 -301q0 -243 -166.5 -377.5t-476.5 -134.5h-108l-66 
-305h-237zM414 506h96q176 0 274.5 78.5t98.5 226.5q0 109 -59.5 158t-180.5 
49h-121z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1266" d="M-258 -276q61 -21 113 -21q65 0 
106.5 43.5t63.5 147.5l262 1234q48 231 173 333t349 102q188 0 292.5 -80t104.5 
-215q0 -169 -179 -299q-118 -87 -148.5 -119.5t-30.5 -67.5q0 -44 74 -101q107 -84 
143 -127t55 -92.5t19 -109.5q0 -172 -116 -272t-314 -100 q-182 0 -283 65v201q126 
-86 252 -86q105 0 164 44t59 124q0 48 -23.5 85t-111.5 107q-82 64 -121 121.5t-39 
126.5q0 75 44.5 139t135.5 124q98 66 138.5 112t40.5 98q0 65 -47 101t-132 36q-210 
0 -262 -239l-264 -1260 [...]
+<glyph unicode="&#xe0;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM470 1548v21h245q47 -154 132 
-303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM598 1241v25q97 108 225 303h264v-19q-54 -66 
-158 -161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM351 1241v25q138 128 201 195.5t90 
107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM344 1239q57 285 256 285q46 0 85 -17.5t72.5 
-38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 
17t-71.5 37.5t-65.5 37.5t-63.5 [...]
+<glyph unicode="&#xe4;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM425 1380q0 60 35 98t98 38q48 0 76.5 
-23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM808 1380q0 
60 35 98t98 38q48 0 76.5 -23.5t28.5 [...]
+<glyph unicode="&#xe5;" horiz-adv-x="1186" d="M94 367q0 202 69.5 378t191.5 
278.5t268 102.5q97 0 167 -45.5t109 -132.5h10l62 158h180l-236 -1106h-182l21 
176h-6q-158 -196 -349 -196q-141 0 -223 101.5t-82 285.5zM332 373q0 -102 40.5 
-152.5t112.5 -50.5q82 0 161 77.5t130 207.5t51 284q0 88 -47 141.5 t-123 53.5q-85 
0 -160 -77t-120 -209.5t-45 -274.5zM517 1464q0 103 65 164.5t168 61.5q104 0 171 
-60.5t67 -163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 164zM646 1464q0 
-49 26.5 -76.5t77.5 -27.5q47 0  [...]
+<glyph unicode="&#xe6;" horiz-adv-x="1726" d="M94 367q0 201 69 378t188.5 
279t260.5 102q88 0 152 -43.5t108 -134.5h9l63 158h148l-25 -117q51 63 131 100t180 
37q140 0 220.5 -76.5t80.5 -201.5q0 -182 -166.5 -284.5t-474.5 -102.5h-45l-4 
-60q0 -117 60.5 -177t175.5 -60q125 0 305 84v-189q-175 -79 -344 -79 q-222 0 -305 
137l-23 -117h-151l20 176h-8q-85 -106 -165.5 -151t-174.5 -45q-134 0 -209.5 
103t-75.5 284zM332 373q0 -105 37 -154t96 -49q85 0 162.5 80.5t125.5 215.5t48 
267q0 91 -38.5 146t-113.5 55q-85 0 [...]
+<glyph unicode="&#xe7;" horiz-adv-x="954" d="M94 389q0 207 73.5 376.5t206.5 
265t302 95.5q164 0 297 -61l-70 -184q-122 53 -221 53q-150 0 -250 -153.5t-100 
-379.5q0 -111 56 -171t155 -60q74 0 138.5 22t129.5 54v-195q-140 -71 -305 
-71q-196 0 -304 106t-108 303zM197 -342q47 -14 96 -14q137 0 137 96 q0 40 -35 
61.5t-104 30.5l98 168h146l-50 -96q72 -25 104 -67t32 -101q0 -106 -82 -167t-224 
-61q-64 0 -118 15v135z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 
263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 
-102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 
-44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 
294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM436 
1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 155.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 
263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 
-102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 
-44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 
294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM557 
1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xea;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 
263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 
-102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 
-44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 
294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM320 
1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 
178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1075" d="M94 401q0 198 77.5 368.5t210 
263.5t296.5 93q161 0 250.5 -72.5t89.5 -205.5q0 -182 -166.5 -284.5t-474.5 
-102.5h-43l-2 -31v-29q0 -111 56.5 -174t168.5 -63q72 0 143 19t168 65v-187q-96 
-44 -176.5 -62.5t-179.5 -18.5q-197 0 -307.5 111t-110.5 310zM362 633h29 q188 0 
294 53.5t106 151.5q0 51 -32 79.5t-95 28.5q-96 0 -180.5 -86t-121.5 -227zM388 
1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 
0 -78 23.5t-31 74.5zM771 1380q0 6 [...]
+<glyph unicode="&#xec;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236zM159 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 151.5t-101 
155.5z" />
+<glyph unicode="&#xed;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236zM308 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 
-147.5h-156z" />
+<glyph unicode="&#xee;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236zM64 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xef;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236zM142 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 
-102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM525 1380q0 60 35 98t98 38q48 0 76.5 
-23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1174" d="M80 389q0 162 65.5 299t184.5 
215t266 78q96 0 168 -38.5t113 -108.5h6q-10 243 -133 383l-250 -142l-72 129l219 
121q-44 41 -135 96l106 152q129 -72 209 -146l250 138l70 -127l-217 -121q155 -205 
155 -512q0 -255 -73 -444.5t-204 -285t-312 -95.5q-197 0 -306.5 107 t-109.5 
302zM317 377q0 -104 49 -159.5t142 -55.5q92 0 161.5 59.5t108.5 159t39 205.5q0 97 
-52 155t-144 58q-91 0 -160.5 -56t-106.5 -153.5t-37 -212.5z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1208" d="M47 0l236 1106h184l-21 -205h9q83 
118 171 171.5t191 53.5q134 0 207.5 -76t73.5 -216q0 -69 -23 -181l-137 
-653h-236l142 672q18 90 18 131q0 131 -129 131q-72 0 -142 -57t-126 -164.5t-84 
-243.5l-98 -469h-236zM363 1239q57 285 256 285q46 0 85 -17.5t72.5 -38 t63.5 
-38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 
37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 -83.5h-137z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5zM444 1548v21h245q47 -154 132 -303v-25h-144q-65 63 -132 
151.5t-101 155.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5zM580 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5t-175 
-147.5h-156z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5zM341 1241v25q138 128 201 195.5t90 107.5h248q38 -99 174 
-303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5zM328 1239q57 285 256 285q46 0 85 -17.5t72.5 -38t63.5 -38t59 
-17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 -285q-45 0 -82.5 17t-71.5 
37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27. [...]
+<glyph unicode="&#xf6;" horiz-adv-x="1174" d="M94 408q0 199 71.5 365t200.5 
258.5t298 92.5q195 0 305 -116t110 -316q0 -202 -73 -367.5t-200.5 -254t-293.5 
-88.5q-192 0 -305 114.5t-113 311.5zM332 403q0 -111 49.5 -170t146.5 -59q90 0 162 
68t112 190.5t40 269.5q0 107 -49 167.5t-140 60.5q-93 0 -166.5 -71.5 t-114 
-194t-40.5 -261.5zM409 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 
-35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM792 1380q0 60 35 98t98 38q48 0 
76.5 -23.5t28.5 -71.5q0 -65 -35.5 [...]
+<glyph unicode="&#xf7;" d="M117 631v180h936v-180h-936zM459 373q0 64 31.5 
99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 -34.5 -100.5t-92.5 -36.5t-91.5 
35.5t-33.5 101.5zM459 1071q0 64 31.5 99.5t93.5 35.5t94.5 -36t32.5 -99q0 -64 
-34.5 -100.5t-92.5 -36.5t-91.5 35.5t-33.5 101.5z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1174" d="M51 6l115 141q-70 104 -70 261q0 
200 70.5 365t199.5 258t298 93q136 0 239 -61l86 108l125 -96l-100 -117q63 -100 63 
-258q0 -208 -74 -376t-200.5 -255t-288.5 -87q-137 0 -235 59l-105 -131zM324 426q0 
-39 8 -74l442 549q-45 35 -121 35q-141 0 -235 -145.5 t-94 -364.5zM408 201q41 -33 
120 -33q89 0 163 66.5t116.5 184t42.5 257.5q0 45 -6 67z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 
123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 
162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 
-54.5q-134 0 -207 76t-73 218zM446 1548v21h245q47 -154 132 -303v-25 h-144q-65 63 
-132 151.5t-101 155.5z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 
123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 
162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 
-54.5q-134 0 -207 76t-73 218zM623 1241v25q97 108 225 303h264v-19 q-54 -66 -158 
-161.5t-175 -147.5h-156z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 
123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 
162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 
-54.5q-134 0 -207 76t-73 218zM370 1241v25q138 128 201 195.5t90 107.5 h248q38 
-99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 -178h-164z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1208" d="M111 274q0 63 12 124.5t24 
123.5l123 584h236l-129 -610q-31 -141 -31 -193q0 -133 127 -133q72 0 143 57t126 
162.5t85 247.5l99 469h233l-233 -1106h-185l21 205h-8q-82 -116 -171 -170.5t-192 
-54.5q-134 0 -207 76t-73 218zM432 1380q0 60 35 98t98 38 q48 0 76.5 -23.5t28.5 
-71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM815 1380q0 60 35 
98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 
23.5t-31 74.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 
134 43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 
215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 
19v188zM501 1241v25q97 108 225 303h264v-19q-54 -66 -158 -161.5 t-175 
-147.5h-156z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1200" d="M-55 -492l432 2048h235q-48 -223 
-73 -339t-76 -291h8q155 200 328 200q144 0 224.5 -102t80.5 -287q0 -204 -68 
-381.5t-184.5 -276.5t-265.5 -99q-94 0 -165 45.5t-114 130.5h-8q-7 -91 -25 
-185l-96 -463h-233zM369 373q0 -98 46 -150.5t132 -52.5t159.5 77t116.5 209 t43 
277q0 100 -41 150.5t-118 50.5q-84 0 -163 -81t-127 -213.5t-48 -266.5z" />
+<glyph unicode="&#xff;" horiz-adv-x="1004" d="M-170 -285q75 -16 125 -16q74 0 
134 43.5t124 155.5l51 92l-164 1116h232l63 -531q9 -62 16 -174.5t7 -181.5h6q86 
215 135 313l293 574h254l-688 -1280q-90 -165 -196 -241.5t-249 -76.5q-76 0 -143 
19v188zM323 1380q0 60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5 q0 -65 -35.5 
-102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM706 1380q0 60 35 98t98 38q48 0 76.5 
-23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5z" />
+<glyph unicode="&#x131;" horiz-adv-x="563" d="M47 0l236 1106h235l-235 
-1106h-236z" />
+<glyph unicode="&#x152;" horiz-adv-x="1798" d="M135 543q0 267 98.5 487.5t269.5 
337.5t388 117q145 0 223 -23h760l-43 -205h-539l-84 -395h504l-43 -200h-504l-96 
-459h539l-43 -203h-717q-84 -20 -170 -20q-259 0 -401 149.5t-142 413.5zM383 545q0 
-173 81.5 -267t227.5 -94q74 0 139 27l222 1038q-68 31 -181 31 q-138 0 -250 
-96t-175.5 -266.5t-63.5 -372.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="1788" d="M94 410q0 206 73.5 372.5t201 
254t293.5 87.5q237 0 335 -192q73 91 174 142.5t226 51.5q159 0 246.5 -74.5t87.5 
-203.5q0 -183 -165.5 -285t-471.5 -102h-47l-3 -60q0 -111 56.5 -174t169.5 -63q69 
0 134.5 17.5t176.5 66.5v-189q-91 -43 -175 -61t-181 -18 q-120 0 -212.5 46t-140.5 
138q-137 -182 -374 -182q-186 0 -295 115.5t-109 312.5zM332 412q0 -116 48.5 
-177t139.5 -61q143 0 229.5 146.5t86.5 381.5q0 111 -49.5 169.5t-139.5 58.5q-87 0 
-157.5 -64t-114 -186.5t-4 [...]
+<glyph unicode="&#x178;" horiz-adv-x="1092" d="M186 1462h242l154 -669l432 
669h266l-623 -913l-114 -549h-238l119 553zM440 1718q0 60 35 98t98 38q48 0 76.5 
-23.5t28.5 -71.5q0 -65 -35.5 -102t-93.5 -37q-47 0 -78 23.5t-31 74.5zM823 1718q0 
60 35 98t98 38q48 0 76.5 -23.5t28.5 -71.5q0 -65 -35.5 -102 t-93.5 -37q-47 0 -78 
23.5t-31 74.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1135" d="M354 1241v25q138 128 201 
195.5t90 107.5h248q38 -99 174 -303v-25h-152q-76 63 -161 178q-131 -110 -236 
-178h-164z" />
+<glyph unicode="&#x2da;" horiz-adv-x="1182" d="M541 1464q0 103 65 164.5t168 
61.5q104 0 171 -60.5t67 -163.5q0 -104 -66 -165.5t-172 -61.5t-169.5 61t-63.5 
164zM670 1464q0 -49 26.5 -76.5t77.5 -27.5q47 0 77 27.5t30 76.5q0 50 -30 
78.5t-77 28.5q-45 0 -74.5 -28.5t-29.5 -78.5z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1135" d="M326 1239q57 285 256 285q46 0 
85 -17.5t72.5 -38t63.5 -38t59 -17.5q40 0 65 26.5t48 86.5h137q-66 -285 -260 
-285q-45 0 -82.5 17t-71.5 37.5t-65.5 37.5t-63.5 17q-38 0 -63 -27.5t-43 
-83.5h-137z" />
+<glyph unicode="&#x2000;" horiz-adv-x="953" />
+<glyph unicode="&#x2001;" horiz-adv-x="1907" />
+<glyph unicode="&#x2002;" horiz-adv-x="953" />
+<glyph unicode="&#x2003;" horiz-adv-x="1907" />
+<glyph unicode="&#x2004;" horiz-adv-x="635" />
+<glyph unicode="&#x2005;" horiz-adv-x="476" />
+<glyph unicode="&#x2006;" horiz-adv-x="317" />
+<glyph unicode="&#x2007;" horiz-adv-x="317" />
+<glyph unicode="&#x2008;" horiz-adv-x="238" />
+<glyph unicode="&#x2009;" horiz-adv-x="381" />
+<glyph unicode="&#x200a;" horiz-adv-x="105" />
+<glyph unicode="&#x2010;" horiz-adv-x="649" d="M47 446l45 203h502l-45 
-203h-502z" />
+<glyph unicode="&#x2011;" horiz-adv-x="649" d="M47 446l45 203h502l-45 
-203h-502z" />
+<glyph unicode="&#x2012;" horiz-adv-x="649" d="M47 446l45 203h502l-45 
-203h-502z" />
+<glyph unicode="&#x2013;" horiz-adv-x="983" d="M47 453l43 194h838l-43 
-194h-838z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1966" d="M47 453l43 194h1821l-43 
-194h-1821z" />
+<glyph unicode="&#x2018;" horiz-adv-x="393" d="M119 983q34 76 106.5 209t159.5 
270h176q-122 -286 -199 -501h-237z" />
+<glyph unicode="&#x2019;" horiz-adv-x="393" d="M115 961q43 95 106 255t92 
246h238l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178z" />
+<glyph unicode="&#x201a;" horiz-adv-x="530" d="M-102 -264q105 238 200 
502h236l8 -23q-108 -233 -266 -479h-178z" />
+<glyph unicode="&#x201c;" horiz-adv-x="803" d="M119 983q34 76 106.5 209t159.5 
270h176q-122 -286 -199 -501h-237zM526 983q84 190 267 479h176q-122 -286 -199 
-501h-235z" />
+<glyph unicode="&#x201d;" horiz-adv-x="803" d="M115 961q43 95 106 255t92 
246h238l8 -22q-37 -83 -110.5 -217.5t-155.5 -261.5h-178zM522 961q51 114 109 
261t90 240h237l9 -22q-98 -220 -269 -479h-176z" />
+<glyph unicode="&#x201e;" horiz-adv-x="938" d="M-102 -264q105 238 200 
502h236l8 -23q-108 -233 -266 -479h-178zM307 -264q120 281 199 502h235l9 -23q-92 
-206 -267 -479h-176z" />
+<glyph unicode="&#x2022;" horiz-adv-x="756" d="M152 684q0 156 83.5 252t223.5 
96q100 0 158.5 -54.5t58.5 -168.5q0 -156 -82 -252t-227 -96q-102 0 -158.5 
57.5t-56.5 165.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1634" d="M834 94q0 83 47 132.5t131 
49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 -97.5 
35.5t-31.5 87.5zM594 94q0 83 47 132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 
-47.5 -129.5t-124.5 -51.5q-66 0 -97.5 35.5t-31.5 87.5zM293 94 q0 83 47 
132.5t131 49.5q56 0 89.5 -31.5t33.5 -92.5q0 -78 -47.5 -129.5t-124.5 -51.5q-66 0 
-97.5 35.5t-31.5 87.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="381" />
+<glyph unicode="&#x2039;" horiz-adv-x="621" d="M80 549v24l395 422l135 
-118l-288 -334l153 -367l-178 -76z" />
+<glyph unicode="&#x203a;" horiz-adv-x="621" d="M10 211l289 334l-154 366l179 
76l217 -448v-25l-396 -422z" />
+<glyph unicode="&#x2044;" horiz-adv-x="262" d="M-510 0l1085 1462h195l-1083 
-1462h-197z" />
+<glyph unicode="&#x205f;" horiz-adv-x="476" />
+<glyph unicode="&#x2074;" horiz-adv-x="745" d="M70 762l26 137l477 569h197l-121 
-563h123l-29 -143h-122l-39 -176h-183l39 176h-368zM268 905h199l52 221l34 129q-32 
-51 -98 -131z" />
+<glyph unicode="&#x20ac;" d="M51 492l33 155h139q15 95 27 139h-137l32 
154h148q92 260 255.5 401.5t371.5 141.5q88 0 164.5 -22t156.5 -77l-102 -180q-54 
34 -107 56t-119 22q-118 0 -214.5 -87t-161.5 -255h387l-33 -154h-402q-18 -67 -28 
-139h340l-33 -155h-319q0 -161 60.5 -234.5t195.5 -73.5 q120 0 258 60v-203q-129 
-61 -306 -61q-216 0 -330 130t-114 382h-162z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1534" d="M113 
1335v127h540v-127h-198v-594h-146v594h-196zM709 741v721h215l170 -534l182 
534h205v-721h-146v418l4 121h-6l-184 -539h-119l-178 539h-6l4 -115v-424h-141z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 
1105h1105v-1105h-1105v1105z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1257" d="M-225 -279q64 -20 114 -20q134 
0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 
211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 
-178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190zM739 0l236 
1106h235l-235 -1106h-236zM1022 1378q0 68 39 110t110 42q53 0 86 -26.5t33 -80.5q0 
-71 -40 -112t-105 -41q-53 0 -88 26t-35 82z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1257" d="M-225 -279q64 -20 114 -20q134 
0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 
211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h229l-37 
-178h-229l-223 -1053q-40 -189 -131 -278t-238 -89q-90 0 -149 23 v190zM739 0l330 
1556h235l-331 -1556h-234z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1931" d="M-225 -279q64 -20 114 -20q133 
0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 
211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 
96q44 197 133 281t256 84q117 0 213 -43l-62 -176q-74 28 -135 28 q-71 0 -111.5 
-43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 
-279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 
1022h-438l-223 -1053q-40 -189 -131 -278t-23 [...]
+<glyph unicode="&#xfb04;" horiz-adv-x="1931" d="M-225 -279q64 -20 114 -20q133 
0 177 205l217 1022h-179l21 106l194 76l21 92q44 198 134.5 281.5t256.5 83.5q115 0 
211 -43l-61 -176q-74 28 -136 28q-69 0 -110.5 -43t-63.5 -141l-18 -86h438l23 
96q44 197 133 281t256 84q117 0 213 -43l-62 -176q-74 28 -135 28 q-71 0 -111.5 
-43t-62.5 -141l-18 -86h229l-39 -178h-227l-223 -1053q-43 -192 -133.5 
-279.5t-235.5 -87.5q-95 0 -149 23v190q60 -20 114 -20q136 0 176 205l215 
1022h-438l-223 -1053q-40 -189 -131 -278t-23 [...]
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.ttf
new file mode 100755
index 0000000..61d58bf
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.woff
new file mode 100755
index 0000000..611b390
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/fonts/OpenSans-SemiboldItalic-webfont.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/stylesheet.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/stylesheet.css
new file mode 100755
index 0000000..8a9f79b
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/open-sans/stylesheet.css
@@ -0,0 +1,136 @@
+/***** Font Definition for Open Sans. This stylesheet comes from 
qrohlf.com/posts/better-opensans *****/
+
+/* Regular */
+@font-face {
+    font-family: 'Open Sans';
+    
+    src: url('fonts/OpenSans-Regular-webfont.eot');
+    src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-Regular-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') 
format('svg');
+    font-weight: normal;
+    font-weight: 400;
+    font-style: normal;
+
+}
+
+/* Italic */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Italic-webfont.eot');
+    src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-Italic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
+    font-weight: normal;
+    font-weight: 400;
+    font-style: italic;
+
+}
+
+/* Light */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Light-webfont.eot');
+    src: url('fonts/OpenSans-Light-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-Light-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Light-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
+    font-weight: 200;
+    font-style: normal;
+
+}
+
+/* Light Italic */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-LightItalic-webfont.eot');
+    src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') 
format('svg');
+    font-weight: 200;
+    font-style: italic;
+
+}
+
+/* Semibold */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Semibold-webfont.eot');
+    src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-Semibold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') 
format('svg');
+    font-weight: 500;
+    font-style: normal;
+
+}
+
+/* Semibold Italic */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot');
+    src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
+         
url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') 
format('svg');
+    font-weight: 500;
+    font-style: italic;
+
+}
+
+/* Bold */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Bold-webfont.eot');
+    src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-Bold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
+    font-weight: bold;
+    font-weight: 700;
+    font-style: normal;
+
+}
+
+/* Bold Italic */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-BoldItalic-webfont.eot');
+    src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') 
format('svg');
+    font-weight: bold;
+    font-weight: 700;
+    font-style: italic;
+
+}
+
+/* Extra Bold */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-ExtraBold-webfont.eot');
+    src: url('fonts/OpenSans-ExtraBold-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-ExtraBold-webfont.woff') format('woff'),
+         url('fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
+         url('fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') 
format('svg');
+    font-weight: 900;
+    font-style: normal;
+
+}
+
+/* Extra Bold Italic */
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-ExtraBoldItalic-webfont.eot');
+    src: url('fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') 
format('embedded-opentype'),
+         url('fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
+         url('fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
+         
url('fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic') 
format('svg');
+    font-weight: 900;
+    font-style: italic;
+
+}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Black.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Black.eot
new file mode 100755
index 0000000..b6f111e
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Black.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Bold.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Bold.eot
new file mode 100755
index 0000000..94d75e9
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Bold.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-ExtraLight.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-ExtraLight.eot
new file mode 100755
index 0000000..3ab1eec
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-ExtraLight.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Light.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Light.eot
new file mode 100755
index 0000000..8b580d3
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Light.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Regular.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Regular.eot
new file mode 100755
index 0000000..f731543
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Regular.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Semibold.eot
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Semibold.eot
new file mode 100755
index 0000000..13c0f8e
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/EOT/SourceSerifPro-Semibold.eot
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/LICENSE.txt
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/LICENSE.txt
new file mode 100755
index 0000000..6cb6fac
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/LICENSE.txt
@@ -0,0 +1,93 @@
+Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with 
Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of 
Adobe Systems Incorporated in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+
+This license is copied below, and is also available with a FAQ at: 
http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Black.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Black.otf
new file mode 100755
index 0000000..d63bde7
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Black.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Bold.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Bold.otf
new file mode 100755
index 0000000..1142950
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Bold.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-ExtraLight.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-ExtraLight.otf
new file mode 100755
index 0000000..9cd91d8
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-ExtraLight.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Light.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Light.otf
new file mode 100755
index 0000000..0ba7bf7
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Light.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Regular.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Regular.otf
new file mode 100755
index 0000000..ad044c7
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Regular.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Semibold.otf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Semibold.otf
new file mode 100755
index 0000000..76a41f7
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/OTF/SourceSerifPro-Semibold.otf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/README.md
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/README.md
new file mode 100755
index 0000000..a3cf79e
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/README.md
@@ -0,0 +1,18 @@
+# Source Serif Pro
+
+Source Serif Pro is a set of OpenType fonts to complement the [Source Sans 
Pro](https://github.com/adobe-fonts/source-sans-pro) family. 
+In addition to a functional OpenType font, this open source project provides 
all of the source files that were used to build this OpenType font by using the 
AFDKO makeotf tool.
+
+## Installation instructions
+
+* [Mac OS X](http://support.apple.com/kb/HT2509)
+* 
[Windows](http://windows.microsoft.com/en-us/windows-vista/install-or-uninstall-fonts)
+* [Linux/Unix-based 
systems](https://github.com/adobe-fonts/source-code-pro/issues/17#issuecomment-8967116)
+
+## Getting Involved
+
+Send suggestions for changes to the Source Serif OpenType font project 
maintainer, [Frank 
Grießhammer](mailto:opensourcefonts@adobe.com?subject=[GitHub] Source Serif 
Pro), for consideration.
+
+## Further information
+
+For information about the design and background of Source Serif, please refer 
to the [official font readme 
file](http://htmlpreview.github.io/?https://github.com/adobe-fonts/source-serif-pro/blob/master/SourceSerifProReadMe.html).
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/ReadMe.html
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/ReadMe.html
new file mode 100755
index 0000000..1aeb775
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/ReadMe.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <title>Read Me File for Adobe® OpenType® Fonts</title>
+       <meta charset="utf-8" />
+</head>
+<body bgcolor="white" link="#ce0000" alink="#ce0000" vlink="#9c6363">
+               <h2><font color="#333333"
+face="verdana,geneva,arial">Adobe&reg; OpenType&reg; Fonts</font></h2>
+               <p><font size="2" face="verdana,geneva,arial">Thank
+you for licensing Adobe OpenType fonts. In order to ensure that you
+have the most up-to-date product information, Adobe has posted <a
+href="http://www.adobe.com/type/browser/OTReadMe.html";>an OpenType
+Read Me file</a> on the Adobe web site that contains information such
+as minimum system requirements, technical support contact information
+and software installation notes. We have also posted <a
+href="http://www.adobe.com/type/browser/pdfs/OTGuide.pdf";>an OpenType
+User's Guide</a> in PDF format on the Adobe web site that can be
+viewed online and downloaded to your computer. <P>If you have
+licensed an Adobe OpenType Pro font, there may be additional PDF
+documents, such as a specimen book, a glyph complement showing, and a
+typeface-specific Read Me file, available on the typeface&#146;s
+product pages on the Adobe web site. These additional files may be
+viewed online or downloaded to your computer.<P>To get you started
+quickly, below are links to localized installation instructions for
+your fonts.
+
+<h4>Installation Instructions</h4><hr>
+<p lang=en><b>English</b><br>
+Instructions for installing this font can be found online at <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=fr><b>French / Fran&#231;ais</b><br>
+Le mode d'installation de cette police de caract&#232;re se trouve en
+ligne &#224; <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=de><b>German / Deutsch</b><br>
+Die Anweisungen zur Installation dieser Schriftart finden Sie online
+unter <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=it><b>Italian / Italiano</b><br>
+Le istruzioni per l'installazione di questo font sono disponibili
+online all'indirizzo <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=es><b>Spanish / Espa&#241;ol</b><br>
+Las instrucciones para instalar esta fuente se pueden encontrar
+online en <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=nl><b>Dutch / Hollands</b><br>
+De instructies voor de installatie van dit lettertype vindt u op <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p><b>Swedish / Svenska</b><br>
+Anvisningar f&#246;r hur det h&#228;r teckensnittet installeras finns
+online p&#229; <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p><b>Norwegian / Norsk</b><br>
+Instruksjoner for installering av skrifttypen finnes online p&#229;
+<a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p><b>Finnish / Suomi</b><br>
+Ohjeet t&#228;m&#228;n fontin asentamiseen l&#246;ytyv&#228;t
+osoitteesta <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p><b>Danish / Dansk</b><br>
+Du finder en vejledning i installation af denne skrifttype online
+p&#229; adressen <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>.</p>
+<p lang=ja><b>Japanese / 日本語</b><br>
+このフォントをインストールする手順は、オンラインで <a
+href="http://www.adobe.com/type/browser/fontinstall/instructions_main.html";>http://www.adobe.com/type/browser/fontinstall/instructions_main.html</a>
+を参照してください。</p>
+</body>
+</html>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/SourceSerifProReadMe.html
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/SourceSerifProReadMe.html
new file mode 100755
index 0000000..da1f9e5
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/SourceSerifProReadMe.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<!-- Read-me Template Version 1.003 Jan 145 2013 -->
+<html>
+  <head>
+    <meta http-equiv="content-type" content="text/html" />
+    <meta name="title" content="Read Me File for Source Serif Pro" />
+    <meta name="description" content="Read Me file for Source Serif Pro ..." />
+    <title>Source Serif Pro Read Me</title>
+    <style type="text/css" media="screen">
+       /*********************** fonts ************************/
+       body {font-family: sans-serif; font-weight: normal; font-size: 10pt; 
color: #000000; margin: 0px; background-color: white;} 
+       h1 {display:inline; font-family: sans-serif; font-weight: normal; 
color: #999999;} 
+       h2 {display:inline; font-size: 10pt; font-family: sans-serif; 
font-weight: bold; color: #666666;}
+       hFooter  {font-family: sans-serif; font-weight: normal; font-size: 7pt; 
color: #000000; margin: 0px; background-color: white;} 
+       /*********************** links ************************/ 
+       a:link {color:#004477; text-decoration:none; margin: 0px 0px 0px 0px;} 
+       a:visited {color:#6d7f8e; text-decoration:none; margin: 0px 0px 0px 
0px;} 
+       a:hover {color:#ff0000; text-decoration:none; margin: 0px 0px 0px 0px;} 
+       /*********************** div tags ************************/ 
+       #page {float:left; width:700px; margin:20px 20px 20px 20px;} 
+       #subTitle {background-color:#e3e3e3; float:left; width:700px; 
border-bottom:solid #999999 1.0pt; border-bottom-alt:solid #999999 .5pt; 
padding:2px 0px 4px 0px;} 
+       #title {background-color:#e3e3e3; float:left; width:700px; 
border-bottom:solid #999999 1.0pt; border-bottom-alt:solid #999999 .5pt; 
padding:2px 0px 4px 0px;} 
+       #description {float:left; width:700px; padding:15px 0px 15px 0px;} 
.style6 {color: #666666} .style7 {color: #FF0000}</style>
+  </head>
+  <body>
+    <div id="page">
+    <h1>
+      <span style="font-size:16pt">Source&#153; Serif Pro Read Me</span>
+    </h1>
+    <br />
+    <div id="description">
+      <p>This document contains late-breaking product information, updates, 
and troubleshooting tips.
+      <br />
+      <br />
+      <a href="#A1">Minimum system requirements and font installation 
instructions</a>
+      <br />
+      <a href="#A2A">Font versions</a>
+      <br />
+      <a href="#A2">Family information</a>
+      <br />
+      <a href="#A3">Release Notes</a>
+      <br />
+      <a href="#A8">Known issues</a>
+      <br />
+      <a href="#A9">Customer care</a>
+      <br />
+      <a href="#A10">Other resources</a>
+      <br />
+      <a href="#A12"></a>
+      <br /></p>
+    </div>
+    <div id="title">
+      <a name="A1" id="A1"></a>
+      <h2>Minimum system requirements and font installation instructions</h2>
+    </div>
+    <div id="description">
+      <p>For information on minimum system requirements and font installation, 
see <span class="style7">
+      <a title="http://www.adobe.com/go/learn_fontinstall_en"; 
href="http://www.adobe.com/go/learn_fontinstall_en";>http://www.adobe.com/go/learn_fontinstall_en</a>.</span></p>
+     </div>
+    <div id="title">
+      <a name="A2A" id=A2A></a>
+      <h2>Font versions</h2>
+    </div>
+    <div id="description">
+      <p>To check that you have the correct font file, compare the font 
version of your font file to the font version provided in the Release Notes 
section below.</p>
+     </div>
+    <div id="title">
+      <h2>
+        <a name="A2" id="A2">Family information</a>
+      </h2>
+    </div>
+    <div id="description">
+    <p>
+      <strong>History</strong>
+    </p>Source Serif Pro is a serif typeface in the transitional style, 
designed to complement Source Sans. Their close companionship is achieved by a 
careful match of letter proportions and typographic color. While designed to 
harmonize with its serif-less counterpart, Source Serif often takes its own 
direction, in part because the two are inspired by different historical 
precedents. Source Serif is loosely based on the work of Pierre Simon Fournier, 
and many idiosyncrasies typical to F [...]
+    <p>
+      <strong>Menu Names And Style Linking</strong>
+    </p>
+<p>In many Windows<sup>&reg;</sup> applications, instead of every font 
appearing on
+the menu, fonts are grouped into style-linked sets, and only the name of
+the base style font  for a set is shown in the menu. The italic and the
+bold weight fonts of the set (if any) are not shown in the font menu,  but can 
still be
+accessed  by selecting the base style font, and then using the italic
+and bold style buttons. In this family, such programs will show only the
+following base style font names in the menu:</p>
+<p>Source Serif Pro<br>
+Source Serif Pro Black<br>
+Source Serif Pro ExtraLight<br>
+Source Serif Pro Light<br>
+Source Serif Pro SemiBold<br></p>
+<p>The other fonts in this family must be selected by choosing a menu name
+and then a style option following the guide below.</p>
+<table border="0">
+<tr> <td>Menu Name</td> <td> </td> <td>plus Style Option... </td> <td> </td> 
<td>selects this font</td> </tr>
+<tr> <td>Source Serif Pro</td> <td> </td> <td>[none]</td> <td> </td> 
<td>Source Serif Pro Regular</td> </tr>
+<tr> <td>Source Serif Pro</td> <td> </td> <td>Bold</td> <td> </td> <td>Source 
Serif Pro Bold</td> </tr>
+<tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr>
+<tr> <td>Source Serif Pro Black</td> <td> </td> <td>[none]</td> <td> </td> 
<td>Source Serif Pro Black</td> </tr>
+<tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr>
+<tr> <td>Source Serif Pro ExtraLight</td> <td> </td> <td>[none]</td> <td> 
</td> <td>Source Serif Pro ExtraLight</td> </tr>
+<tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr>
+<tr> <td>Source Serif Pro Light</td> <td> </td> <td>[none]</td> <td> </td> 
<td>Source Serif Pro Light</td> </tr>
+<tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr>
+<tr> <td>Source Serif Pro SemiBold</td> <td> </td> <td>[none]</td> <td> </td> 
<td>Source Serif Pro Semibold</td> </tr>
+<tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr>
+</table>
+<p>On the Mac OS operating system, although each font appears as a separate 
entry on the
+font menu, users may also select fonts by means of style links.
+Selecting a base style font and then using the style links (as described
+above for Windows applications) enhances cross-platform document compatibility 
with
+many applications, such as Microsoft Word and Adobe<sup>&reg;</sup> 
PageMaker<sup>&reg;</sup> software,
+although it is unnecessary with more sophisticated Adobe applications
+such as recent versions of Illustrator<sup>&reg;</sup>, 
Photoshop<sup>&reg;</sup> or
+InDesign<sup>&reg;</sup> software.</p>
+<p>One should not, however, select a base font which has no style-linked
+variant, and then use the bold or italic styling button. Doing so will
+either have no effect, or result in programmatic bolding or slanting of
+the base font, which will usually produce inferior screen and print
+results.</p>
+</div>
+    <div id="title">
+      <h2>
+        <a name="A3" id="A3">Release Notes</a>
+      </h2>
+    </div>
+    <div id="description"><p>For all fonts of family Source Serif Pro: version 
1.017 created on Tue Sep 16 17:12:36 2014.</p>
+<p>version 1.017 created 2014/09/16</p>
+<ul>
+<li>   Added three more weights: Black, Light, ExtraLight.</li>
+<li>   Added missing L/lcommaaccent (U+013B/C) to all fonts.</li>
+</ul>
+<p>version 1.014 created 2014/04/27</p>
+<ul>
+<li>   First release.</li>
+</ul>
+</div>
+    <div id="title">
+      <h2>
+        <a name="A8" id="A8">Known issues</a>
+      </h2>
+    </div>
+    <div id="description"><ul>    <li>Some glyphs in the font cannot be 
accessed unless you are using an OpenType<sup>&reg;</sup> compatible 
application.
+    </li>
+</ul></div>
+    <div id="title">
+      <h2>
+        <a name="A9" id="A9">Customer care</a>
+      </h2>
+    </div>
+    <div id="description">
+      <p>
+      <strong>Customer Service</strong>
+      <br />Adobe Customer Service provides assistance with product 
information, sales, registration, and other non-technical issues.
+      To find out how to contact Adobe Customer Service, please visit <a 
href="http://www.adobe.com";>Adobe.com</a> for your region or country and click 
on Contact Adobe.</p>
+      <p>
+      <strong>Support Plan Options and Technical Resources</strong>
+      <br />If you require technical assistance for your product, including 
information on free and paid support options and troubleshooting resources, 
more information is available at 
+      <a title="http://www.adobe.com/go/support/"; 
href="http://www.adobe.com/go/support/";>
+        <span 
title="http://www.adobe.com/go/support/";>http://www.adobe.com/go/support/.</span>
+      </a> Outside of North America, go to 
+      <a title="http://www.adobe.com/go/intlsupport/"; 
href="http://www.adobe.com/go/intlsupport/";>
+        <span 
title="http://www.adobe.com/go/intlsupport/";>http://www.adobe.com/go/intlsupport/.</span>
+      </a>Font specific resources include the <a 
href="http://helpx.adobe.com/font-folio-type.html";>Font Folio and Type Product 
Help page</a> and the <a 
href="http://forums.adobe.com/community/typography_fonts";>Adobe Type 
user-to-user forums</a>.</p>
+    </div>
+    <div id="title">
+      <h2>
+        <a name="A10" id="A10">Other resources</a>
+      </h2>
+    </div>
+    <div id="description">
+      <p>
+         <a href="http://www.adobe.com/type";>Adobe Type Showroom</a>
+        <br />
+        <a href="http://www.adobe.com/type/family_readmes.html";>Index page for 
all family Read Me files</a>
+        <br />
+      </p>
+      <p align="left">
+        <br />
+       Adobe, the Adobe Logo, Source, Illustrator, InDesign, PageMaker and 
Photoshop are either registered trademarks or trademarks of Adobe Systems 
Incorporated in the United States and/or other countries. Windows and OpenType 
are either registered trademarks or trademarks of Microsoft Corporation in the 
United States and/or other countries.  Mac, Mac OS and TrueType are trademarks 
of Apple Inc., registered in the U.S. and other countries. All other trademarks 
are the property of their re [...]
+        <br />
+        <hFooter>
+       &copy; 2014 Adobe Systems Incorporated. All rights reserved.<br /><br 
/>created 2014 Sep 24
+        <hFooter>
+      </p>
+    </div>
+    </div>
+  </body>
+</html>
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Black.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Black.ttf
new file mode 100755
index 0000000..bfa258b
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Black.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Bold.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Bold.ttf
new file mode 100755
index 0000000..4e8b429
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Bold.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-ExtraLight.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-ExtraLight.ttf
new file mode 100755
index 0000000..ae8e2ed
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-ExtraLight.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Light.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Light.ttf
new file mode 100755
index 0000000..1fd150b
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Light.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Regular.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Regular.ttf
new file mode 100755
index 0000000..62fedd6
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Regular.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Semibold.ttf
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Semibold.ttf
new file mode 100755
index 0000000..78c178f
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/TTF/SourceSerifPro-Semibold.ttf
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Black.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Black.otf.woff
new file mode 100755
index 0000000..9044ee9
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Black.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Bold.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Bold.otf.woff
new file mode 100755
index 0000000..a907b53
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Bold.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff
new file mode 100755
index 0000000..b990a76
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Light.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Light.otf.woff
new file mode 100755
index 0000000..6d6c4ba
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Light.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Regular.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Regular.otf.woff
new file mode 100755
index 0000000..a6fbe17
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Regular.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Semibold.otf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Semibold.otf.woff
new file mode 100755
index 0000000..6847179
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/OTF/SourceSerifPro-Semibold.otf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Black.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Black.ttf.woff
new file mode 100755
index 0000000..db1b1f6
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Black.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Bold.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Bold.ttf.woff
new file mode 100755
index 0000000..056a5ad
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Bold.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-ExtraLight.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-ExtraLight.ttf.woff
new file mode 100755
index 0000000..53b296d
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-ExtraLight.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Light.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Light.ttf.woff
new file mode 100755
index 0000000..b8de713
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Light.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Regular.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Regular.ttf.woff
new file mode 100755
index 0000000..84f3777
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Regular.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Semibold.ttf.woff
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Semibold.ttf.woff
new file mode 100755
index 0000000..3ba4993
Binary files /dev/null and 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/WOFF/TTF/SourceSerifPro-Semibold.ttf.woff
 differ
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/bower.json
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/bower.json
new file mode 100755
index 0000000..4775f7c
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/bower.json
@@ -0,0 +1,15 @@
+{
+  "name": "source-serif-pro",
+  "version": "1.014",
+  "main": "source-serif-pro.css",
+  "homepage": "https://github.com/adobe-fonts/source-serif-pro";,
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/adobe-fonts/source-serif-pro.git";
+  },
+  "authors": [
+    { "name": "Frank Grießhammer" }
+  ],
+  "description": "Source Serif Pro font family by Adobe",
+  "license": "SIL OFL 1.1"
+}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/source-serif-pro.css
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/source-serif-pro.css
new file mode 100755
index 0000000..697763f
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/fonts/source-serif-pro/source-serif-pro.css
@@ -0,0 +1,65 @@
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 200;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-ExtraLight.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-ExtraLight.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-ExtraLight.otf') format('opentype'),
+         url('TTF/SourceSerifPro-ExtraLight.ttf') format('truetype');
+}
+
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 300;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-Light.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-Light.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-Light.otf') format('opentype'),
+         url('TTF/SourceSerifPro-Light.ttf') format('truetype');
+}
+
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 400;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-Regular.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-Regular.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-Regular.otf') format('opentype'),
+         url('TTF/SourceSerifPro-Regular.ttf') format('truetype');
+}
+
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 600;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-Semibold.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-Semibold.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-Semibold.otf') format('opentype'),
+         url('TTF/SourceSerifPro-Semibold.ttf') format('truetype');
+}
+
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 700;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-Bold.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-Bold.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-Bold.otf') format('opentype'),
+         url('TTF/SourceSerifPro-Bold.ttf') format('truetype');
+}
+
+@font-face{
+    font-family: 'Source Serif Pro';
+    font-weight: 900;
+    font-style: normal;
+    font-stretch: normal;
+    src: url('EOT/SourceSerifPro-Black.eot') format('embedded-opentype'),
+         url('WOFF/OTF/SourceSerifPro-Black.otf.woff') format('woff'),
+         url('OTF/SourceSerifPro-Black.otf') format('opentype'),
+         url('TTF/SourceSerifPro-Black.ttf') format('truetype');
+}
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/guzzle.css_t 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/guzzle.css_t
new file mode 100644
index 0000000..6164129
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/guzzle.css_t
@@ -0,0 +1,1037 @@
+/* Sphinx themes
+-------------------------------------------------- */
+
+body {
+  background-color: #edf0f2;
+  margin: 0;
+  padding: 0;
+  font-family: "Open Sans", Helvetica, Arial, sans-serif;
+  font-size: 16px;
+  color: #333;
+  line-height: 1.5;
+}
+
+#left-column {
+  float: left;
+  position: fixed;
+  height: 100%;
+  border-right: 1px solid #e0e0e0;
+  width: 300px;
+  overflow: auto;
+  background: #fafafa;
+}
+
+#right-column {
+  padding: 20px 0;
+  margin-left: 300px;
+  background-color: #fff;
+}
+
+a.headerlink {
+  visibility: hidden;
+  color: #ddd;
+  padding: 0 4px;
+  text-decoration: none;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+.code-block-caption:hover > a.headerlink {
+  visibility: visible;
+}
+
+h1 > a, h2 > a, h3 > a, h4 > a, h5 > a, h6 > a {
+  color: #5C7C98;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  color: black;
+  font-weight: normal;
+  padding: 0;
+  font-family: "Source Serif Pro", "serif";
+}
+
+h1, h2, h3 {
+  margin-top: 30px;
+  margin-bottom: 20px;
+}
+
+h1 {
+  font-size: 38px;
+  padding: 10px 10px 10px 45px;
+  margin: 20px 0 35px -45px;
+  background-color: aliceblue;
+  width: calc(100% + 90px);
+  border-bottom: 1px solid #D8E4EF;
+}
+
+h2 {
+  font-size: 34px;
+  padding: .2em 0;
+  border-bottom: 1px solid #ddd;
+}
+
+h3 {
+  margin-top: 35px;
+  font-size: 28px;
+}
+
+h4 {
+  margin-top: 30px;
+  font-size: 24px;
+}
+
+h5 {
+  margin-top: 25px;
+  font-size: 20px;
+}
+
+div.clearer {
+  clear: both;
+}
+
+.container-wrapper {
+  padding: 0;
+  position: relative;
+}
+
+div.related {
+  display: none;
+}
+
+p {
+  padding: 0;
+  font-family: inherit;
+  font-size: inherit;
+  color: #333;
+}
+
+code, pre, tt {
+  font-size: 15px;
+  font-family: Consolas, monospace;
+}
+
+code, tt {
+  color: #8D1A38;
+}
+
+tt {
+  padding: 0 2px;
+}
+
+code, pre {
+  line-height: 23px;
+  margin: 20px 0;
+  word-wrap: normal;
+  background-color: #fff;
+}
+
+pre {
+  color: #333;
+  background-color: #fff;
+  overflow: auto;
+  border-width: 0 0 0 2px;
+  border-color: #eee;
+  border-style: solid;
+  padding: 14px 0 14px 20px;
+  padding-right: 0;
+  margin: 20px 0;
+}
+
+div.highlight {
+  background-color: white;
+}
+
+a.internal em {
+  font-style: normal;
+}
+
+dl dd {
+  margin: 3px 0 10px 30px;
+}
+
+dl.method {
+  border-bottom: 1px solid #ccc;
+}
+
+.breadcrumb {
+  font-size: 15px;
+  margin-bottom: 12px;
+  background: #fff;
+}
+
+blockquote {
+  border-width: .1em 0 .1em 0;
+  border-color: #e5eef2;
+  border-style: solid;
+  background-color: #f3f8f9;
+  color: #000;
+  margin: 20px 0;
+  padding: 15px 20px;
+  font-size: 16px;
+}
+
+/* Sphinx sidebar
+-------------------------------------------------- */
+
+div.sphinxsidebar {
+  word-wrap: break-word;
+}
+
+div.sphinxsidebar .panel-default > .panel-heading {
+    background-image: none;
+}
+
+.sidebar-wrapper {
+  padding: 0 22px;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+  color: #444;
+  font-size: 20px;
+  font-weight: normal;
+  margin: 0;
+  padding: 0;
+}
+
+div.sphinxsidebar h4 {
+  font-size: 16px;
+}
+
+div.sphinxsidebar p {
+  color: #555;
+  margin: 10px 0;
+}
+
+.sidebar-toc {
+  font-size: 15px;
+}
+
+div.sphinxsidebar .sidebar-toc ul {
+  margin: 0 0 4px 0;
+  list-style-type: none;
+  color: #000;
+}
+
+div.sphinxsidebar .sidebar-toc a {
+  font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  color: #444;
+  text-decoration: none;
+}
+
+.sidebar-toc > ul {
+    padding: 0 !important;
+    list-style-type: none;
+    margin: 0;
+}
+
+.sidebar-toc ul li a {
+  display: block;
+}
+
+.sidebar-toc ul li a:hover {
+  background-color: #428bca;
+  color: #fff;
+}
+
+.sidebar-toc ul li.current > a,
+.sidebar-toc ul li.current > a:hover {
+  background-color: #e6e6e6;
+  color: #444;
+}
+
+.sidebar-toc ul li.toctree-l1 a {
+  padding: 5px 25px;
+}
+
+.sidebar-toc ul li.toctree-l2 a {
+  padding: 5px 50px;
+}
+
+.sidebar-toc ul li.toctree-l3 a {
+  padding: 5px 75px;
+}
+
+div.sphinxsidebar ul.want-points {
+  padding-left: 20px;
+  margin: 0;
+}
+
+div.sphinxsidebar .sidebar-toc ul ul {
+  margin: 0;
+  padding: 0;
+}
+
+.sidebar-localtoc ul {
+    padding-left: 24px;
+}
+
+div.sphinxsidebar input {
+  border: 1px solid #ccc;
+  font-family: Helvetica, arial, freesans, clean, sans-serif;
+  font-size: 1em;
+}
+
+.margin-top-1em {
+  margin-top: 1em;
+}
+
+.sidebar-block {
+  padding: 0;
+  margin: 14px 0 30px 0;
+}
+
+.sidebar-block h2 {
+  border-bottom: none;
+  margin: 0 0 17px 0;
+  font-size: 14px;
+  font-family: "Open Sans", Helvetica, Arial, sans-serif;
+  padding: 0 0 6px 0;
+  font-weight: bold;
+  text-transform: uppercase;
+  color: #606060;
+}
+
+.sidebar-block .bd {
+  font-size: 16px;
+}
+
+.sphinxsidebar > .sidebar-block:not(:last-child):after {
+    content: '';
+    display:block;
+    border-top: 1px solid #ccc;
+    margin: 24px 22px 0 22px;
+}
+
+.text-logo {
+  font-size: 18px;
+  text-align: center;
+  display: block;
+  padding: 8px;
+  color: #fff;
+  font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  margin: 0 0 20px 0;
+  font-weight: bold;
+  background-color: #337ab7;
+  border-bottom: 1px solid #fff;
+}
+
+.text-logo:hover {
+  color: #fff;
+}
+
+/* Left-nav search box
+-------------------------------------------------- */
+
+#main-search form .input-group {
+  width: 100%;
+  margin: 0 0 12px 0;
+  padding: 0;
+  border: none;
+}
+
+#main-search form .input-group input {
+  padding: 4px;
+  width: 100%;
+  border-radius: 5px;
+  margin: 0;
+  font-size: 15px;
+}
+
+.search-page-form {
+  width: 350px;
+}
+
+/* Two-pane table list
+-------------------------------------------------- */
+
+.table-bordered>thead>tr>th,
+.table-bordered>tbody>tr>th,
+.table-bordered>tfoot>tr>th,
+.table-bordered>thead>tr>td,
+.table-bordered>tbody>tr>td,
+.table-bordered>tfoot>tr>td,
+table.two-column.table-bordered caption+thead tr:first-child th:first-child,
+table.two-column.table-bordered caption+tbody tr:first-child td:first-child,
+table.two-column.table-bordered colgroup+thead tr:first-child th:first-child,
+table.two-column.table-bordered colgroup+tbody tr:first-child td:first-child,
+table.two-column tbody td
+  border: 0 0 1px 0 solid #eee;
+  border-left: none;
+  padding: 8px 4px;
+  font-size: 16px;
+}
+
+table.two-column {
+  width: 100%;
+  border: 0px none !important;
+  box-shadow: none;
+}
+
+/* Disqus comments styles
+-------------------------------------------------- */
+
+.comment-container {
+  margin: 24px auto;
+}
+
+/* Next and previous links
+-------------------------------------------------- */
+
+.footer-relations {
+  display: relative;
+  border-top: 1px solid #ccc;
+  padding: 12px 45px;
+  margin-top: 30px;
+  font-size: 24px;
+}
+
+.rel-spacer {
+  height: 40px;
+}
+
+/* Footer styling
+-------------------------------------------------- */
+
+div.footer {
+  padding: 25px;
+  font-size: 14px;
+  color: #888;
+  text-align: right;
+  max-width: 1200px;
+  width: 100%;
+}
+
+div.footer a {
+  color: #888;
+}
+
+/* -- relbar ---------------------------------------------------------------- 
*/
+
+div.related {
+  width: 100%;
+  font-size: 90%;
+}
+
+div.related h3 {
+  display: none;
+}
+
+div.related ul {
+  margin: 0;
+  padding: 0 0 0 10px;
+  list-style: none;
+}
+
+div.related li {
+  display: inline;
+}
+
+div.related li.right {
+  float: right;
+  margin-right: 5px;
+}
+
+/* -- search page ----------------------------------------------------------- 
*/
+
+ul.search {
+  margin: 10px 0 0 20px;
+  padding: 0;
+}
+
+ul.search li {
+  padding: 5px 0 5px 20px;
+  background: url(file.png) no-repeat 0 7px;
+}
+
+ul.search li a {
+  font-weight: bold;
+}
+
+ul.search li div.context {
+  color: #888;
+  margin: 2px 0 0 30px;
+  text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+  font-weight: bold;
+}
+
+/* -- general index --------------------------------------------------------- 
*/
+
+table {
+  margin-bottom: 20px;
+}
+
+table.indextable {
+  width: 100%;
+}
+
+table.indextable td {
+  text-align: left;
+  vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+  height: 10px;
+}
+
+table.indextable tr.cap {
+  margin-top: 10px;
+  background-color: #f2f2f2;
+}
+
+img.toggler {
+  margin-right: 3px;
+  margin-top: 3px;
+  cursor: pointer;
+}
+
+div.modindex-jumpbox {
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+  margin: 1em 0 1em 0;
+  padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+  margin: 1em 0 1em 0;
+  padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- 
*/
+
+.body {
+  padding: 0 45px;
+}
+
+div.body p.caption {
+  text-align: inherit;
+}
+
+table.field-list {
+  border: 1px solid #ddd;
+  border-collapse: collapse;
+  border-spacing: 0;
+  width: 100%;
+}
+
+table.field-list td,
+table.field-list th {
+  border: 1px solid #ddd;
+  padding: 8px;
+  vertical-align: top;
+  line-height: 1.4;
+}
+
+.field-list ul {
+  padding-left: 1em;
+}
+
+.first {
+  margin-top: 0 !important;
+}
+
+p.rubric {
+  margin-top: 30px;
+  font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+  clear: left;
+  float: left;
+  margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+  clear: right;
+  float: right;
+  margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+  text-align: left;
+}
+
+.align-center {
+  text-align: center;
+}
+
+.align-right {
+  text-align: right;
+}
+
+/* -- topics ---------------------------------------------------------------- 
*/
+
+div.topic {
+  border: 1px solid #e8e8e8;
+  padding: 7px 7px 0 7px;
+  margin: 10px 0 10px 0;
+  background-color: #f8f8f8;
+}
+
+p.topic-title {
+  font-size: 1.1em;
+  font-weight: bold;
+  margin-top: 10px;
+}
+
+/* -- contents-------------------------------------------------------------- */
+
+div.topic.contents {
+    display: inline-block;
+    border-radius: 3px;
+    padding: 24px 36px 18px 36px;
+}
+
+div.topic.contents > ul {
+    padding-left: 20px;
+}
+
+/* -- admonitions ----------------------------------------------------------- 
*/
+
+.admonition {
+  margin: 20px 0;
+  padding: 20px;
+  background-color: #fff;
+  border: 1px solid #eee;
+  border-left-width: 6px;
+  border-radius: 3px;
+}
+
+.admonition dt {
+  font-weight: bold;
+}
+
+.admonition dl {
+  margin-bottom: 0;
+}
+
+.admonition-title {
+  margin: 0px 0 5px;
+  padding: 0;
+  font-weight: bold;
+  font-size: 18px;
+  line-height: 1.1;
+  font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+.admonition.danger,
+.admonition.error {
+  border-left-color: #d9534f;
+}
+
+.admonition.danger .admonition-title,
+.admonition.error .admonition-title {
+  color: #d9534f;
+}
+
+.admonition.important,
+.admonition.warning,
+.admonition.attention,
+.admonition.caution {
+  border-left-color: #f0ad4e;
+}
+
+.admonition.important .admonition-title,
+.admonition.warning .admonition-title,
+.admonition.attention .admonition-title,
+.admonition.caution .admonition-title {
+  color: #9B581F;
+}
+
+.admonition.note,
+.admonition.hint {
+  border-left-color: #31708f;
+}
+
+.admonition.note .admonition-title,
+.admonition.hint .admonition-title {
+  color: #31708f;
+}
+
+.admonition.tip {
+  border-left-color: #3c763d;
+}
+
+.admonition.tip .admonition-title {
+  color: #3c763d;
+}
+
+div.body p.centered {
+  text-align: center;
+  margin-top: 25px;
+}
+
+div.seealso {
+  background-color: #ffc;
+  border: 1px solid #ff6;
+}
+
+div.admonition tt.xref, div.admonition a tt {
+  border-bottom: 1px solid #fafafa;
+}
+
+div.admonition p.last {
+  margin-bottom: 0;
+}
+
+/* -- other body styles ----------------------------------------------------- 
*/
+
+ol.arabic {
+  list-style: decimal;
+}
+
+ol.loweralpha {
+  list-style: lower-alpha;
+}
+
+ol.upperalpha {
+  list-style: upper-alpha;
+}
+
+ol.lowerroman {
+  list-style: lower-roman;
+}
+
+ol.upperroman {
+  list-style: upper-roman;
+}
+
+.highlighted {
+  background-color: #fbe54e;
+}
+
+dl.glossary dt {
+  font-weight: bold;
+  font-size: 1.1em;
+}
+
+.field-list ul {
+  margin: 0;
+  padding-left: 1em;
+}
+
+.refcount {
+  color: #060;
+}
+
+.optional {
+  font-size: 1.3em;
+}
+
+.versionmodified {
+  font-style: italic;
+}
+
+.system-message {
+  background-color: #fda;
+  padding: 5px;
+  border: 3px solid red;
+}
+
+.footnote:target  {
+  background-color: #ffa;
+}
+
+.line-block {
+  display: block;
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+.line-block .line-block {
+  margin-top: 0;
+  margin-bottom: 0;
+  margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+  font-family: sans-serif;
+}
+
+.accelerator {
+  text-decoration: underline;
+}
+
+.classifier {
+  font-style: oblique;
+}
+
+abbr, acronym {
+  border-bottom: dotted 1px;
+  cursor: help;
+}
+
+dt:target, .highlight {
+  background: #FAF3E8;
+}
+
+/* -- code displays --------------------------------------------------------- 
*/
+
+.code-block-caption {
+  margin-bottom: -20px;
+}
+
+.code-block-caption .caption-text {
+  display: inline-block;
+  padding: 6px 20px;
+  font-weight: bold;
+  font-size: 18px;
+  line-height: 1.1;
+  font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  color: #fff;
+  background-color: #337ab7;
+}
+
+td.linenos pre {
+  padding: 5px 0px;
+  border: 0;
+  background-color: transparent;
+  color: #aaa;
+}
+
+table.highlighttable {
+  margin-left: 0.5em;
+}
+
+table.highlighttable td {
+  padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+  background-color: transparent;
+  font-weight: bold;
+  padding-right: 0.08em;
+}
+
+tt.descclassname {
+  background-color: transparent;
+}
+
+tt.descname, tt.descclassname {
+  font-size: 0.95em;
+}
+
+tt.xref, a tt {
+  background-color: transparent;
+  font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+  background-color: transparent;
+}
+
+.viewcode-link {
+  float: right;
+}
+
+.viewcode-back {
+  float: right;
+  font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+  margin: -1px -10px;
+  padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- 
*/
+
+img.math {
+  vertical-align: middle;
+}
+
+div.body div.math p {
+  text-align: center;
+}
+
+span.eqno {
+  float: right;
+}
+
+/* -- Theme specific classes - */
+
+.overflow-height-500px {
+  overflow: auto;
+  height: 500px;
+}
+
+.overflow-height-250px {
+  overflow: auto;
+  height: 250px;
+}
+
+/* Toggle mobile view
+-------------------------------------------------- */
+
+#mobile-toggle {
+  height: 40px;
+  width: 100%;
+  display: none;
+  padding: 12px;
+  border-bottom: 1px solid #ccc;
+  position: fixed;
+  top: 0;
+  left: 0;
+  background-color: #fff;
+  z-index: 1;
+}
+
+/* Small screen styles
+-------------------------------------------------- */
+
+@media screen and (max-width: 768px) {
+
+  body {
+    padding: 0px;
+    margin: 0px;
+    background-color: #fff;
+  }
+
+  h1 {
+    margin-left: 0;
+    width: 100%;
+    padding: 10px;
+    font-size: 40px;
+  }
+
+  #left-column {
+    position: relative;
+    top: 0;
+    left: 0;
+    display: none;
+    width: 100%;
+    float: none;
+    margin: 40px 0 0 0;
+  }
+
+  .footer-relations {
+    padding: 12px 0;
+  }
+
+  #right-column {
+    margin-left: 0;
+    margin-top: 0;
+    padding: 50px 20px 8px 20px;
+    width: 100%;
+    float: none;
+  }
+
+  .document {
+    position: relative;
+    padding: 0;
+    width: 100%
+  }
+
+  .body {
+    padding: 0px;
+  }
+
+  #mobile-toggle {
+    display: block;
+  }
+
+  p {
+    padding: 0;
+  }
+}
+
+/* Account for when the left column is closed then page is expanded.
+-------------------------------------------------- */
+
+@media screen and (min-width: 769px) {
+  #left-column {
+    display: block !important;
+  }
+  div.footer {
+    margin-left: 300px;
+  }
+}
+
+/* Syntax highlighting
+-------------------------------------------------- */
+
+.hll { background-color: #ffffcc }
+.c { color: #999988; font-style: italic } /* Comment */
+.err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.k { color: #000000; font-weight: bold } /* Keyword */
+.o { color: #000000; font-weight: bold } /* Operator */
+.cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.cp { color: #999999; font-weight: bold; font-style: italic } /* 
Comment.Preproc */
+.c1 { color: #999988; font-style: italic } /* Comment.Single */
+.cs { color: #999999; font-weight: bold; font-style: italic } /* 
Comment.Special */
+.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.ge { color: #000000; font-style: italic } /* Generic.Emph */
+.gr { color: #aa0000 } /* Generic.Error */
+.gh { color: #999999 } /* Generic.Heading */
+.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.go { color: #888888 } /* Generic.Output */
+.gp { color: #555555 } /* Generic.Prompt */
+.gs { font-weight: bold } /* Generic.Strong */
+.gu { color: #aaaaaa } /* Generic.Subheading */
+.gt { color: #aa0000 } /* Generic.Traceback */
+.kc { color: #000000; font-weight: bold } /* Keyword.Constant */
+.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
+.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
+.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
+.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
+.kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.m { color: #009999 } /* Literal.Number */
+.s { color: #d01040 } /* Literal.String */
+.na { color: #008080 } /* Name.Attribute */
+.nb { color: #0086B3 } /* Name.Builtin */
+.nc { color: #445588; font-weight: bold } /* Name.Class */
+.no { color: #008080 } /* Name.Constant */
+.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
+.ni { color: #800080 } /* Name.Entity */
+.ne { color: #990000; font-weight: bold } /* Name.Exception */
+.nf { color: #990000; font-weight: bold } /* Name.Function */
+.nl { color: #990000; font-weight: bold } /* Name.Label */
+.nn { color: #555555 } /* Name.Namespace */
+.nt { color: #000080 } /* Name.Tag */
+.nv { color: #008080 } /* Name.Variable */
+.ow { color: #000000; font-weight: bold } /* Operator.Word */
+.w { color: #bbbbbb } /* Text.Whitespace */
+.mf { color: #009999 } /* Literal.Number.Float */
+.mh { color: #009999 } /* Literal.Number.Hex */
+.mi { color: #009999 } /* Literal.Number.Integer */
+.mo { color: #009999 } /* Literal.Number.Oct */
+.mn { color: #009999 } /* Literal.Number.Number */
+.mrow { color: #009999 } /* Literal.Number.Row */
+.sb { color: #d01040 } /* Literal.String.Backtick */
+.sc { color: #d01040 } /* Literal.String.Char */
+.sd { color: #d01040 } /* Literal.String.Doc */
+.s2 { color: #d01040 } /* Literal.String.Double */
+.se { color: #d01040 } /* Literal.String.Escape */
+.sh { color: #d01040 } /* Literal.String.Heredoc */
+.si { color: #d01040 } /* Literal.String.Interpol */
+.sx { color: #d01040 } /* Literal.String.Other */
+.sr { color: #009926 } /* Literal.String.Regex */
+.s1 { color: #d01040 } /* Literal.String.Single */
+.ss { color: #990073 } /* Literal.String.Symbol */
+.bp { color: #999999 } /* Name.Builtin.Pseudo */
+.vc { color: #008080 } /* Name.Variable.Class */
+.vg { color: #008080 } /* Name.Variable.Global */
+.vi { color: #008080 } /* Name.Variable.Instance */
+.il { color: #009999 } /* Literal.Number.Integer.Long */
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.js 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.js
new file mode 100644
index 0000000..c6a59ae
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
+ //@ sourceMappingURL=jquery.min.map
+ */(function(e,t){var n,r,i=typeof 
t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return
 new 
b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|tr
 [...]
+  
return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return
 b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit 
keypress._submit",function(e){var 
n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:
 [...]
+}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else
 
d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return
 s=null,f},cleanData:function(e,t){var 
n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b. [...]
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.min.map 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.min.map
new file mode 100755
index 0000000..7137d89
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/jquery.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"jquery.min.js","sources":["jquery.js"],"names":["window","undefined","readyList","rootjQuery","core_strundefined","document","location","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsi
 [...]
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.js
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.js
new file mode 100644
index 0000000..72b73e4
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.js
@@ -0,0 +1,1951 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript 
requires jQuery') }
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.1.1
+ * http://getbootstrap.com/javascript/#transitions
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      'WebkitTransition' : 'webkitTransitionEnd',
+      'MozTransition'    : 'transitionend',
+      'OTransition'      : 'oTransitionEnd otransitionend',
+      'transition'       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+
+    return false // explicit for ie8 (  ._.)
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false, $el = this
+    $(this).one($.support.transition.end, function () { called = true })
+    var callback = function () { if (!called) 
$($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.1.1
+ * http://getbootstrap.com/javascript/#alerts
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip 
for ie7
+    }
+
+    var $parent = $(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.hasClass('alert') ? $this : $this.parent()
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      $parent.trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one($.support.transition.end, removeElement)
+        .emulateTransitionEnd(150) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.alert
+
+  $.fn.alert = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.1.1
+ * http://getbootstrap.com/javascript/#buttons
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element  = $(element)
+    this.options   = $.extend({}, Button.DEFAULTS, options)
+    this.isLoading = false
+  }
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state = state + 'Text'
+
+    if (!data.resetText) $el.data('resetText', $el[val]())
+
+    $el[val](data[state] || this.options[state])
+
+    // push to event loop to allow forms to submit
+    setTimeout($.proxy(function () {
+      if (state == 'loadingText') {
+        this.isLoading = true
+        $el.addClass(d).attr(d, d)
+      } else if (this.isLoading) {
+        this.isLoading = false
+        $el.removeClass(d).removeAttr(d)
+      }
+    }, this), 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var changed = true
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+      if ($input.prop('type') == 'radio') {
+        if ($input.prop('checked') && this.$element.hasClass('active')) 
changed = false
+        else $parent.find('.active').removeClass('active')
+      }
+      if (changed) $input.prop('checked', 
!this.$element.hasClass('active')).trigger('change')
+    }
+
+    if (changed) this.$element.toggleClass('active')
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  var old = $.fn.button
+
+  $.fn.button = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function 
(e) {
+    var $btn = $(e.target)
+    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+    $btn.button('toggle')
+    e.preventDefault()
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.1.1
+ * http://getbootstrap.com/javascript/#carousel
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      =
+    this.sliding     =
+    this.interval    =
+    this.$active     =
+    this.$items      = null
+
+    this.options.pause == 'hover' && this.$element
+      .on('mouseenter', $.proxy(this.pause, this))
+      .on('mouseleave', $.proxy(this.cycle, this))
+  }
+
+  Carousel.DEFAULTS = {
+    interval: 5000,
+    pause: 'hover',
+    wrap: true
+  }
+
+  Carousel.prototype.cycle =  function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), 
this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getActiveIndex = function () {
+    this.$active = this.$element.find('.item.active')
+    this.$items  = this.$active.parent().children()
+
+    return this.$items.index(this.$active)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getActiveIndex()
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid.bs.carousel', 
function () { that.to(pos) })
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || $active[type]()
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var fallback  = type == 'next' ? 'first' : 'last'
+    var that      = this
+
+    if (!$next.length) {
+      if (!this.options.wrap) return
+      $next = this.$element.find('.item')[fallback]()
+    }
+
+    if ($next.hasClass('active')) return this.sliding = false
+
+    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: 
direction })
+    this.$element.trigger(e)
+    if (e.isDefaultPrevented()) return
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      this.$element.one('slid.bs.carousel', function () {
+        var $nextIndicator = 
$(that.$indicators.children()[that.getActiveIndex()])
+        $nextIndicator && $nextIndicator.addClass('active')
+      })
+    }
+
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one($.support.transition.end, function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () { that.$element.trigger('slid.bs.carousel') 
}, 0)
+        })
+        .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) 
* 1000)
+    } else {
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger('slid.bs.carousel')
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.carousel
+
+  $.fn.carousel = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof 
option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, 
options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  $(document).on('click.bs.carousel.data-api', '[data-slide], 
[data-slide-to]', function (e) {
+    var $this   = $(this), href
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) 
&& href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    $target.carousel(options)
+
+    if (slideIndex = $this.attr('data-slide-to')) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  })
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      $carousel.carousel($carousel.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.1.1
+ * http://getbootstrap.com/javascript/#collapse
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.transitioning = null
+
+    if (this.options.parent) this.$parent = $(this.options.parent)
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var actives = this.$parent && this.$parent.find('> .panel > .in')
+
+    if (actives && actives.length) {
+      var hasData = actives.data('bs.collapse')
+      if (hasData && hasData.transitioning) return
+      actives.collapse('hide')
+      hasData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')
+      [dimension](0)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('collapse in')
+        [dimension]('auto')
+      this.transitioning = 0
+      this.$element.trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+      [dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element
+      [dimension](this.$element[dimension]())
+      [0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse')
+      .removeClass('in')
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .trigger('hidden.bs.collapse')
+        .removeClass('collapsing')
+        .addClass('collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.collapse
+
+  $.fn.collapse = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof 
option == 'object' && option)
+
+      if (!data && options.toggle && option == 'show') option = !option
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, 
options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', 
function (e) {
+    var $this   = $(this), href
+    var target  = $this.attr('data-target')
+        || e.preventDefault()
+        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') 
//strip for ie7
+    var $target = $(target)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+    var parent  = $this.attr('data-parent')
+    var $parent = parent && $(parent)
+
+    if (!data || !data.transitioning) {
+      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + 
parent + '"]').not($this).addClass('collapsed')
+      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+    }
+
+    $target.collapse(option)
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.1.1
+ * http://getbootstrap.com/javascript/#dropdowns
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle=dropdown]'
+  var Dropdown = function (element) {
+    $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && 
!$parent.closest('.navbar-nav').length) {
+        // if mobile we use a backdrop because click events don't delegate
+        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', 
clearMenus)
+      }
+
+      var relatedTarget = { relatedTarget: this }
+      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
+
+      if (e.isDefaultPrevented()) return
+
+      $parent
+        .toggleClass('open')
+        .trigger('shown.bs.dropdown', relatedTarget)
+
+      $this.trigger('focus')
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27)/.test(e.keyCode)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive || (isActive && e.keyCode == 27)) {
+      if (e.which == 27) $parent.find(toggle).trigger('focus')
+      return $this.trigger('click')
+    }
+
+    var desc = ' li:not(.divider):visible a'
+    var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
+
+    if (!$items.length) return
+
+    var index = $items.index($items.filter(':focus'))
+
+    if (e.keyCode == 38 && index > 0)                 index--                  
      // up
+    if (e.keyCode == 40 && index < $items.length - 1) index++                  
      // down
+    if (!~index)                                      index = 0
+
+    $items.eq(index).trigger('focus')
+  }
+
+  function clearMenus(e) {
+    $(backdrop).remove()
+    $(toggle).each(function () {
+      var $parent = getParent($(this))
+      var relatedTarget = { relatedTarget: this }
+      if (!$parent.hasClass('open')) return
+      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
+      if (e.isDefaultPrevented()) return
+      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
+    })
+  }
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#[A-Za-z]/.test(selector) && 
selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.dropdown')
+
+      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { 
e.stopPropagation() })
+    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], 
[role=listbox]', Dropdown.prototype.keydown)
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.1.1
+ * http://getbootstrap.com/javascript/#modals
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options   = options
+    this.$element  = $(element)
+    this.$backdrop =
+    this.isShown   = null
+
+    if (this.options.remote) {
+      this.$element
+        .find('.modal-content')
+        .load(this.options.remote, $.proxy(function () {
+          this.$element.trigger('loaded.bs.modal')
+        }, this))
+    }
+  }
+
+  Modal.DEFAULTS = {
+    backdrop: true,
+    keyboard: true,
+    show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.escape()
+
+    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', 
$.proxy(this.hide, this))
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(document.body) // don't move modals dom position
+      }
+
+      that.$element
+        .show()
+        .scrollTop(0)
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element
+        .addClass('in')
+        .attr('aria-hidden', false)
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$element.find('.modal-dialog') // wait for modal to slide in
+          .one($.support.transition.end, function () {
+            that.$element.trigger('focus').trigger(e)
+          })
+          .emulateTransitionEnd(300) :
+        that.$element.trigger('focus').trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .attr('aria-hidden', true)
+      .off('click.dismiss.bs.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one($.support.transition.end, $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(300) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (this.$element[0] !== e.target && 
!this.$element.has(e.target).length) {
+          this.$element.trigger('focus')
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keyup.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.removeBackdrop()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+        .appendTo(document.body)
+
+      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus.call(this.$element[0])
+          : this.hide.call(this)
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      $.support.transition && this.$element.hasClass('fade') ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.modal
+
+  $.fn.modal = function (option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option 
== 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function 
(e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && 
href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: 
!/#/.test(href) && href }, $target.data(), $this.data())
+
+    if ($this.is('a')) e.preventDefault()
+
+    $target
+      .modal(option, this)
+      .one('hide', function () {
+        $this.is(':visible') && $this.trigger('focus')
+      })
+  })
+
+  $(document)
+    .on('show.bs.modal', '.modal', function () { 
$(document.body).addClass('modal-open') })
+    .on('hidden.bs.modal', '.modal', function () { 
$(document.body).removeClass('modal-open') })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.1.1
+ * http://getbootstrap.com/javascript/#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       =
+    this.options    =
+    this.enabled    =
+    this.timeout    =
+    this.hoverState =
+    this.$element   = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.DEFAULTS = {
+    animation: true,
+    placement: 'top',
+    selector: false,
+    template: '<div class="tooltip"><div class="tooltip-arrow"></div><div 
class="tooltip-inner"></div></div>',
+    trigger: 'hover focus',
+    title: '',
+    delay: 0,
+    html: false,
+    container: false
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled  = true
+    this.type     = type
+    this.$element = $(element)
+    this.options  = this.getOptions(options)
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, 
$.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, 
$.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, 
$.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', 
selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay,
+        hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : 
$(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + 
this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : 
$(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + 
this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.' + this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+      var that = this;
+
+      var $tip = this.tip()
+
+      this.setContent()
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+
+      this.options.container ? $tip.appendTo(this.options.container) : 
$tip.insertAfter(this.$element)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var $parent = this.$element.parent()
+
+        var orgPlacement = placement
+        var docScroll    = document.documentElement.scrollTop || 
document.body.scrollTop
+        var parentWidth  = this.options.container == 'body' ? 
window.innerWidth  : $parent.outerWidth()
+        var parentHeight = this.options.container == 'body' ? 
window.innerHeight : $parent.outerHeight()
+        var parentLeft   = this.options.container == 'body' ? 0 : 
$parent.offset().left
+
+        placement = placement == 'bottom' && pos.top   + pos.height  + 
actualHeight - docScroll > parentHeight  ? 'top'    :
+                    placement == 'top'    && pos.top   - docScroll   - 
actualHeight < 0                         ? 'bottom' :
+                    placement == 'right'  && pos.right + actualWidth > 
parentWidth                              ? 'left'   :
+                    placement == 'left'   && pos.left  - actualWidth < 
parentLeft                               ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, 
actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+      this.hoverState = null
+
+      var complete = function() {
+        that.$element.trigger('shown.bs.' + that.type)
+      }
+
+      $.support.transition && this.$tip.hasClass('fade') ?
+        $tip
+          .one($.support.transition.end, complete)
+          .emulateTransitionEnd(150) :
+        complete()
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function (offset, placement) {
+    var replace
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  = offset.top  + marginTop
+    offset.left = offset.left + marginLeft
+
+    // $.fn.offset doesn't round pixel values
+    // so we use setOffset directly with our own function B-0
+    $.offset.setOffset($tip[0], $.extend({
+      using: function (props) {
+        $tip.css({
+          top: Math.round(props.top),
+          left: Math.round(props.left)
+        })
+      }
+    }, offset), 0)
+
+    $tip.addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize 
itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      replace = true
+      offset.top = offset.top + height - actualHeight
+    }
+
+    if (/bottom|top/.test(placement)) {
+      var delta = 0
+
+      if (offset.left < 0) {
+        delta       = offset.left * -2
+        offset.left = 0
+
+        $tip.offset(offset)
+
+        actualWidth  = $tip[0].offsetWidth
+        actualHeight = $tip[0].offsetHeight
+      }
+
+      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+    } else {
+      this.replaceArrow(actualHeight - height, actualHeight, 'top')
+    }
+
+    if (replace) $tip.offset(offset)
+  }
+
+  Tooltip.prototype.replaceArrow = function (delta, dimension, position) {
+    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : 
'')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function () {
+    var that = this
+    var $tip = this.tip()
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+      that.$element.trigger('hidden.bs.' + that.type)
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && this.$tip.hasClass('fade') ?
+      $tip
+        .one($.support.transition.end, complete)
+        .emulateTransitionEnd(150) :
+      complete()
+
+    this.hoverState = null
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 
'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function () {
+    var el = this.$element[0]
+    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? 
el.getBoundingClientRect() : {
+      width: el.offsetWidth,
+      height: el.offsetHeight
+    }, this.$element.offset())
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, 
actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: 
pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: 
pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - 
actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - 
actualHeight / 2, left: pos.left + pos.width   }
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.tip = function () {
+    return this.$tip = this.$tip || $(this.options.template)
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+  }
+
+  Tooltip.prototype.validate = function () {
+    if (!this.$element[0].parentNode) {
+      this.hide()
+      this.$element = null
+      this.options  = null
+    }
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = e ? 
$(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + 
this.type) : this
+    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+  }
+
+  Tooltip.prototype.destroy = function () {
+    clearTimeout(this.timeout)
+    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data && option == 'destroy') return
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.1.1
+ * http://getbootstrap.com/javascript/#popovers
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right',
+    trigger: 'click',
+    content: '',
+    template: '<div class="popover"><div class="arrow"></div><h3 
class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content')[ // we use append for html objects to 
maintain js events
+      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 
'text'
+    ](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to 
do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.arrow')
+  }
+
+  Popover.prototype.tip = function () {
+    if (!this.$tip) this.$tip = $(this.options.template)
+    return this.$tip
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.popover
+
+  $.fn.popover = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data && option == 'destroy') return
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.1.1
+ * http://getbootstrap.com/javascript/#scrollspy
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    var href
+    var process  = $.proxy(this.process, this)
+
+    this.$element       = $(element).is('body') ? $(window) : $(element)
+    this.$body          = $('body')
+    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', 
process)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, 
'')) //strip for ie7
+      || '') + ' .nav li > a'
+    this.offsets        = $([])
+    this.targets        = $([])
+    this.activeTarget   = null
+
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+
+    this.offsets = $([])
+    this.targets = $([])
+
+    var self     = this
+    var $targets = this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#./.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && $href.is(':visible')
+          && [[ $href[offsetMethod]().top + 
(!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), 
href ]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        self.offsets.push(this[0])
+        self.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.$scrollElement[0].scrollHeight || 
this.$body[0].scrollHeight
+    var maxScroll    = scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets.last()[0]) && this.activate(i)
+    }
+
+    if (activeTarget && scrollTop <= offsets[0]) {
+      return activeTarget != (i = targets[0]) && this.activate(i)
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+        && this.activate( targets[i] )
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    $(this.selector)
+      .parentsUntil(this.options.target, '.active')
+      .removeClass('active')
+
+    var selector = this.selector +
+        '[data-target="' + target + '"],' +
+        this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length) {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate.bs.scrollspy')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, 
options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      $spy.scrollspy($spy.data())
+    })
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.1.1
+ * http://getbootstrap.com/javascript/#tabs
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    this.element = $(element)
+  }
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.data('target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip 
for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var previous = $ul.find('.active:last a')[0]
+    var e        = $.Event('show.bs.tab', {
+      relatedTarget: previous
+    })
+
+    $this.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.parent('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $this.trigger({
+        type: 'shown.bs.tab',
+        relatedTarget: previous
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && $active.hasClass('fade')
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+
+      element.addClass('active')
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu')) {
+        element.closest('li.dropdown').addClass('active')
+      }
+
+      callback && callback()
+    }
+
+    transition ?
+      $active
+        .one($.support.transition.end, next)
+        .emulateTransitionEnd(150) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  var old = $.fn.tab
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], 
[data-toggle="pill"]', function (e) {
+    e.preventDefault()
+    $(this).tab('show')
+  })
+
+}(jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.1.1
+ * http://getbootstrap.com/javascript/#affix
+ * ========================================================================
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ * ======================================================================== */
+
+
++function ($) {
+  'use strict';
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+    this.$window = $(window)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, 
this))
+
+    this.$element     = $(element)
+    this.affixed      =
+    this.unpin        =
+    this.pinnedOffset = null
+
+    this.checkPosition()
+  }
+
+  Affix.RESET = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0
+  }
+
+  Affix.prototype.getPinnedOffset = function () {
+    if (this.pinnedOffset) return this.pinnedOffset
+    this.$element.removeClass(Affix.RESET).addClass('affix')
+    var scrollTop = this.$window.scrollTop()
+    var position  = this.$element.offset()
+    return (this.pinnedOffset = position.top - scrollTop)
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var scrollHeight = $(document).height()
+    var scrollTop    = this.$window.scrollTop()
+    var position     = this.$element.offset()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+
+    if (this.affixed == 'top') position.top += scrollTop
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = 
offset.top(this.$element)
+    if (typeof offsetBottom == 'function') offsetBottom = 
offset.bottom(this.$element)
+
+    var affix = this.unpin   != null && (scrollTop + this.unpin <= 
position.top) ? false :
+                offsetBottom != null && (position.top + this.$element.height() 
>= scrollHeight - offsetBottom) ? 'bottom' :
+                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : 
false
+
+    if (this.affixed === affix) return
+    if (this.unpin) this.$element.css('top', '')
+
+    var affixType = 'affix' + (affix ? '-' + affix : '')
+    var e         = $.Event(affixType + '.bs.affix')
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    this.affixed = affix
+    this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
+
+    this.$element
+      .removeClass(Affix.RESET)
+      .addClass(affixType)
+      .trigger($.Event(affixType.replace('affix', 'affixed')))
+
+    if (affix == 'bottom') {
+      this.$element.offset({ top: scrollHeight - offsetBottom - 
this.$element.height() })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.affix
+
+  $.fn.affix = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop)    data.offset.top    = data.offsetTop
+
+      $spy.affix(data)
+    })
+  })
+
+}(jQuery);
\ No newline at end of file
diff --git 
a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.min.js
 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.min.js
new file mode 100755
index 0000000..4fae3fa
--- /dev/null
+++ 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/static/js/bootstrap.min.js
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.1.1 (http://getbootstrap.com)
+ * Copyright 2011-2014 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires 
jQuery");+function(a){"use strict";function b(){var 
a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd
 otransitionend",transition:"transitionend"};for(var c in b)if(void 
0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var
 c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e= [...]
\ No newline at end of file
diff --git a/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/theme.conf 
b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/theme.conf
new file mode 100644
index 0000000..03638c4
--- /dev/null
+++ b/doc/sphinx/_exts/taler_sphinx_theme/guzzle_sphinx_theme/theme.conf
@@ -0,0 +1,40 @@
+[theme]
+
+inherit = basic
+stylesheet = guzzle.css
+
+[options]
+
+# Set to an html template to load custom HTML for the homepage
+index_template =
+
+# Set the name of the project to appear in the left sidebar.
+project_nav_name =
+
+# Path to a touch icon
+touch_icon =
+
+# Set this value to enable Disqus comments
+disqus_comments_shortname =
+
+# Set to enable google analytics
+google_analytics_account =
+
+# Specify a base_url used to generate sitemap.xml links. If not specified, then
+# no sitemap will be built.
+base_url =
+
+# Allow a separate homepage from the "master_doc"
+homepage =
+
+# Allow the project link to be overwritten to a custom URL.
+projectlink =
+
+# The maximum depth of the global TOC; set it to -1 to allow unlimited depth
+globaltoc_depth = 2
+
+# If true, TOC entries that are not ancestors of the current page are collapsed
+globaltoc_collapse = true
+
+# If true, the global TOC tree will also contain hidden entries
+globaltoc_includehidden = true
diff --git a/doc/sphinx/_exts/typescriptdomain.py 
b/doc/sphinx/_exts/typescriptdomain.py
new file mode 100644
index 0000000..50ffdc0
--- /dev/null
+++ b/doc/sphinx/_exts/typescriptdomain.py
@@ -0,0 +1,587 @@
+"""
+TypeScript domain.
+
+:copyright: Copyright 2019 by Taler Systems SA
+:license: LGPLv3+
+:author: Florian Dold
+"""
+
+import re
+
+from pathlib import Path
+
+from docutils import nodes
+from typing import List, Optional, Iterable, Dict, Tuple
+from typing import cast
+
+from pygments.lexers import get_lexer_by_name
+from pygments.filter import Filter
+from pygments.token import Literal, Text, Operator, Keyword, Name, Number
+from pygments.token import Comment, Token, _TokenType
+from pygments.token import *
+from pygments.lexer import RegexLexer, bygroups, include
+from pygments.formatters import HtmlFormatter
+
+from docutils import nodes
+from docutils.nodes import Element, Node
+
+from sphinx.roles import XRefRole
+from sphinx.domains import Domain, ObjType, Index
+from sphinx.directives import directives
+from sphinx.util.docutils import SphinxDirective
+from sphinx.util.nodes import make_refnode
+from sphinx.util import logging
+from sphinx.highlighting import PygmentsBridge
+from sphinx.builders.html import StandaloneHTMLBuilder
+from sphinx.pygments_styles import SphinxStyle
+
+logger = logging.getLogger(__name__)
+
+
+class TypeScriptDefinition(SphinxDirective):
+    """
+    Directive for a code block with special highlighting or line numbering
+    settings.
+    """
+
+    has_content = True
+    required_arguments = 1
+    optional_arguments = 0
+    final_argument_whitespace = False
+    option_spec = {
+        "force": directives.flag,
+        "linenos": directives.flag,
+        "dedent": int,
+        "lineno-start": int,
+        "emphasize-lines": directives.unchanged_required,
+        "caption": directives.unchanged_required,
+        "class": directives.class_option,
+    }
+
+    def run(self) -> List[Node]:
+        document = self.state.document
+        code = "\n".join(self.content)
+        location = self.state_machine.get_source_and_line(self.lineno)
+
+        linespec = self.options.get("emphasize-lines")
+        if linespec:
+            try:
+                nlines = len(self.content)
+                hl_lines = parselinenos(linespec, nlines)
+                if any(i >= nlines for i in hl_lines):
+                    logger.warning(
+                        __("line number spec is out of range(1-%d): %r")
+                        % (nlines, self.options["emphasize-lines"]),
+                        location=location,
+                    )
+
+                hl_lines = [x + 1 for x in hl_lines if x < nlines]
+            except ValueError as err:
+                return [document.reporter.warning(err, line=self.lineno)]
+        else:
+            hl_lines = None
+
+        if "dedent" in self.options:
+            location = self.state_machine.get_source_and_line(self.lineno)
+            lines = code.split("\n")
+            lines = dedent_lines(lines, self.options["dedent"], 
location=location)
+            code = "\n".join(lines)
+
+        literal = nodes.literal_block(code, code)  # type: Element
+        if "linenos" in self.options or "lineno-start" in self.options:
+            literal["linenos"] = True
+        literal["classes"] += self.options.get("class", [])
+        literal["force"] = "force" in self.options
+        literal["language"] = "tsref"
+        extra_args = literal["highlight_args"] = {}
+        if hl_lines is not None:
+            extra_args["hl_lines"] = hl_lines
+        if "lineno-start" in self.options:
+            extra_args["linenostart"] = self.options["lineno-start"]
+        self.set_source_info(literal)
+
+        caption = self.options.get("caption")
+        if caption:
+            try:
+                literal = container_wrapper(self, literal, caption)
+            except ValueError as exc:
+                return [document.reporter.warning(exc, line=self.lineno)]
+
+        tsid = "tsref-type-" + self.arguments[0]
+        literal["ids"].append(tsid)
+
+        tsname = self.arguments[0]
+        ts = self.env.get_domain("ts")
+        ts.add_object("type", tsname, self.env.docname, tsid)
+
+        return [literal]
+
+
+class TypeScriptDomain(Domain):
+    """TypeScript domain."""
+
+    name = "ts"
+    label = "TypeScript"
+
+    directives = {
+        "def": TypeScriptDefinition,
+    }
+
+    roles = {
+        "type": XRefRole(
+            lowercase=False, warn_dangling=True, innernodeclass=nodes.inline
+        ),
+    }
+
+    dangling_warnings = {
+        "type": "undefined TypeScript type: %(target)s",
+    }
+
+    def resolve_xref(self, env, fromdocname, builder, typ, target, node, 
contnode):
+        try:
+            info = self.objects[(str(typ), str(target))]
+        except KeyError:
+            logger.warn("type {}/{} not found".format(typ, target))
+            return None
+        else:
+            anchor = "tsref-type-{}".format(str(target))
+            title = typ.upper() + " " + target
+            return make_refnode(builder, fromdocname, info[0], anchor, 
contnode, title)
+
+    def resolve_any_xref(self, env, fromdocname, builder, target, node, 
contnode):
+        """Resolve the pending_xref *node* with the given *target*.
+
+        The reference comes from an "any" or similar role, which means that 
Sphinx
+        don't know the type.
+
+        For now sphinxcontrib-httpdomain doesn't resolve any xref nodes.
+
+        :return:
+           list of tuples ``('domain:role', newnode)``, where ``'domain:role'``
+           is the name of a role that could have created the same reference,
+        """
+        ret = []
+        try:
+            info = self.objects[("type", str(target))]
+        except KeyError:
+            pass
+        else:
+            anchor = "tsref-type-{}".format(str(target))
+            title = "TYPE" + " " + target
+            node = make_refnode(builder, fromdocname, info[0], anchor, 
contnode, title)
+            ret.append(("ts:type", node))
+        return ret
+
+    @property
+    def objects(self) -> Dict[Tuple[str, str], Tuple[str, str]]:
+        return self.data.setdefault(
+            "objects", {}
+        )  # (objtype, name) -> docname, labelid
+
+    def add_object(self, objtype: str, name: str, docname: str, labelid: str) 
-> None:
+        self.objects[objtype, name] = (docname, labelid)
+
+
+class BetterTypeScriptLexer(RegexLexer):
+    """
+    For `TypeScript <https://www.typescriptlang.org/>`_ source code.
+    """
+
+    name = "TypeScript"
+    aliases = ["ts"]
+    filenames = ["*.ts"]
+    mimetypes = ["text/x-typescript"]
+
+    flags = re.DOTALL
+    tokens = {
+        "commentsandwhitespace": [
+            (r"\s+", Text),
+            (r"<!--", Comment),
+            (r"//.*?\n", Comment.Single),
+            (r"/\*.*?\*/", Comment.Multiline),
+        ],
+        "slashstartsregex": [
+            include("commentsandwhitespace"),
+            (
+                r"/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/" r"([gim]+\b|\B)",
+                String.Regex,
+                "#pop",
+            ),
+            (r"(?=/)", Text, ("#pop", "badregex")),
+            (r"", Text, "#pop"),
+        ],
+        "badregex": [(r"\n", Text, "#pop")],
+        "typeexp": [
+            (r"[a-zA-Z0-9_?.$]+", Keyword.Type),
+            (r"\s+", Text),
+            (r"[|]", Text),
+            (r"\n", Text, "#pop"),
+            (r";", Text, "#pop"),
+            (r"", Text, "#pop"),
+        ],
+        "root": [
+            (r"^(?=\s|/|<!--)", Text, "slashstartsregex"),
+            include("commentsandwhitespace"),
+            (
+                r"\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|"
+                r"(<<|>>>?|==?|!=?|[-<>+*%&\|\^/])=?",
+                Operator,
+                "slashstartsregex",
+            ),
+            (r"[{(\[;,]", Punctuation, "slashstartsregex"),
+            (r"[})\].]", Punctuation),
+            (
+                
r"(for|in|while|do|break|return|continue|switch|case|default|if|else|"
+                r"throw|try|catch|finally|new|delete|typeof|instanceof|void|"
+                r"this)\b",
+                Keyword,
+                "slashstartsregex",
+            ),
+            (
+                r"(var|let|const|with|function)\b",
+                Keyword.Declaration,
+                "slashstartsregex",
+            ),
+            (
+                
r"(abstract|boolean|byte|char|class|const|debugger|double|enum|export|"
+                
r"extends|final|float|goto|implements|import|int|interface|long|native|"
+                
r"package|private|protected|public|short|static|super|synchronized|throws|"
+                r"transient|volatile)\b",
+                Keyword.Reserved,
+            ),
+            (r"(true|false|null|NaN|Infinity|undefined)\b", Keyword.Constant),
+            (
+                r"(Array|Boolean|Date|Error|Function|Math|netscape|"
+                r"Number|Object|Packages|RegExp|String|sun|decodeURI|"
+                r"decodeURIComponent|encodeURI|encodeURIComponent|"
+                r"Error|eval|isFinite|isNaN|parseFloat|parseInt|document|this|"
+                r"window)\b",
+                Name.Builtin,
+            ),
+            # Match stuff like: module name {...}
+            (
+                r"\b(module)(\s*)(\s*[a-zA-Z0-9_?.$][\w?.$]*)(\s*)",
+                bygroups(Keyword.Reserved, Text, Name.Other, Text),
+                "slashstartsregex",
+            ),
+            # Match variable type keywords
+            (r"\b(string|bool|number)\b", Keyword.Type),
+            # Match stuff like: constructor
+            (r"\b(constructor|declare|interface|as|AS)\b", Keyword.Reserved),
+            # Match stuff like: super(argument, list)
+            (
+                r"(super)(\s*)\(([a-zA-Z0-9,_?.$\s]+\s*)\)",
+                bygroups(Keyword.Reserved, Text),
+                "slashstartsregex",
+            ),
+            # Match stuff like: function() {...}
+            (r"([a-zA-Z_?.$][\w?.$]*)\(\) \{", Name.Other, "slashstartsregex"),
+            # Match stuff like: (function: return type)
+            (
+                r"([a-zA-Z0-9_?.$][\w?.$]*)(\s*:\s*)",
+                bygroups(Name.Other, Text),
+                "typeexp",
+            ),
+            # Match stuff like: type Foo = Bar | Baz
+            (
+                r"\b(type)(\s*)([a-zA-Z0-9_?.$]+)(\s*)(=)(\s*)",
+                bygroups(Keyword.Reserved, Text, Name.Other, Text, Operator, 
Text),
+                "typeexp",
+            ),
+            (r"[$a-zA-Z_][a-zA-Z0-9_]*", Name.Other),
+            (r"[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?", Number.Float),
+            (r"0x[0-9a-fA-F]+", Number.Hex),
+            (r"[0-9]+", Number.Integer),
+            (r'"(\\\\|\\"|[^"])*"', String.Double),
+            (r"'(\\\\|\\'|[^'])*'", String.Single),
+        ],
+    }
+
+
+# Map from token id to props.
+# Properties can't be added to tokens
+# since they derive from Python's tuple.
+token_props = {}
+
+
+class LinkFilter(Filter):
+    def __init__(self, app, **options):
+        self.app = app
+        Filter.__init__(self, **options)
+
+    def _filter_one_literal(self, ttype, value):
+        last = 0
+        for m in re.finditer(literal_reg, value):
+            pre = value[last : m.start()]
+            if pre:
+                yield ttype, pre
+            t = copy_token(ttype)
+            tok_setprop(t, "is_literal", True)
+            yield t, m.group(1)
+            last = m.end()
+        post = value[last:]
+        if post:
+            yield ttype, post
+
+    def filter(self, lexer, stream):
+        for ttype, value in stream:
+            if ttype in Token.Keyword.Type:
+                t = copy_token(ttype)
+                tok_setprop(t, "xref", value.strip())
+                tok_setprop(t, "is_identifier", True)
+                yield t, value
+            elif ttype in Token.Comment:
+                last = 0
+                for m in re.finditer(link_reg, value):
+                    pre = value[last : m.start()]
+                    if pre:
+                        yield from self._filter_one_literal(ttype, pre)
+                    t = copy_token(ttype)
+                    x1, x2 = m.groups()
+                    x0 = m.group(0)
+                    if x2 is None:
+                        caption = x1.strip()
+                        xref = x1.strip()
+                    else:
+                        caption = x1.strip()
+                        xref = x2.strip()
+                    tok_setprop(t, "xref", xref)
+                    tok_setprop(t, "caption", caption)
+                    if x0.endswith("_"):
+                        tok_setprop(t, "trailing_underscore", True)
+                    yield t, m.group(1)
+                    last = m.end()
+                post = value[last:]
+                if post:
+                    yield from self._filter_one_literal(ttype, post)
+            else:
+                yield ttype, value
+
+
+_escape_html_table = {
+    ord("&"): u"&amp;",
+    ord("<"): u"&lt;",
+    ord(">"): u"&gt;",
+    ord('"'): u"&quot;",
+    ord("'"): u"&#39;",
+}
+
+
+class LinkingHtmlFormatter(HtmlFormatter):
+    def __init__(self, **kwargs):
+        super(LinkingHtmlFormatter, self).__init__(**kwargs)
+        self._builder = kwargs["_builder"]
+        self._bridge = kwargs["_bridge"]
+
+    def _get_value(self, value, tok):
+        xref = tok_getprop(tok, "xref")
+        caption = tok_getprop(tok, "caption")
+
+        if tok_getprop(tok, "is_literal"):
+            return '<span style="font-weight: bolder">%s</span>' % (value,)
+
+        if tok_getprop(tok, "trailing_underscore"):
+            logger.warn(
+                "{}:{}: code block contains xref to '{}' with unsupported 
trailing underscore".format(
+                    self._bridge.path, self._bridge.line, xref
+                )
+            )
+
+        if tok_getprop(tok, "is_identifier"):
+            if xref.startswith('"'):
+                return value
+            if re.match("^[0-9]+$", xref) is not None:
+                return value
+            if xref in (
+                "number",
+                "object",
+                "string",
+                "boolean",
+                "any",
+                "true",
+                "false",
+                "null",
+                "undefined",
+                "Array",
+                "unknown",
+            ):
+                return value
+
+        if self._bridge.docname is None:
+            return value
+        if xref is None:
+            return value
+        content = caption if caption is not None else value
+        ts = self._builder.env.get_domain("ts")
+        r1 = ts.objects.get(("type", xref), None)
+        if r1 is not None:
+            rel_uri = (
+                self._builder.get_relative_uri(self._bridge.docname, r1[0])
+                + "#"
+                + r1[1]
+            )
+            return (
+                '<a style="color:inherit;text-decoration:underline" 
href="%s">%s</a>'
+                % (rel_uri, content)
+            )
+
+        std = self._builder.env.get_domain("std")
+        r2 = std.labels.get(xref.lower(), None)
+        if r2 is not None:
+            rel_uri = (
+                self._builder.get_relative_uri(self._bridge.docname, r2[0])
+                + "#"
+                + r2[1]
+            )
+            return (
+                '<a style="color:inherit;text-decoration:underline" 
href="%s">%s</a>'
+                % (rel_uri, content)
+            )
+        r3 = std.anonlabels.get(xref.lower(), None)
+        if r3 is not None:
+            rel_uri = (
+                self._builder.get_relative_uri(self._bridge.docname, r3[0])
+                + "#"
+                + r3[1]
+            )
+            return (
+                '<a style="color:inherit;text-decoration:underline" 
href="%s">%s</a>'
+                % (rel_uri, content)
+            )
+
+        logger.warn(
+            "{}:{}: code block contains unresolved xref '{}'".format(
+                self._bridge.path, self._bridge.line, xref
+            )
+        )
+
+        return value
+
+    def _fmt(self, value, tok):
+        cls = self._get_css_class(tok)
+        value = self._get_value(value, tok)
+        if cls is None or cls == "":
+            return value
+        return '<span class="%s">%s</span>' % (cls, value)
+
+    def _format_lines(self, tokensource):
+        """
+        Just format the tokens, without any wrapping tags.
+        Yield individual lines.
+        """
+        lsep = self.lineseparator
+        escape_table = _escape_html_table
+
+        line = ""
+        for ttype, value in tokensource:
+            link = get_annotation(ttype, "link")
+
+            parts = value.translate(escape_table).split("\n")
+
+            if len(parts) == 0:
+                # empty token, usually should not happen
+                pass
+            elif len(parts) == 1:
+                # no newline before or after token
+                line += self._fmt(parts[0], ttype)
+            else:
+                line += self._fmt(parts[0], ttype)
+                yield 1, line + lsep
+                for part in parts[1:-1]:
+                    yield 1, self._fmt(part, ttype) + lsep
+                line = self._fmt(parts[-1], ttype)
+
+        if line:
+            yield 1, line + lsep
+
+
+class MyPygmentsBridge(PygmentsBridge):
+    def __init__(self, builder, trim_doctest_flags):
+        self.dest = "html"
+        self.trim_doctest_flags = trim_doctest_flags
+        self.formatter_args = {
+            "style": SphinxStyle,
+            "_builder": builder,
+            "_bridge": self,
+        }
+        self.formatter = LinkingHtmlFormatter
+        self.builder = builder
+        self.path = None
+        self.line = None
+        self.docname = None
+
+    def highlight_block(
+        self, source, lang, opts=None, force=False, location=None, **kwargs
+    ):
+        if isinstance(location, tuple):
+            docname, line = location
+            self.line = line
+            self.path = self.builder.env.doc2path(docname)
+            self.docname = docname
+        elif isinstance(location, Element):
+            self.line = location.line
+            self.path = location.source
+            self.docname = self.builder.env.path2doc(self.path)
+        return super().highlight_block(source, lang, opts, force, location, 
**kwargs)
+
+
+class MyHtmlBuilder(StandaloneHTMLBuilder):
+    name = "html-linked"
+
+    def init_highlighter(self):
+        if self.config.pygments_style is not None:
+            style = self.config.pygments_style
+        elif self.theme:
+            style = self.theme.get_confstr("theme", "pygments_style", "none")
+        else:
+            style = "sphinx"
+        self.highlighter = MyPygmentsBridge(self, 
self.config.trim_doctest_flags)
+        self.dark_highlighter = None
+
+
+def get_annotation(tok, key):
+    if not hasattr(tok, "kv"):
+        return None
+    return tok.kv.get(key)
+
+
+def copy_token(tok):
+    new_tok = _TokenType(tok)
+    # This part is very fragile against API changes ...
+    new_tok.subtypes = set(tok.subtypes)
+    new_tok.parent = tok.parent
+    return new_tok
+
+
+def tok_setprop(tok, key, value):
+    tokid = id(tok)
+    e = token_props.get(tokid)
+    if e is None:
+        e = token_props[tokid] = (tok, {})
+    _, kv = e
+    kv[key] = value
+
+
+def tok_getprop(tok, key):
+    tokid = id(tok)
+    e = token_props.get(tokid)
+    if e is None:
+        return None
+    _, kv = e
+    return kv.get(key)
+
+
+link_reg = re.compile(r"(?<!`)`([^`<]+)\s*(?:<([^>]+)>)?\s*`_?")
+literal_reg = re.compile(r"``([^`]+)``")
+
+
+def setup(app):
+
+    class TsrefLexer(BetterTypeScriptLexer):
+        def __init__(self, **options):
+            super().__init__(**options)
+            self.add_filter(LinkFilter(app))
+
+    app.add_lexer("tsref", TsrefLexer)
+    app.add_domain(TypeScriptDomain)
+    app.add_builder(MyHtmlBuilder)
diff --git a/doc/sphinx/_static/.gitignore b/doc/sphinx/_static/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/doc/sphinx/anastasis-db.png b/doc/sphinx/anastasis-db.png
new file mode 100644
index 0000000..03eed9d
Binary files /dev/null and b/doc/sphinx/anastasis-db.png differ
diff --git a/doc/sphinx/anastasis_challenge_payment.png 
b/doc/sphinx/anastasis_challenge_payment.png
new file mode 100644
index 0000000..a0593eb
Binary files /dev/null and b/doc/sphinx/anastasis_challenge_payment.png differ
diff --git a/doc/sphinx/anastasis_challengecode.png 
b/doc/sphinx/anastasis_challengecode.png
new file mode 100644
index 0000000..fc30f4f
Binary files /dev/null and b/doc/sphinx/anastasis_challengecode.png differ
diff --git a/doc/sphinx/anastasis_reducer_backup.drawio 
b/doc/sphinx/anastasis_reducer_backup.drawio
new file mode 100644
index 0000000..953dda7
--- /dev/null
+++ b/doc/sphinx/anastasis_reducer_backup.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2021-07-14T13:53:02.181Z" agent="5.0 
(X11)" etag="J63_8AyAsuxkJPDq-ZZb" version="14.8.6" type="device"><diagram 
id="PpkpfZO7TL7CUlFfbbxv" 
name="Seite-1">7Z1de6I4FMc/TS/LQxJeL1trp+5MO51qd6ZXPlRpZUvFQWztfPoNCkgSRIQEwelc7CovQU6SX/4nOSc9QZ3X5Rffmk2uvbHtnkB5vDxBFycQQqAY+H/hkY/1EVWW1weefWe8PgQ2B/rOHzs6GF+2cMb2nLgw8Dw3cGbkwZE3ndqjgDhm+b73Tl725LnkU2fWs80c6I8slz360xkHk+go0MzNiSvbeZ5Ejzagvj7xasUXR28yn1hj7z11CHVPUMf3vGD96XXZsd3QeLFd1vddbjmb/DDfngZFbnj6+H1z2
 [...]
\ No newline at end of file
diff --git a/doc/sphinx/anastasis_reducer_backup.png 
b/doc/sphinx/anastasis_reducer_backup.png
new file mode 100644
index 0000000..53daf7c
Binary files /dev/null and b/doc/sphinx/anastasis_reducer_backup.png differ
diff --git a/doc/sphinx/anastasis_reducer_backup.svg 
b/doc/sphinx/anastasis_reducer_backup.svg
new file mode 100644
index 0000000..9eccbf4
--- /dev/null
+++ b/doc/sphinx/anastasis_reducer_backup.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg xmlns="http://www.w3.org/2000/svg"; style="background-color: rgb(255, 255, 
255);" xmlns:xlink="http://www.w3.org/1999/xlink"; version="1.1" width="1201px" 
height="378px" viewBox="-0.5 -0.5 1201 378" content="&lt;mxfile 
host=&quot;app.diagrams.net&quot; modified=&quot;2021-07-14T13:53:47.157Z&quot; 
agent=&quot;5.0 (X11)&quot; etag=&quot;5St_YjOKZ-6nHnOHbqXe&quot; 
version=&quot;14.8.6&quot; type=&quot;device&quot;&gt;&lt;diagram 
id=&quot;PpkpfZO7TL7CUlFfbbxv&quot; name=&quot;Seite-1&quo [...]
\ No newline at end of file
diff --git a/doc/sphinx/anastasis_reducer_recovery.drawio 
b/doc/sphinx/anastasis_reducer_recovery.drawio
new file mode 100644
index 0000000..ac1f617
--- /dev/null
+++ b/doc/sphinx/anastasis_reducer_recovery.drawio
@@ -0,0 +1 @@
+<mxfile host="app.diagrams.net" modified="2021-07-14T14:05:15.539Z" agent="5.0 
(X11)" etag="RgsPOgrkZ7CacnVb-4wQ" version="14.8.6" type="device"><diagram 
id="PpkpfZO7TL7CUlFfbbxv" 
name="Seite-1">7Vxbd6o4FP41PupKwv2xWnuZ6Win2k49Ly6qVDlF8SC29fz6CTUISQBRgmLX6UOXBEhgZ+8v376EmtSafV575mL6jzu2nBoC48+adFlDSIcQ/w8a1psGGcqbholnjzdNMGro2b8t0ghI68oeW0vqQt91Hd9e0I0jdz63Rj7VZnqe+0Ff9uo69KgLc2JxDb2R6fCt/9ljf0paoWpEJ24sezIlQ+tI25yYmeHF5E2WU3PsfsSapHZNanmu629+zT5blhPILpTL5r6rlLPbB/OsuZ/nhtf1r8797YXSN1+lY
 [...]
\ No newline at end of file
diff --git a/doc/sphinx/anastasis_reducer_recovery.png 
b/doc/sphinx/anastasis_reducer_recovery.png
new file mode 100644
index 0000000..b08c763
Binary files /dev/null and b/doc/sphinx/anastasis_reducer_recovery.png differ
diff --git a/doc/sphinx/anastasis_reducer_recovery.svg 
b/doc/sphinx/anastasis_reducer_recovery.svg
new file mode 100644
index 0000000..7020498
--- /dev/null
+++ b/doc/sphinx/anastasis_reducer_recovery.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg xmlns="http://www.w3.org/2000/svg"; style="background-color: rgb(255, 255, 
255);" xmlns:xlink="http://www.w3.org/1999/xlink"; version="1.1" width="1076px" 
height="398px" viewBox="-0.5 -0.5 1076 398" content="&lt;mxfile 
host=&quot;app.diagrams.net&quot; modified=&quot;2021-07-14T14:05:44.086Z&quot; 
agent=&quot;5.0 (X11)&quot; etag=&quot;heBcjQYLP05MJ4nWahSj&quot; 
version=&quot;14.8.6&quot; type=&quot;device&quot;&gt;&lt;diagram 
id=&quot;PpkpfZO7TL7CUlFfbbxv&quot; name=&quot;Seite-1&quo [...]
\ No newline at end of file
diff --git a/doc/sphinx/anastasis_truth.png b/doc/sphinx/anastasis_truth.png
new file mode 100644
index 0000000..7f23fa2
Binary files /dev/null and b/doc/sphinx/anastasis_truth.png differ
diff --git a/doc/sphinx/anastasis_truth_payment.png 
b/doc/sphinx/anastasis_truth_payment.png
new file mode 100644
index 0000000..70a6b3d
Binary files /dev/null and b/doc/sphinx/anastasis_truth_payment.png differ
diff --git a/doc/sphinx/authentication.rst b/doc/sphinx/authentication.rst
new file mode 100644
index 0000000..fc516fc
--- /dev/null
+++ b/doc/sphinx/authentication.rst
@@ -0,0 +1,110 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+
+.. _anastasis-auth-methods:
+
+----------------------
+Authentication Methods
+----------------------
+
+This section describes the supported authentication methods in detail.  We
+note that the server implements rate limiting for all authentication methods
+to ensure that malicious strong attackers cannot guess the values by
+brute-force. Typically, a user is given three attempts per hour to enter the
+correct code from 2^63 possible values.  Transmitted codes also come with an
+expiration date. If the user re-requests a challenge to be sent, the same
+challenge may be transmitted (with the three attempts counter not increasing!)
+for a limited period of time (depending on the authentication method) before
+the service eventually rotates to a fresh random code with a fresh retry
+counter. Given the default value range and time intervals (which providers are
+at liberty to adjust), brute-force attacks against this are expected to
+succeed with a 50% probability after about 200000 years of attempts at the
+maximum permissible frequency.
+
+
+SMS (sms)
+^^^^^^^^^
+
+Sends an SMS with a code (prefixed with ``A-``) to the user's phone, including
+a UUID which identifies the challenge the code is for.  The user must send
+this code back with his request (see ``$RESPONSE`` under :ref:`Truth`).
+If the transmitted code is correct, the server responses with the requested
+encrypted key share.
+
+
+
+Email verification (email)
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sends an email with a code (prefixed with ``A-``) to the user's mail address,
+including a UUID which identifies the challenge the code is for.  The user
+must send this code back with his request (see ``$RESPONSE`` under 
:ref:`Truth`).
+If the transmitted code is correct, the server responses with the
+requested encrypted key share.
+
+
+Video identification (vid)
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Requires the user to identify via video-call.  In the video-call, the
+user is told the code (prefixed with ``A-``) needed to authenticate.
+
+The user is expected to delete all metadata revealing personal information
+from the images before uploading them. Since the respective images must be
+passed on to the video identification service in the event of password
+recovery, it should be ensured that no further information about the user can
+be derived from them.
+
+Video identification will typically result in the Anastasis provider
+requesting the user to be redirected to a Web site (or other URL) for the
+video-call.
+
+
+
+Security question (qa)
+^^^^^^^^^^^^^^^^^^^^^^
+
+Asks the user a security question.  The user sends back a **salted**
+hash over the answer.  The **question-salt** is stored encrypted as
+part of the recovery document and never revealed to the providers. This
+ensures that providers cannot derive the answer from the hash value.
+Furthermore, the security question itself is also only in the recovery
+document and never given to the Anastasis provider.  A moderately expensive
+hash function is used to further limit strong attackers that have obtained
+the recovery document from brute-forcing the answer.
+
+If the hash value matches with the one the server is expecting, the server
+answers with the requested encrypted key share.  However, unlike other
+encrypted key shares, the encrypted key share of a security question uses a
+special variation of the Anastasis encryption: Here, a different hash function
+over the security answer is used to provide an additional **key-salt** for the
+decryption of the (encrypted) **key share**.  This ensures that the key share
+remains irrecoverable without the answer even if the Anastasis provider
+storing the security question is malicious.
+
+
+Snail mail verification (post)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sends physical mail (snail mail) with a code (prefixed with ``A-``) to the
+user's mail address, including a UUID which identifies the challenge the code
+is for.  The user must send this code back with their request (see
+``$RESPONSE`` under :ref:`Truth`).  If the transmitted code is correct,
+the server responds with the requested encrypted key share.
diff --git a/doc/sphinx/conf.py b/doc/sphinx/conf.py
new file mode 100644
index 0000000..098645d
--- /dev/null
+++ b/doc/sphinx/conf.py
@@ -0,0 +1,304 @@
+"""
+  This file is part of Anastasis.
+  Copyright (C) 2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+"""
+# -*- coding: utf-8 -*-
+#
+# neuro documentation build configuration file, created by
+# sphinx-quickstart on Sat May 31 13:11:06 2014.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+sys.path.append(os.path.abspath('_exts'))
+
+import taler_sphinx_theme
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+needs_sphinx = '2.2.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'typescriptdomain',
+    'taler_sphinx_theme',
+    'sphinx.ext.todo',
+    'sphinx.ext.imgmath',
+    'httpdomain.httpdomain',
+    'recommonmark',
+    'sphinx.ext.graphviz',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+source_suffix = {
+    '.rst': 'restructuredtext',
+    '.txt': 'markdown',
+    '.md': 'markdown',
+}
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Anastasis'
+copyright = u'2020-2021 Anastasis SARL (AGPLv3+ or GFDL 1.3+)'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.0'
+# The full version, including alpha/beta/rc tags.
+release = '0.0.0pre0'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build', '_exts', 'cf', 'prebuilt', '**/README.md']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+default_role = "ts:type"
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'taler_sphinx_theme'
+html_theme_path = taler_sphinx_theme.html_theme_path()
+
+html_sidebars = {'**': ['logo-text.html', 'globaltoc.html', 'searchbox.html']}
+
+html_theme_options = {
+    # Set the name of the project to appear in the sidebar
+    "project_nav_name": "Anastasis",
+    "globaltoc_depth": 4,
+    "globaltoc_includehidden": False,
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+html_show_sphinx = False
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    ('anastasis', 'anastasis.tex',
+     'Anastasis Manual', 'Anastasis team', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+latex_appendices = ["fdl-1.3"]
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ("manpages/anastasis-httpd.1", "anastasis-httpd",
+     "anastasis HTTP backend", "Anastasis SARL",
+     1),
+    ("manpages/anastasis.conf.5", "anastasis.conf",
+     "anastasis configuration file", "Anastasis SARL",
+     5),
+    ("manpages/anastasis-gtk.1", "anastasis-gtk",
+     "anastasis GTK+ frontend", "Anastasis SARL",
+     1),
+    ("manpages/anastasis-reducer.1", "anastasis-reducer",
+     "anastasis CLI frontend", "Anastasis SARL",
+     1),
+    ("manpages/anastasis-config.1", "anastasis-config",
+     "anastasis configuration file manipulation", "Anastasis SARL",
+     1),
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    ("index", "anastasis", "Anastasis Manual",
+     "Anastasis SARL", "MENU ENTRY", "DESCRIPTION", "CATEGORY"),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
+
+# The output format for Graphviz when building HTML files.
+# This must be either 'png' or 'svg'; the default is 'png'.
+graphviz_output_format = 'svg'
diff --git a/doc/sphinx/configuration.rst b/doc/sphinx/configuration.rst
new file mode 100644
index 0000000..a2c9ad0
--- /dev/null
+++ b/doc/sphinx/configuration.rst
@@ -0,0 +1,30 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+=============
+Configuration
+=============
+
+Details about the contents of the configuration file are describe in
+the ``anastasis.conf(5)`` chapter.  This chapter only describes the
+configuration format.
+
+.. include:: frags/configuration-format.rst
+
+.. include:: frags/using-anastasis-config.rst
diff --git a/doc/sphinx/core/api-common.rst b/doc/sphinx/core/api-common.rst
new file mode 100644
index 0000000..a7d77ba
--- /dev/null
+++ b/doc/sphinx/core/api-common.rst
@@ -0,0 +1,360 @@
+..
+  This file is part of Anastasis
+
+  Copyright (C) 2014-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero Public License as published by the Free Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+
+.. _http-common:
+
+
+-------------------------
+HTTP Request and Response
+-------------------------
+
+Certain response formats are common for all requests. They are documented here
+instead of with each individual request.  Furthermore, we note that clients may
+theoretically fail to receive any response.  In this case, the client should
+verify that the Internet connection is working properly, and then proceed to
+handle the error as if an internal error (500) had been returned.
+
+.. http:any:: /*
+
+
+  **Request:**
+
+  Unless specified otherwise, HTTP requests that carry a message body must
+  have the content type ``application/json``.
+
+  :reqheader Content-Type: application/json
+
+  **Response:**
+
+  :resheader Content-Type: application/json
+
+  :http:statuscode:`200 Ok`:
+    The request was successful.
+  :http:statuscode:`400 Bad request`:
+    One of the arguments to the request is missing or malformed.
+  :http:statuscode:`500 Internal server error`:
+    This always indicates some serious internal operational error of the 
Anastasis
+    provider, such as a program bug, database problems, etc., and must not be 
used for
+    client-side problems.  When facing an internal server error, clients should
+    retry their request after some delay.  We recommended initially trying 
after
+    1s, twice more at randomized times within 1 minute, then the user should be
+    informed and another three retries should be scheduled within the next 24h.
+    If the error persists, a report should ultimately be made to the auditor,
+    although the auditor API for this is not yet specified.  However, as 
internal
+    server errors are always reported to the exchange operator, a good operator
+    should naturally be able to address them in a timely fashion, especially
+    within 24h.
+
+  Unless specified otherwise, all error status codes (4xx and 5xx) have a 
message
+  body with an `ErrorDetail` JSON object.
+
+  **Details:**
+
+  .. ts:def:: ErrorDetail
+
+    interface ErrorDetail {
+
+      // Numeric error code unique to the condition, see 
``gnu-taler-error-codes`` in GANA.
+      // The other arguments are specific to the error value reported here.
+      code: number;
+
+      // Human-readable description of the error, i.e. "missing parameter", 
"commitment violation", ...
+      // Should give a human-readable hint about the error's nature. Optional, 
may change without notice!
+      hint?: string;
+
+    }
+
+-----------------------
+Protocol Version Ranges
+-----------------------
+
+Anastasis services expose the range of API versions they support.  Clients in
+turn have an API version range they support.  These version ranges are written
+down in the `libtool version format
+<https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html>`__.
+
+A protocol version is a positive, non-zero integer.  A protocol version range 
consists of three components:
+
+1. The ``current`` version.  This is the latest version of the protocol 
supported by the client or service.
+2. The ``revision`` number.  This value should usually not be interpreted by 
the client/server, but serves
+   purely as a comment.  Each time a service/client for a protocol is updated 
while supporting the same
+   set of protocol versions, the revision should be increased.
+   In rare cases, the revision number can be used to work around unintended 
breakage in deployed
+   versions of a service.  This is discouraged and should only be used in 
exceptional situations.
+3. The ``age`` number.  This non-zero integer identifies with how many 
previous protocol versions this
+   implementation is compatible.  An ``age`` of 0 implies that the 
implementation only supports
+   the ``current`` protocol version.  The ``age`` must be less or equal than 
the ``current`` protocol version.
+
+To avoid confusion with semantic versions, the protocol version range is 
written down in the following format:
+
+.. code:: none
+
+  current[:revision[:age]]
+
+The angle brackets mark optional components. If either ``revision`` or ``age`` 
are omitted, they default to 0.
+
+Examples:
+
+* "1" and "1" are compatible
+* "1" and "2" are **incompatible**
+* "2:0:1" and "1:0:0" are compatible
+* "2:5:1" and "1:10:0" are compatible
+* "4:0:1" and "2:0:0" are **incompatible**
+* "4:0:1" and "3:0:0" are compatible
+
+.. note::
+
+  `Semantic versions <https://semver.org/>`__ are not a good tool for this 
job, as we concisely want to express
+  that the client/server supports the last ``n`` versions of the protocol.
+  Semantic versions don't support this, and semantic version ranges are too 
complex for this.
+
+.. warning::
+
+  A client doesn't have one single protocol version range.  Instead, it has
+  a protocol version range for each type of service it talks to.
+
+.. warning::
+
+  For privacy reasons, the protocol version range of a client should not be
+  sent to the service.  Instead, the client should just use the two version 
ranges
+  to decide whether it will talk to the service.
+
+
+.. _encodings-ref:
+
+----------------
+Common encodings
+----------------
+
+This section describes how certain types of values are represented throughout 
the API.
+
+.. _base32:
+
+Binary Data
+^^^^^^^^^^^
+
+.. ts:def:: foobase
+
+  type Base32 = string;
+
+Binary data is generally encoded using Crockford's variant of Base32
+(http://www.crockford.com/wrmg/base32.html), except that "U" is not excluded
+but also decodes to "V" to make OCR easy.  We will still simply use the JSON
+type "base32" and the term "Crockford Base32" in the text to refer to the
+resulting encoding.
+
+
+Hash codes
+^^^^^^^^^^
+Hash codes are strings representing base32 encoding of the respective
+hashed data. See `base32`_.
+
+.. ts:def:: HashCode
+
+  // 64-byte hash code.
+  type HashCode = string;
+
+.. ts:def:: ShortHashCode
+
+  // 32-byte hash code.
+  type ShortHashCode = string;
+
+
+
+Large numbers
+^^^^^^^^^^^^^
+
+Large numbers such as 256 bit keys, are transmitted as other binary data in
+Crockford Base32 encoding.
+
+
+Timestamps
+^^^^^^^^^^
+
+Timestamps are represented by the following structure:
+
+.. ts:def:: Timestamp
+
+  interface Timestamp {
+    // Milliseconds since epoch, or the special
+    // value "never" to represent an event that will
+    // never happen.
+    t_ms: number | "never";
+  }
+
+.. ts:def:: RelativeTime
+
+  interface Duration {
+    // Duration in milliseconds or "forever"
+    // to represent an infinite duration.
+    d_ms: number | "forever";
+  }
+
+
+.. _public\ key:
+
+
+Integers
+^^^^^^^^
+
+.. ts:def:: Integer
+
+  // JavaScript numbers restricted to integers.
+  type Integer = number;
+
+Objects
+^^^^^^^
+
+.. ts:def:: Object
+
+  // JavaScript objects, no further restrictions.
+  type Object = object;
+
+Keys
+^^^^
+
+.. ts:def:: EddsaPublicKey
+
+   // EdDSA and ECDHE public keys always point on Curve25519
+   // and represented  using the standard 256 bits Ed25519 compact format,
+   // converted to Crockford `Base32`.
+   type EddsaPublicKey = string;
+
+.. ts:def:: EddsaPrivateKey
+
+   // EdDSA and ECDHE public keys always point on Curve25519
+   // and represented  using the standard 256 bits Ed25519 compact format,
+   // converted to Crockford `Base32`.
+   type EddsaPrivateKey = string;
+
+.. _signature:
+
+Signatures
+^^^^^^^^^^
+
+
+.. ts:def:: EddsaSignature
+
+  // EdDSA signatures are transmitted as 64-bytes `base32`
+  // binary-encoded objects with just the R and S values (base32_ binary-only).
+  type EddsaSignature = string;
+
+.. _amount:
+
+Amounts
+^^^^^^^
+
+.. ts:def:: Amount
+
+  type Amount = string;
+
+Amounts of currency are serialized as a string of the format
+``<Currency>:<DecimalAmount>``.  Taler treats monetary amounts as
+fixed-precision numbers, with 8 decimal places.  Unlike floating point numbers,
+this allows accurate representation of monetary amounts.
+
+The following constrains apply for a valid amount:
+
+1. The ``<Currency>`` part must be at most 11 characters long and may only 
consist
+   of ASCII letters (``a-zA-Z``).
+2. The integer part of ``<DecimalAmount>`` may be at most 2^52.
+3. The fractional part of ``<DecimalAmount>`` may contain at most 8 decimal 
digits.
+
+.. note::
+
+  "EUR:1.50" and "EUR:10" are valid amounts.  These are all invalid amounts: 
"A:B:1.5", "EUR:4503599627370501.0", "EUR:1.", "EUR:.1".
+
+An amount that is prefixed with a ``+`` or ``-`` character is also used in 
certain contexts.
+When no sign is present, the amount is assumed to be positive.
+
+
+Time
+^^^^
+
+In signed messages, time is represented using 64-bit big-endian values,
+denoting microseconds since the UNIX Epoch.  ``UINT64_MAX`` represents "never".
+
+.. sourcecode:: c
+
+  struct GNUNET_TIME_Absolute {
+    uint64_t timestamp_us;
+  };
+  struct GNUNET_TIME_AbsoluteNBO {
+    uint64_t abs_value_us__;       // in network byte order
+  };
+
+Cryptographic primitives
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+All elliptic curve operations are on Curve25519.  Public and private keys are
+thus 32 bytes, and signatures 64 bytes.  For hashing, including HKDFs, Taler
+uses 512-bit hash codes (64 bytes).
+
+.. sourcecode:: c
+
+   struct GNUNET_HashCode {
+     uint8_t hash[64];      // usually SHA-512
+   };
+
+.. _TALER_EcdhEphemeralPublicKeyP:
+.. sourcecode:: c
+
+   struct TALER_EcdhEphemeralPublicKeyP {
+     uint8_t ecdh_pub[32];
+   };
+
+.. sourcecode:: c
+
+   struct UUID {
+     uint32_t value[4];
+   };
+
+.. _Signatures:
+
+Signatures
+^^^^^^^^^^
+Any piece of signed data, complies to the abstract data structure given below.
+
+.. sourcecode:: c
+
+  struct Data {
+    struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
+    type1_t payload1;
+    type2_t payload2;
+    ...
+  };
+
+  /*From gnunet_crypto_lib.h*/
+  struct GNUNET_CRYPTO_EccSignaturePurpose {
+    /**
+
+    The following constraints apply for a valid amount:
+
+     * This field is used to express the context in
+     * which the signature is made, ensuring that a
+     * signature cannot be lifted from one part of the protocol
+     * to another. See `src/include/taler_signatures.h` within the
+     * exchange's codebase (git://taler.net/exchange).
+     */
+    uint32_t purpose;
+    /**
+     * This field equals the number of bytes being signed,
+     * namely 'sizeof (struct Data)'.
+     */
+    uint32_t size;
+  };
diff --git a/doc/sphinx/cryptography.rst b/doc/sphinx/cryptography.rst
new file mode 100644
index 0000000..6e8c29b
--- /dev/null
+++ b/doc/sphinx/cryptography.rst
@@ -0,0 +1,298 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+------------
+Cryptography
+------------
+
+When a user needs to interact with Anastasis, the system first derives some key
+material, but not the master secret, from the user's **identifier** using
+different HKDFs.  These HKDFs are salted using the respective escrow
+provider's **server salt**, which ensures that the accounts for the same user
+cannot be easily correlated across the various Anastasis servers.
+
+Each Anastasis server uses an EdDSA **account key** to identify the account of
+the user.  The account private key is derived from the user's **identifier** 
using
+a computationally expensive cryptographic hash function.  Using an
+expensive hash algorithm is assumed to make it infeasible for a weak adversary 
to
+determine account keys by brute force (without knowing the user's identifier).
+However, it is assumed that a strong adversary performing a targeted attack can
+compute the account key pair.
+
+The public account key is Crockford base32-encoded in the URI to identify the
+account, and used to sign requests.  These signatures are also provided in
+base32-encoding and transmitted using the HTTP header
+``Anastasis-Account-Signature``.
+
+When confidential data is uploaded to an Anastasis server, the respective
+payload is encrypted using AES-GCM with a symmetric key and initialization
+vector derived from the **identifier** and a high-entropy **nonce**.  The
+nonce and the GCM tag are prepended to the ciphertext before being uploaded to
+the Anastasis server.  This is done whenever confidential data is stored with
+the server.
+
+The **core secret** of the user is (AES) encrypted using a symmetric **master
+key**.  Recovering this master key requires the user to satisfy a particular
+**policy**.  Policies specify a set of **escrow methods**, each of which leads
+the user to a **key share**. Combining those key shares (by hashing) allows
+the user to obtain a **policy key**, which can be used to decrypt the **master
+key**.  There can be many policies, satisfying any of these will allow the
+user to recover the master key.  A **recovery document** contains the
+encrypted **core secret**, a set of escrow methods and a set of policies.
+
+
+
+
+Key derivations
+^^^^^^^^^^^^^^^
+
+EdDSA and ECDHE public keys are always points on Curve25519 and represented
+using the standard 256 bit Ed25519 compact format.  The binary representation
+is converted to Crockford Base32 when transmitted inside JSON or as part of
+URLs.
+
+To start, a user provides their private, unique and unforgettable
+**identifier** as a seed to identify their account.  For example, this could
+be a social security number together with their full name.  Specifics may
+depend on the cultural context, in this document we will simply refer to this
+information as the **identifier**.
+
+This identifier will be first hashed with Argon2, to provide a **kdf_id**
+which will be used to derive other keys later. The Hash must also include the
+respective **server_salt**. This also ensures that the **kdf_id** is different
+on each server. The use of Argon2 and the respective **server_salt** is 
intended
+to make it difficult to brute-force **kdf_id** values and help protect the 
user's
+privacy. Also this ensures that the **kdf_id**\ s on every server differs. 
However,
+we do not assume that the **identifier** or the **kdf_id** cannot be
+determined by an adversary performing a targeted attack, as a user's
+**identifier** is likely to always be known to state actors and may
+likely also be available to other actors.
+
+
+.. code-block:: none
+
+    kdf_id := Argon2( identifier, server_salt, keysize )
+
+**identifier**: The secret defined from the user beforehand.
+
+**server_salt**: The salt from the Server.
+
+**keysize**: The desired output size of the KDF, here 32 bytes.
+
+
+Verification
+------------
+
+For users to authorize "policy" operations we need an EdDSA key pair.  As we
+cannot assure that the corresponding private key is truly secret, such policy
+operations must never be destructive: Should an adversary learn the private
+key, they could access (and with the **kdf_id**, decrypt) the user's policy 
(but
+not the core secret), or upload a new version of the
+**encrypted recovery document** (but not delete an existing version).
+
+For the generation of the private key we use the **kdf_id** as the entropy 
source,
+hash it to derive a base secret which will then be processed to fit the
+requirements for EdDSA private keys.  From the private key we can then
+generate the corresponding public key.  Here, "ver" is used as a salt for the
+HKDF to ensure that the result differs from other cases where we hash
+**kdf_id**.
+
+.. code-block:: none
+
+    ver_secret := HKDF(kdf_id, "ver", keysize)
+    eddsa_priv := eddsa_d_to_a(ver_secret)
+    eddsa_pub := get_EdDSA_Pub(eddsa_priv)
+
+
+**HKDF()**: The HKDF-function uses two phases: First we use HMAC-SHA512 for 
the extraction phase, then HMAC-SHA256 is used for expansion phase.
+
+**kdf_id**: Hashed identifier.
+
+**key_size**: Size of the output, here 32 bytes.
+
+**ver_secret**: Derived key from the ``kdf_id``, serves as intermediate step 
for the generation of the private key.
+
+**eddsa_d_to_a()**: Function which converts the ver_key to a valid EdDSA 
private key. Specifically, assuming the value ``eddsa_priv`` is in a 32-byte 
array "digest", the function clears and sets certain bits as follows:
+
+.. code-block:: c
+
+   digest[0] = (digest[0] & 0x7f) | 0x40;
+   digest[31] &= 0xf8;
+
+**eddsa_priv**: The generated EdDSA private key.
+
+**eddsa_pub**: The generated EdDSA public key.
+
+
+Encryption
+----------
+
+For symmetric encryption of data we use AES256-GCM. For this we need a
+symmetric key and an initialization vector (IV).  To ensure that the
+symmetric key changes for each encryption operation, we compute the
+key material using an HKDF over a ``nonce`` and the ``kdf_id``.
+
+.. code-block:: none
+
+    (iv,key) := HKDF(kdf_id, nonce, keysize + ivsize)
+
+**HKDF()**: The HKDF-function uses two phases: First we use HMAC-SHA512 for 
the extraction phase, then HMAC-SHA256 is used for expansion phase.
+
+**kdf_id**: Hashed identifier.
+
+**keysize**: Size of the AES symmetric key, here 32 bytes.
+
+**ivsize**: Size of the AES GCM IV, here 12 bytes.
+
+**prekey**: Original key material.
+
+**nonce**: 32-byte nonce, must never match "ver" (which it cannot as the 
length is different). Of course, we must
+avoid key reuse. So, we have to use different nonces to get different keys and 
IVs (see below).
+
+**key**: Symmetric key which is later used to encrypt the documents with 
AES256-GCM.
+
+**iv**: IV which will be used for AES-GCM.
+
+
+
+Key Usage
+^^^^^^^^^
+
+The keys we have generated are then used to encrypt the **recovery document** 
and
+the **key_share** of the user.
+
+
+Encryption
+----------
+
+Before every encryption a 32-byte nonce is generated.
+From this the symmetric key is computed as described above.
+We use AES256-GCM for the encryption of the **recovery document** and
+the **key_share**.  To ensure that the key derivation for the encryption
+of the **recovery document** differs fundamentally from that of an
+individual **key share**, we use different salts ("erd" and "eks", 
respectively).
+
+.. code-block:: none
+
+    (iv0, key0) := HKDF(key_id, nonce0, "erd", keysize + ivsize)
+    (encrypted_recovery_document, aes_gcm_tag) := 
AES256_GCM(recovery_document, key0, iv0)
+    (iv_i, key_i) := HKDF(key_id, nonce_i, "eks", [optional data], keysize + 
ivsize)
+    (encrypted_key_share_i, aes_gcm_tag_i) := AES256_GCM(key_share_i, key_i, 
iv_i)
+
+**encrypted_recovery_document**: The encrypted **recovery document** which 
contains the escrow methods, policies
+and the encrypted **core secret**.
+
+**nonce0**: Nonce which is used to generate *key0* and *iv0* which are used 
for the encryption of the *recovery document*.
+Nonce must contain the string "ERD".
+
+**optional data**: Key material that optionally is contributed from the 
authentication method to further obfuscate the key share from the escrow 
provider.
+
+**encrypted_key_share_i**: The encrypted **key_share** which the escrow 
provider must release upon successful authentication.
+Here, **i** must be a positive number used to iterate over the various **key 
shares** used for the various **escrow methods**
+at the various providers.
+
+**nonce_i**: Nonce which is used to generate *key_i* and *iv_i* which are used 
for the encryption of the **key share**. **i** must be
+the same number as specified above for *encrypted_key_share_i*. Nonce must 
contain the string "EKS" plus the according *i*.
+
+As a special rule, when a **security question** is used to authorize access to 
an
+**encrypted_key_share_i**, then the salt "eks" is replaced with an (expensive) 
hash
+of the answer to the security question as an additional way to make the key 
share
+inaccessible to those who do not have the answer:
+
+.. code-block:: none
+
+   powh := POW_HASH (qsalt, answer)
+   ekss := HKDF("Anastasis-secure-question-uuid-salting",
+                powh,
+                uuid);
+   (iv_i, key_i) := HKDF(key_id, nonce_i, ekss, [optional data], keysize + 
ivsize)
+
+
+**qsalt**: Salt value used to hash answer to satisfy the challenge to prevent 
the provider from determining the answer via guessing.
+
+**answer**: Answer to the security question, in UTF-8, as entered by the user.
+
+**powh**: Result of the (expensive, proof-of-work) hash algorithm.
+
+**uuid**: UUID of the challenge associated with the security question and the 
encrypted key share.
+
+**ekss**: Replacement salt to be used instead of "eks" when deriving the key 
to encrypt/decrypt the key share.
+
+
+Signatures
+----------
+
+The EdDSA keys are used to sign the data sent from the client to the
+server. Everything the client sends to server is signed. The following
+algorithm is equivalent for **Anastasis-Policy-Signature**.
+
+.. code-block:: none
+
+    (anastasis-account-signature) := eddsa_sign(h_body, eddsa_priv)
+    ver_res := eddsa_verifiy(h_body, anastasis-account-signature, eddsa_pub)
+
+**anastasis-account-signature**: Signature over the SHA-512 hash of the body 
using the purpose code ``TALER_SIGNATURE_ANASTASIS_POLICY_UPLOAD`` (1400) (see 
GNUnet EdDSA signature API for the use of purpose).
+
+**h_body**: The hashed body.
+
+**ver_res**: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+
+
+When requesting policy downloads, the client must also provide a signature:
+
+.. code-block:: none
+
+    (anastasis-account-signature) := eddsa_sign(version, eddsa_priv)
+    ver_res := eddsa_verifiy(version, anastasis-account-signature, eddsa_pub)
+
+**anastasis-account-signature**: Signature over the SHA-512 hash of the body 
using the purpose code ``TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD`` (1401) 
(see GNUnet EdDSA signature API for the use of purpose).
+
+**version**: The version requested as a 64-bit integer, 2^64-1 for the "latest 
version".
+
+**ver_res**: A boolean value. True: Signature verification passed, False: 
Signature verification failed.
+
+
+
+Availability Considerations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Anastasis considers two main threats against availability. First, the
+Anastasis server operators must be protected against denial-of-service attacks
+where an adversary attempts to exhaust the operator's resources.  The API 
protects
+against these attacks by allowing operators to set fees for all
+operations. Furthermore, all data stored comes with an expiration logic, so an
+attacker cannot force servers to store data indefinitely.
+
+A second availability issue arises from strong adversaries that may be able to
+compute the account keys of some user.  While we assume that such an adversary
+cannot successfully authenticate against the truth, the account key does
+inherently enable these adversaries to upload a new policy for the account.
+This cannot be prevented, as the legitimate user must be able to set or change
+a policy using only the account key.  To ensure that an adversary cannot
+exploit this, policy uploads first of all never delete existing policies, but
+merely create another version.  This way, even if an adversary uploads a
+malicious policy, a user can still retrieve an older version of the policy to
+recover access to their data.  This append-only storage for policies still
+leaves a strong adversary with the option of uploading many policies to
+exhaust the Anastasis server's capacity.  We limit this attack by requiring a
+policy upload to include a reference to a **payment identifier** from a payment
+made by the user.  Thus, a policy upload requires both knowledge of the
+**identity** and making a payment.  This effectively prevents an adversary
+from using the append-only policy storage from exhausting Anastasis server
+capacity.
diff --git a/doc/sphinx/db.rst b/doc/sphinx/db.rst
new file mode 100644
index 0000000..838a848
--- /dev/null
+++ b/doc/sphinx/db.rst
@@ -0,0 +1,28 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+---------
+DB Schema
+---------
+
+.. image:: anastasis-db.png
+.. image:: anastasis_challengecode.png
+.. image:: anastasis_challenge_payment.png
+.. image:: anastasis_truth.png
+.. image:: anastasis_truth_payment.png
diff --git a/doc/sphinx/design-documents/001-anastasis-ux.rst 
b/doc/sphinx/design-documents/001-anastasis-ux.rst
new file mode 100644
index 0000000..741d6ca
--- /dev/null
+++ b/doc/sphinx/design-documents/001-anastasis-ux.rst
@@ -0,0 +1,318 @@
+Design Doc 001: Anastasis User Experience
+#########################################
+
+Summary
+=======
+
+This document describes the recommended way of implementing the user experience
+of setting up and making use of :doc:`../introduction` account recovery.
+
+Motivation
+==========
+
+Wallet state consisting of digital cash, transaction history etc. should not 
be lost.
+Taler provides a backup mechanism to prevent that.
+As an additional protection measure Anastasis can be used to provide access to 
the backup,
+even if all devices and offline secrets have been lost.
+
+Access to the backup key is shared with escrow providers that can be chosen by 
the user.
+
+Setup Steps
+===========
+
+.. graphviz::
+
+   digraph G {
+       rankdir=LR;
+       nodesep=0.5;
+       settings [
+           label = "Backup\nSettings";
+           shape = oval;
+       ];
+       backup_is_setup [
+           label = "Backup\nsetup?";
+           shape = diamond;
+       ];
+       provide_id [
+           label = "Provide\nIdentification";
+           shape = rectangle;
+       ];
+       select_auth [
+           label = "Select\nAuthentication Methods";
+           shape = rectangle;
+       ];
+       provide_auth [
+           label = "Provide\nAuthentication Data";
+           shape = rectangle;
+       ];
+       select_providers [
+           label = "Select\nService Providers";
+           shape = rectangle;
+       ];
+       review_policy [
+           label = "Review Recovery Policy";
+           shape = rectangle;
+       ];
+       edit_policy [
+           label = "Edit Recovery Policy";
+           shape = rectangle;
+       ];
+       pay [
+           label = "Confirm Payment";
+           shape = oval;
+       ];
+       settings -> backup_is_setup;
+       backup_is_setup -> provide_id [label="Yes: Setup Recovery"];
+       backup_is_setup -> settings [label="No"];
+       provide_id -> select_auth;
+       select_auth -> provide_auth;
+       provide_auth -> select_auth;
+       select_auth -> select_providers;
+       select_providers -> select_auth;
+       select_providers -> review_policy;
+       review_policy -> edit_policy;
+       edit_policy -> review_policy;
+       review_policy -> pay;
+   }
+
+Entry point: Settings
+---------------------
+
+The app settings should have a section for Anastasis using a different more
+universally understood name like Wallet Recovery.
+
+The section should have an option to setup Anastasis initially.  This option
+should be disabled as long as no backup has been set up.  The section could
+maybe be integrated into the backup settings.
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/menu.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/settings.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/backupsettings.png
+  :width: 800
+
+Providing Identification
+------------------------
+
+Instead of a forgettable freely chosen user name, Anastasis collects various
+static information from the user to generate a unique user identifier from
+that.  Examples for such identifier would be a concatenation of the full name
+of the user and their social security or passport number(s).
+
+The information that can reasonably used here various from cultural context
+and jurisdiction.  Therefore, one idea is to start by asking for continent and
+then the country of primary legal residence, and then continue from there with
+country-specific attributes (and also offer a stateless person option).
+
+Special care should be taken to avoid that information can later be provided
+ambiguously thus changing the user identifier and not being able to restore
+the user's data.  This can be typographic issues like someone providing
+"Seestr."  and later "Seestrasse" or "Seestraße" or "seestrasse".  But it can
+also be simple typos that we can only prevent in some instances like when
+checking checksums in passport numbers.
+
+The user should be made aware that this data will not leave the app and that
+it is only used to compute a unique identifier that can not be forgotten.
+
+If possible, we should guide the user in the country selection by accessing
+permission-less information such as the currently set language/locale and the
+country of the SIM card.  But nothing invasive like the actual GPS location.
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/userid.png
+  :width: 800
+
+Add Authentication Methods
+--------------------------
+
+After creating a unique identifier, the user can chose one or more
+:ref:`anastasis-auth-methods` supported by Anastasis.
+
+When selecting a method, the user is already asked to provide the information
+required for the recovery with that method.  For example, a photo of
+themselves, their phone number or mailing address.
+
+The user interface validates that the inputs are well-formed, and refuses
+inputs that are clearly invalid. Where possible, it pre-fills the fields with
+sane values (phone number, e-mail addresses, country of residence).
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/truth.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/addtruth.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/addtruthmail.png
+  :width: 800
+
+
+Confirm/Change Service Providers
+--------------------------------
+
+From the dialog where the user is adding authentication methods, the user can
+optionally jump to a side-action with list of available providers (and their
+status) and possibly add additional providers that are not included in the
+default list provided by the wallet.
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/policy.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/addpolicy.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/addpolicymethod.png
+  :width: 800
+
+
+Defining Recovery Options
+-------------------------
+
+After mapping authentication methods to providers, the user needs select which
+combinations are sufficient to recover the secret.  Here, the system
+pre-computes a reasonably sane allocation, for small ``n`` the default could
+be ``n-1`` out of ``n``.
+
+We should propose a mapping of authentication methods to providers by
+minimizing cost (tricky: sign-up vs. recovery costs, different currencies) and
+distributing the selected authentication methods across as many providers as
+possible.
+
+The user should be able to change the proposed default selection
+and add more than one provider to each chosen method.
+
+Using Anastatis providers usually is not free.  From here on, the UI should
+show estimated recurring costs (yearly) and the cost of recovery.  These costs
+should get updated with each user action affecting those costs such as
+when the user reconfigures the policies.
+
+
+Pay for Setup
+-------------
+
+As the last step when all information has been properly provided, the user is
+asked to pay for the service with the regular wallet payment confirmation
+screen.
+
+
+Show Service Status After Setup
+===============================
+
+TODO
+
+Recovery Steps
+==============
+
+.. graphviz::
+
+   digraph G {
+       rankdir=LR;
+       nodesep=0.5;
+       settings [
+           label = "Restore from Backup";
+           shape = oval;
+       ];
+       provide_id [
+           label = "Provide\nIdentification";
+           shape = rectangle;
+       ];
+       select_challenge [
+           label = "Select\nAuthentication Challenge";
+           shape = rectangle;
+       ];
+       satisfy_challenge [
+           label = "Enter\nChallenge Response";
+           shape = rectangle;
+       ];
+       pay [
+           label = "Confirm Payment";
+           shape = oval;
+       ];
+       finished [
+           label = "Success";
+           shape = rectangle;
+       ];
+       settings -> provide_id;
+       provide_id -> settings [label="Back"];
+       provide_id -> select_challenge;
+       select_challenge -> provide_id [label="Back"];
+       select_challenge -> satisfy_challenge;
+       select_challenge -> pay;
+       satisfy_challenge -> pay;
+       pay -> satisfy_challenge;
+       satisfy_challenge -> select_challenge;
+       pay -> finished;
+       satisfy_challenge -> finished;
+   }
+
+
+Entry point: Settings
+---------------------
+
+Like the backup, the recovery option should be available via
+the App settings.
+
+The section should have an option to recover from backup.  If a previous
+recovery was not completed, the interaction should resume from that previous
+checkpoint instead of from the beginning.
+
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/menu.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/settings.png
+  :width: 800
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/backupsettings.png
+  :width: 800
+
+
+Providing Identification
+------------------------
+
+The first dialog(s) during recovery should be identical to the first dialog
+during backup: the user is asked to select a continent, country of residence
+and then to provide country-specific inputs for identification.
+
+.. image:: 
https://git.taler.net/anastasis.git/plain/doc/wireframe/png-export/userid.png
+  :width: 800
+
+Select Authentication Challenge
+-------------------------------
+
+If Anastasis could recover the recovery document via any provider, it should
+show a dialog allowing the user to select one of the open challenges, and
+highlight which challenges still need to be satisfied for the various policies.
+
+Additionally, the specific provider and recovery document version should be 
shown.
+The user should be able to change the provider or recovery document version,
+resulting in a switch of the recovery document and policies. If the user has
+already satisfied some challenges of the current recovery document, switching 
to a
+different recovery document should only be done after a confirmation pop-up 
dialog
+warning the user that the existing progress will be lost.
+
+When selecting a challenge, the user may be asked to confirm making a payment
+for this challenge if the provider requires payment.
+
+
+Payment
+-------
+
+Typcially, this would be the canonical wallet payment confirmation dialog.
+
+However, in the case of a security question, the payment confirmation should
+be combined with the dialog where the user enters the security answer (so
+instead of an ``Ok`` button, text showing the amount due and ``Pay`` should be
+used -- except of course if the security question challenge is free of
+charge).
+
+
+Enter Challenge Response
+------------------------
+
+If the challenge was not a security question, the dialog to enter the security
+code (PIN/TAN) should open after payment.  The security code field should have
+a prefix ``A-``. However, the user should be able to enter both only the
+numeric code, or the full code with the ``A-`` prefix (or ideally, the user
+cannot delete the pre-filled ``A-`` text).
+
+
+Success
+-------
+
+The user is informed about the successful recovery.  We may want to do this
+as part of a separate screen, or simply with a notification bar in the
+main wallet screen.
diff --git a/doc/sphinx/design-documents/999-template.rst 
b/doc/sphinx/design-documents/999-template.rst
new file mode 100644
index 0000000..f620248
--- /dev/null
+++ b/doc/sphinx/design-documents/999-template.rst
@@ -0,0 +1,25 @@
+Template
+########
+
+Summary
+=======
+
+Motivation
+==========
+
+Requirements
+============
+
+Proposed Solution
+=================
+
+Alternatives
+============
+
+Drawbacks
+=========
+
+Discussion / Q&A
+================
+
+(This should be filled in with results from discussions on mailing lists / 
personal communication.)
diff --git a/doc/sphinx/design-documents/index.rst 
b/doc/sphinx/design-documents/index.rst
new file mode 100644
index 0000000..3fb647a
--- /dev/null
+++ b/doc/sphinx/design-documents/index.rst
@@ -0,0 +1,13 @@
+Design Documents
+################
+
+This is a collection of design documents related to Anastasis.
+The goal of these documents is to discuss facilitate discussion around
+new features while keeping track of the evolution of the whole system
+and protocol.
+
+.. toctree::
+  :glob:
+
+  001-anastasis-ux
+  999-template
diff --git a/doc/sphinx/fdl-1.3.rst b/doc/sphinx/fdl-1.3.rst
new file mode 100644
index 0000000..49bf2d3
--- /dev/null
+++ b/doc/sphinx/fdl-1.3.rst
@@ -0,0 +1,453 @@
+.. _gnu-fdl-1.3:
+
+GNU Free Documentation License
+==============================
+
+Version 1.3, 3 November 2008
+
+Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation,
+Inc. \ https://fsf.org/
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+0. PREAMBLE
+-----------
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document “free” in the sense of freedom: to assure
+everyone the effective freedom to copy and redistribute it, with or
+without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of “copyleft”, which means that derivative works
+of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft license
+designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free program
+should come with manuals providing the same freedoms that the software
+does. But this License is not limited to software manuals; it can be
+used for any textual work, regardless of subject matter or whether it is
+published as a printed book. We recommend this License principally for
+works whose purpose is instruction or reference.
+
+1. APPLICABILITY AND DEFINITIONS
+--------------------------------
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The “Document”, below, refers
+to any such manual or work. Any member of the public is a licensee, and
+is addressed as “you”. You accept the license if you copy, modify or
+distribute the work in a way requiring permission under copyright law.
+
+A “Modified Version” of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A “Secondary Section” is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document’s overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding them.
+
+The “Invariant Sections” are certain Secondary Sections whose titles are
+designated, as being those of Invariant Sections, in the notice that
+says that the Document is released under this License. If a section does
+not fit the above definition of Secondary then it is not allowed to be
+designated as Invariant. The Document may contain zero Invariant
+Sections. If the Document does not identify any Invariant Sections then
+there are none.
+
+The “Cover Texts” are certain short passages of text that are listed, as
+Front-Cover Texts or Back-Cover Texts, in the notice that says that the
+Document is released under this License. A Front-Cover Text may be at
+most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A “Transparent” copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the general
+public, that is suitable for revising the document straightforwardly
+with generic text editors or (for images composed of pixels) generic
+paint programs or (for drawings) some widely available drawing editor,
+and that is suitable for input to text formatters or for automatic
+translation to a variety of formats suitable for input to text
+formatters. A copy made in an otherwise Transparent file format whose
+markup, or absence of markup, has been arranged to thwart or discourage
+subsequent modification by readers is not Transparent. An image format
+is not Transparent if used for any substantial amount of text. A copy
+that is not “Transparent” is called “Opaque”.
+
+Examples of suitable formats for Transparent copies include plain ASCII
+without markup, Texinfo input format, LaTeX input format, SGML or XML
+using a publicly available DTD, and standard-conforming simple HTML,
+PostScript or PDF designed for human modification. Examples of
+transparent image formats include PNG, XCF and JPG. Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the machine-generated
+HTML, PostScript or PDF produced by some word processors for output
+purposes only.
+
+The “Title Page” means, for a printed book, the title page itself, plus
+such following pages as are needed to hold, legibly, the material this
+License requires to appear in the title page. For works in formats which
+do not have any title page as such, “Title Page” means the text near the
+most prominent appearance of the work’s title, preceding the beginning
+of the body of the text.
+
+The “publisher” means any person or entity that distributes copies of
+the Document to the public.
+
+A section “Entitled XYZ” means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as “Acknowledgements”,
+“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of
+such a section when you modify the Document means that it remains a
+section “Entitled XYZ” according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this License,
+but only as regards disclaiming warranties: any other implication that
+these Warranty Disclaimers may have is void and has no effect on the
+meaning of this License.
+
+2. VERBATIM COPYING
+-------------------
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies to
+the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further copying
+of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+3. COPYING IN QUANTITY
+----------------------
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document’s license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover Texts:
+Front-Cover Texts on the front cover, and Back-Cover Texts on the back
+cover. Both covers must also clearly and legibly identify you as the
+publisher of these copies. The front cover must present the full title
+with all words of the title equally prominent and visible. You may add
+other material on the covers in addition. Copying with changes limited
+to the covers, as long as they preserve the title of the Document and
+satisfy these conditions, can be treated as verbatim copying in other
+respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy a
+computer-network location from which the general network-using public
+has access to download using public-standard network protocols a
+complete Transparent copy of the Document, free of added material. If
+you use the latter option, you must take reasonably prudent steps, when
+you begin distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+4. MODIFICATIONS
+----------------
+
+You may copy and distribute a Modified Version of the Document under the
+conditions of sections 2 and 3 above, provided that you release the
+Modified Version under precisely this License, with the Modified Version
+filling the role of the Document, thus licensing distribution and
+modification of the Modified Version to whoever possesses a copy of it.
+In addition, you must do these things in the Modified Version:
+
+-  A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions (which
+   should, if there were any, be listed in the History section of the
+   Document). You may use the same title as a previous version if the
+   original publisher of that version gives permission.
+-  B. List on the Title Page, as authors, one or more persons or
+   entities responsible for authorship of the modifications in the
+   Modified Version, together with at least five of the principal
+   authors of the Document (all of its principal authors, if it has
+   fewer than five), unless they release you from this requirement.
+-  C. State on the Title page the name of the publisher of the Modified
+   Version, as the publisher.
+-  D. Preserve all the copyright notices of the Document.
+-  E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+-  F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+-  G. Preserve in that license notice the full lists of Invariant
+   Sections and required Cover Texts given in the Document’s license
+   notice.
+-  H. Include an unaltered copy of this License.
+-  I. Preserve the section Entitled “History”, Preserve its Title, and
+   add to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page. If
+   there is no section Entitled “History” in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+-  J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise the
+   network locations given in the Document for previous versions it was
+   based on. These may be placed in the “History” section. You may omit
+   a network location for a work that was published at least four years
+   before the Document itself, or if the original publisher of the
+   version it refers to gives permission.
+-  K. For any section Entitled “Acknowledgements” or “Dedications”,
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+-  L. Preserve all the Invariant Sections of the Document, unaltered in
+   their text and in their titles. Section numbers or the equivalent are
+   not considered part of the section titles.
+-  M. Delete any section Entitled “Endorsements”. Such a section may not
+   be included in the Modified Version.
+-  N. Do not retitle any existing section to be Entitled “Endorsements”
+   or to conflict in title with any Invariant Section.
+-  O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or appendices
+that qualify as Secondary Sections and contain no material copied from
+the Document, you may at your option designate some or all of these
+sections as invariant. To do this, add their titles to the list of
+Invariant Sections in the Modified Version’s license notice. These
+titles must be distinct from any other section titles.
+
+You may add a section Entitled “Endorsements”, provided it contains
+nothing but endorsements of your Modified Version by various
+parties—for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of Front-Cover
+Text and one of Back-Cover Text may be added by (or through arrangements
+made by) any one entity. If the Document already includes a cover text
+for the same cover, previously added by you or by arrangement made by
+the same entity you are acting on behalf of, you may not add another;
+but you may replace the old one, on explicit permission from the
+previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+5. COMBINING DOCUMENTS
+----------------------
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its license
+notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by adding
+at the end of it, in parentheses, the name of the original author or
+publisher of that section if known, or else a unique number. Make the
+same adjustment to the section titles in the list of Invariant Sections
+in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled “History” in
+the various original documents, forming one section Entitled “History”;
+likewise combine any sections Entitled “Acknowledgements”, and any
+sections Entitled “Dedications”. You must delete all sections Entitled
+“Endorsements”.
+
+6. COLLECTIONS OF DOCUMENTS
+---------------------------
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+-------------------------------------
+
+A compilation of the Document or its derivatives with other separate and
+independent documents or works, in or on a volume of a storage or
+distribution medium, is called an “aggregate” if the copyright resulting
+from the compilation is not used to limit the legal rights of the
+compilation’s users beyond what the individual works permit. When the
+Document is included in an aggregate, this License does not apply to the
+other works in the aggregate which are not themselves derivative works
+of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these copies
+of the Document, then if the Document is less than one half of the
+entire aggregate, the Document’s Cover Texts may be placed on covers
+that bracket the Document within the aggregate, or the electronic
+equivalent of covers if the Document is in electronic form. Otherwise
+they must appear on printed covers that bracket the whole aggregate.
+
+8. TRANSLATION
+--------------
+
+Translation is considered a kind of modification, so you may distribute
+translations of the Document under the terms of section 4. Replacing
+Invariant Sections with translations requires special permission from
+their copyright holders, but you may include translations of some or all
+Invariant Sections in addition to the original versions of these
+Invariant Sections. You may include a translation of this License, and
+all the license notices in the Document, and any Warranty Disclaimers,
+provided that you also include the original English version of this
+License and the original versions of those notices and disclaimers. In
+case of a disagreement between the translation and the original version
+of this License or a notice or disclaimer, the original version will
+prevail.
+
+If a section in the Document is Entitled “Acknowledgements”,
+“Dedications”, or “History”, the requirement (section 4) to Preserve its
+Title (section 1) will typically require changing the actual title.
+
+9. TERMINATION
+--------------
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided under this License. Any attempt otherwise to copy,
+modify, sublicense, or distribute it is void, and will automatically
+terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally terminates
+your license, and (b) permanently, if the copyright holder fails to
+notify you of the violation by some reasonable means prior to 60 days
+after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated
+permanently if the copyright holder notifies you of the violation by
+some reasonable means, this is the first time you have received notice
+of violation of this License (for any work) from that copyright holder,
+and you cure the violation prior to 30 days after your receipt of the
+notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+10. FUTURE REVISIONS OF THIS LICENSE
+------------------------------------
+
+The Free Software Foundation may publish new, revised versions of the
+GNU Free Documentation License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns. See https://www.gnu.org/licenses/.
+
+Each version of the License is given a distinguishing version number. If
+the Document specifies that a particular numbered version of this
+License “or any later version” applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation. If the Document specifies
+that a proxy can decide which future versions of this License can be
+used, that proxy’s public statement of acceptance of a version
+permanently authorizes you to choose that version for the Document.
+
+11. RELICENSING
+---------------
+
+“Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World
+Wide Web server that publishes copyrightable works and also provides
+prominent facilities for anybody to edit those works. A public wiki that
+anybody can edit is an example of such a server. A “Massive Multiauthor
+Collaboration” (or “MMC”) contained in the site means any set of
+copyrightable works thus published on the MMC site.
+
+“CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+“Incorporate” means to publish or republish a Document, in whole or in
+part, as part of another Document.
+
+An MMC is “eligible for relicensing” if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole or
+in part into the MMC, (1) had no cover texts or invariant sections, and
+(2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+----------------------------------------------------
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+::
+
+       Copyright (C)  YEAR  YOUR NAME.
+       Permission is granted to copy, distribute and/or modify this document
+       under the terms of the GNU Free Documentation License, Version 1.3
+       or any later version published by the Free Software Foundation;
+       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover 
Texts.
+       A copy of the license is included in the section entitled "GNU
+       Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the “with … Texts.” line with this:
+
+::
+
+       with the Invariant Sections being LIST THEIR TITLES, with the
+       Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
diff --git a/doc/sphinx/frags/README.md b/doc/sphinx/frags/README.md
new file mode 100644
index 0000000..5070c7f
--- /dev/null
+++ b/doc/sphinx/frags/README.md
@@ -0,0 +1,18 @@
+# docs.git/frags
+
+This directory contains fragments to be included by the directive:
+
+  .. include:: RELATIVE-FILE-NAME
+
+If the fragment includes header lines, you MUST include it at top-level
+(no indentation for the directive).
+
+Otherwise, it can be included at either top-level or indented.
+
+See 
<https://docutils.sourceforge.io/docs/ref/rst/directives.html#including-an-external-document-fragment>.
+
+Tips:
+
+- Don't put index entries in frags/* files.
+  (They will result in a Sphinx warning.)
+  Instead, keep them in the *including* text.
diff --git a/doc/sphinx/frags/configuration-format.rst 
b/doc/sphinx/frags/configuration-format.rst
new file mode 100644
index 0000000..f9b28e1
--- /dev/null
+++ b/doc/sphinx/frags/configuration-format.rst
@@ -0,0 +1,69 @@
+Configuration format
+--------------------
+
+In Taler realm, any component obeys to the same pattern to get
+configuration values. According to this pattern, once the component has
+been installed, the installation deploys default values in
+${prefix}/share/taler/config.d/, in .conf files. In order to override
+these defaults, the user can write a custom .conf file and either pass
+it to the component at execution time, or name it taler.conf and place
+it under $HOME/.config/.
+
+A config file is a text file containing sections, and each section
+contains its values. The right format follows:
+
+.. code-block:: ini
+
+   [section1]
+   value1 = string
+   value2 = 23
+
+   [section2]
+   value21 = string
+   value22 = /path22
+
+Throughout any configuration file, it is possible to use ``$``-prefixed
+variables, like ``$VAR``, especially when they represent filesystem
+paths. It is also possible to provide defaults values for those
+variables that are unset, by using the following syntax:
+``${VAR:-default}``. However, there are two ways a user can set
+``$``-prefixable variables:
+
+by defining them under a ``[paths]`` section, see example below,
+
+.. code-block:: ini
+
+   [paths]
+   TALER_DEPLOYMENT_SHARED = ${HOME}/shared-data
+   ..
+   [section-x]
+   path-x = ${TALER_DEPLOYMENT_SHARED}/x
+
+or by setting them in the environment:
+
+.. code-block:: console
+
+   $ export VAR=/x
+
+The configuration loader will give precedence to variables set under
+``[path]``, though.
+
+The utility ``taler-config``, which gets installed along with the
+exchange, serves to get and set configuration values without directly
+editing the .conf. The option ``-f`` is particularly useful to resolve
+pathnames, when they use several levels of ``$``-expanded variables. See
+``taler-config --help``.
+
+Note that, in this stage of development, the file
+``$HOME/.config/taler.conf`` can contain sections for *all* the
+component. For example, both an exchange and a bank can read values from
+it.
+
+The repository ``git://taler.net/deployment`` contains examples of
+configuration file used in our demos. See under ``deployment/config``.
+
+   **Note**
+
+   Expectably, some components will not work just by using default
+   values, as their work is often interdependent. For example, a
+   merchant needs to know an exchange URL, or a database name.
diff --git a/doc/sphinx/frags/installing-anastasis-gtk.rst 
b/doc/sphinx/frags/installing-anastasis-gtk.rst
new file mode 100644
index 0000000..b9d5dc3
--- /dev/null
+++ b/doc/sphinx/frags/installing-anastasis-gtk.rst
@@ -0,0 +1,31 @@
+The following steps assume at least the GNUnet, gnunet-gtk and Anastasis
+dependencies are installed.
+
+First, unpack the anastasis-gtk tarball and change into the resulting
+directory.  Then, use the following commands to build and install
+anastasis-gtk:
+
+.. code-block:: console
+
+     $ ./configure [--prefix=PFX] \
+                   [--with-gnunet=GNUNETPFX] \
+                   [--with-exchange=EXCHANGEPFX] \
+                   [--with-anastasis=ANASTASISPFX]
+     $ # Each dependency can be fetched from non standard locations via
+     $ # the '--with-<LIBNAME>' option. See './configure --help'.
+     $ make
+     # make install
+
+If you did not specify a prefix, anastasis-gtk will be installed to
+``/usr/local``, which requires you to run the last step as ``root``.
+
+You have to specify ``-with-anastasis=/usr/local``, 
``--with-exchange=/usr/local`` and/or
+``--with-gnunet=/usr/local`` if you installed the exchange and/or
+GNUnet to ``/usr/local`` in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit ``/etc/ld.so.conf``, adding
+lines for ``GNUNETPFX/lib/`` and ``EXCHANGEPFX/lib/`` and ``PFX/lib/``
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run ``ldconfig``. Without this step, it is possible that the linker may not
+find the installed libraries and launching anastasis-gtk would then fail.
diff --git a/doc/sphinx/frags/installing-anastasis.rst 
b/doc/sphinx/frags/installing-anastasis.rst
new file mode 100644
index 0000000..7978b71
--- /dev/null
+++ b/doc/sphinx/frags/installing-anastasis.rst
@@ -0,0 +1,30 @@
+The following steps assume all dependencies are installed.
+
+First, unpack the Anastasis tarball and change into
+the resulting directory.
+Then, use the following commands to build and install Anastasis:
+
+.. code-block:: console
+
+     $ ./configure [--prefix=PFX] \
+                   [--with-gnunet=GNUNETPFX] \
+                   [--with-exchange=EXCHANGEPFX]
+     $ # Each dependency can be fetched from non standard locations via
+     $ # the '--with-<LIBNAME>' option. See './configure --help'.
+     $ make
+     # make install
+
+If you did not specify a prefix, Anastasis will be installed to
+``/usr/local``, which requires you to run the last step as ``root``.
+
+You have to specify ``--with-exchange=/usr/local`` and/or
+``--with-gnunet=/usr/local`` if you installed the exchange and/or
+GNUnet to ``/usr/local`` in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit ``/etc/ld.so.conf``, adding
+lines for ``GNUNETPFX/lib/`` and ``EXCHANGEPFX/lib/`` and ``PFX/lib/``
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run ``ldconfig``. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Anastasis backend would
+then fail.
diff --git a/doc/sphinx/frags/installing-debian.rst 
b/doc/sphinx/frags/installing-debian.rst
new file mode 100644
index 0000000..24f4d20
--- /dev/null
+++ b/doc/sphinx/frags/installing-debian.rst
@@ -0,0 +1,59 @@
+To install the GNU Taler Debian packages, first ensure that you have
+the right Debian distribution. At this time, the packages are built for
+Sid, which means you should use a system which at least includes
+unstable packages in its source list.  We recommend using APT pinning
+to limit unstable packages to those explicitly requested. To do this,
+set your ``/etc/apt/preferences`` as follows:
+
+.. code-block::
+
+   Package: *
+   Pin: release a=stable
+   Pin-Priority: 700
+
+   Package: *
+   Pin: release a=testing
+   Pin-Priority: 650
+
+   Package: *
+   Pin: release a=unstable
+   Pin-Priority: 600
+
+   Package: *
+   Pin: release l=Debian-Security
+   Pin-Priority: 1000
+
+A typical ``/etc/apt/sources.list`` file for this setup
+which combines Debian stable with more recent packages
+from testing and unstable would look like this:
+
+.. code-block::
+
+   deb http://ftp.ch.debian.org/debian/ buster main
+   deb http://security.debian.org/debian-security buster/updates main
+   deb http://ftp.ch.debian.org/debian/ testing main
+   deb http://ftp.ch.debian.org/debian/ unstable main
+
+Naturally, you may want to use different mirrors depending on your region.
+Additionally, you must add a file to import the GNU Taler packages. Typically,
+this is done by adding a file ``/etc/apt/sources.list.d/taler.list`` that
+looks like this:
+
+.. code-block::
+
+   deb https://deb.taler.net/apt/debian sid main
+
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
+
+.. code-block:: console
+
+   # wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+   # apt update
+
+.. note::
+
+   You may want to verify the correctness of the Taler Systems key out-of-band.
+
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
diff --git a/doc/sphinx/frags/installing-gnunet-gtk.rst 
b/doc/sphinx/frags/installing-gnunet-gtk.rst
new file mode 100644
index 0000000..d4c8319
--- /dev/null
+++ b/doc/sphinx/frags/installing-gnunet-gtk.rst
@@ -0,0 +1,28 @@
+The following steps assume at least the GNUnet and Gtk+ dependencies are 
installed.
+
+First, unpack the gnunet-gtk tarball and change into the resulting directory.
+Then, use the following commands to build and install gnunet-gtk:
+
+.. code-block:: console
+
+     $ ./configure [--prefix=$PFX] \
+                   [--with-gnunet=$GNUNETPFX]
+     $ # Each dependency can be fetched from non standard locations via
+     $ # the '--with-<LIBNAME>' option. See './configure --help'.
+     $ make
+     # make install
+
+It is highly recommended to use the same prefix ($PFX) for gnunet-gtk that was
+used for GNUnet ($GNUNETPFX).  If you did not specify a prefix, gnunet-gtk
+will be installed to ``/usr/local``, which requires you to run the last step
+as ``root``.
+
+You have to specify ``--with-gnunet=/usr/local`` if you installed
+GNUnet to ``/usr/local`` in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit ``/etc/ld.so.conf``, adding
+lines for ``$GNUNETPFX/lib/`` and ``$PFX/lib/`` (replace the prefixes with the
+actual paths you used). Afterwards, you should run ``ldconfig``. Without this
+step, it is possible that the linker may not find the installed libraries and
+launching gnunet-gtk would then fail.
diff --git a/doc/sphinx/frags/installing-gnunet.rst 
b/doc/sphinx/frags/installing-gnunet.rst
new file mode 100644
index 0000000..99ff472
--- /dev/null
+++ b/doc/sphinx/frags/installing-gnunet.rst
@@ -0,0 +1,21 @@
+Before you install GNUnet, you must download and install the dependencies
+mentioned in the previous section, otherwise the build may succeed, but could
+fail to export some of the tooling required by GNU Taler.
+
+To install GNUnet, unpack the tarball and change
+into the resulting directory, then proceed as follows:
+
+.. code-block:: console
+
+   $ ./configure [--prefix=GNUNETPFX]
+   $ # Each dependency can be fetched from non standard locations via
+   $ # the '--with-<LIBNAME>' option. See './configure --help'.
+   $ make
+   # make install
+   # ldconfig
+
+If you did not specify a prefix, GNUnet will install to ``/usr/local``,
+which requires you to run the last step as ``root``.
+The ``ldconfig`` command (also run as ``root``) makes the
+shared object libraries (``.so`` files)
+visible to the various installed programs.
diff --git a/doc/sphinx/frags/installing-taler-exchange.rst 
b/doc/sphinx/frags/installing-taler-exchange.rst
new file mode 100644
index 0000000..1b8e96b
--- /dev/null
+++ b/doc/sphinx/frags/installing-taler-exchange.rst
@@ -0,0 +1,16 @@
+After installing GNUnet, unpack the GNU Taler exchange tarball,
+change into the resulting directory, and proceed as follows:
+
+.. code-block:: console
+
+   $ ./configure [--prefix=EXCHANGEPFX] \
+                 [--with-gnunet=GNUNETPFX]
+   $ # Each dependency can be fetched from non standard locations via
+   $ # the '--with-<LIBNAME>' option. See './configure --help'.
+   $ make
+   # make install
+
+If you did not specify a prefix, the exchange will install to ``/usr/local``,
+which requires you to run the last step as ``root``.  You have to specify
+``--with-gnunet=/usr/local`` if you installed GNUnet to ``/usr/local`` in the
+previous step.
diff --git a/doc/sphinx/frags/installing-taler-merchant.rst 
b/doc/sphinx/frags/installing-taler-merchant.rst
new file mode 100644
index 0000000..249d5d7
--- /dev/null
+++ b/doc/sphinx/frags/installing-taler-merchant.rst
@@ -0,0 +1,34 @@
+GNU Taler merchant has these additional dependencies:
+
+- libqrencode >= 4.0.0
+
+The following steps assume all dependencies are installed.
+
+First, unpack the GNU Taler merchant tarball and change into
+the resulting directory.
+Then, use the following commands to build and install the merchant backend:
+
+.. code-block:: console
+
+     $ ./configure [--prefix=PFX] \
+                   [--with-gnunet=GNUNETPFX] \
+                   [--with-exchange=EXCHANGEPFX]
+     $ # Each dependency can be fetched from non standard locations via
+     $ # the '--with-<LIBNAME>' option. See './configure --help'.
+     $ make
+     # make install
+
+If you did not specify a prefix, the exchange will install to
+``/usr/local``, which requires you to run the last step as ``root``.
+
+You have to specify ``--with-exchange=/usr/local`` and/or
+``--with-gnunet=/usr/local`` if you installed the exchange and/or
+GNUnet to ``/usr/local`` in the previous steps.
+
+Depending on the prefixes you specified for the installation and the
+distribution you are using, you may have to edit ``/etc/ld.so.conf``, adding
+lines for ``GNUNETPFX/lib/`` and ``EXCHANGEPFX/lib/`` and ``PFX/lib/``
+(replace the prefixes with the actual paths you used). Afterwards, you should
+run ``ldconfig``. Without this step, it is possible that the linker may not
+find the installed libraries and launching the Taler merchant backend would
+then fail.
diff --git a/doc/sphinx/frags/installing-ubuntu.rst 
b/doc/sphinx/frags/installing-ubuntu.rst
new file mode 100644
index 0000000..1283104
--- /dev/null
+++ b/doc/sphinx/frags/installing-ubuntu.rst
@@ -0,0 +1,27 @@
+To install the GNU Taler Ubuntu packages, first ensure that you have
+the right Ubuntu distribution. At this time, the packages are built for
+Ubuntu 20.04 LTS (Focal Fossa).
+
+A typical ``/etc/apt/sources.list.d/taler.list`` file for this setup
+would look like this:
+
+.. code-block::
+
+   deb https://deb.taler.net/apt/ubuntu/ focal-fossa main
+
+The last line is crucial, as it adds the GNU Taler packages.
+
+Next, you must import the Taler Systems SA public package signing key
+into your keyring and update the package lists:
+
+.. code-block:: console
+
+   # wget -O - https://taler.net/taler-systems.gpg.key | apt-key add -
+   # apt update
+
+.. note::
+
+   You may want to verify the correctness of the Taler Systems key out-of-band.
+
+Now your system is ready to install the official GNU Taler binary packages
+using apt.
diff --git a/doc/sphinx/frags/list-of-dependencies.rst 
b/doc/sphinx/frags/list-of-dependencies.rst
new file mode 100644
index 0000000..f0a183f
--- /dev/null
+++ b/doc/sphinx/frags/list-of-dependencies.rst
@@ -0,0 +1,21 @@
+-  libsqlite3 >= 3.16.2
+
+-  GNU libunistring >= 0.9.3
+
+-  libcurl >= 7.26 (or libgnurl >= 7.26)
+
+-  libqrencode >= 4.0.0
+
+-  GNU libgcrypt >= 1.6
+
+-  libsodium >= 1.0
+
+-  libargon2 >= 20171227
+
+-  libjansson >= 2.7
+
+-  Postgres >= 9.6, including libpq
+
+-  GNU libmicrohttpd >= 0.9.71
+
+-  GNUnet >= 0.14.0 (from `source tarball 
<http://ftpmirror.gnu.org/gnunet/>`__)
diff --git a/doc/sphinx/frags/using-anastasis-config.rst 
b/doc/sphinx/frags/using-anastasis-config.rst
new file mode 100644
index 0000000..2c0a1ca
--- /dev/null
+++ b/doc/sphinx/frags/using-anastasis-config.rst
@@ -0,0 +1,50 @@
+Using anastasis-config
+----------------------
+
+The tool ``anastasis-config`` can be used to extract or manipulate
+configuration values; however, the configuration use the well-known INI
+file format and can also be edited by hand.
+
+Run
+
+.. code-block:: console
+
+   $ anastasis-config -s $SECTION
+
+to list all of the configuration values in section ``$SECTION``.
+
+Run
+
+.. code-block:: console
+
+   $ anastasis-config -s $section -o $option
+
+to extract the respective configuration value for option ``$option`` in
+section ``$section``.
+
+Finally, to change a setting, run
+
+.. code-block:: console
+
+   $ anastasis-config -s $section -o $option -V $value
+
+to set the respective configuration value to ``$value``. Note that you
+have to manually restart the Taler backend after you change the
+configuration to make the new configuration go into effect.
+
+Some default options will use $-variables, such as ``$DATADIR`` within
+their value. To expand the ``$DATADIR`` or other $-variables in the
+configuration, pass the ``-f`` option to ``anastasis-config``. For example,
+compare:
+
+.. code-block:: console
+
+   $ anastasis-config -s ACCOUNT-bank \
+                  -o WIRE_RESPONSE
+   $ anastasis-config -f -s ACCOUNT-bank \
+                  -o WIRE_RESPONSE
+
+While the configuration file is typically located at
+``$HOME/.config/taler.conf``, an alternative location can be specified
+to ``taler-merchant-httpd`` and ``anastasis-config`` using the ``-c``
+option.
diff --git a/doc/sphinx/genindex.rst b/doc/sphinx/genindex.rst
new file mode 100644
index 0000000..98f0d6e
--- /dev/null
+++ b/doc/sphinx/genindex.rst
@@ -0,0 +1,2 @@
+Complete Index
+==============
diff --git a/doc/sphinx/global-licensing.rst b/doc/sphinx/global-licensing.rst
new file mode 100644
index 0000000..400cabc
--- /dev/null
+++ b/doc/sphinx/global-licensing.rst
@@ -0,0 +1,64 @@
+===============================
+Anastasis licensing information
+===============================
+
+This file gives an overview of all Anastasis component's licensing and
+of runtime dependencies thereof. For "component" here is meant a set
+of source files which can be retrieved from a single repository.  If
+components consist of sources under different licensing regimes, i.e.
+because we want to enable third party developments to easily integrate
+with Taler, those are described as well.
+
+All Anastasis components are generally released under the Affero
+GPL.
+
+
+.. _exchange-repo:
+
++++++++++++++++++++++++++++++++++++++++++
+Anastasis (git://git.taler.net/anastasis)
++++++++++++++++++++++++++++++++++++++++++
+
+Anastasis core logic is under AGPL.
+
+--------------------
+Runtime dependencies
+--------------------
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+* libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+* libgcrypt: LGPL, owned by Free Software Foundation
+* postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+* libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+* libgnunetjson: GPLv3+, GNUnet e.V.
+* GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+
+
++++++++++++++++++++++++++++++++++++++++++++++++++
+Anastasis-gtk (git://git.taler.net/anastasis-gtk)
++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Anastasis-gtk is under AGPL.
+
+--------------------
+Runtime dependencies
+--------------------
+
+The following list encompasses all the runtime dependencies for this
+project, and gives the copyright holder for each of them:
+
+* libjansson: MIT License, AGPL- and LGPL-Compatible, owned by Petri Lehtinen 
and other individuals
+* libgcrypt: LGPL, owned by Free Software Foundation
+* postgresql: PostgreSQL License, AGPL- and LGPL-Compatible, owned by The 
PostgreSQL Global Development Group
+* libgnunetutil (in all of its variants): GPLv3+, owned by GNUnet e.V.
+* libgnunetjson: GPLv3+, GNUnet e.V.
+* libgnunetgtk: GPLv3+, GNUnet e.V.
+* GNU Taler: LGPLv3+ / GPLv3+ / AGPLv3+: owned by Taler Systems SA
+
++++++++++++++
+Documentation
++++++++++++++
+
+The documentation is licensed under the GNU Free Documentation License Version 
1.3 or later.
diff --git a/doc/sphinx/index.rst b/doc/sphinx/index.rst
new file mode 100644
index 0000000..52edd89
--- /dev/null
+++ b/doc/sphinx/index.rst
@@ -0,0 +1,47 @@
+..
+  This file is part of GNU Anastasis.
+  Copyright (C) 2020-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+
+Anastasis Documentation
+=======================
+
+The system will be based on free software and open protocols.
+
+
+Documentation Overview
+----------------------
+
+.. toctree::
+  :numbered:
+  :maxdepth: 2
+
+  introduction
+  installation
+  configuration
+  cryptography
+  rest
+  reducer
+  authentication
+  db
+  design-documents/index
+  global-licensing
+  manindex
+  genindex
+
+.. toctree::
+  :hidden:
+
+  fdl-1.3
diff --git a/doc/sphinx/installation.rst b/doc/sphinx/installation.rst
new file mode 100644
index 0000000..225160f
--- /dev/null
+++ b/doc/sphinx/installation.rst
@@ -0,0 +1,175 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+------------
+Installation
+------------
+
+Please install the following packages before proceeding with the
+exchange compilation.
+
+.. include:: frags/list-of-dependencies.rst
+
+-  GNU Taler exchange
+
+-  GNU Taler merchant backend
+
+Except for the last two, these are available in most GNU/Linux distributions
+and should just be installed using the respective package manager.
+
+
+Installing from source
+----------------------
+
+The following instructions will show how to install libgnunetutil and
+the GNU Taler exchange from source.
+
+Installing GNUnet
+^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-gnunet.rst
+
+Installing the Taler Exchange
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-taler-exchange.rst
+
+Installing the Taler Merchant
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-taler-merchant.rst
+
+Installing Anastasis
+^^^^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-anastasis.rst
+
+Installing GNUnet-gtk
+^^^^^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-gnunet-gtk.rst
+
+Installing Anastasis-gtk
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. include:: frags/installing-anastasis-gtk.rst
+
+
+
+Installing Anastasis binary packages on Debian
+----------------------------------------------
+
+.. include:: frags/installing-debian.rst
+
+
+Installing the graphical front-end
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To install the Anastasis Gtk+ frontend, you can simply run:
+
+.. code-block:: console
+
+   # apt install anastasis-gtk
+
+To use ``anastasis-gtk``, you can simply run:
+
+.. code-block:: console
+
+   $ anastasis-gtk
+
+
+Installing the backend
+^^^^^^^^^^^^^^^^^^^^^^
+
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
+
+.. code-block:: console
+
+   # apt install -t sid anastasis-httpd
+
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
+
+Sample configuration files for the HTTP reverse proxy can be found in
+``/etc/anastasis.conf``.
+
+Note that the package does not complete the integration of the backend
+with the HTTP reverse proxy (typically with TLS certificates).  A
+configuration fragment for Nginx or Apache will be placed in
+``/etc/{apache,nginx}/conf-available/anastasis.conf``.
+
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
+
+.. code-block:: console
+
+   # apt install -t sid taler-merchant-httpd
+
+
+
+Installing Anastasis binary packages on Ubuntu
+----------------------------------------------
+
+.. include:: frags/installing-ubuntu.rst
+
+Installing the graphical front-end
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To install the Anastasis front-end, you can now simply run:
+
+.. code-block:: console
+
+   # apt install -t focal-fossa anastasis-gtk
+
+To use ``anastasis-gtk``, you can simply run:
+
+.. code-block:: console
+
+   $ anastasis-gtk
+
+
+Installing the backend
+^^^^^^^^^^^^^^^^^^^^^^
+
+If you want to install the Anastasis backend-end (which normal users do not
+need), you should run:
+
+.. code-block:: console
+
+   # apt install -t focal-fossa anastasis-httpd
+
+Note that the latter package does not perform all of the configuration work.
+It does setup the user users and the systemd service scripts, but you still
+must configure the database backup, HTTP reverse proxy (typically with TLS
+certificates), Taler merchant backend for payments, authentication services,
+prices and the terms of service.
+
+Sample configuration files for the HTTP reverse proxy can be found in
+``/etc/anastasis.conf``.
+
+To operate an Anastasis backend with payments, you additionally
+need to install a Taler merchant backend via:
+
+.. code-block:: console
+
+   # apt install -t sid taler-merchant-httpd
diff --git a/doc/sphinx/introduction.rst b/doc/sphinx/introduction.rst
new file mode 100644
index 0000000..c3ae234
--- /dev/null
+++ b/doc/sphinx/introduction.rst
@@ -0,0 +1,70 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+============
+Introduction
+============
+
+Anastasis is a service that allows the user to securely deposit a
+**core secret** with an open set of escrow providers and recover it if the 
secret is
+lost.  The **core secret** itself is protected from the escrow providers by
+encrypting it with a **master key**.  The main objective of Anastasis is to
+ensure that the user can reliably recover the **core secret**, while making
+this difficult for everyone else.  Furthermore, it is assumed that the user is
+unable to reliably remember any secret with sufficiently high entropy, so we
+cannot simply encrypt using some other key material in possession of the user.
+
+To uniquely identify users, an "unforgettable" **identifier** is used.  This
+identifier should be difficult to guess for anybody but the user. However, the
+**identifier** is not expected to have sufficient entropy or secrecy to be
+cryptographically secure. Examples for such identifier would be a
+concatenation of the full name of the user and their social security or
+passport number(s).  For Swiss citizens, the AHV number could also be used.
+
+The adversary model of Anastasis has two types of adversaries: weak
+adversaries which do not know the user's **identifier**, and strong
+adversaries which somehow do know a user's **identifier**.  For weak
+adversaries the system guarantees full confidentiality.  For strong
+adversaries, breaking confidentiality additionally requires that Anastasis
+escrow providers must have colluded.  The user is able to specify a set of
+**policies** which determine which Anastasis escrow providers would need to
+collude to break confidentiality. These policies also set the bar for the user
+to recover their core secret.
+
+A **recovery document** includes all of the information a user needs to
+recover access to their core secret.  It specifies a set of **escrow
+methods**, which specify how the user should convince the Anastasis server
+that they are "real".  Escrow methods can for example include SMS-based
+verification, video identification or a security question.  For each escrow
+method, the Anastasis server is provided with **truth**, that is data the
+Anastasis operator may learn during the recovery process to authenticate the
+user.  Examples for truth would be a phone number (for SMS), a picture of the
+user (for video identification), or the (hash of) a security answer.  A strong
+adversary is assumed to be able to learn the truth, while weak adversaries
+must not.  In addition to a set of escrow methods and associated Anastasis
+server operators, the **recovery document** also specifies **policies**, which
+describe the combination(s) of the escrow methods that suffice to obtain
+access to the core secret.  For example, a **policy** could say that the
+escrow methods (A and B) suffice, and a second policy may permit (A and C).  A
+different user may choose to use the policy that (A and B and C) are all
+required.  Anastasis imposes no limit on the number of policies in a
+**recovery document**, or the set of providers or escrow methods involved in
+guarding a user's secret.  Weak adversaries must not be able to deduce
+information about a user's **recovery document** (except for its length, which
+may be exposed to an adversary which monitors the user's network traffic).
diff --git a/doc/sphinx/manindex.rst b/doc/sphinx/manindex.rst
new file mode 100644
index 0000000..414dda5
--- /dev/null
+++ b/doc/sphinx/manindex.rst
@@ -0,0 +1,9 @@
+Man Pages
+#########
+
+.. toctree::
+  :maxdepth: 1
+  :titlesonly:
+  :glob:
+
+  manpages/*
diff --git a/doc/sphinx/manpages/anastasis-config.1.rst 
b/doc/sphinx/manpages/anastasis-config.1.rst
new file mode 100644
index 0000000..043a22e
--- /dev/null
+++ b/doc/sphinx/manpages/anastasis-config.1.rst
@@ -0,0 +1,101 @@
+anastasis-config(1)
+###################
+
+.. only:: html
+
+   Name
+   ====
+
+   **anastasis-config** - manipulate Anastasis configuration files
+
+Synopsis
+========
+
+**anastasis-config**
+[**-b** *backend* | **––supported-backend=**\ \ *backend*]
+[**-c** *filename* | **––config=**\ \ *filename*]
+[**-f** | **––filename**]
+[**-F** | **––full**]
+[**-h** | **––help**]
+[**-L** *loglevel* | **––loglevel=**\ \ *loglevel*]
+[**-l** *filename* | **––logfile=**\ ‌\ *filename*]
+[**-o** *option* | **––option=**\ \ *option*]
+[**-r** | **––rewrite**]
+[**-S** | **––list-sections**]
+[**-s** *section* | **––section=**\ \ *section*]
+[**-V** *value* | **––value=**\ \ *value*]
+[**-v** | **––version**]
+
+
+Description
+===========
+
+**anastasis-config** can be used to read or modify Anastasis configuration 
files.
+
+**-b** *BACKEND* \| **––supported-backend=**\ \ *BACKEND*
+    Tests whether the specified *BACKEND* is supported by the current 
installation.
+    The backend must match the name of a plugin, i.e. "namestore_postgres" for
+    the Postgres database backend of the "NAMESTORE" service.  If *BACKEND* is
+    supported, anastasis-config will return a status code of 0 (success), 
otherwise
+    77 (unsupported).  When this option is specified, no other options may be
+    specified. Specifying this option together with other options will cause
+    anastasis-config to return a status code of 1 (error).
+
+**-c** *FILENAME* \| **––config=**\ \ *FILENAME*
+    Use the configuration file *FILENAME*.
+
+**-f** \| **––filename**
+    Try to perform expansions as if the option values represent filenames (will
+    also be applied even if the option is not really a filename).
+
+**-F** \| **––full**
+    Write the full configuration file, not just the differences to the 
defaults.
+
+**-h** \| **––help**
+    Print short help on options.
+
+**-L** *LOGLEVEL* \| **––loglevel=**\ \ *LOGLEVEL*
+    Use *LOGLEVEL* for logging.
+    Valid values are ``DEBUG``, ``INFO``, ``WARNING``, and ``ERROR``.
+
+**-l** *FILENAME* \| **––logfile=**\ ‌\ *FILENAME*
+    Send logging output to *FILENAME*.
+
+**-o** *OPTION* \| **––option=**\ \ *OPTION*
+    Which configuration option should be accessed or edited.  Required to set a
+    value.  If not given, all values of a given section will be printed in the
+    format "OPTION = VALUE".
+
+**-r** \| **––rewrite**
+    Write the configuration file even if nothing changed. Will remove all 
comments!
+
+**-S** \| **––list-sections**
+    List available configuration sections for use with ``--section``.
+
+**-s** *SECTION* \| **––section=**\ \ *SECTION*
+    Which configuration section should be accessed or edited.
+    Required option.
+
+**-V** *VALUE* \| **––value=**\ \ *VALUE*
+    Configuration value to store in the given section under the given option.
+    Must only be given together with ``-s`` and ``-o`` options.
+
+    Note:
+       Changing the configuration file with ``-V`` will remove comments
+       and may reorder sections and remove ``@INLINE@`` directives.
+
+**-v** \| **––version**
+    Print Anastasis version number.
+
+
+
+See Also
+========
+
+anastasis.conf(5)
+
+Bugs
+====
+
+Report bugs by using https://bugs.anastasis.lu or by sending electronic
+mail to <contact@anastasis.lu>.
diff --git a/doc/sphinx/manpages/anastasis-gtk.1.rst 
b/doc/sphinx/manpages/anastasis-gtk.1.rst
new file mode 100644
index 0000000..697f820
--- /dev/null
+++ b/doc/sphinx/manpages/anastasis-gtk.1.rst
@@ -0,0 +1,54 @@
+anastasis-gtk(1)
+################
+
+.. only:: html
+
+   Name
+   ====
+
+   **anastasis-gtk** - Gtk+ GUI for Anastasis
+
+Synopsis
+========
+
+**anastasis-gtk**
+[**-c** *FILENAME* | **––config=**\ ‌\ *FILENAME*]
+[**-h** | **––help**]
+[**-L** *LOGLEVEL* | **––loglevel=**\ ‌\ *LOGLEVEL*]
+[**-l** *FILENAME* | **––logfile=**\ ‌\ *FILENAME*]
+[**-v** | **––version**]
+
+
+Description
+===========
+
+**anastasis-gtk** is a graphical tool to run Anastasis
+key recover and backup operations.
+
+
+**-c** *FILENAME* \| **––config=**\ ‌\ *FILENAME*
+   Use the configuration from *FILENAME*.
+
+**-h** \| **––help**
+   Print short help on options.
+
+**-L** *LOGLEVEL* \| **––loglevel=**\ ‌\ *LOGLEVEL*
+   Specifies the log level to use. Accepted values are: ``DEBUG``, ``INFO``,
+   ``WARNING``, ``ERROR``.
+
+**-l** *FILENAME* \| **––logfile=**\ ‌\ *FILENAME*
+   Send logging output to *FILENAME*.
+
+**-v** \| **––version**
+   Print version information.
+
+See Also
+========
+
+anastasis-reducer(1), anastasis-httpd(1), anastasis.conf(5).
+
+Bugs
+====
+
+Report bugs by using https://bugs.anastasis.lu/ or by sending electronic
+mail to <contact@anastasis.lu>.
diff --git a/doc/sphinx/manpages/anastasis-httpd.1.rst 
b/doc/sphinx/manpages/anastasis-httpd.1.rst
new file mode 100644
index 0000000..599ede0
--- /dev/null
+++ b/doc/sphinx/manpages/anastasis-httpd.1.rst
@@ -0,0 +1,58 @@
+anastasis-httpd(1)
+##################
+
+.. only:: html
+
+  Name
+  ====
+
+  **anastasis-httpd** - run Anastasis backend (with RESTful API)
+
+
+Synopsis
+========
+
+**anastasis-httpd**
+
+Description
+===========
+
+Banastasis-httpd is a command line tool to run the Anastasis (HTTP
+backend).  The required configuration and database must exist before
+running this command.
+
+Its options are as follows:
+
+**-C** \| **--connection-close**
+   Force each HTTP connection to be closed after each request.
+
+**-c** *FILENAME* \| **––config=**\ ‌\ *FILENAME*
+   Use the configuration and other resources for the merchant to operate
+   from FILENAME.
+
+**-h** \| **––help**
+   Print short help on options.
+
+**-v** \| **––version**
+   Print version information.
+
+
+Signals
+=======
+
+**anastasis-httpd** responds to the following signals:
+
+``SIGTERM``
+    Sending a SIGTERM to the process will cause it to shutdown cleanly.
+
+See also
+========
+
+anastasis-dbinit(1), anastasis-config(1), anastasis-gtk(1), 
anastasis-reducer(1)
+
+
+Bugs
+====
+
+Report bugs by using https://bugs.anastasis.lu or by sending
+electronic mail to <contact@anastasis.lu>.
diff --git a/doc/sphinx/manpages/anastasis-reducer.1.rst 
b/doc/sphinx/manpages/anastasis-reducer.1.rst
new file mode 100644
index 0000000..859dc49
--- /dev/null
+++ b/doc/sphinx/manpages/anastasis-reducer.1.rst
@@ -0,0 +1,71 @@
+anastasis-reducer(1)
+####################
+
+.. only:: html
+
+   Name
+   ====
+
+   **anastasis-reducer** - CLI for Anastasis
+
+Synopsis
+========
+
+**anastasis-reducer**
+[**-a**_*JSON*_|_**--arguments=\ \ *JSON*]
+[**-b**_|_**--backup]
+[**-c** *FILENAME* | **––config=**\ ‌\ *FILENAME*]
+[**-h** | **––help**]
+[**-L** *LOGLEVEL* | **––loglevel=**\ ‌\ *LOGLEVEL*]
+[**-l** *FILENAME* | **––logfile=**\ ‌\ *FILENAME*]
+[**-r**_|_**--restore]
+[**-v** | **––version**] COMMAND
+
+
+Description
+===========
+
+**anastasis-reducer** is a command-line tool to run Anastasis
+key recover and backup operations using a reducer-style interface.
+The reducer will read the current state from standard input and
+write the resulting state to standard output.  A COMMAND must
+be given on the command line.  The arguments (if any) are to
+be given in JSON format to the **-a** option.  A list of
+commands can be found in the :doc:`../reducer`
+chapter.
+
+**-a** *JSON* \| **––arguments=**\ \ *JSON*
+   Provide JSON inputs for the given command.
+
+**-b** \| **--backup**
+   Begin fresh reducer operation for a back up operation.
+
+**-c** *FILENAME* \| **––config=**\ ‌\ *FILENAME*
+   Use the configuration from *FILENAME*.
+
+**-h** \| **––help**
+   Print short help on options.
+
+**-L** *LOGLEVEL* \| **––loglevel=**\ ‌\ *LOGLEVEL*
+   Specifies the log level to use. Accepted values are: ``DEBUG``, ``INFO``,
+   ``WARNING``, ``ERROR``.
+
+**-l** *FILENAME* \| **––logfile=**\ ‌\ *FILENAME*
+   Send logging output to *FILENAME*.
+
+**-r** \| **--restore**
+   Begin fresh reducer operation for a restore operation.
+
+**-v** \| **––version**
+   Print version information.
+
+See Also
+========
+
+anastasis-gtk(1), anastasis-httpd(1), anastasis.conf(5).
+
+Bugs
+====
+
+Report bugs by using https://bugs.anastasis.lu/ or by sending electronic
+mail to <contact@anastasis.lu>.
diff --git a/doc/sphinx/manpages/anastasis.conf.5.rst 
b/doc/sphinx/manpages/anastasis.conf.5.rst
new file mode 100644
index 0000000..e2a214d
--- /dev/null
+++ b/doc/sphinx/manpages/anastasis.conf.5.rst
@@ -0,0 +1,133 @@
+anastasis.conf(5)
+#################
+
+.. only:: html
+
+   Name
+   ====
+
+   **anastasis.conf** - Anastasis configuration file
+
+
+Description
+===========
+
+The configuration file is line-oriented.
+Blank lines and whitespace at the beginning and end of a line are ignored.
+Comments start with ``#`` or ``%`` in the first column
+(after any beginning-of-line whitespace) and go to the end of the line.
+
+The file is split into sections.
+Every section begins with “[SECTIONNAME]” and
+contains a number of options of the form “OPTION=VALUE”.
+There may be whitespace around the ``=`` (equal sign).
+Section names and options are *case-insensitive*.
+
+The values, however, are *case-sensitive*.
+In particular, boolean values are one of ``YES`` or ``NO``.
+Values can include whitespace by surrounding
+the entire value with ``"`` (double quote).
+Note, however, that there are no escape characters in such strings;
+all characters between the double quotes (including other double quotes)
+are taken verbatim.
+
+Values that represent filenames can begin with a ``/bin/sh``-like
+variable reference.
+This can be simple, such as ``$TMPDIR/foo``, or complex,
+such as ``${TMPDIR:-${TMP:-/tmp}}/foo``.
+See ``[PATHS]`` (below).
+
+Values that represent a time duration are represented as a series of one or
+more ``NUMBER UNIT`` pairs, e.g. ``60 s``, ``4 weeks 1 day``, ``5 years 2 
minutes``.
+
+Values that represent an amount are in the usual amount syntax:
+``CURRENCY:VALUE.FRACTION``, e.g. ``EUR:1.50``.
+The ``FRACTION`` portion may extend up to 8 places.
+
+Files containing default values for many of the options described below
+are installed under ``$ANASTASIS_PREFIX/share/taler/config.d/``.
+The configuration file given with **-c** to Anastasis binaries
+overrides these defaults.
+
+A configuration file may include another, by using the ``@INLINE@`` directive,
+for example, in ``main.conf``, you could write ``@INLINE@ sub.conf`` to
+include the entirety of ``sub.conf`` at that point in ``main.conf``.
+.. TODO: Document ‘anastasis-config -V’ in light of ‘@INLINE@’ in 
taler-config(1).
+
+
+GLOBAL OPTIONS
+--------------
+
+The following options are from the ``[anastasis]`` section and used by
+the **anastasis-httpd** service.
+
+PAYMENT_BACKEND_URL
+  Base-URL of the Taler merchant backend instance to use for payments.
+  FIXME: How do we pass the access token?
+
+ANNUAL_FEE
+  Annual fee to be paid for policy uploads, i.e. "EUR:1.5".
+
+TRUTH_UPLOAD_FEE
+  Annual fee to be paid for truth uploads, i.e. "EUR:1.5".
+
+DB
+  Database backend to use, only ``postgres`` is supported right now.
+
+UPLOAD_LIMIT_MB
+  Maximum upload size for policy uploads in megabytes. Default is 1.
+
+ANNUAL_POLICY_UPLOAD_LIMIT
+  Maximum number of policies uploaded per year of service. Default is 42.
+
+BUSINESS_NAME
+  Name of the business.
+
+SERVER_SALT
+  Must be set to a high-entropy random server salt that the provider must never
+  change after the initial configuration.
+
+PORT
+  TCP port on which the HTTP service should listen on.
+
+
+Authorization options
+---------------------
+
+For each active authorization plugin, options must be configured in
+a section called ``[authorization-$PLUGIN]`` where ``$PLUGIN`` is
+the name of the authorization plugin.
+
+COST
+  Fee the user has to pay to obtain a challenge from this
+  authorization plugin during recovery.
+
+ENABLED
+  ``yes`` to enable this plugin, ``no`` to disable.
+
+COMMAND
+  Helper command to run (only relevant for some plugins).
+
+
+Postgres database configuration
+-------------------------------
+
+The following options must be in the section ``[statis-postgres]`` if
+``postgress`` was used for the database under ``DB`` in the
+``[anastasis]`` section.
+
+CONFIG
+  Path under which the Postgres database is that the service
+  should use, i.e. ``postgres://anastasis``.
+
+
+SEE ALSO
+========
+
+anastasis-httpd(1), anastasis-config(1)
+
+BUGS
+====
+
+Report bugs by using https://bugs.anastasis.lu/ or by sending electronic
+mail to <contact@anastasis.lu>.
diff --git a/doc/sphinx/reducer.rst b/doc/sphinx/reducer.rst
new file mode 100644
index 0000000..39a02a1
--- /dev/null
+++ b/doc/sphinx/reducer.rst
@@ -0,0 +1,1646 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+-----------
+Reducer API
+-----------
+
+This section describes the Anastasis Reducer API which is used by client 
applications
+to store or load the different states the client application can have.
+The reducer takes a state_ in JSON syntax and returns the new state in JSON 
syntax.
+
+For example a **state** may take the following structure:
+
+.. code-block:: json
+
+    {
+      "backup_state": "CONTINENT_SELECTING",
+      "continents": [
+        "Europe",
+        "North_America"
+      ]
+    }
+
+The new state depends on the previous one and on the transition action_ with 
its
+arguments given to the reducer. A **transition argument** also is a statement 
in JSON syntax:
+
+.. code-block:: json
+
+    {
+      "continent": "Europe"
+    }
+
+The new state returned by the reducer with the state and transition argument 
defined
+above would look like following for the transition action_ 
``select_continent``:
+
+.. code-block:: json
+
+  {
+    "backup_state": "COUNTRY_SELECTING",
+    "continents": [
+      "Europe",
+      "North_America"
+    ],
+    "selected_continent": "Europe",
+    "countries": [
+      {
+        "code": "ch",
+        "name": "Switzerland",
+        "continent": "Europe",
+        "name_i18n": {
+          "de_DE": "Schweiz",
+          "de_CH": "Schwiiz",
+          "fr": "Suisse",
+          "en": "Swiss"
+        },
+        "currency": "CHF"
+      },
+      {
+        "code": "de",
+        "name": "Germany",
+        "continent": "Europe",
+        "continent_i18n": {
+          "de": "Europa"
+        },
+        "name_i18n": {
+          "de_DE": "Deutschland",
+          "de_CH": "Deutschland",
+          "fr": "Allemagne",
+          "en": "Germany"
+        },
+        "currency": "EUR"
+      }
+    ]
+  }
+
+States
+^^^^^^
+
+Overall, the reducer knows the following states:
+
+  - **ERROR**: The transition led to an error. No further transitions are 
possible from
+               this state, but the client may want to continue from a previous 
state.
+  - **CONTINENT_SELECTING**: The user should specify the continent where they 
are living,
+               so that we can show a list of countries to choose from.
+  - **COUNTRY_SELECTING**: The user should specify the country where they are 
living,
+               so that we can determine appropriate attributes, currencies and 
Anastasis
+               providers.
+  - **USER_ATTRIBUTES_COLLECTING**: The user should provide the 
country-specific personal
+               attributes.
+  - **AUTHENTICATIONS_EDITING**: The user should add authentication methods to 
be used
+               during recovery.
+  - **POLICIES_REVIEWING**: The user should review the recovery policies.
+  - **SECRET_EDITING**: The user should edit the secret to be backed up.
+  - **TRUTHS_PAYING**: The user needs to pay for one or more uploads of data 
associated
+               with an authentication method.
+  - **POLICIES_PAYING**: The user needs to pay for storing the recovery policy 
document.
+  - **BACKUP_FINISHED**: A backup has been successfully generated.
+  - **SECRET_SELECTING**: The user needs to select a recovery policy document 
with
+               the secret that is to be recovered.
+  - **CHALLENGE_SELECTING**: The user needs to select an authorization 
challenge to
+               proceed with recovery.
+  - **CHALLENGE_PAYING**: The user needs to pay to proceed with the 
authorization challenge.
+  - **CHALLENGE_SOLVING**: The user needs to solve the authorization challenge.
+  - **RECOVERY_FINISHED**: The secret of the user has been recovered.
+
+State names:
+
+  - In SELECTING-states, the user has to choose one value out of a predefined 
set of values (for example a continent out of a set of continents).
+  - In COLLECTING-states, the user has to give certain values.
+  - In EDITING-states, the user is free to choose which values he wants to 
give.
+  - In REVEIWING-states, the user may make a few choices, but primarily is 
expected to affirm something.
+  - in PAYING-states, the user must make a payment.
+  - in FINISHED-states, the operation has definitively concluded.
+
+
+Backup Reducer
+^^^^^^^^^^^^^^
+.. _state:
+.. _action:
+.. figure:: anastasis_reducer_backup.png
+    :name: fig-anastasis_reducer_backup
+    :alt: fig-anastasis_reducer_backup
+    :scale: 75 %
+    :align: center
+
+    Backup states and their transitions.
+
+
+The illustration above shows the different states the reducer can have during 
a backup
+process.
+
+
+Recovery Reducer
+^^^^^^^^^^^^^^^^
+.. figure:: anastasis_reducer_recovery.png
+    :name: fig-anastasis_reducer_recovery
+    :alt: fig-anastasis_reducer_recovery
+    :scale: 75 %
+    :align: center
+
+    Recovery states and their transitions.
+
+
+The illustration above shows the different states the reducer can have during 
a recovery
+process.
+
+
+Reducer transitions
+^^^^^^^^^^^^^^^^^^^
+In the following, the individual transitions will be specified in more detail.
+Note that we only show fields added by the reducer, typically the previous
+state is preserved to enable "back" transitions to function smoothly.
+
+
+Initial state
+-------------
+
+The initial states for backup and recovery processes are:
+
+**Initial backup state:**
+
+.. code-block:: json
+
+    {
+      "backup_state": "CONTINENT_SELECTING",
+      "continents": [
+        "Europe",
+        "North America"
+      ]
+    }
+
+
+**Initial recovery state:**
+
+.. code-block:: json
+
+    {
+      "recovery_state": "CONTINENT_SELECTING",
+      "continents": [
+        "Europe",
+        "North America"
+      ]
+    }
+
+Here, "continents" is an array of English strings with the names of the
+continents which contain countries for which Anastasis could function (based
+on having providers that are known to operate and rules being provided for
+user attributes from those countries).
+
+For internationalization, another field ``continents_i18n`` may be present.
+This field would be a map of language names to arrays of translated
+continent names:
+
+.. code-block:: json
+
+    {
+      "recovery_state": "CONTINENT_SELECTING",
+      "continents": [
+        "Europe",
+        "North America"
+      ]
+      "continents_i18n":
+      {
+        "de_DE" : [
+          "Europa",
+          "Nordamerika"
+          ],
+        "de_CH" : [
+          "Europa",
+          "Nordamerika"
+          ]
+      }
+    }
+
+Translations must be given in the same order as the main English array.
+
+
+Common transitions
+------------------
+
+**select_continent:**
+
+Here the user specifies the continent they live on.  Arguments (example):
+
+.. code-block:: json
+
+    {
+      "continent": "Europe"
+    }
+
+The continent must be given using the English name from the ``continents`` 
array.
+Using a translated continent name is invalid and may result in failure.
+
+The reducer returns an updated state with a list of countries to choose from,
+for example:
+
+.. code-block:: json
+
+    {
+      "backup_state": "COUNTRY_SELECTING",
+      "selected_continent": "Europe",
+      "countries": [
+        {
+          "code": "ch",
+          "name": "Switzerland",
+          "continent": "Europe",
+          "name_i18n": {
+            "de_DE": "Schweiz",
+            "de_CH": "Schwiiz",
+            "fr": "Suisse",
+            "en": "Swiss"
+          },
+          "currency": "CHF"
+        },
+        {
+          "code": "de",
+          "name": "Germany",
+          "continent": "Europe",
+          "continent_i18n": {
+            "de": "Europa"
+          },
+          "name_i18n": {
+            "de_DE": "Deutschland",
+            "de_CH": "Deutschland",
+            "fr": "Allemagne",
+            "en": "Germany"
+          },
+          "currency": "EUR"
+        }
+      ]
+    }
+
+Here ``countries`` is an array of countries on the ``selected_continent``.  For
+each country, the ``code`` is the ISO 3166-1 alpha-2 country code.  The
+``continent`` is only present because some countries span continents, the
+information is redundant and will always match ``selected_continent``.  The
+``name`` is the name of the country in English, internationalizations of the
+name may be provided in ``name_i18n``.  The ``currency`` is **an** official
+currency of the country, if a country has multiple currencies, it may appear
+multiple times in the list.  In this case, the user should select the entry
+with the currency they intend to pay with.  It is also possible for users
+to select a currency that does not match their country, but user interfaces
+should by default try to use currencies that match the user's residence.
+
+
+**select_country:**
+
+Selects the country (via the country code) and specifies the currency.
+The latter is needed as some countries have more than one currency,
+and some use-cases may also involve users insisting on paying with
+foreign currency.
+
+Arguments (example):
+
+.. code-block:: json
+
+    {
+      "country_code": "de",
+      "currency": "EUR"
+    }
+
+The ``country_code`` must be an ISO 3166-1 alpha-2 country code from
+the array of ``countries`` of the reducer's state.  The ``currency``
+field must be a valid currency accepted by the Taler payment system.
+
+The reducer returns a new state with the list of attributes the
+user is expected to provide, as well as possible authentication
+providers that accept payments in the selected currency:
+
+.. code-block:: json
+
+    {
+      "backup_state": "USER_ATTRIBUTES_COLLECTING",
+      "selected_country": "de",
+      "currency": "EUR",
+      "required_attributes": [
+        {
+          "type": "string",
+          "name": "full_name",
+          "label": "Full name",
+          "label_i18n": {
+            "de_DE": "Vollstaendiger Name",
+            "de_CH": "Vollstaendiger. Name",
+            "fr": "Nom complet",
+            "en": "Full name"
+          },
+          "widget": "anastasis_gtk_ia_full_name",
+          "uuid" : "9e8f463f-575f-42cb-85f3-759559997331"
+        },
+        {
+          "type": "date",
+          "name": "birthdate",
+          "label": "Birthdate",
+          "label_i18n": {
+            "de_DE": "Geburtsdatum",
+            "de_CH": "Geburtsdatum",
+            "fr": "Date de naissance",
+            "en": "Birthdate"
+          },
+          "uuid" : "83d655c7-bdb6-484d-904e-80c1058c8854"
+          "widget": "anastasis_gtk_ia_birthdate"
+        },
+           {
+              "type": "string",
+           "name": "tax_number",
+              "label": "Taxpayer identification number",
+              "label_i18n":{
+                    "de_DE": "Steuerliche Identifikationsnummer",
+                    "de_CH": "Steuerliche Identifikationsnummer",
+                    "en": "German taxpayer identification number"
+              },
+              "widget": "anastasis_gtk_ia_tax_de",
+           "uuid": "dae48f85-e3ff-47a4-a4a3-ed981ed8c3c6",
+              "validation-regex": "^[0-9]{11}$",
+              "validation-logic": "DE_TIN_check"
+           },
+        {
+          "type": "string",
+          "name": "social_security_number",
+          "label": "Social security number",
+          "label_i18n": {
+            "de_DE": "Sozialversicherungsnummer",
+            "de_CH": "Sozialversicherungsnummer",
+            "fr": "Numéro de sécurité sociale",
+            "en": "Social security number"
+          },
+          "widget": "anastasis_gtk_ia_ssn",
+             "validation-regex": "^[0-9]{8}[[:upper:]][0-9]{3}$",
+             "validation-logic": "DE_SVN_check"
+          "optional" : true
+      }
+      ],
+      "authentication_providers": {
+        "http://localhost:8089/": {
+          "http_status": 200,
+          "methods": [
+            { "type" : "question",
+              "usage_fee" : "EUR:0.0" },
+            { "type" : "sms",
+              "usage_fee" : "EUR:0.5" }
+          ],
+          "annual_fee": "EUR:4.99",
+          "truth_upload_fee": "EUR:4.99",
+          "liability_limit": "EUR:1",
+          "currency": "EUR",
+          "truth_lifetime": { "d_ms" : 50000000 },
+          "storage_limit_in_megabytes": 1,
+          "provider_name": "Anastasis 4",
+          "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+        },
+        "http://localhost:8088/": {
+          "http_status": 200,
+          "methods": [
+            { "type" : "question",
+              "usage_fee" : "EUR:0.01" },
+            { "type" : "sms",
+              "usage_fee" : "EUR:0.55" }
+          ],
+          "annual_fee": "EUR:0.99",
+          "truth_upload_fee": "EUR:3.99",
+          "liability_limit": "EUR:1",
+          "currency": "EUR",
+          "truth_lifetime": { "d_ms" : 50000000 },
+          "storage_limit_in_megabytes": 1,
+          "provider_name": "Anastasis 4",
+          "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+        }
+      }
+    }
+
+The array of ``required_attributes`` contains attributes about the user
+that must be provided includes:
+
+  - **type**: The type of the attribute, for now only ``string`` and ``date`` 
are
+    supported.
+  - **name**: The name of the attribute, this is the key under which the
+    attribute value must be provided later. The name must be unique per 
response.
+  - **label**: A human-readable description of the attribute in English.
+    Translated descriptions may be provided under **label_i18n**.
+  - **uuid**: A UUID that uniquely identifies identical attributes across
+    different countries. Useful to preserve values should the user enter
+    some attributes, and then switch to another country.  Note that
+    attributes must not be preserved if they merely have the same **name**,
+    only the **uuid** will be identical if the semantics is identical.
+  - **widget**: An optional name of a widget that is known to nicely render
+    the attribute entry in user interfaces where named widgets are
+    supported.
+  - **validation-regex**: An optional extended POSIX regular expression
+    that is to be used to validate (string) inputs to ensure they are
+    well-formed.
+  - **validation-logic**: Optional name of a function that should be called
+    to validate the input.  If the function is not known to the particular
+    client, the respective validation can be skipped (at the expense of
+    typos by users not being detected, possibly rendering secrets
+    irrecoverable).
+  - **optional**: Optional boolean field that, if ``true``, indicates that
+    this attribute is not actually required but optional and users MAY leave
+    it blank in case they do not have the requested information. Used for
+    common fields that apply to some large part of the population but are
+    not sufficiently universal to be actually required.
+
+The authentication providers are listed under a key that is the
+base URL of the service. For each provider, the following
+information is provided if the provider was successfully contacted:
+
+  - **http_status**: HTTP status code, always ``200`` on success.
+  - **methods**: Array of authentication methods supported by this
+    provider. Includes the **type** of the authentication method
+    and the **usage_fee** (how much the user must pay for authorization
+    using this method during recovery).
+  - **annual_fee**: Fee the provider charges to store the recovery
+    policy for one year.
+  - **truth_upload_fee**: Fee the provider charges to store a key share.
+  - **liability_limit**: Amount the provider can be held liable for in
+    case a key share or recovery document cannot be recovered due to
+    provider failures.
+  - **currency**: Currency in which the provider wants to be paid,
+    will match all of the fees.
+  - **storage_limit_in_megabytes**: Maximum size of an upload (for
+    both recovery document and truth data) in megabytes.
+  - **provider_name**: Human-readable name of the provider's business.
+  - **salt**: Salt value used by the provider, used to derive the
+    user's identity at this provider. Should be unique per provider,
+    and must never change for a given provider.  The salt is
+    base32 encoded.
+
+If contacting the provider failed, the information returned is:
+
+  - **http_status**: HTTP status code (if available, possibly 0 if
+    we did not even obtain an HTTP response).
+  - **error_code**: Taler error code, never 0.
+
+
+**add_provider**:
+
+This operation can be performed in state ``USER_ATTRIBUTES_COLLECTING``.  It
+adds one or more Anastasis providers to the list of providers the reducer
+should henceforth consider.  Note that removing providers is not possible at
+this time.
+
+Here, the client must provide an array with the base URLs of the
+providers to add, for example:
+
+.. code-block:: json
+
+    {
+      "urls": [
+        "http://localhost:8888/";,
+        "http://localhost:8089/";
+      ]
+    }
+
+Note that existing providers will remain in the state.  The following is an
+example for an expected new state where the service on port 8089 is
+unreachable, the service on port 8088 was previously known, and service on
+port 8888 was now added:
+
+.. code-block:: json
+
+    {
+      "backup_state": "USER_ATTRIBUTES_COLLECTING",
+      "authentication_providers": {
+        "http://localhost:8089/": {
+          "error_code": 11,
+          "http_status": 0
+        },
+        "http://localhost:8088/": {
+          "http_status": 200,
+          "methods": [
+            { "type" : "question",
+              "usage_fee" : "EUR:0.01" },
+            { "type" : "sms",
+              "usage_fee" : "EUR:0.55" }
+          ],
+          "annual_fee": "EUR:0.99",
+          "truth_upload_fee": "EUR:3.99",
+          "liability_limit": "EUR:1",
+          "currency": "EUR",
+          "truth_lifetime": { "d_ms" : 50000000 },
+          "storage_limit_in_megabytes": 1,
+          "provider_name": "Anastasis 4",
+          "salt": "CXAPCKSH9D3MYJTS9536RHJHCW"
+        }
+        "http://localhost:8888/": {
+          "methods": [
+            { "type" : "question",
+              "usage_fee" : "EUR:0.01" },
+            { "type" : "sms",
+              "usage_fee" : "EUR:0.55" }
+          ],
+          "annual_fee": "EUR:0.99",
+          "truth_upload_fee": "EUR:3.99",
+          "liability_limit": "EUR:1",
+          "currency": "EUR",
+          "truth_lifetime": { "d_ms" : 50000000 },
+          "storage_limit_in_megabytes": 1,
+          "provider_name": "Anastasis 42",
+          "salt": "BXAPCKSH9D3MYJTS9536RHJHCX"
+        }
+      }
+    }
+
+
+
+Backup transitions
+------------------
+
+**enter_user_attributes:**
+
+This transition provides the user's personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to ``null`` or an empty string).  Example
+arguments would be:
+
+.. code-block:: json
+
+    {
+      "identity_attributes": {
+        "full_name": "Max Musterman",
+        "social_security_number": "123456789",
+        "birthdate": "2000-01-01",
+        "birthplace": "Earth"
+     }
+    }
+
+Note that at this stage, the state machines between backup and
+recovery diverge and the ``recovery_state`` will begin to look
+very different from the ``backup_state``.
+
+For backups, if all required attributes are present, the reducer will
+transition to an ``AUTHENTICATIONS_EDITING`` state with the attributes added
+to it:
+
+.. code-block:: json
+
+    {
+      "backup_state": "AUTHENTICATIONS_EDITING",
+      "identity_attributes": {
+        "full_name": "Max Musterman",
+        "social_security_number": "123456789",
+        "birthdate": "2000-01-01",
+        "birthplace": "Earth"
+      }
+    }
+
+If required attributes are missing, do not match the required regular
+expression, or fail the custom validation logic, the reducer SHOULD transition
+to an error state indicating what was wrong about the input.  A reducer that
+does not support some specific validation logic MAY accept the invalid input
+and proceed anyway.  The error state will include a Taler error code that
+is specific to the failure, and optional details.  Example:
+
+.. code-block:: json
+
+    {
+      "backup_state": "ERROR",
+      "code": 8404,
+      "hint": "An input did not match the regular expression.",
+      "detail": "social_security_number"
+    }
+
+Clients may safely repeat this transition to validate the user's inputs
+until they satisfy all of the constraints.  This way, the user interface
+does not have to perform the input validation directly.
+
+
+**add_authentication**:
+
+This transition adds an authentication method.  The method must be supported
+by one or more providers that are included in the current state.  Adding an
+authentication method requires specifying the ``type`` and ``instructions`` to
+be given to the user.  The ``challenge`` is encrypted and stored at the
+Anastasis provider. The specific semantics of the value depend on the
+``type``.  Typical challenges values are a phone number (to send an SMS to),
+an e-mail address (to send a PIN code to) or the answer to a security
+question.  Note that these challenge values will still be encrypted (and
+possibly hashed) before being given to the Anastasis providers.
+
+Note that the ``challenge`` must be given in Crockford Base32 encoding, as it
+MAY include binary data (such as a photograph of the user).  In the latter
+case, the optional ``mime_type`` field must be provided to give the MIME type
+of the value encoded in ``challenge``.
+
+.. code-block:: json
+
+    {
+      "authentication_method":
+      {
+        "type": "question",
+        "mime_type" : "text/plain",
+        "instructions" : "What is your favorite GNU package?",
+        "challenge" : "E1QPPS8A",
+      }
+    }
+
+If the information provided is valid, the reducer will add the new
+authentication method to the array of authentication methods:
+
+.. code-block:: json
+
+    {
+      "backup_state": "AUTHENTICATIONS_EDITING",
+      "authentication_methods": [
+        {
+          "type": "question",
+          "mime_type" : "text/plain",
+          "instructions" : "What is your favorite GNU package?",
+          "challenge" : "E1QPPS8A",
+        },
+        {
+          "type": "email",
+          "instructions" : "E-mail to user@*le.com",
+          "challenge": "ENSPAWJ0CNW62VBGDHJJWRVFDM50"
+        }
+      ]
+    }
+
+
+**delete_authentication**:
+
+This transition can be used to remove an authentication method from the
+array of authentication methods. It simply requires the index of the
+authentication method to remove. Note that the array is 0-indexed:
+
+.. code-block:: json
+
+    {
+      "authentication_method": 1
+    }
+
+Assuming we begin with the state from the example above, this would
+remove the ``email`` authentication method, resulting in the following
+response:
+
+.. code-block:: json
+
+    {
+      "backup_state": "AUTHENTICATIONS_EDITING",
+      "authentication_methods": [
+        {
+          "type": "question",
+          "mime_type" : "text/plain",
+          "instructions" : "What is your favorite GNU package?",
+          "challenge" : "gdb",
+        }
+      ]
+    }
+
+If the index is invalid, the reducer will instead
+transition into an ``ERROR`` state.
+
+
+**next** (from ``AUTHENTICATIONS_EDITING``):
+
+This transition confirms that the user has finished adding (or removing)
+authentication methods, and that the system should now automatically compute
+a set of reasonable recovery policies.
+
+This transition does not take any mandatory arguments.  Optional arguments can
+be provided to upload the recovery document only to a specific subset of the
+providers:
+
+.. code-block:: json
+
+    {
+      "providers": [
+        "http://localhost:8088/";,
+        "http://localhost:8089/";
+      ]
+    }
+
+The resulting state provides the suggested recovery policies in a way suitable
+for presentation to the user:
+
+.. code-block:: javascript
+
+    {
+      "backup_state": "POLICIES_REVIEWING",
+      "policy_providers" : [
+          { "provider_url" : "http://localhost:8088/"; },
+          { "provider_url" : "http://localhost:8089/"; }
+      ],
+      "policies": [
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8088/";
+            },
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8087/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8088/";
+            },
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 3,
+              "provider": "http://localhost:8089/";
+            }
+          ]
+        }
+      ]
+    }
+
+For each recovery policy, the state includes the specific details of which
+authentication ``methods`` must be solved to recovery the secret using this
+policy.  The ``methods`` array specifies the index of the
+``authentication_method`` in the ``authentication_methods`` array, as well as
+the provider that was selected to supervise this authentication.
+
+If no authentication method was provided, the reducer will transition into an
+``ERROR`` state instead of suggesting policies.
+
+
+**add_policy**:
+
+Using this transition, the user can add an additional recovery policy to the
+state.  The argument format is the same that is used in the existing state.
+An example for a possible argument would thus be:
+
+.. code-block:: javascript
+
+    {
+      "policy": [
+        {
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        },
+        {
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        }
+      ]
+    }
+
+Note that the specified providers must already be in the
+``authentication_providers`` of the state. You cannot add new providers at
+this stage.  The reducer will simply attempt to append the suggested policy to
+the "policies" array, returning an updated state:
+
+.. code-block:: json
+
+    {
+      "backup_state": "POLICIES_REVIEWING",
+      "policies": [
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8088/";
+            },
+            {
+              "authentication_method": 3,
+              "provider": "http://localhost:8089/";
+            }
+          ]
+        }
+      ]
+    }
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an ``ERROR`` state instead of
+adding the new policy.
+
+
+**update_policy**:
+
+Using this transition, the user can modify an existing recovery policy
+in the state.
+The argument format is the same that is used in **add_policy**,
+except there is an additional key ``policy_index`` which
+identifies the policy to modify.
+An example for a possible argument would thus be:
+
+.. code-block:: javascript
+
+    {
+      "policy_index" : 1,
+      "policy": [
+        {
+          "authentication_method": 1,
+          "provider": "http://localhost:8088/";
+        },
+        {
+          "authentication_method": 3,
+          "provider": "http://localhost:8089/";
+        }
+      ]
+    }
+
+If the new policy is invalid, for example because it adds an unknown
+authentication method, or the selected provider does not support the type of
+authentication, the reducer will transition into an ``ERROR`` state instead of
+modifying the policy.
+
+
+
+**delete_policy:**
+
+This transition allows the deletion of a recovery policy. The argument
+simply specifies the index of the policy to delete, for example:
+
+.. code-block:: json
+
+    {
+      "policy_index": 3
+    }
+
+Given as input the state from the example above, the expected new state would
+be:
+
+.. code-block:: json
+
+    {
+      "backup_state": "POLICIES_REVIEWING",
+      "policies": [
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        }
+      ]
+    }
+
+If the index given is invalid, the reducer will transition into an ``ERROR`` 
state
+instead of deleting a policy.
+
+
+**delete_challenge:**
+
+This transition allows the deletion of an individual
+challenge from a recovery policy. The argument
+simply specifies the index of the policy and challenge
+to delete, for example:
+
+.. code-block:: json
+
+    {
+      "policy_index": 1,
+      "challenge_index" : 1
+    }
+
+Given as input the state from the example above, the expected new state would
+be:
+
+.. code-block:: json
+
+    {
+      "backup_state": "POLICIES_REVIEWING",
+      "policies": [
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 0,
+              "provider": "http://localhost:8089/";
+            }
+          ]
+        },
+        {
+          "methods": [
+            {
+              "authentication_method": 1,
+              "provider": "http://localhost:8089/";
+            },
+            {
+              "authentication_method": 2,
+              "provider": "http://localhost:8088/";
+            }
+          ]
+        }
+      ]
+    }
+
+If the index given is invalid, the reducer will transition into an ``ERROR`` 
state
+instead of deleting a challenge.
+
+
+**next** (from ``POLICIES_REVIEWING``):
+
+Using this transition, the user confirms that the policies in the current
+state are acceptable. The transition does not take any arguments.
+
+The reducer will simply transition to the ``SECRET_EDITING`` state:
+
+.. code-block:: json
+
+    {
+      "backup_state": "SECRET_EDITING",
+      "upload_fees" : [ "KUDOS:42" ],
+      "expiration" : { "t_ms" : 1245362362 }
+    }
+
+Here, ``upload_fees`` is an array of applicable upload fees for the
+given policy expiration time. This is an array because fees could
+be in different currencies.  The final cost may be lower if the
+user already paid for some of the time.
+
+If the array of ``policies`` is currently empty, the reducer will transition
+into an ``ERROR`` state instead of allowing the user to continue.
+
+
+**enter_secret:**
+
+This transition provides the reducer with the actual core ``secret`` of the 
user
+that Anastasis is supposed to backup (and possibly recover). The argument is
+simply the Crockford-Base32 encoded ``value`` together with its ``mime`` type, 
or a ``text`` field with a human-readable secret text.
+For example:
+
+.. code-block:: javascript
+
+    {
+      "secret": {
+         "value": "EDJP6WK5EG50",
+         "mime" : "text/plain"
+      },
+      "expiration" : { "t_ms" : 1245362362 }
+    }
+
+If the application is unaware of the format, it set the ``mime`` field to 
``null``.
+The ``expiration`` field is optional.
+
+The reducer remains in the ``SECRET_EDITING`` state, but now the secret and
+updated expiration time are part of the state and the cost calculations will
+be updated.
+
+.. code-block:: json
+
+    {
+      "backup_state": "SECRET_EDITING",
+      "core_secret" : {
+         "value": "EDJP6WK5EG50",
+         "mime" : "text/plain"
+      },
+      "expiration" : { "t_ms" : 1245362362 },
+      "upload_fees" : [ "KUDOS:42" ]
+    }
+
+
+**clear_secret:**
+
+This transition removes the core secret from the state.  It is simply a
+convenience function to undo ``enter_secret`` without providing a new value
+immediately. The transition takes no arguments.  The resuting state will no
+longer have the ``core_secret`` field, and be otherwise unchanged. Calling
+**clear_secret** on a state without a ``core_secret`` will result in an error.
+
+
+**enter_secret_name:**
+
+This transition provides the reducer with a name for the core ``secret`` of 
the user. This name will be given to the user as a hint when seleting a 
recovery policy document during recovery, prior to satisfying any of the 
challenges. The argument simply contains the name for the secret.
+Applications that have build-in support for Anastasis MUST prefix the
+secret name with an underscore and an application-specific identifier
+registered in GANA so that they can use recognize their own backups.
+An example argument would be:
+
+.. code-block:: javascript
+
+    {
+      "name": "_TALERWALLET_MyPinePhone",
+    }
+
+Here, ``MyPinePhone`` might be chosen by the user to identify the
+device that was being backed up.
+
+The reducer remains in the ``SECRET_EDITING`` state, but now the
+secret name is updated:
+
+.. code-block:: json
+
+    {
+      "secret_name" : "_TALERWALLET_MyPinePhone"
+    }
+
+
+**update_expiration:**
+
+This transition asks the reducer to change the desired expiration time
+and to update the associated cost. For example:
+
+.. code-block:: javascript
+
+    {
+      "expiration" : { "t_ms" : 1245362362 }
+    }
+
+The reducer remains in the ``SECRET_EDITING`` state, but the
+expiration time and cost calculation will be updated.
+
+.. code-block:: json
+
+    {
+      "backup_state": "SECRET_EDITING",
+      "expiration" : { "t_ms" : 1245362362 },
+      "upload_fees" : [ { "fee": "KUDOS:43" } ]
+    }
+
+
+**next** (from ``SECRET_EDITING``):
+
+Using this transition, the user confirms that the secret and expiration
+settings in the current state are acceptable. The transition does not take any
+arguments.
+
+If the secret is currently empty, the reducer will transition into an
+``ERROR`` state instead of allowing the user to continue.
+
+After adding a secret, the reducer may transition into different states
+depending on whether payment(s) are necessary.  If payments are needed, the
+``secret`` will be stored in the state under ``core_secret``.  Applications
+should be careful when persisting the resulting state, as the ``core_secret``
+is not protected in the ``PAYING`` states.  The ``PAYING`` states only differ
+in terms of what the payments are for (key shares or the recovery document),
+in all cases the state simply includes an array of Taler URIs that refer to
+payments that need to be made with the Taler wallet.
+
+If all payments are complete, the reducer will transition into the
+``BACKUP_FINISHED`` state and (if applicable) delete the ``core_secret`` as an
+additional safety measure.
+
+Example results are thus:
+
+.. code-block:: json
+
+    {
+      "backup_state": "TRUTHS_PAYING",
+      "secret_name" : "$NAME",
+      "core_secret" : { "$anything":"$anything" },
+      "payments": [
+        "taler://pay/...",
+        "taler://pay/..."
+      ]
+    }
+
+.. code-block:: json
+
+    {
+      "backup_state": "POLICIES_PAYING",
+      "secret_name" : "$NAME",
+      "core_secret" : { "$anything":"$anything" },
+      "payments": [
+        "taler://pay/...",
+        "taler://pay/..."
+      ]
+    }
+
+.. code-block:: json
+
+    {
+      "backup_state": "BACKUP_FINISHED",
+    }
+
+
+**pay:**
+
+This transition suggests to the reducer that a payment may have been made or
+is immanent, and that the reducer should check with the Anastasis service
+provider to see if the operation is now possible.  The operation takes one
+optional argument, which is a ``timeout`` value that specifies how long the
+reducer may wait (in long polling) for the payment to complete:
+
+.. code-block:: json
+
+    {
+      "timeout":  { "d_ms" : 5000 },
+    }
+
+The specified timeout is passed on to the Anastasis service provider(s), which
+will wait this long before giving up.  If no timeout is given, the check is
+done as quickly as possible without additional delays.  The reducer will 
continue
+to either an updated state with the remaining payment requests, to the
+``BACKUP_FINISHED`` state (if all payments have been completed and the backup
+finished), or into an ``ERROR`` state in case there was an irrecoverable error,
+indicating the specific provider and how it failed.  An example for this
+final error state would be:
+
+.. code-block:: json
+
+    {
+      "backup_state": "ERROR",
+      "http_status" : 500,
+      "upload_status" : 52,
+      "provider_url" : "https://bad.example.com/";,
+    }
+
+Here, the fields have the following meaning:
+
+  - **http_status** is the HTTP status returned by the Anastasis provider.
+  - **upload_status** is the Taler error code return by the provider.
+  - **provider_url** is the base URL of the failing provider.
+
+In the above example, 52 would thus imply that the Anastasis provider failed to
+store information into its database.
+
+
+Recovery transitions
+--------------------
+
+**enter_user_attributes:**
+
+This transition provides the user's personal attributes. The specific set of
+attributes required depends on the country of residence of the user.  Some
+attributes may be optional, in which case they should be omitted entirely
+(that is, not simply be set to ``null`` or an empty string).  The
+arguments are identical to the **enter_user_attributes** transition from
+the backup process.  Example arguments would thus be:
+
+.. code-block:: json
+
+    {
+      "identity_attributes": {
+        "full_name": "Max Musterman",
+        "social_security_number": "123456789",
+        "birthdate": "2000-01-01",
+        "birthplace": "Earth"
+      }
+    }
+
+However, in contrast to the backup process, the reducer will attempt to
+retrieve the latest recovery document from all known providers for the
+selected currency given the above inputs.  If a recovery document was found
+by any provider, the reducer will attempt to load it and transition to
+a state where the user can choose which challenges to satisfy:
+
+.. code-block:: json
+
+    {
+      "recovery_state": "CHALLENGE_SELECTING",
+      "recovery_information": {
+        "challenges": [
+          {
+            "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G",
+            "cost": "TESTKUDOS:0",
+            "type": "question",
+            "instructions": "q1"
+          },
+          {
+            "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+            "cost": "TESTKUDOS:0",
+            "type": "email",
+            "instructions": "e-mail address m?il@f*.bar"
+          },
+        ],
+        "policies": [
+          [
+            {
+              "uuid": "MW2R3RCBZPHNC78AW8AKWRCHF9KV3Y82EN62T831ZP54S3K5599G"
+            },
+            {
+              "uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0"
+            },
+          ],
+        ],
+        "provider_url": "http://localhost:8088/";,
+        "version": 1,
+      },
+      "recovery_document": {
+        "...": "..."
+      }
+    }
+
+The ``recovery_document`` is an internal representation of the recovery
+information and of no concern to the user interface. The pertinent information
+is in the ``recovery_information``. Here, the ``challenges`` array is a list
+of possible challenges the user could attempt to solve next, while ``policies``
+is an array of policies, with each policy being an array of challenges.
+Satisfying all of the challenges of one of the policies will enable the secret
+to be recovered.  The ``provider_url`` from where the recovery document was
+obtained and its ``version`` are also provided.  Each challenge comes with
+four mandatory fields:
+
+    - **uuid**: A unique identifier of the challenge; this is what the
+      UUIDs in the policies array refer to, but also this UUID may be
+      included in messages sent to the user. They allow the user to
+      distinguish different PIN/TANs should say the same phone number be
+      used for SMS-authentication with different providers.
+    - **cost**: This is the amount the Anastasis provider will charge
+      to allow the user to pass the challenge.
+    - **type**: This is the type of the challenge, as a string.
+    - **instructions**: Contains additional important hints for the user
+      to allow the user to satisfy the challenge.  It typically includes
+      an abbreviated form of the contact information or the security
+      question. Details depend on ``type``.
+
+If a recovery document was not found, either the user never performed
+a backup, entered incorrect attributes, or used a provider not yet in
+the list of Anastasis providers.  Hence, the user must now either
+select a different provider, or go ``back`` and update the identity
+attributes.  In the case a recovery document was not found, the
+transition fails, returning the error code and a human-readable error
+message together with a transition failure:
+
+.. code-block:: json
+
+    {
+      "recovery_state": "ERROR",
+      "error_message": "account unknown to Anastasis server",
+      "error_code": 9,
+    }
+
+Here, the ``error_code`` is from the ``enum ANASTASIS_RecoveryStatus``
+and describes precisely what failed about the download, while the
+``error_message`` is a human-readable (English) explanation of the code.
+Applications may want to translate the message using GNU gettext;
+translations should be available in the ``anastasis`` text domain.
+However, in general it should be sufficient to display the slightly
+more generic Taler error code that is returned with the new state.
+
+
+**change_version:**
+
+Even if a recovery document was found, it is possible that the user
+intended to recover a different version, or recover a backup where
+the recovery document is stored at a different provider. Thus, the
+reducer allows the user to explicitly switch to a different provider
+or recovery document version using the ``change_version`` transition,
+which takes a provider URL and policy version as arguments:
+
+.. code-block:: json
+
+    {
+      "provider_url": "https://localhost:8080/";,
+      "version": 2
+    }
+
+Note that using a version of 0 implies fetching "the latest version".  The
+resulting states are the same as those of the ``enter_user_attributes``
+transition, except that the recovery document version is not necessarily the
+latest available version at the provider.
+
+
+**select_challenge:**
+
+Selecting a challenge takes different, depending on the state of the payment.
+A comprehensive example for ``select_challenge`` would be:
+
+.. code-block:: json
+
+    {
+        "uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+        "timeout" : { "d_ms" : 5000 },
+        "payment_secret": 
"3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+    }
+
+The ``uuid`` field is mandatory and specifies the selected challenge.
+The other fields are optional, and are needed in case the user has
+previously been requested to pay for the challenge.  In this case,
+the ``payment_secret`` identifies the previous payment request, and
+``timeout`` says how long the Anastasis service should wait for the
+payment to be completed before giving up (long polling).
+
+Depending on the type of the challenge and the need for payment, the
+reducer may transition into ``CHALLENGE_SOLVING`` or ``CHALLENGE_PAYING``
+states.  In ``CHALLENGE_SOLVING``, the new state will primarily specify
+the selected challenge:
+
+.. code-block:: json
+
+    {
+      "backup_state": "CHALLENGE_SOLVING",
+      "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30"
+    }
+
+In ``CHALLENGE_PAYING``, the new state will include instructions for payment
+in the ``challenge_feedback``. In general, ``challenge_feedback`` includes
+information about attempted challenges, with the final state being ``solved``:
+
+.. code-block:: json
+
+    {
+      "recovery_state": "CHALLENGE_SELECTING",
+      "recovery_information": {
+        "...": "..."
+      }
+      "challenge_feedback": {
+        "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : {
+          "state" : "solved"
+        }
+      }
+    }
+
+Challenges feedback for a challenge can have many different ``state`` values
+that applications must all handle. States other than ``solved`` are:
+
+   - **payment**: Here, the user must pay for a challenge. An example would be:
+
+     .. code-block:: json
+
+        {
+          "backup_state": "CHALLENGE_PAYING",
+          "selected_challenge_uuid": 
"80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
+          "challenge_feedback": {
+            "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : {
+             "state" : "payment",
+             "taler_pay_uri" : "taler://pay/...",
+             "provider" : "https://localhost:8080/";,
+             "payment_secret" : 
"3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+            }
+          }
+        }
+
+    - **body**: Here, the server provided an HTTP reply for
+      how to solve the challenge, but the reducer could not parse
+      them into a known format. A mime-type may be provided and may
+      help parse the details.
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SOLVING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "body",
+               "body": "CROCKFORDBASE32ENCODEDBODY",
+               "http_status": 403,
+               "mime_type" : "anything/possible"
+             }
+           }
+         }
+
+    - **hint**: Here, the server provided human-readable hint for
+      how to solve the challenge.  Note that the ``hint`` provided this
+      time is from the Anastasis provider and may differ from the 
``instructions``
+      for the challenge under ``recovery_information``:
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SOLVING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "hint",
+               "hint": "Recovery TAN send to email mail@DOMAIN",
+               "http_status": 403
+             }
+           }
+         }
+
+    - **details**: Here, the server provided a detailed JSON status response
+      related to solving the challenge:
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SOLVING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "details",
+               "details": {
+                 "code": 8111,
+                 "hint": "The client's response to the challenge was invalid.",
+                 "detail" : null
+               },
+               "http_status": 403
+             }
+           }
+         }
+
+     - **redirect**: To solve the challenge, the user must visit the indicated
+       Web site at ``redirect_url``, for example to perform video 
authentication:
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SOLVING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "redirect",
+               "redirect_url": "https://videoconf.example.com/";,
+               "http_status": 303
+             }
+           }
+         }
+
+      - **server-failure**: This indicates that the Anastasis provider 
encountered
+        a failure and recovery using this challenge cannot proceed at this 
time.
+        Examples for failures might be that the provider is unable to send SMS
+        messages at this time due to an outage.  The body includes details 
about
+        the failure. The user may try again later or continue with other 
challenges.
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SELECTING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "server-failure",
+               "http_status": "500",
+               "error_code": 52
+             }
+           }
+         }
+
+      - **truth-unknown**: This indicates that the Anastasis provider is 
unaware of
+        the specified challenge. This is typically a permanent failure, and 
user
+        interfaces should not allow users to re-try this challenge.
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SELECTING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "truth-unknown",
+               "error_code": 8108
+             }
+           }
+         }
+
+      - **rate-limit-exceeded**:
+
+      .. code-block:: json
+
+         {
+           "recovery_state": "CHALLENGE_SELECTING",
+           "recovery_information": {
+               "...": "..."
+           }
+           "selected_challenge_uuid": 
"TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+           "challenge_feedback": {
+             "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+               "state": "rate-limit-exceeded",
+               "error_code": 8121
+             }
+           }
+         }
+
+**pay:**
+
+With a ``pay`` transition, the application indicates to the reducer that
+a payment may have been made. Here, it is again possible to specify an
+optional ``timeout`` argument for long-polling, for example:
+
+.. code-block:: json
+
+    {
+        "payment_secret": 
"ABCDADF242525AABASD52525235ABABFDABABANALASDAAKASDAS"
+        "timeout" : { "d_ms" : 5000 },
+    }
+
+Depending on the type of the challenge and the result of the operation, the
+new state may be ``CHALLENGE_SOLVING`` (if say the SMS was now sent to the
+user), ``CHALLENGE_SELECTING`` (if the answer to the security question was
+correct), ``RECOVERY_FINISHED`` (if this was the last challenge that needed to
+be solved) or still ``CHALLENGE_PAYING`` (if the challenge was not actually
+paid for).  For sample messages, see the different types of
+``challenge_feedback`` in the section about ``select_challenge``.
+
+
+**solve_challenge:**
+
+Solving a challenge takes various formats, depending on the type of the
+challenge and what is known about the answer.  The different supported
+formats are:
+
+.. code-block:: json
+
+    {
+        "answer": "answer to security question"
+    }
+
+.. code-block:: json
+
+    {
+        "pin": 1234
+    }
+
+.. code-block:: json
+
+    {
+        "hash": "SOMEBASE32ENCODEDHASHVALUE"
+    }
diff --git a/doc/sphinx/rest.rst b/doc/sphinx/rest.rst
new file mode 100644
index 0000000..ba9d768
--- /dev/null
+++ b/doc/sphinx/rest.rst
@@ -0,0 +1,508 @@
+..
+  This file is part of Anastasis
+  Copyright (C) 2019-2021 Anastasis SARL
+
+  Anastasis is free software; you can redistribute it and/or modify it under 
the
+  terms of the GNU Affero General Public License as published by the Free 
Software
+  Foundation; either version 2.1, or (at your option) any later version.
+
+  Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+  A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more 
details.
+
+  You should have received a copy of the GNU Affero General Public License 
along with
+  Anastasis; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
+
+  @author Christian Grothoff
+  @author Dominik Meister
+  @author Dennis Neufeld
+
+
+========
+REST API
+========
+
+.. include:: core/api-common.rst
+
+.. _salt:
+.. _config:
+
+
+Receiving Configuration
+^^^^^^^^^^^^^^^^^^^^^^^
+
+.. http:get:: /config
+
+  Obtain the configuration details of the escrow provider.
+
+  **Response:**
+
+  Returns an `EscrowConfigurationResponse`_.
+
+
+  .. _EscrowConfigurationResponse:
+  .. ts:def:: EscrowConfigurationResponse
+
+    interface EscrowConfigurationResponse {
+
+      // Protocol identifier, clarifies that this is an Anastasis provider.
+      name: "anastasis";
+
+      // libtool-style representation of the Exchange protocol version, see
+      // 
https://www.gnu.org/software/libtool/manual/html_node/Versioning.html#Versioning
+      // The format is "current:revision:age".
+      version: string;
+
+      // Currency in which this provider processes payments.
+      currency: string;
+
+      // Supported authorization methods.
+      methods: AuthorizationMethodConfig[];
+
+      // Maximum policy upload size supported.
+      storage_limit_in_megabytes: number;
+
+      // Payment required to maintain an account to store policy documents for 
a year.
+      // Users can pay more, in which case the storage time will go up 
proportionally.
+      annual_fee: Amount;
+
+      // Payment required to upload truth.  To be paid per upload.
+      truth_upload_fee: Amount;
+
+      // Limit on the liability that the provider is offering with
+      // respect to the services provided.
+      liability_limit: Amount;
+
+      // Salt value with 128 bits of entropy.
+      // Different providers
+      // will use different high-entropy salt values. The resulting
+      // **provider salt** is then used in various operations to ensure
+      // cryptographic operations differ by provider.  A provider must
+      // never change its salt value.
+      server_salt: string;
+
+    }
+
+  .. _AuthorizationMethodConfig:
+  .. ts:def:: AuthorizationMethodConfig
+
+    interface AuthorizationMethodConfig {
+      // Name of the authorization method.
+      type: string;
+
+      // Fee for accessing key share using this method.
+      cost: Amount;
+
+    }
+
+.. _terms:
+
+Receiving Terms of Service
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. http:get:: /terms
+
+  Obtain the terms of service provided by the escrow provider.
+
+  **Response:**
+
+  Returns the terms of service of the provider, in the best language
+  and format available based on the client's request.
+
+.. http:get:: /privacy
+
+  Obtain the privacy policy of the service provided by the escrow provider.
+
+  **Response:**
+
+  Returns the privacy policy of the provider, in the best language
+  and format available based on the client's request.
+
+
+.. _manage-policy:
+
+
+Manage policy
+^^^^^^^^^^^^^
+
+This API is used by the Anastasis client to deposit or request encrypted
+recovery documents with the escrow provider.  Generally, a client will deposit
+the same encrypted recovery document with each escrow provider, but provide
+a different truth to each escrow provider.
+
+Operations by the client are identified and authorized by ``$ACCOUNT_PUB``, 
which
+should be kept secret from third parties. ``$ACCOUNT_PUB`` should be an account
+public key using the Crockford base32-encoding.
+
+In the following, UUID is always defined and used according to `RFC 4122`_.
+
+.. _`RFC 4122`: https://tools.ietf.org/html/rfc4122
+
+.. http:get:: /policy/$ACCOUNT_PUB[?version=$NUMBER]
+
+  Get the customer's encrypted recovery document.  If ``version``
+  is not specified, the server returns the latest available version.  If
+  ``version`` is specified, returns the policy with the respective
+  ``version``.  The response must begin with the nonce and
+  an AES-GCM tag and continue with the ciphertext.  Once decrypted, the
+  plaintext is expected to contain:
+
+  * the escrow policy
+  * the separately encrypted master public key
+
+  Note that the key shares required to decrypt the master public key are
+  not included, as for this the client needs to obtain authorization.
+  The policy does provide sufficient information for the client to determine
+  how to authorize requests for **truth**.
+
+  The client MAY provide an ``If-None-Match`` header with an Etag.
+  In that case, the server MUST additionally respond with an ``304`` status
+  code in case the resource matches the provided Etag.
+
+  **Response**:
+
+  :http:statuscode:`200 OK`:
+    The escrow provider responds with an EncryptedRecoveryDocument_ object.
+  :http:statuscode:`304 Not modified`:
+    The client requested the same resource it already knows.
+  :http:statuscode:`400 Bad request`:
+    The ``$ACCOUNT_PUB`` is not an EdDSA public key.
+  :http:statuscode:`402 Payment Required`:
+    The account's balance is too low for the specified operation.
+    See the Taler payment protocol specification for how to pay.
+  :http:statuscode:`403 Forbidden`:
+    The required account signature was invalid.
+  :http:statuscode:`404 Not found`:
+    The requested resource was not found.
+
+  *Anastasis-Version*: $NUMBER --- The server must return actual version of 
the encrypted recovery document via this header.
+  If the client specified a version number in the header of the request, the 
server must return that version. If the client
+  did not specify a version in the request, the server returns latest version 
of the EncryptedRecoveryDocument_.
+
+  *Etag*: Set by the server to the Base32-encoded SHA512 hash of the body. 
Used for caching and to prevent redundancies. The server MUST send the Etag if 
the status code is ``200 OK``.
+
+  *If-None-Match*: If this is not the very first request of the client, this 
contains the Etag-value which the client has received before from the server.
+  The client SHOULD send this header with every request (except for the first 
request) to avoid unnecessary downloads.
+
+  *Anastasis-Account-Signature*: The client must provide Base-32 encoded EdDSA 
signature over hash of body with ``$ACCOUNT_PRIV``, affirming desire to 
download the requested encrypted recovery document.  The purpose used MUST be 
``TALER_SIGNATURE_ANASTASIS_POLICY_DOWNLOAD`` (1401).
+
+.. http:post:: /policy/$ACCOUNT_PUB
+
+  Upload a new version of the customer's encrypted recovery document.
+  While the document's structure is described in JSON below, the upload
+  should just be the bytestream of the raw data (i.e. 32-byte nonce followed
+  by 16-byte tag followed by the encrypted document).
+  If the request has been seen before, the server should do nothing, and 
otherwise store the new version.
+  The body must begin with a nonce, an AES-GCM tag and continue with the 
ciphertext.  The format
+  is the same as specified for the response of the GET method. The
+  Anastasis server cannot fully validate the format, but MAY impose
+  minimum and maximum size limits.
+
+  **Request**:
+
+  :query storage_duration=YEARS:
+     For how many years from now would the client like us to
+     store the recovery document? Defaults to 0 (that is, do
+     not extend / prolong existing storage contract).
+     The server will respond with a ``402 Payment required``, but only
+     if the rest of the request is well-formed (account
+     signature must match).  Clients that do not actually
+     intend to make a new upload but that only want to pay
+     may attempt to upload the latest backup again, as this
+     option will be checked before the ``304 Not modified``
+     case.
+  :query timeout_ms=NUMBER: *Optional.*  If specified, the Anastasis server 
will
+    wait up to ``timeout_ms`` milliseconds for completion of the payment before
+    sending the HTTP response.  A client must never rely on this behavior, as 
the
+    backend may return a response immediately.
+
+  *If-None-Match*: This header MUST be present and set to the SHA512 hash 
(Etag) of the body by the client.
+  The client SHOULD also set the ``Expect: 100-Continue`` header and wait for 
``100 continue``
+  before uploading the body.  The server MUST
+  use the Etag to check whether it already knows the encrypted recovery 
document that is about to be uploaded.
+  The server MUST refuse the upload with a ``304`` status code if the Etag 
matches
+  the latest version already known to the server.
+
+  *Anastasis-Policy-Signature*: The client must provide Base-32 encoded EdDSA 
signature over hash of body with ``$ACCOUNT_PRIV``, affirming desire to upload 
an encrypted recovery document.
+
+  *Payment-Identifier*: Base-32 encoded 32-byte payment identifier that was 
included in a previous payment (see ``402`` status code). Used to allow the 
server to check that the client paid for the upload (to protect the server 
against DoS attacks) and that the client knows a real secret of financial value 
(as the **kdf_id** might be known to an attacker). If this header is missing in 
the client's request (or the associated payment has exceeded the upload limit), 
the server must return a  [...]
+
+  **Response**:
+
+  :http:statuscode:`204 No content`:
+    The encrypted recovery document was accepted and stored.  
``Anastasis-Version`` and ``Anastasis-UUID`` headers
+    indicate what version and UUID was assigned to this encrypted recovery 
document upload by the server.
+  :http:statuscode:`304 Not modified`:
+    The same encrypted recovery document was previously accepted and stored.  
``Anastasis-Version`` header
+    indicates what version was previously assigned to this encrypted recovery 
document.
+  :http:statuscode:`400 Bad request`:
+    The ``$ACCOUNT_PUB`` is not an EdDSA public key or mandatory headers are 
missing.
+    The response body MUST elaborate on the error using a Taler error code in 
the typical JSON encoding.
+  :http:statuscode:`402 Payment required`:
+    The account's balance is too low for the specified operation.
+    See the Taler payment protocol specification for how to pay.
+    The response body MAY provide alternative means for payment.
+  :http:statuscode:`403 Forbidden`:
+    The required account signature was invalid.  The response body may 
elaborate on the error.
+  :http:statuscode:`413 Request entity too large`:
+    The upload is too large *or* too small. The response body may elaborate on 
the error.
+
+  **Details:**
+
+  .. _EncryptedRecoveryDocument:
+  .. ts:def:: EncryptedRecoveryDocument
+
+    interface EncryptedRecoveryDocument {
+      // Nonce used to compute the (iv,key) pair for encryption of the
+      // encrypted_compressed_recovery_document.
+      nonce: [32]; //bytearray
+
+      // Authentication tag.
+      aes_gcm_tag: [16]; //bytearray
+
+      // Variable-size encrypted recovery document. After decryption,
+      // this contains a gzip compressed JSON-encoded `RecoveryDocument`.
+      // The nonce of the HKDF for this encryption must include the
+      // string "ERD".
+      encrypted_compressed_recovery_document: []; //bytearray of undefined 
length
+
+    }
+
+  .. _RecoveryDocument:
+  .. ts:def:: RecoveryDocument
+
+    interface RecoveryDocument {
+      // Account identifier at backup provider, AES-encrypted with
+      // the (symmetric) master_key, i.e. an URL
+      // https://sync.taler.net/$BACKUP_ID and
+      // a private key to decrypt the backup.  Anastasis is oblivious
+      // to the details of how this is ultimately encoded.
+      backup_account: []; //bytearray of undefined length
+
+      // List of escrow providers and selected authentication method.
+      methods: EscrowMethod[];
+
+      // List of possible decryption policies.
+      policy: DecryptionPolicy[];
+
+    }
+
+  .. _EscrowMethod:
+  .. ts:def:: EscrowMethod
+
+    interface EscrowMethod {
+      // URL of the escrow provider (including possibly this Anastasis server).
+      provider_url : string;
+
+      // Type of the escrow method (e.g. security question, SMS etc.).
+      escrow_type: string;
+
+      // UUID of the escrow method (see /truth/ API below).
+      uuid: string;
+
+      // Key used to encrypt the `Truth` this `EscrowMethod` is related to.
+      // Client has to provide this key to the server when using ``/truth/``.
+      truth_encryption_key: [32]; //bytearray
+
+      // Salt used to encrypt the truth on the Anastasis server.
+      truth_salt: [32]; //bytearray
+
+      // The challenge to give to the user (i.e. the security question
+      // if this is challenge-response).
+      // (Q: as string in base32 encoding?)
+      // (Q: what is the mime-type of this value?)
+      //
+      // For some methods, this value may be absent.
+      //
+      // The plaintext challenge is not revealed to the
+      // Anastasis server.
+      challenge: []; //bytearray of undefined length
+
+    }
+
+  .. _DecryptionPolicy:
+  .. ts:def:: DecryptionPolicy
+
+    interface DecryptionPolicy {
+      // Salt included to encrypt master key share when
+      // using this decryption policy.
+      policy_salt: [32]; //bytearray
+
+      // Master key, AES-encrypted with key derived from
+      // salt and keyshares revealed by the following list of
+      // escrow methods identified by UUID.
+      encrypted_master_key: [32]; //bytearray
+
+      // List of escrow methods identified by their UUID.
+      uuid: string[];
+
+    }
+
+.. _Truth:
+
+Managing truth
+^^^^^^^^^^^^^^
+
+This API is used by the Anastasis client to deposit **truth** or request a 
(encrypted) **key share** with
+the escrow provider.
+
+An **escrow method** specifies an Anastasis provider and how the user should
+authorize themself.  The **truth** API allows the user to provide the
+(encrypted) key share to the respective escrow provider, as well as auxiliary
+data required for such a respective escrow method.
+
+An Anastasis-server may store truth for free for a certain time period, or
+charge per truth operation using GNU Taler.
+
+.. http:post:: /truth/$UUID
+
+  Upload a `TruthUploadRequest`_-Object according to the policy the client 
created before (see `RecoveryDocument`_).
+  If request has been seen before, the server should do nothing, and otherwise 
store the new object.
+
+  **Request:**
+
+  :query timeout_ms=NUMBER: *Optional.*  If specified, the Anastasis server 
will
+    wait up to ``timeout_ms`` milliseconds for completion of the payment before
+    sending the HTTP response.  A client must never rely on this behavior, as 
the
+    backend may return a response immediately.
+
+  **Response:**
+
+  :http:statuscode:`204 No content`:
+    Truth stored successfully.
+  :http:statuscode:`304 Not modified`:
+    The same truth was previously accepted and stored under this UUID.  The
+    Anastasis server must still update the expiration time for the truth when 
returning
+    this response code.
+  :http:statuscode:`402 Payment required`:
+    This server requires payment to store truth per item.
+    See the Taler payment protocol specification for how to pay.
+    The response body MAY provide alternative means for payment.
+  :http:statuscode:`409 Conflict`:
+    The server already has some truth stored under this UUID. The client 
should check that it
+    is generating UUIDs with enough entropy.
+  :http:statuscode:`412 Precondition failed`:
+    The selected authentication method is not supported on this provider.
+
+
+  **Details:**
+
+  .. _TruthUploadRequest:
+  .. ts:def:: TruthUploadRequest
+
+    interface TruthUploadRequest {
+      // Contains the information of an interface `EncryptedKeyShare`, but 
simply
+      // as one binary block (in Crockford Base32 encoding for JSON).
+      key_share_data: []; //bytearray
+
+      // Key share method, i.e. "security question", "SMS", "e-mail", ...
+      type: string;
+
+      // Nonce used to compute the (iv,key) pair for encryption of the
+      // encrypted_truth.
+      nonce: [32]; //bytearray
+
+      // Authentication tag of ``encrypted_truth``.
+      aes_gcm_tag: [16]; //bytearray
+
+      // Variable-size truth. After decryption,
+      // this contains the ground truth, i.e. H(challenge answer),
+      // phone number, e-mail address, picture, fingerprint, ...
+      // **base32 encoded**.
+      //
+      // The nonce of the HKDF for this encryption must include the
+      // string "ECT".
+      encrypted_truth: [80]; //bytearray
+
+      // MIME type of truth, i.e. text/ascii, image/jpeg, etc.
+      truth_mime: string;
+
+      // For how many years from now would the client like us to
+      // store the truth?
+      storage_duration_years: Integer;
+
+    }
+
+.. http:get:: /truth/$UUID[?response=$H_RESPONSE]
+
+  Get the stored encrypted key share. If ``$H_RESPONSE`` is specified by the 
client, the server checks
+  if ``$H_RESPONSE`` matches the expected response specified before within the 
`TruthUploadRequest`_ (see ``encrypted_truth``).
+  Also, the user has to provide the correct *truth_encryption_key* with every 
get request (see below).
+  When ``$H_RESPONSE`` is correct, the server responds with the encrypted key 
share.
+  The encrypted key share is returned simply as a byte array and not in JSON 
format.
+
+  **Response**:
+
+  :http:statuscode:`200 OK`:
+    `EncryptedKeyShare`_ is returned in body (in binary).
+  :http:statuscode:`202 Accepted`:
+    The escrow provider will respond out-of-band (i.e. SMS).
+    The body may contain human-readable instructions on next steps.
+  :http:statuscode:`208 Already Reported`:
+    An authentication challenge was recently send, client should
+    simply respond to the pending challenge.
+  :http:statuscode:`303 See other`:
+    The provider redirects for authentication (i.e. video 
identification/WebRTC).
+    If the client is not a browser, it should launch a browser at the URL
+    given in the ``Location`` header and allow the user to re-try the operation
+    after successful authorization.
+  :http:statuscode:`402 Payment required`:
+    The service requires payment for access to truth.
+    See the Taler payment protocol specification for how to pay.
+    The response body MAY provide alternative means for payment.
+  :http:statuscode:`403 Forbidden`:
+    The server requires a valid "response" to the challenge associated with 
the UUID.
+  :http:statuscode:`404 Not found`:
+    The server does not know any truth under the given UUID.
+  :http:statuscode:`410 Gone`:
+    The server has not (recently) issued a challenge under the given UUID,
+    but a reply was provided. (This does not apply for secure question.)
+  :http:statuscode:`417 Expectation Failed`:
+    The decrypted ``truth`` does not match the expectations of the 
authentication
+    backend, i.e. a phone number for sending an SMS is not a number, or
+    an e-mail address for sending an E-mail is not a valid e-mail address.
+  :http:statuscode:`503 Service Unavailable`:
+    Server is out of Service.
+
+  *Truth-Decryption-Key*: Key used to encrypt the **truth** (see 
encrypted_truth within `TruthUploadRequest`_) and which has to provided by the 
user. The key is stored with
+  the according `EscrowMethod`_. The server needs this key to get the info out 
of `TruthUploadRequest`_ needed to verify the ``$RESPONSE``.
+
+  **Details:**
+
+  .. _EncryptedKeyShare:
+  .. ts:def:: EncryptedKeyShare
+
+    interface EncryptedKeyShare {
+      // Nonce used to compute the decryption (iv,key) pair.
+      nonce_i: [32]; //bytearray
+
+      // Authentication tag.
+      aes_gcm_tag_i: [16]; //bytearray
+
+      // Encrypted key-share in base32 encoding.
+      // After decryption, this yields a `KeyShare`.  Note that
+      // the `KeyShare` MUST be encoded as a fixed-size binary
+      // block (instead of in JSON encoding).
+      //
+      // HKDF for the key generation must include the
+      // string "eks" as salt.
+      // Depending on the method,
+      // the HKDF may additionally include
+      // bits from the response (i.e. some hash over the
+      // answer to the security question).
+      encrypted_key_share_i: [32]; //bytearray
+
+    }
+
+  .. _KeyShare:
+  .. ts:def:: KeyShare
+
+    interface KeyShare {
+      // Key material to concatenate with policy_salt and KDF to derive
+      // the key to decrypt the master key.
+      key_share: [32]; //bytearray
+
+      // Signature over method, UUID, and ``key_share``.
+      account_sig: EddsaSignature;
+
+    }
diff --git a/src/cli/anastasis-cli-redux.c b/src/cli/anastasis-cli-redux.c
index 6ac40b7..7b533c2 100644
--- a/src/cli/anastasis-cli-redux.c
+++ b/src/cli/anastasis-cli-redux.c
@@ -1,6 +1,6 @@
 /*
   This file is part of Anastasis
-  Copyright (C) 2020 Taler Systems SA
+  Copyright (C) 2020,2021 Taler Systems SA
 
   Anastasis is free software; you can redistribute it and/or modify it under 
the
   terms of the GNU Lesser General Public License as published by the Free 
Software
diff --git a/src/reducer/anastasis_api_backup_redux.c 
b/src/reducer/anastasis_api_backup_redux.c
index dc3055a..c07f887 100644
--- a/src/reducer/anastasis_api_backup_redux.c
+++ b/src/reducer/anastasis_api_backup_redux.c
@@ -4159,9 +4159,16 @@ clear_secret (json_t *state,
               ANASTASIS_ActionCallback cb,
               void *cb_cls)
 {
-  GNUNET_assert (0 ==
-                 json_object_del (state,
-                                  "core_secret"));
+  if (0 !=
+      json_object_del (state,
+                       "core_secret"))
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID,
+                           "'core_secret' not set");
+    return NULL;
+  }
   cb (cb_cls,
       TALER_EC_NONE,
       state);
diff --git a/src/util/os_installation.c b/src/util/os_installation.c
index d82b3d1..d9608d3 100644
--- a/src/util/os_installation.c
+++ b/src/util/os_installation.c
@@ -37,12 +37,12 @@ static const struct GNUNET_OS_ProjectData anastasis_pd = {
   .binary_name = "anastasis-httpd",
   .env_varname = "ANASTASIS_PREFIX",
   .base_config_varname = "ANASTASIS_BASE_CONFIG",
-  .bug_email = "taler@lists.gnu.org",
-  .homepage = "http://www.gnu.org/s/taler/";,
+  .bug_email = "contact@anastasis.lu",
+  .homepage = "https://anastasis.lu/";,
   .config_file = "anastasis.conf",
   .user_config_file = "~/.config/anastasis.conf",
   .version = PACKAGE_VERSION,
-  .is_gnu = 1,
+  .is_gnu = 0,
   .gettext_domain = "anastasis",
   .gettext_path = NULL,
 };

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]