Once you sign in to Dropbox, the photos and videos in this album will be instantly saved to your Dropbox and downloaded to all the computers linked to your account.
Once you sign in to Dropbox, this folder will be instantly saved to your Dropbox and downloaded to all the computers linked to your account.
Once you sign in to Dropbox, this file will be instantly saved to your Dropbox and downloaded to all the computers linked to your account.
Download and save to your Dropbox by creating a free account, or sign inDownload and save directly to your Dropbox by signing in, or create a free account
Download and save to your Dropbox by creating a free account, or sign inDownload and save directly to your Dropbox by signing in, or create a free account
-
\ No newline at end of file
diff --git a/docs/assets/2018_EPFL_molsim/raspa_sample_graph.png b/docs/assets/2018_EPFL_molsim/raspa_sample_graph.png
deleted file mode 100644
index 02985b63..00000000
Binary files a/docs/assets/2018_EPFL_molsim/raspa_sample_graph.png and /dev/null differ
diff --git a/docs/assets/2018_EPFL_molsim/raspa_submission.zip b/docs/assets/2018_EPFL_molsim/raspa_submission.zip
deleted file mode 100644
index 0fb5f70d..00000000
Binary files a/docs/assets/2018_EPFL_molsim/raspa_submission.zip and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/bandstructures/Al_bands.png b/docs/assets/2018_PRACE_MaX/bandstructures/Al_bands.png
deleted file mode 100644
index 83a18e02..00000000
Binary files a/docs/assets/2018_PRACE_MaX/bandstructures/Al_bands.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.pdf.png b/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.pdf.png
deleted file mode 100644
index c8525e96..00000000
Binary files a/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.pdf.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.png b/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.png
deleted file mode 100644
index 91ec05ea..00000000
Binary files a/docs/assets/2018_PRACE_MaX/bandstructures/CaF2_bands.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/bandstructures/GaAs_bands.png b/docs/assets/2018_PRACE_MaX/bandstructures/GaAs_bands.png
deleted file mode 100644
index 2192836b..00000000
Binary files a/docs/assets/2018_PRACE_MaX/bandstructures/GaAs_bands.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/bandstructures/hBN_bands.png b/docs/assets/2018_PRACE_MaX/bandstructures/hBN_bands.png
deleted file mode 100644
index 05967877..00000000
Binary files a/docs/assets/2018_PRACE_MaX/bandstructures/hBN_bands.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/convergence_pressure.png b/docs/assets/2018_PRACE_MaX/convergence_pressure.png
deleted file mode 100644
index a4323e7e..00000000
Binary files a/docs/assets/2018_PRACE_MaX/convergence_pressure.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/graph/graph-full.pdf b/docs/assets/2018_PRACE_MaX/graph/graph-full.pdf
deleted file mode 100644
index beeacec3..00000000
Binary files a/docs/assets/2018_PRACE_MaX/graph/graph-full.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/graph/graph-full.png b/docs/assets/2018_PRACE_MaX/graph/graph-full.png
deleted file mode 100644
index c1e0d3ba..00000000
Binary files a/docs/assets/2018_PRACE_MaX/graph/graph-full.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.pdf b/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.pdf
deleted file mode 100644
index 33088ce6..00000000
Binary files a/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.png b/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.png
deleted file mode 100644
index 5d1e740d..00000000
Binary files a/docs/assets/2018_PRACE_MaX/graph/graph-inputonly.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/graph/graph.svg b/docs/assets/2018_PRACE_MaX/graph/graph.svg
deleted file mode 100644
index 89b754a4..00000000
--- a/docs/assets/2018_PRACE_MaX/graph/graph.svg
+++ /dev/null
@@ -1,842 +0,0 @@
-
-
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/.gitignore b/docs/assets/2018_PRACE_MaX/latex/.gitignore
deleted file mode 100644
index ddfcde18..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*.synctex.gz
-*.aux
-*.log
-*.out
-*.toc
-*~
-*.backup
-*.fls
-*.fdb_latexmk
-AiiDA_tutorial.pdf
-AiiDA_tutorial_online.pdf
-AiiDA_tutorial_addition.pdf
-*-clean.tex
-*.db
diff --git a/docs/assets/2018_PRACE_MaX/latex/.travis.yml b/docs/assets/2018_PRACE_MaX/latex/.travis.yml
deleted file mode 100644
index 8aee657d..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/.travis.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-dist: trusty
-sudo: false
-
-language: python
-
-addons:
- apt:
- packages:
- - texlive-base
- - texlive-generic-recommended
- - texlive-fonts-recommended
- - texlive-latex-base
- - texlive-latex-recommended
- - texlive-latex-extra
- - latex-xcolor
- - pgf
- - dvipng
- - dvidvi
-
-env:
-- LATEX_INTERACTION_MODE="-interaction=nonstopmode"
-
-## Check that the documentation compiles correctly
-script:
- - cd latex
- - make all
- - cd ..
diff --git a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial.tex b/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial.tex
deleted file mode 100644
index 3af66e05..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-\documentclass[twoside,a4paper,11pt]{extarticle}
-
-\usepackage{etoolbox}
-
-% Version for real-life tutorial (online = false)
-\newtoggle{online}
-\togglefalse{online}
-
-%% From tutorial to tutorial, the only things to change (for headers, authors, etc.)
-%% Should all be only inside here
-\input{sections/custom_specifications.tex}
-
-\input{sections/preamble.tex}
-\usepackage{sections/defs-private}
-
-\begin{document}
-
-\input{sections/main_body.tex}
-
-\input{sections/biblio.tex}
-
-\end{document}
diff --git a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_addition.tex b/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_addition.tex
deleted file mode 100644
index a6e154b1..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_addition.tex
+++ /dev/null
@@ -1,28 +0,0 @@
-\documentclass[twoside,a4paper,11pt]{extarticle}
-
-\usepackage{etoolbox}
-
-% Version for real-life tutorial (online = false)
-\newtoggle{online}
-\togglefalse{online}
-
-%% From tutorial to tutorial, the only things to change (for headers, authors, etc.)
-%% Should all be only inside here
-\input{sections/custom_specifications.tex}
-
-\input{sections/preamble.tex}
-\usepackage{sections/defs-private}
-
-\let\origtitle\thetitle
-\title{\origtitle{}---Additional part}
-
-
-\begin{document}
-
-\maketitle
-
-\tableofcontents
-
-\input{sections/8_computer_code_setup.tex}
-
-\end{document}
diff --git a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_online.tex b/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_online.tex
deleted file mode 100644
index e60d9a64..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/AiiDA_tutorial_online.tex
+++ /dev/null
@@ -1,22 +0,0 @@
-\documentclass[twoside,a4paper,11pt]{extarticle}
-
-\usepackage{etoolbox}
-
-% Version for online tutorial (online = true)
-\newtoggle{online}
-\toggletrue{online}
-
-%% From tutorial to tutorial, the only things to change (for headers, authors, etc.)
-%% Should all be only inside here
-\input{sections/custom_specifications.tex}
-
-\input{sections/preamble.tex}
-\usepackage{sections/defs-private}
-
-\begin{document}
-
-\input{sections/main_body.tex}
-
-\input{sections/biblio.tex}
-
-\end{document}
diff --git a/docs/assets/2018_PRACE_MaX/latex/Makefile b/docs/assets/2018_PRACE_MaX/latex/Makefile
deleted file mode 100644
index 4253f329..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-deps:=$(wildcard sections/*.tex)
-
-temp_files = $(shell find . -name "*aux" -o -name "*log" -o -name "*toc" -o -name "*out" -o -name "*-clean.tex" -o -name "*.db" -o -name "*.md")
-
-pdflatex: $(patsubst %.tex, %.pdf, $(wildcard *.tex))
-
-%.pdf: %.tex $(deps)
- pdflatex ${LATEX_INTERACTION_MODE} $< && pdflatex $< && pdflatex $<
-
-
-.PHONY: all clean distclean
-
-clean:
- rm -f ${temp_files}
-
-distclean: clean
- rm -f AiiDA_tutorial.pdf AiiDA_tutorial_online.pdf
-
-markdown: $(deps)
- ./de-macro.py AiiDA_tutorial.tex
- pandoc -s --filter pandocfilter.py AiiDA_tutorial-clean.tex -t markdown_github-fenced_code_attributes -o AiiDA_tutorial-clean.md
-
-rst: $(deps)
- ./de-macro.py AiiDA_tutorial.tex
- pandoc -s --filter pandocfilter.py AiiDA_tutorial-clean.tex -t rst -o AiiDA_tutorial-clean.rst
diff --git a/docs/assets/2018_PRACE_MaX/latex/README.md b/docs/assets/2018_PRACE_MaX/latex/README.md
deleted file mode 100644
index 03be2e2d..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Contents
-
-This folder contains the LaTeX source for the 2018 PRACE-MaX AiiDA tutorial.
-
-**Note:** The LaTeX source is kept only for historical reasons
-and has been replaced by the markdown/rst based version.
-
-## Compiling LaTeX source
-
-```
-make
-```
-
-## Export to markdown/rst
-
-The LaTeX source can be converted as follows:
-
-### Prerequisites
-
-* pandoc
-* python3
-
-### Conversion
-
-```console
-$ pip install -r requirements.txt
-$ make markdown
-$ make rst
-```
diff --git a/docs/assets/2018_PRACE_MaX/latex/aiidatutorial.kilepr b/docs/assets/2018_PRACE_MaX/latex/aiidatutorial.kilepr
deleted file mode 100644
index 814162dd..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/aiidatutorial.kilepr
+++ /dev/null
@@ -1,127 +0,0 @@
-[General]
-bib_extensions=.bib
-bibliographyBackendAutoDetected=
-bibliographyBackendUserOverride=
-def_graphic_ext=eps
-img_extIsRegExp=false
-img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif
-kileprversion=3
-kileversion=2.9.91
-masterDocument=
-name=AiiDA Tutorial
-pkg_extIsRegExp=false
-pkg_extensions=.cls .sty .bbx .cbx .lbx
-src_extIsRegExp=false
-src_extensions=.tex .ltx .latex .dtx .ins
-
-[Tools]
-MakeIndex=
-QuickBuild=
-
-[item:AiiDA_tutorial.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:AiiDA_tutorial_addition.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:AiiDA_tutorial_online.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:aiidatutorial.kilepr]
-archive=true
-encoding=UTF-8
-highlight=None
-mode=Normal
-
-[item:sections/0_preparation.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/1_1_1_verdi_graphs.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/1_1_2_verdi_shell_and_orm.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/1_2_qe_submission.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/2_1_querybuilder.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/2_1_querybuilder_jupyter.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/2_2_workflows.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/3_computer_code_setup.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/appendix_1.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/appendix_2.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/biblio.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/custom_specifications.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/main_body.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
-
-[item:sections/preamble.tex]
-archive=true
-encoding=UTF-8
-highlight=LaTeX
-mode=LaTeX
diff --git a/docs/assets/2018_PRACE_MaX/latex/de-macro.py b/docs/assets/2018_PRACE_MaX/latex/de-macro.py
deleted file mode 100755
index e7daf949..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/de-macro.py
+++ /dev/null
@@ -1,1103 +0,0 @@
-#!/usr/bin/python -O
-"""
-Copyright 2005 Peter Gacs
-Licensed under the Academic Free Licence version 2.1
-
- DE-MACRO
-
-Version 1.3 - this version is much more conservative about deleting
- comments and inserting or deleting blank space: tries to
- leave in all comments, adds space only when necessary, and
- tries not to delete space in the main text.
- The motivating comments came from Daniel Webb.
-Version 1.2 - a syntactical bug corrected, thanks Brian de Alwis!
-
-
-PURPOSE
-
-This program can eliminate most private macros from a LaTeX file.
-Applications:
- - your publisher has difficulty dealing with many private macros
- - you cooperate with colleagues who do not understand your macros
- - preprocessing before a system like latex2html, which is somewhat
- unpredictable with private macros.
-
-USAGE
-
-de-macro [--defs ] [.tex] [[.tex] ...]
-
-Simplest example: de-macro testament
-
-(As you see, the <> is used only in the notation of this documentation,
-you should not type it.)
-
-If contains a command \usepackage{-private}
-then the file -private.sty will be read, and its macros will be
-replaced in with their definitions.
-The result is in -clean.tex.
-
-Only newcommand, renewcommand, newenvironment, and renewenvironment are
-understood (it does not matter, whether you write new or renew).
-These can be nested but do not be too clever, since I do not
-guarantee the same expansion order as in TeX.
-
-FILES
-
-.db
--clean.tex
--private.sty
-
-For speed, a macro database file called .db is created.
-If such a file exists already then it is used.
-If -private.sty is older than .db then it will not
-be used.
-
-It is possible to specify another database filename via --defs .
-Then .db will be used.
-
-For each , a file -clean.tex will be produced.
-If -clean.tex is newer than .tex then it stays.
-
-INPUT COMMAND
-
-If a tex file contains a command \input{} or \input
-then .tex is processed recursively, and -clean.tex
-will be inserted into the final output.
-For speed, if -clean.tex is newer than .tex
-then .tex will not be reprocessed.
-
-The dependency checking is not sophisticated, so if you rewrite some macros
-then remove all *-clean.tex files!
-
-"""
-
-import sys, os, re, shelve
-
-# Utilities
-
-
-class No_detail:
- strerror = ""
-
-
-no_detail = No_detail()
-
-
-class Error(Exception):
- """Base class for exceptions in this module."""
- pass
-
-
-class Empty_text_error(Error):
- """Exception raised for errors in the input.
-
- Attributes:
- data -- data that was found empty
- message
- """
-
- def __init__(self, data, message):
- self.data = data
- self.message = message
-
-
-def warn(error_message, detail=no_detail):
- sys.stderr.write(error_message + "\n")
- if no_detail != detail:
- sys.stderr.write(detail.strerror + "\n")
-
-
-def die(error_message, detail=no_detail):
- warn(error_message, detail=no_detail)
- sys.exit(1)
-
-
-def getopt_map(one_letter_opts, long_optlist):
- "Turns long options into an option map, using getopt."
- import getopt
- optlist, args = getopt.getopt(sys.argv[1:], one_letter_opts, long_optlist)
- opt_map = {}
- for pair in optlist:
- opt_map[pair[0]] = pair[1] or 1
- return opt_map, args
-
-
-def newer(file1, file2):
-
- if not os.path.isfile(file1):
- return False
-
- try:
- stat_return = os.lstat(file1)
- except OSError, detail:
- die("lstat " + file1 + " failed:", detail)
- time1 = stat_return.st_mtime
-
- try:
- stat_return = os.lstat(file2)
- except OSError, detail:
- die("lstat " + file2 + " failed:", detail)
- time2 = stat_return.st_mtime
-
- return time1 > time2
-
-
-def cut_extension(filename, ext):
- """
- If filename has extension ext (including the possible dot),
- it will be cut off.
- """
- file = filename
- index = filename.rfind(ext)
- if 0 <= index and len(file) - len(ext) == index:
- file = file[:index]
- return file
-
-
-class Stream:
- data = None
- pos = None
- item = None
-
- def legal(self):
- return 0 <= self.pos and self.pos < len(self.data)
-
- def uplegal(self):
- return self.pos < len(self.data)
-
- def __init__(self, data_v=None):
- self.data = data_v
- if self.data:
- self.pos = 0
- self.item = self.data[self.pos]
-
- def next(self):
- self.pos += 1
- if self.pos < len(self.data):
- self.item = self.data[self.pos]
- return self.item
-
- def reset(self):
- if self.data and 0 < len(self.data):
- self.pos = 0
- self.item = self.data[0]
- return self.item
-
-
-# Basic classes
-
-blank_re = re.compile(r"\s")
-blanked_filename_re = re.compile(r"^\s+(\w*)\s+")
-braced_filename_re = re.compile(r"^\s*{\s*(\w*)\s*}")
-blank_or_rbrace_re = re.compile(r"[\s}]")
-pos_digit_re = re.compile(r"[1-9]")
-
-
-def isletter(c, isatletter=False):
- if "@" == c:
- return isatletter
- else:
- return c.isalpha()
-
-
-class Token:
- """Type 0 means ordinary character, type 1 means escape sequence
- (without the \ ), type 2 means comment.
- """
- simple_ty = 0
- esc_symb_ty = 1
- esc_str_ty = 2
- comment_ty = 3
-
- type = simple_ty
- val = " "
-
- def __init__(self, type_v=simple_ty, val_v=" "):
- self.type = type_v
- self.val = val_v
-
- def show(self, isatletter=False):
- out = ""
- if simple_ty == self.type or comment_ty == self.type:
- out = self.val
- else:
- out = "\\" + self.val
- return out
-
-
-# Constants
-
-g_token = Token(0, " ") # generic token
-simple_ty = g_token.simple_ty
-comment_ty = g_token.comment_ty
-esc_symb_ty = g_token.esc_symb_ty
-esc_str_ty = g_token.esc_str_ty
-
-
-def detokenize(text):
- """
- Input is a list of tokens.
- Output is a string.
- """
- out = ""
- if 0 == len(text):
- return
- pos = 0
- out += text[pos].show()
- pos += 1
- while pos < len(text):
- previtem = text[pos - 1]
- item = text[pos]
- """Insert a separating space after an escape sequence if it is a
- string and is followed by a letter."""
- if (esc_str_ty == previtem.type and simple_ty == item.type
- and isletter(item.val[0], False)):
- out += " "
- out += item.show()
- pos += 1
- return out
-
-
-def strip_comments(text):
- """
- Input is a list of tokens.
- Output is the same list except the comment tokens.
- """
- out = []
- for token in text:
- if not comment_ty == token.type:
- out.append(token)
- return out
-
-
-class Group:
- """type 0 means a token, type 1 means contents of a group within {}
- """
- token_ty = 0
- group_ty = 1
- type = token_ty
- val = [] # Value is a token list.
-
- def __init__(self, type_v, val_v):
- self.type = type_v
- self.val = val_v
-
- def show(self):
- if token_ty == self.type:
- return self.val.show()
- else:
- return "{%s}" % detokenize(self.val)
-
-
-# Constants
-
-g_group = Group(0, [])
-token_ty = g_group.token_ty
-group_ty = g_group.group_ty
-
-
-def tokenize(in_str):
- """Returns a list of tokens.
- """
- text = []
- isatletter = False
- cs = Char_stream(in_str)
- cs.reset()
- if not cs.legal():
- raise "No string to tokenize."
- while cs.uplegal():
- if "%" == cs.item:
- comment = cs.scan_comment_token()
- text.append(Token(comment_ty, comment))
- elif "\\" != cs.item:
- text.append(Token(simple_ty, cs.item))
- cs.next()
- else:
- cs.next()
- name = cs.scan_escape_token(isatletter)
- if isletter(name[0], isatletter):
- token = Token(esc_str_ty, name)
- else:
- token = Token(esc_symb_ty, name)
- text.append(token)
- if "makeatletter" == name:
- isatletter = True
- elif "makeatother" == name:
- isatletter = False
- return text
-
-
-class Command_def:
- name = "1"
- numargs = 0
- body = ""
-
- def __init__(self, name_v, numargs_v, body_v):
- self.name = name_v
- self.numargs = numargs_v
- self.body = body_v
-
- def show(self):
- out = "\\newcommand{\\%s}" % (self.name)
- if 0 < self.numargs:
- out += "[%d]" % self.numargs
- out += "{%s}" % detokenize(self.body)
- return out
-
-
-class Env_def:
- name = "1"
- numargs = 0
- begin = ""
- end = ""
-
- def __init__(self, name_v, numargs_v, begin_v, end_v):
- self.name = name_v
- self.numargs = numargs_v
- self.begin = begin_v
- self.end = end_v
-
- def show(self):
- out = "\\newenvironment{%s}" % self.name
- if 0 < self.numargs:
- out += "[%d]" % self.numargs
- out += "{%s}" % detokenize(self.begin)
- out += "{%s}" % detokenize(self.end)
- return out
-
-
-class Command_instance:
- name = "1"
- args = []
-
- def __init__(self, name_v, args_v):
- self.name = name_v
- self.args = args_v
-
- def show(self):
- out = "\\" + self.name
- for arg in self.args:
- out += "{%s}" % detokenize(arg)
- return out
-
-
-class Env_instance:
- name = "1"
- args = []
-
- def __init__(self, name_v, args_v, body_v):
- self.name = name_v
- self.args = args_v
- self.body = body_v
-
- def show(self):
- out = "\\begin{%s}" % self.name
- for arg in self.args:
- out += "{%s}" % detokenize(arg)
- out += detokenize(self.body)
- out += "\\end{%s}" % self.name
- return out
-
-
-class Char_stream(Stream):
- def scan_escape_token(self, isatletter=False):
- """
- Starts after the escape sign, assumes that it is scanning a symbol.
- Returns a token-string.
- """
- out = self.item # Continue only if this is a letter.
- item = self.next()
- if isletter(out, isatletter):
- while self.uplegal() and isletter(item, isatletter):
- out += item
- item = self.next()
- return out
-
- def scan_comment_token(self):
- """
- Starts at the comment sign %, assumes that it is scanning a comment.
- Returns the whole comment string,
- including the % and all empty space after it.
- """
- comment = ""
- while "\n" != self.item:
- comment += self.item
- self.next()
- while self.uplegal() and blank_re.match(self.item):
- comment += self.item
- self.next()
- return comment
-
- def scan_input_filename(self):
- """We just read an \input token. The next group or word will be
- interpreted as a filename (possibly without .tex).
- Return the filename.
- """
- item = self.item
- while self.uplegal() and blank_re.match(self.item):
- item = self.next()
- if "{" == item:
- item = self.next()
- file = ""
- while self.uplegal() and not blank_or_rbrace_re.match(item):
- file += item
- item = self.next()
- self.next()
- return file
-
- def scan_package_filenames(self):
- """We just read a \usepackage token. The next group will be
- interpreted as a list of filenames (without .sty) separated by commas.
- Return the list.
- """
- item = self.item
- while self.uplegal() and blank_re.match(item):
- item = self.next()
- file = ""
- if not "{" == item:
- raise "\\usepackage not followed by brace."
- item = self.next()
- while self.uplegal() and not blank_or_rbrace_re.match(item):
- file += item
- item = self.next()
- self.next()
- return file.split(",")
-
-
-class Tex_stream(Stream):
-
- defs = ({}, {})
- defs_db = "x"
- defs_db_file = "x.db"
- debug = False
-
- def smart_tokenize(self, in_str, handle_inputs=False):
- """Returns a list of tokens.
- It may interpret and carry out all \input commands.
- """
- self.data = []
- text = self.data
- isatletter = False
- cs = Char_stream(in_str)
- cs.reset()
- if not cs.legal():
- raise "No string to tokenize."
- while cs.uplegal():
- if "%" == cs.item:
- comment = cs.scan_comment_token()
- text.append(Token(comment_ty, comment))
- elif "\\" != cs.item:
- text.append(Token(simple_ty, cs.item))
- cs.next()
- else:
- cs.next()
- name = cs.scan_escape_token(isatletter)
- if "input" == name and handle_inputs:
- file = cs.scan_input_filename()
- to_add = self.process_if_newer(file)
- text.extend(to_add)
- elif "usepackage" == name:
- while cs.uplegal() and blank_re.match(cs.item):
- cs.next()
- if "[" == cs.item: # private packages have no options
- text.extend([
- Token(esc_str_ty, "usepackage"),
- Token(simple_ty, "[")
- ])
- cs.next()
- continue
- files = cs.scan_package_filenames()
- i = 0
- while i < len(files): # process private packages
- file = files[i]
- p = file.rfind("-private")
- if p < 0 or not len(file) - len("-private") == p:
- i += 1
- continue
- defs_db_file = file + ".db"
- self.add_defs(file)
- del files[i:(i + 1)]
- if files: # non-private packages left
- group_content = ",".join(files)
- to_add_str = "\\usepackage{%s}" % (group_content)
- to_add = tokenize(to_add_str)
- text.extend(to_add)
- else:
- if isletter(name[0], isatletter):
- token = Token(esc_str_ty, name)
- else:
- token = Token(esc_symb_ty, name)
- text.append(token)
- if "makeatletter" == name:
- isatletter = True
- elif "makeatother" == name:
- isatletter = False
- self.reset()
- return self.data
-
- def smart_detokenize(self):
- """
- Output is a string.
- If the list contains an \input{file} then the content of file
- file-clean.tex replaces it in the output.
- """
- self.reset()
- if not self.legal():
- return ""
- out = ""
- previtem = None
- while self.uplegal():
- item = self.item
- """Insert a separating space after an escape sequence if it is a
- string and is followed by a letter."""
- if (None != previtem and esc_str_ty == previtem.type
- and simple_ty == item.type
- and isletter(item.val[0], False)):
- out += " "
- previtem = item
- if not (esc_str_ty == item.type and "input" == item.val):
- out += item.show()
- self.next()
- else:
- self.next()
- group = self.scan_group()
- file = detokenize(group.val)
- clean_file = "%s-clean.tex" % (file)
- print "Reading file %s" % (clean_file)
- fp = open(clean_file, "r")
- content = fp.read()
- fp.close()
- out += content
- return out
-
- # Basic tex scanning
-
- def skip_blank_tokens(self): # we also skip comment tokens.
- item = self.item
- while (self.uplegal()
- and (comment_ty == item.type or
- (simple_ty == item.type and blank_re.match(item.val)))):
- item = self.next()
- return item
-
- def scan_group(self):
- """Returns group.
- """
- if not self.legal():
- raise "No group to scan."
- item = self.item
- if not (simple_ty == item.type and "{" == item.val):
- return Group(token_ty, [self.item])
- count = 1
- group = []
- item = self.next()
- while count and self.uplegal():
- if simple_ty == item.type:
- if "{" == item.val:
- count += 1
- elif "}" == item.val:
- count -= 1
- if count != 0:
- group.append(item)
- item = self.next()
- return Group(group_ty, group)
-
- # Command and environment definitions
-
- def scan_command_name(self):
- """Returns name.
- """
- if not self.legal():
- raise "No command name to scan."
- item = self.item
- name = ""
- if item.type in [esc_symb_ty, esc_str_ty]:
- name = item.val
- else:
- if not "{" == item.val:
- raise "Command definition misses first {."
- self.next()
- item = self.skip_blank_tokens()
- if not item.type in [esc_symb_ty, esc_str_ty]:
- raise "Command definition does not begin with control sequence."
- name = item.val
- self.next()
- item = self.skip_blank_tokens()
- if not "}" == item.val:
- raise ("Definition for commmand %s misses first }., %s" %
- (name, item.val))
- self.next()
- self.skip_blank_tokens()
- return name
-
- def scan_numargs(self, name):
- """
- name is the name of the command or environment definition being
- scanned.
- Starts on a nonblank token.
- Returns numargs
- where numargs is the number of arguments in a command or environment
- definition,
- """
- if not self.legal():
- raise "No numargs to scan."
- item = self.item
- numargs = 0
- if not simple_ty == item.type:
- raise "Illegal command or environment definition: " + name
- if "[" == item.val:
- if not 4 < len(self.data):
- raise "Command or environment definition is illegal: " + name
- item = self.next()
- if not simple_ty == item.type:
- raise "Illegal command or environment definition: " + name
- numargs = item.val
- if not pos_digit_re.match(numargs):
- raise "%s must be argument number after %s" % (numargs, name)
- numargs = int(numargs)
- self.next()
- item = self.skip_blank_tokens()
- if not simple_ty == item.type:
- raise "Illegal command definition: " + name
- if "]" != item.val:
- raise "Illegal command definition: " + name
- self.next()
- self.skip_blank_tokens()
- return numargs
-
- def scan_command_def(self):
- """Scan a command definition.
- Return command_def.
- Assumes that the number of arguments is at most 9.
- """
- if not self.legal():
- raise "No command definition to scan."
- item = self.item
- if not 2 < len(self.data):
- raise "Command definition is illegal."
- # newcommand or renewcommand
- if not item.type in [esc_symb_ty, esc_str_ty]:
- raise "Command definition should begin with control sequence: " + item.val
- if item.val not in ["newcommand", "renewcommand"]:
- raise "Command definition should begin with control sequence."
- self.next()
- self.skip_blank_tokens()
-
- cmd_name = self.scan_command_name()
- numargs = self.scan_numargs(cmd_name)
-
- body_group = self.scan_group()
- if group_ty != body_group.type:
- raise "Command body missing: " + cmd_name
- body_val = strip_comments(body_group.val)
- return Command_def(cmd_name, numargs, body_val)
-
- def scan_env_name(self):
- """Starts on a {.
- Returns name.
- """
- if not self.legal():
- raise "No environment name to scan."
- item = self.item
- if not "{" == item.val:
- raise "Env. definition begins with %s, not with {" % (item.val)
- self.next()
- item = self.skip_blank_tokens()
- name = ""
- if not simple_ty == item.type:
- raise (
- "1. Env. def. begins with cont. seq. %s, not with env.name." %
- (item.val))
- while self.uplegal() and not blank_or_rbrace_re.match(item.val):
- name += item.val
- item = self.next()
- if not simple_ty == item.type:
- raise (
- "2. Env. def. begins with cont. seq. %s, not with env.name."
- % (item.val))
- item = self.skip_blank_tokens()
- if not "}" == item.val:
- raise "Command definition does not begin with control sequence."
- self.next()
- self.skip_blank_tokens()
- return name
-
- def scan_env_def(self):
- """Scan an environment definition.
- Return env_def
- Assumes that the number of arguments is at most 9.
- """
- if not self.legal():
- raise "No environment definition to scan."
- item = self.item
- if not 7 < len(self.data):
- raise "Environment definition is illegal."
- pos = 0
-
- if not item.type in [esc_symb_ty, esc_str_ty]:
- raise ("Env. definition does not begin with control sequence:" +
- item.val)
- if item.val not in ["newenvironment", "renewenvironment"]:
- raise "Env. definition does not begin with control sequence."
- self.next()
- self.skip_blank_tokens()
-
- env_name = self.scan_env_name()
- numargs = self.scan_numargs(env_name)
- self.skip_blank_tokens()
-
- begin_group = self.scan_group()
- if group_ty != begin_group.type:
- raise "Begin body missing: " + env_name
- begin_val = strip_comments(begin_group.val)
-
- self.skip_blank_tokens()
-
- end_group = self.scan_group()
- if group_ty != end_group.type:
- raise "End body missing:" + env_name
- end_val = strip_comments(end_group.val)
-
- return Env_def(env_name, numargs, begin_val, end_val)
-
- def scan_defs(self):
- if not self.legal():
- raise "No definitions to scan."
- self.reset()
- command_defs, env_defs = self.defs
- while self.uplegal():
- if (esc_str_ty == self.item.type
- and self.item.val in ["newcommand", "renewcommand"]):
- command_def = self.scan_command_def()
- command_defs[command_def.name] = command_def
- elif (esc_str_ty == self.item.type
- and self.item.val in ["newenvironment", "renewenvironment"]):
- env_def = self.scan_env_def()
- env_defs[env_def.name] = env_def
- else:
- self.next()
-
- # Instances
-
- def scan_args(self, command_or_env_def):
- """Scan the arguments of a command or environment.
- Return [args].
- """
- if not self.legal():
- raise "No arguments to scan."
- numargs = command_or_env_def.numargs
- name = command_or_env_def.name
-
- args = []
- for i in range(numargs):
- arg = []
- if not (simple_ty == self.item.type and "{" == self.item.val):
- arg = [self.item]
- self.next()
- else:
- group = self.scan_group()
- arg = group.val
- args.append(arg)
- return args
-
- def scan_command(self, command_def):
- """Scan the arguments of a command.
- Return command_instance
- """
- if not self.legal():
- raise "No command to scan."
- if not self.item.type in [esc_symb_ty, esc_str_ty]:
- raise "Command does not begin with control sequence."
- name = self.item.val
- self.next()
- if 0 < command_def.numargs:
- self.skip_blank_tokens()
- args = self.scan_args(command_def)
- else:
- args = []
- return Command_instance(name, args)
-
- def test_env_boundary(self, item):
- """Check whether an environment begin or end follows.
- Return 1 if \begin, -1 if \end, 0 otherwise.
- """
- d = 0
- if esc_str_ty == item.type:
- if "begin" == item.val:
- d = 1
- elif "end" == item.val:
- d = -1
- return d
-
- def scan_env_begin(self):
- """Scan an environment name.
- Return env_name.
- """
- if not self.legal():
- raise "No environment begin to scan."
- item = self.item
- if not (esc_str_ty == item.type and "begin" == item.val):
- raise "Environment does not begin with begin."
- self.next()
- name_group = self.scan_group()
- name = detokenize(name_group.val)
- return name
-
- def scan_env_end(self):
- """Scan an environment end.
- Return env_name.
- """
- if not self.legal():
- raise "No environment end to scan."
- item = self.item
- if not (esc_str_ty == item.type and "end" == item.val):
- raise "Environment does not end with end."
- self.next()
- name_group = self.scan_group()
- name = detokenize(name_group.val)
- return name
-
- def scan_env_rest(self, env_def):
- """Scanning starts after \begin{envname}.
- Returns env_instance.
- """
- if not self.legal():
- raise "No environment rest to scan."
- count = 1 # We are already within a boundary.
- args = self.scan_args(env_def)
- body = []
- while count and self.uplegal():
- old_pos = self.pos
- d = self.test_env_boundary(self.item)
- count += d
- if 1 == d:
- self.scan_env_begin()
- elif -1 == d:
- self.scan_env_end()
- else:
- self.next()
- if 0 < count:
- body.extend(self.data[old_pos:self.pos])
- return Env_instance(env_def.name, args, body)
-
- # Definitions
-
- def restore_defs(self):
- if os.path.isfile(self.defs_db_file):
- print "Using defs db %s" % (self.defs_db_file)
- db_h = shelve.open(self.defs_db)
- self.defs = db_h["defs"]
- db_h.close()
-
- def save_defs(self):
- db_h = shelve.open(self.defs_db)
- if db_h.has_key("defs"):
- del db_h["defs"]
- db_h["defs"] = self.defs
- db_h.close()
-
- def add_defs(self, defs_file):
- defs_file_compl = defs_file + ".sty"
- if not os.path.isfile(defs_file_compl):
- raise "%s does not exist" % (defs_file_compl)
-
- defs_db_file = self.defs_db_file
- if newer(defs_db_file, defs_file_compl):
- print "Using defs db %s for %s" % (defs_db_file, defs_file)
- else:
- defs_fp = open(defs_file_compl, "r")
- defs_str = defs_fp.read()
- defs_fp.close()
- ds = Tex_stream()
- ds.defs = self.defs
- defs_text = ds.smart_tokenize(defs_str)
- # changing ds.defs will change self.defs
- if self.debug:
- defs_seen_file = "%s-seen.sty" % (defs_file)
- defs_seen_fp = open(defs_seen_file, "w")
- out = detokenize(defs_text)
- defs_seen_fp.write(out)
- defs_seen_fp.close()
- ds.scan_defs()
- if self.debug:
- out = ""
- command_defs, env_defs = self.defs
- for def_name in command_defs.keys():
- out += command_defs[def_name].show() + "\n"
- for def_name in env_defs.keys():
- out += env_defs[def_name].show() + "\n"
- print "Definitions after reading %s:" % (defs_file)
- print out
-
- # Applying definitions, recursively
- # (maybe not quite in Knuth order, so avoid tricks!)
-
- def subst_args(self, body, args):
- out = []
- pos = 0
- while pos < len(body):
- item = body[pos]
- if not (simple_ty == item.type and "#" == item.val):
- out.append(item)
- pos += 1
- continue
- pos += 1
- token = body[pos]
- argnum = token.val
- if not pos_digit_re.match(argnum):
- raise "# is not followed by number."
- argnum = int(argnum)
- if argnum > len(args):
- raise "Too large argument number."
- arg = args[argnum - 1]
- out += arg
- pos += 1
- return out
-
- def apply_command_recur(self, command_instance):
- command_defs, env_defs = self.defs
- name = command_instance.name
- command_def = command_defs[name]
-
- args = command_instance.args
- body = command_def.body
- result = self.subst_args(body, args)
- try:
- result = self.apply_all_recur(result)
- except Empty_text_error, e:
- raise "apply_all_recur fails on command instance %s: %s, %s" % \
- (command_instance.show(), detokenize(e.data), e.message)
- return result
-
- def apply_env_recur(self, env_instance):
- command_defs, env_defs = self.defs
- name = env_instance.name
- env_def = env_defs[name]
-
- begin, end = env_def.begin, env_def.end
- body, args = env_instance.body, env_instance.args
- out = self.subst_args(begin, args) + body + self.subst_args(end, args)
- return self.apply_all_recur(out)
-
- def apply_all_recur(self, data, report=False):
- ts = Tex_stream(data)
- ts.defs = self.defs
- command_defs, env_defs = self.defs
- out = []
- progress_step = 10000
- progress = progress_step
- if not ts.legal():
- raise Empty_text_error(data, "No text to process.")
- while ts.uplegal():
- if self.pos > progress:
- if report:
- print self.pos
- progress += progress_step
- if not ts.item.type in [esc_symb_ty, esc_str_ty]:
- out.append(ts.item)
- ts.next()
- continue
- if 1 == ts.test_env_boundary(ts.item):
- old_pos = ts.pos
- env_name = ts.scan_env_begin()
- if not env_defs.has_key(env_name):
- out.extend(ts.data[old_pos:ts.pos])
- continue
- else:
- env_def = env_defs[env_name]
- env_instance = ts.scan_env_rest(env_def)
- result = ts.apply_env_recur(env_instance)
- out.extend(result)
- elif not command_defs.has_key(ts.item.val):
- out.append(ts.item)
- ts.next()
- continue
- else:
- command_def = command_defs[ts.item.val]
- command_inst = ts.scan_command(command_def)
- result = ts.apply_command_recur(command_inst)
- out.extend(result)
- return out
-
- # Processing files
-
- def process_file(self, file):
- """Returns the new defs.
- """
- file = cut_extension(file, ".tex")
- source_file = "%s.tex" % (file)
- print "File %s [" % (source_file)
- source_fp = open(source_file, "r")
- text_str = source_fp.read()
- source_fp.close()
-
- self.smart_tokenize(text_str, handle_inputs=True)
- if not self.data:
- raise "Empty tokenization result."
- self.reset()
-
- if self.debug:
- source_seen_fname = "%s-seen.tex" % (file)
- source_seen_fp = open(source_seen_fname, "w")
- source_seen_fp.write(detokenize(self.data))
- source_seen_fp.close()
-
- self.data = self.apply_all_recur(self.data, report=True)
-
- result_fname = "%s-clean.tex" % (file)
- print "Writing %s [" % (result_fname)
- result_fp = open(result_fname, "w")
- result_fp.write(self.smart_detokenize())
- result_fp.close()
- print "] file %s" % (result_fname)
- print "] file %s" % (source_file)
-
- def process_if_newer(self, file):
- """
- \input{file} is be added to the token list.
- If the input file is newer it is processed.
- Returns tokenized \input{file}.
- """
- file = cut_extension(file, ".tex")
- tex_file = file + ".tex"
- clean_tex_file = file + "-clean.tex"
- if newer(clean_tex_file, tex_file):
- print "Using %s." % (clean_tex_file)
- else:
- ts = Tex_stream()
- ts.data = []
- ts.defs = self.defs
- ts.process_file(file)
- to_add = "\\input{%s}" % (file)
- return tokenize(to_add)
-
-
-# Main
-
-long_optlist = ["debug", "defs="]
-options, restargs = getopt_map("x", long_optlist)
-
-debug = False
-if options.has_key("--debug"):
- debug = True
-
-root = restargs[0]
-root = cut_extension(root, ".tex")
-if options.has_key("--defs"):
- defs_root = options["--defs"]
-else:
- defs_root = "%s" % (root)
-defs_db = defs_root
-defs_db_file = defs_root + ".db"
-
-ts = Tex_stream()
-ts.defs_db = defs_db
-ts.defs_db_file = defs_db_file
-ts.debug = debug
-
-ts.restore_defs()
-for root in restargs:
- ts.process_file(root)
-
-print "(Re)creating defs db %s" % (defs_db)
-ts.save_defs()
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/convergence_pressure.png b/docs/assets/2018_PRACE_MaX/latex/img/convergence_pressure.png
deleted file mode 100644
index a4323e7e..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/convergence_pressure.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-full.pdf b/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-full.pdf
deleted file mode 100644
index beeacec3..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-full.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-inputonly.pdf b/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-inputonly.pdf
deleted file mode 100644
index 33088ce6..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph-inputonly.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph.svg b/docs/assets/2018_PRACE_MaX/latex/img/graph/graph.svg
deleted file mode 100644
index 89b754a4..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/img/graph/graph.svg
+++ /dev/null
@@ -1,842 +0,0 @@
-
-
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_smearing_perovskites.pdf b/docs/assets/2018_PRACE_MaX/latex/img/magnetization_smearing_perovskites.pdf
deleted file mode 100644
index 73196a87..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_smearing_perovskites.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
deleted file mode 100644
index 6e8fd379..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
+++ /dev/null
@@ -1,6953 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:48:08 2014
-%%Orientation: portrait
-%%BoundingBox: -528 -63 1140 855
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /period /slash /zero /one /two /three /four /five /A /B /C /F /G /H /K /L /M /N /O /P /R /S /T /Y /Z /bracketleft /bracketright /underscore /a /b /c /d /e /f /g /h /i /l /m /n /o /p /r /s /t /u /v /z ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 49 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/slash{337 0 0 -92 337 729 _sc
-254 729 _m
-337 729 _l
-83 -92 _l
-0 -92 _l
-254 729 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/five{{636 0 77 -13 549 729 _sc
-108 729 _m
-495 729 _l
-495 646 _l
-198 646 _l
-198 467 _l
-212 472 227 476 241 478 _c
-255 480 270 482 284 482 _c
-365 482 429 459 477 415 _c
-525 370 549 310 549 234 _c
-549 155 524 94 475 51 _c
-426 8 357 -13 269 -13 _c
-238 -13 207 -10 175 -6 _c
-143 -1 111 6 77 17 _c
-77 116 _l
-106 100 136 88 168 80 _c
-199 72 232 69 267 69 _c
-323 69 368 83 401 113 _c
-433 143 450 183 450 234 _c
-450 284 433 324 401 354 _c
-368 384 323 399 267 399 _c
-241 399 214 396 188 390 _c
-162 384 135 375 108 363 _c
-108 729 _l
-_cl}_e}_d
-/A{684 0 8 0 676 729 _sc
-342 632 _m
-208 269 _l
-476 269 _l
-342 632 _l
-286 729 _m
-398 729 _l
-676 0 _l
-573 0 _l
-507 187 _l
-178 187 _l
-112 0 _l
-8 0 _l
-286 729 _l
-_cl}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/F{575 0 98 0 517 729 _sc
-98 729 _m
-517 729 _l
-517 646 _l
-197 646 _l
-197 431 _l
-486 431 _l
-486 348 _l
-197 348 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/G{{775 0 56 -13 693 742 _sc
-595 104 _m
-595 300 _l
-434 300 _l
-434 381 _l
-693 381 _l
-693 68 _l
-655 40 613 20 567 7 _c
-521 -6 472 -13 420 -13 _c
-306 -13 216 20 152 86 _c
-88 152 56 245 56 364 _c
-56 482 88 575 152 642 _c
-216 708 306 742 420 742 _c
-467 742 512 736 555 724 _c
-598 712 638 695 674 673 _c
-674 568 _l
-637 598 598 621 557 637 _c
-516 653 473 661 428 661 _c
-338 661 271 636 227 586 _c
-182 536 160 462 160 364 _c
-160 265 182 191 227 141 _c
-271 91 338 67 428 67 _c
-462 67 493 70 521 76 _c
-549 82 573 91 595 104 _c
-_cl}_e}_d
-/H{752 0 98 0 654 729 _sc
-98 729 _m
-197 729 _l
-197 430 _l
-555 430 _l
-555 729 _l
-654 729 _l
-654 0 _l
-555 0 _l
-555 347 _l
-197 347 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/K{656 0 98 0 677 729 _sc
-98 729 _m
-197 729 _l
-197 421 _l
-524 729 _l
-651 729 _l
-289 389 _l
-677 0 _l
-547 0 _l
-197 351 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/L{557 0 98 0 552 729 _sc
-98 729 _m
-197 729 _l
-197 83 _l
-552 83 _l
-552 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/M{863 0 98 0 765 729 _sc
-98 729 _m
-245 729 _l
-431 233 _l
-618 729 _l
-765 729 _l
-765 0 _l
-669 0 _l
-669 640 _l
-481 140 _l
-382 140 _l
-194 640 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/P{603 0 98 0 569 729 _sc
-197 648 _m
-197 374 _l
-321 374 _l
-367 374 402 385 427 409 _c
-452 433 465 467 465 511 _c
-465 555 452 588 427 612 _c
-402 636 367 648 321 648 _c
-197 648 _l
-98 729 _m
-321 729 _l
-402 729 464 710 506 673 _c
-548 636 569 582 569 511 _c
-569 439 548 384 506 348 _c
-464 311 402 293 321 293 _c
-197 293 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/R{{695 0 98 0 666 729 _sc
-444 342 _m
-465 334 486 319 506 296 _c
-526 272 546 240 566 199 _c
-666 0 _l
-560 0 _l
-467 187 _l
-443 235 419 268 397 284 _c
-374 300 343 308 304 308 _c
-197 308 _l
-197 0 _l
-98 0 _l
-98 729 _l
-321 729 _l
-404 729 466 711 507 677 _c
-548 642 569 589 569 519 _c
-569 473 558 434 537 404 _c
-515 374 484 353 444 342 _c
-197 648 _m
-197 389 _l
-321 389 _l
-368 389 404 400 428 422 _c
-452 444 465 476 465 519 _c
-465 561 452 593 428 615 _c
-404 637 368 648 321 648 _c
-197 648 _l
-_cl}_e}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/Y{611 0 -1 0 613 729 _sc
--1 729 _m
-104 729 _l
-306 429 _l
-507 729 _l
-613 729 _l
-355 347 _l
-355 0 _l
-256 0 _l
-256 347 _l
--1 729 _l
-_cl}_d
-/Z{685 0 45 0 640 729 _sc
-56 729 _m
-629 729 _l
-629 654 _l
-168 83 _l
-640 83 _l
-640 0 _l
-45 0 _l
-45 75 _l
-506 646 _l
-56 646 _l
-56 729 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/c{{550 0 55 -13 488 560 _sc
-488 526 _m
-488 442 _l
-462 456 437 466 411 473 _c
-385 480 360 484 334 484 _c
-276 484 230 465 198 428 _c
-166 391 150 339 150 273 _c
-150 206 166 154 198 117 _c
-230 80 276 62 334 62 _c
-360 62 385 65 411 72 _c
-437 79 462 90 488 104 _c
-488 21 _l
-462 9 436 0 410 -5 _c
-383 -10 354 -13 324 -13 _c
-242 -13 176 12 128 64 _c
-79 115 55 185 55 273 _c
-55 362 79 432 128 483 _c
-177 534 244 560 330 560 _c
-358 560 385 557 411 551 _c
-437 545 463 537 488 526 _c
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/f{352 0 23 0 371 760 _sc
-371 760 _m
-371 685 _l
-285 685 _l
-253 685 230 678 218 665 _c
-205 652 199 629 199 595 _c
-199 547 _l
-347 547 _l
-347 477 _l
-199 477 _l
-199 0 _l
-109 0 _l
-109 477 _l
-23 477 _l
-23 547 _l
-109 547 _l
-109 585 _l
-109 645 123 690 151 718 _c
-179 746 224 760 286 760 _c
-371 760 _l
-_cl}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/h{634 0 91 0 549 760 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/t{392 0 27 0 368 702 _sc
-183 702 _m
-183 547 _l
-368 547 _l
-368 477 _l
-183 477 _l
-183 180 _l
-183 135 189 106 201 94 _c
-213 81 238 75 276 75 _c
-368 75 _l
-368 0 _l
-276 0 _l
-206 0 158 13 132 39 _c
-106 65 93 112 93 180 _c
-93 477 _l
-27 477 _l
-27 547 _l
-93 547 _l
-93 702 _l
-183 702 _l
-_cl}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/z{525 0 43 0 482 547 _sc
-55 547 _m
-482 547 _l
-482 465 _l
-144 72 _l
-482 72 _l
-482 0 _l
-43 0 _l
-43 82 _l
-381 475 _l
-55 475 _l
-55 547 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--528.75 -63.9 translate
-1669.5 919.8 0 0 clipbox
-gsave
-0 0 m
-1669.5 0 l
-1669.5 919.8 l
-0 919.8 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-208.688 91.98 m
-1502.55 91.98 l
-1502.55 827.82 l
-208.688 827.82 l
-cl
-1.000 setgray
-fill
-grestore
-1.000 setlinewidth
-1 setlinejoin
-2 setlinecap
-[] 0 setdash
-0.000 0.000 1.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-212.092 91.98 m
-216.632 91.98 l
-216.632 91.98 l
-212.092 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-234.792 91.98 m
-239.332 91.98 l
-239.332 91.98 l
-234.792 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-257.491 91.98 m
-262.031 91.98 l
-262.031 91.98 l
-257.491 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-280.19 91.98 m
-284.73 91.98 l
-284.73 91.98 l
-280.19 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-302.89 91.98 m
-307.43 91.98 l
-307.43 91.98 l
-302.89 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-325.589 91.98 m
-330.129 91.98 l
-330.129 91.98 l
-325.589 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-348.288 91.98 m
-352.828 91.98 l
-352.828 91.98 l
-348.288 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-370.988 91.98 m
-375.528 91.98 l
-375.528 91.98 l
-370.988 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-393.687 91.98 m
-398.227 91.98 l
-398.227 91.98 l
-393.687 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-416.386 91.98 m
-420.926 91.98 l
-420.926 91.98 l
-416.386 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-439.086 91.98 m
-443.626 91.98 l
-443.626 91.98 l
-439.086 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-461.785 91.98 m
-466.325 91.98 l
-466.325 91.98 l
-461.785 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-484.485 91.98 m
-489.024 91.98 l
-489.024 91.98 l
-484.485 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-507.184 91.98 m
-511.724 91.98 l
-511.724 91.98 l
-507.184 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-529.883 91.98 m
-534.423 91.98 l
-534.423 91.98 l
-529.883 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-552.583 91.98 m
-557.122 91.98 l
-557.122 91.98 l
-552.583 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-575.282 91.98 m
-579.822 91.98 l
-579.822 91.98 l
-575.282 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-597.981 91.98 m
-602.521 91.98 l
-602.521 91.98 l
-597.981 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-620.681 91.98 m
-625.22 91.98 l
-625.22 91.98 l
-620.681 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-643.38 91.98 m
-647.92 91.98 l
-647.92 91.98 l
-643.38 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-666.079 91.98 m
-670.619 91.98 l
-670.619 91.98 l
-666.079 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-688.779 91.98 m
-693.318 91.98 l
-693.318 91.98 l
-688.779 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-711.478 91.98 m
-716.018 91.98 l
-716.018 91.98 l
-711.478 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-734.177 91.98 m
-738.717 91.98 l
-738.717 91.98 l
-734.177 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-756.877 91.98 m
-761.416 91.98 l
-761.416 91.98 l
-756.877 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-779.576 91.98 m
-784.116 91.98 l
-784.116 261.223 l
-779.576 261.223 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-802.275 91.98 m
-806.815 91.98 l
-806.815 559.238 l
-802.275 559.238 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-824.975 91.98 m
-829.515 91.98 l
-829.515 625.464 l
-824.975 625.464 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-847.674 91.98 m
-852.214 91.98 l
-852.214 91.98 l
-847.674 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-870.373 91.98 m
-874.913 91.98 l
-874.913 91.98 l
-870.373 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-893.073 91.98 m
-897.613 91.98 l
-897.613 91.98 l
-893.073 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-915.772 91.98 m
-920.312 91.98 l
-920.312 91.98 l
-915.772 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-938.471 91.98 m
-943.011 91.98 l
-943.011 91.98 l
-938.471 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-961.171 91.98 m
-965.711 91.98 l
-965.711 91.98 l
-961.171 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-983.87 91.98 m
-988.41 91.98 l
-988.41 91.98 l
-983.87 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1006.57 91.98 m
-1011.11 91.98 l
-1011.11 91.98 l
-1006.57 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1029.27 91.98 m
-1033.81 91.98 l
-1033.81 91.98 l
-1029.27 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1051.97 91.98 m
-1056.51 91.98 l
-1056.51 91.98 l
-1051.97 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1074.67 91.98 m
-1079.21 91.98 l
-1079.21 91.98 l
-1074.67 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1097.37 91.98 m
-1101.91 91.98 l
-1101.91 91.98 l
-1097.37 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1120.07 91.98 m
-1124.61 91.98 l
-1124.61 91.98 l
-1120.07 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1142.77 91.98 m
-1147.31 91.98 l
-1147.31 91.98 l
-1142.77 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1165.46 91.98 m
-1170 91.98 l
-1170 91.98 l
-1165.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1188.16 91.98 m
-1192.7 91.98 l
-1192.7 91.98 l
-1188.16 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1210.86 91.98 m
-1215.4 91.98 l
-1215.4 91.98 l
-1210.86 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1233.56 91.98 m
-1238.1 91.98 l
-1238.1 91.98 l
-1233.56 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1256.26 91.98 m
-1260.8 91.98 l
-1260.8 478.296 l
-1256.26 478.296 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1278.96 91.98 m
-1283.5 91.98 l
-1283.5 643.86 l
-1278.96 643.86 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1301.66 91.98 m
-1306.2 91.98 l
-1306.2 91.98 l
-1301.66 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1324.36 91.98 m
-1328.9 91.98 l
-1328.9 619.945 l
-1324.36 619.945 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1347.06 91.98 m
-1351.6 91.98 l
-1351.6 209.714 l
-1347.06 209.714 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1369.76 91.98 m
-1374.3 91.98 l
-1374.3 91.98 l
-1369.76 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1392.46 91.98 m
-1397 91.98 l
-1397 91.98 l
-1392.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1415.16 91.98 m
-1419.7 91.98 l
-1419.7 91.98 l
-1415.16 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1437.86 91.98 m
-1442.4 91.98 l
-1442.4 91.98 l
-1437.86 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1460.56 91.98 m
-1465.1 91.98 l
-1465.1 91.98 l
-1460.56 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1483.26 91.98 m
-1487.8 91.98 l
-1487.8 91.98 l
-1483.26 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-217.767 91.98 m
-222.307 91.98 l
-222.307 91.98 l
-217.767 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-240.467 91.98 m
-245.006 91.98 l
-245.006 91.98 l
-240.467 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-263.166 91.98 m
-267.706 91.98 l
-267.706 91.98 l
-263.166 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-285.865 91.98 m
-290.405 91.98 l
-290.405 91.98 l
-285.865 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-308.565 91.98 m
-313.104 91.98 l
-313.104 91.98 l
-308.565 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-331.264 91.98 m
-335.804 91.98 l
-335.804 91.98 l
-331.264 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-353.963 91.98 m
-358.503 91.98 l
-358.503 91.98 l
-353.963 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-376.663 91.98 m
-381.202 91.98 l
-381.202 91.98 l
-376.663 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-399.362 91.98 m
-403.902 91.98 l
-403.902 91.98 l
-399.362 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-422.061 91.98 m
-426.601 91.98 l
-426.601 91.98 l
-422.061 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-444.761 91.98 m
-449.301 91.98 l
-449.301 91.98 l
-444.761 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-467.46 91.98 m
-472 91.98 l
-472 91.98 l
-467.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-490.159 91.98 m
-494.699 91.98 l
-494.699 91.98 l
-490.159 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-512.859 91.98 m
-517.399 91.98 l
-517.399 91.98 l
-512.859 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-535.558 91.98 m
-540.098 91.98 l
-540.098 91.98 l
-535.558 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-558.257 91.98 m
-562.797 91.98 l
-562.797 91.98 l
-558.257 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-580.957 91.98 m
-585.497 91.98 l
-585.497 91.98 l
-580.957 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-603.656 91.98 m
-608.196 91.98 l
-608.196 91.98 l
-603.656 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-626.355 91.98 m
-630.895 91.98 l
-630.895 91.98 l
-626.355 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-649.055 91.98 m
-653.595 91.98 l
-653.595 91.98 l
-649.055 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-671.754 91.98 m
-676.294 91.98 l
-676.294 91.98 l
-671.754 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-694.453 91.98 m
-698.993 91.98 l
-698.993 91.98 l
-694.453 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-717.153 91.98 m
-721.693 91.98 l
-721.693 91.98 l
-717.153 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-739.852 91.98 m
-744.392 91.98 l
-744.392 91.98 l
-739.852 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-762.551 91.98 m
-767.091 91.98 l
-767.091 91.98 l
-762.551 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-785.251 91.98 m
-789.791 91.98 l
-789.791 318.251 l
-785.251 318.251 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-807.95 91.98 m
-812.49 91.98 l
-812.49 688.01 l
-807.95 688.01 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-830.649 91.98 m
-835.189 91.98 l
-835.189 787.349 l
-830.649 787.349 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-853.349 91.98 m
-857.889 91.98 l
-857.889 91.98 l
-853.349 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-876.048 91.98 m
-880.588 91.98 l
-880.588 91.98 l
-876.048 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-898.747 91.98 m
-903.287 91.98 l
-903.287 91.98 l
-898.747 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-921.447 91.98 m
-925.987 91.98 l
-925.987 91.98 l
-921.447 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-944.146 91.98 m
-948.686 91.98 l
-948.686 91.98 l
-944.146 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-966.846 91.98 m
-971.385 91.98 l
-971.385 91.98 l
-966.846 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-989.545 91.98 m
-994.085 91.98 l
-994.085 91.98 l
-989.545 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1012.24 91.98 m
-1016.78 91.98 l
-1016.78 91.98 l
-1012.24 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1034.94 91.98 m
-1039.48 91.98 l
-1039.48 91.98 l
-1034.94 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1057.64 91.98 m
-1062.18 91.98 l
-1062.18 91.98 l
-1057.64 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1080.34 91.98 m
-1084.88 91.98 l
-1084.88 91.98 l
-1080.34 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1103.04 91.98 m
-1107.58 91.98 l
-1107.58 91.98 l
-1103.04 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1125.74 91.98 m
-1130.28 91.98 l
-1130.28 91.98 l
-1125.74 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1148.44 91.98 m
-1152.98 91.98 l
-1152.98 91.98 l
-1148.44 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1171.14 91.98 m
-1175.68 91.98 l
-1175.68 91.98 l
-1171.14 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1193.84 91.98 m
-1198.38 91.98 l
-1198.38 91.98 l
-1193.84 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1216.54 91.98 m
-1221.08 91.98 l
-1221.08 91.98 l
-1216.54 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1239.24 91.98 m
-1243.78 91.98 l
-1243.78 91.98 l
-1239.24 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1261.94 91.98 m
-1266.48 91.98 l
-1266.48 579.474 l
-1261.94 579.474 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1284.64 91.98 m
-1289.18 91.98 l
-1289.18 741.359 l
-1284.64 741.359 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1307.34 91.98 m
-1311.88 91.98 l
-1311.88 91.98 l
-1307.34 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1330.03 91.98 m
-1334.57 91.98 l
-1334.57 647.539 l
-1330.03 647.539 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1352.73 91.98 m
-1357.27 91.98 l
-1357.27 237.308 l
-1352.73 237.308 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1375.43 91.98 m
-1379.97 91.98 l
-1379.97 91.98 l
-1375.43 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1398.13 91.98 m
-1402.67 91.98 l
-1402.67 91.98 l
-1398.13 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1420.83 91.98 m
-1425.37 91.98 l
-1425.37 91.98 l
-1420.83 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1443.53 91.98 m
-1448.07 91.98 l
-1448.07 91.98 l
-1443.53 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1466.23 91.98 m
-1470.77 91.98 l
-1470.77 91.98 l
-1466.23 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1488.93 91.98 m
-1493.47 91.98 l
-1493.47 91.98 l
-1488.93 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-223.442 91.98 m
-227.982 91.98 l
-227.982 91.98 l
-223.442 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-246.141 91.98 m
-250.681 91.98 l
-250.681 91.98 l
-246.141 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-268.841 91.98 m
-273.381 91.98 l
-273.381 91.98 l
-268.841 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-291.54 91.98 m
-296.08 91.98 l
-296.08 91.98 l
-291.54 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-314.239 91.98 m
-318.779 91.98 l
-318.779 91.98 l
-314.239 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-336.939 91.98 m
-341.479 91.98 l
-341.479 91.98 l
-336.939 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-359.638 91.98 m
-364.178 91.98 l
-364.178 91.98 l
-359.638 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-382.337 91.98 m
-386.877 91.98 l
-386.877 91.98 l
-382.337 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-405.037 91.98 m
-409.577 91.98 l
-409.577 91.98 l
-405.037 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-427.736 91.98 m
-432.276 91.98 l
-432.276 91.98 l
-427.736 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-450.435 91.98 m
-454.975 91.98 l
-454.975 91.98 l
-450.435 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-473.135 91.98 m
-477.675 91.98 l
-477.675 91.98 l
-473.135 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-495.834 91.98 m
-500.374 91.98 l
-500.374 91.98 l
-495.834 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-518.534 91.98 m
-523.073 91.98 l
-523.073 91.98 l
-518.534 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-541.233 91.98 m
-545.773 91.98 l
-545.773 91.98 l
-541.233 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-563.932 91.98 m
-568.472 91.98 l
-568.472 91.98 l
-563.932 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-586.632 91.98 m
-591.171 91.98 l
-591.171 91.98 l
-586.632 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-609.331 91.98 m
-613.871 91.98 l
-613.871 91.98 l
-609.331 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-632.03 91.98 m
-636.57 91.98 l
-636.57 91.98 l
-632.03 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-654.73 91.98 m
-659.269 91.98 l
-659.269 91.98 l
-654.73 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-677.429 91.98 m
-681.969 91.98 l
-681.969 91.98 l
-677.429 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-700.128 91.98 m
-704.668 91.98 l
-704.668 91.98 l
-700.128 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-722.828 91.98 m
-727.367 91.98 l
-727.367 91.98 l
-722.828 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-745.527 91.98 m
-750.067 91.98 l
-750.067 91.98 l
-745.527 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-768.226 91.98 m
-772.766 91.98 l
-772.766 91.98 l
-768.226 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-790.926 91.98 m
-795.465 91.98 l
-795.465 286.978 l
-790.926 286.978 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-813.625 91.98 m
-818.165 91.98 l
-818.165 653.058 l
-813.625 653.058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-836.324 91.98 m
-840.864 91.98 l
-840.864 719.284 l
-836.324 719.284 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-859.024 91.98 m
-863.564 91.98 l
-863.564 91.98 l
-859.024 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-881.723 91.98 m
-886.263 91.98 l
-886.263 91.98 l
-881.723 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-904.422 91.98 m
-908.962 91.98 l
-908.962 91.98 l
-904.422 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-927.122 91.98 m
-931.662 91.98 l
-931.662 91.98 l
-927.122 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-949.821 91.98 m
-954.361 91.98 l
-954.361 91.98 l
-949.821 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-972.52 91.98 m
-977.06 91.98 l
-977.06 91.98 l
-972.52 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-995.22 91.98 m
-999.76 91.98 l
-999.76 91.98 l
-995.22 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1017.92 91.98 m
-1022.46 91.98 l
-1022.46 91.98 l
-1017.92 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1040.62 91.98 m
-1045.16 91.98 l
-1045.16 91.98 l
-1040.62 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1063.32 91.98 m
-1067.86 91.98 l
-1067.86 91.98 l
-1063.32 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1086.02 91.98 m
-1090.56 91.98 l
-1090.56 91.98 l
-1086.02 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1108.72 91.98 m
-1113.26 91.98 l
-1113.26 91.98 l
-1108.72 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1131.42 91.98 m
-1135.96 91.98 l
-1135.96 91.98 l
-1131.42 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1154.12 91.98 m
-1158.65 91.98 l
-1158.65 91.98 l
-1154.12 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1176.81 91.98 m
-1181.35 91.98 l
-1181.35 91.98 l
-1176.81 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1199.51 91.98 m
-1204.05 91.98 l
-1204.05 91.98 l
-1199.51 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1222.21 91.98 m
-1226.75 91.98 l
-1226.75 91.98 l
-1222.21 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1244.91 91.98 m
-1249.45 91.98 l
-1249.45 91.98 l
-1244.91 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1267.61 91.98 m
-1272.15 91.98 l
-1272.15 527.965 l
-1267.61 527.965 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1290.31 91.98 m
-1294.85 91.98 l
-1294.85 695.369 l
-1290.31 695.369 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1313.01 91.98 m
-1317.55 91.98 l
-1317.55 91.98 l
-1313.01 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1335.71 91.98 m
-1340.25 91.98 l
-1340.25 642.02 l
-1335.71 642.02 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1358.41 91.98 m
-1362.95 91.98 l
-1362.95 229.95 l
-1358.41 229.95 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1381.11 91.98 m
-1385.65 91.98 l
-1385.65 91.98 l
-1381.11 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1403.81 91.98 m
-1408.35 91.98 l
-1408.35 91.98 l
-1403.81 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1426.51 91.98 m
-1431.05 91.98 l
-1431.05 91.98 l
-1426.51 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1449.21 91.98 m
-1453.75 91.98 l
-1453.75 91.98 l
-1449.21 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1471.91 91.98 m
-1476.45 91.98 l
-1476.45 91.98 l
-1471.91 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1494.61 91.98 m
-1499.15 91.98 l
-1499.15 91.98 l
-1494.61 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.500 setlinewidth
-0 setlinecap
-[1 3] 0 setdash
-0.000 setgray
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 91.98 m
-208.688 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 827.82 o
-grestore
-/DejaVuSans findfont
-14.000 scalefont
-setfont
-gsave
-207.916478 29.883909 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /N glyphshow
-28.936523 2.906250 m /b glyphshow
-37.823242 2.906250 m /O glyphshow
-48.842773 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-231.387 91.98 m
-231.387 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-231.387 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-231.387 827.82 o
-grestore
-gsave
-231.091577 34.400928 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /T glyphshow
-24.640625 2.906250 m /a glyphshow
-33.219727 2.906250 m /O glyphshow
-44.239258 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-254.086 91.98 m
-254.086 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-254.086 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-254.086 827.82 o
-grestore
-gsave
-252.713318 35.835751 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /H glyphshow
-28.710938 0.203125 m /f glyphshow
-33.639648 0.203125 m /O glyphshow
-44.659180 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-276.786 91.98 m
-276.786 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-276.786 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-276.786 827.82 o
-grestore
-gsave
-275.760448 38.431677 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /i glyphshow
-30.959961 0.203125 m /O glyphshow
-41.979492 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-299.485 91.98 m
-299.485 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.485 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.485 827.82 o
-grestore
-gsave
-297.694024 33.681845 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /n glyphshow
-35.943359 0.203125 m /O glyphshow
-46.962891 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-322.184 91.98 m
-322.184 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-322.184 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-322.184 827.82 o
-grestore
-gsave
-321.252145 39.125936 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /T glyphshow
-26.360352 0.203125 m /i glyphshow
-30.250000 0.203125 m /O glyphshow
-41.269531 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-344.884 91.98 m
-344.884 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-344.884 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-344.884 827.82 o
-grestore
-gsave
-343.406121 36.021196 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /Z glyphshow
-27.774414 0.203125 m /r glyphshow
-33.530273 0.203125 m /O glyphshow
-44.549805 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-367.583 91.98 m
-367.583 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-367.583 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-367.583 827.82 o
-grestore
-gsave
-367.075454 42.295380 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /A glyphshow
-23.071289 0.203125 m /l glyphshow
-26.960938 0.203125 m /O glyphshow
-37.980469 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-390.282 91.98 m
-390.282 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-390.282 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-390.282 827.82 o
-grestore
-gsave
-389.004405 36.545103 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /G glyphshow
-24.342773 0.203125 m /a glyphshow
-32.921875 0.203125 m /O glyphshow
-43.941406 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-412.982 91.98 m
-412.982 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-412.982 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-412.982 827.82 o
-grestore
-gsave
-412.069734 39.276862 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /S glyphshow
-22.380859 0.203125 m /c glyphshow
-30.078125 0.203125 m /O glyphshow
-41.097656 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-435.681 91.98 m
-435.681 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-435.681 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-435.681 827.82 o
-grestore
-gsave
-433.572618 31.312308 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /G glyphshow
-29.203125 0.203125 m /e glyphshow
-37.816406 0.203125 m /O glyphshow
-48.835938 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-458.38 91.98 m
-458.38 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-458.38 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-458.38 827.82 o
-grestore
-gsave
-456.908317 35.096214 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /H glyphshow
-28.881836 0.203125 m /f glyphshow
-33.810547 0.203125 m /O glyphshow
-44.830078 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-481.08 91.98 m
-481.08 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-481.08 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-481.08 827.82 o
-grestore
-gsave
-479.955448 37.692140 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /S glyphshow
-27.241211 0.203125 m /i glyphshow
-31.130859 0.203125 m /O glyphshow
-42.150391 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-503.779 91.98 m
-503.779 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-503.779 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-503.779 827.82 o
-grestore
-gsave
-502.747803 38.386399 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /T glyphshow
-26.531250 0.203125 m /i glyphshow
-30.420898 0.203125 m /O glyphshow
-41.440430 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-526.478 91.98 m
-526.478 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-526.478 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-526.478 827.82 o
-grestore
-gsave
-524.901779 35.281659 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /Z glyphshow
-27.945312 0.203125 m /r glyphshow
-33.701172 0.203125 m /O glyphshow
-44.720703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-549.178 91.98 m
-549.178 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-549.178 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-549.178 827.82 o
-grestore
-gsave
-548.013033 37.390288 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /d glyphshow
-18.662109 0.203125 m /S glyphshow
-27.548828 0.203125 m /i glyphshow
-31.438477 0.203125 m /O glyphshow
-42.458008 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-571.877 91.98 m
-571.877 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-571.877 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-571.877 827.82 o
-grestore
-gsave
-570.067350 32.575751 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /N glyphshow
-27.541992 0.203125 m /b glyphshow
-36.428711 0.203125 m /O glyphshow
-47.448242 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-594.576 91.98 m
-594.576 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.576 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.576 827.82 o
-grestore
-gsave
-593.242448 37.092770 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /T glyphshow
-23.246094 0.203125 m /a glyphshow
-31.825195 0.203125 m /O glyphshow
-42.844727 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-617.276 91.98 m
-617.276 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-617.276 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-617.276 827.82 o
-grestore
-gsave
-615.261810 31.051400 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /N glyphshow
-29.121094 0.203125 m /b glyphshow
-38.007812 0.203125 m /O glyphshow
-49.027344 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-639.975 91.98 m
-639.975 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-639.975 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-639.975 827.82 o
-grestore
-gsave
-638.436908 35.568419 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /T glyphshow
-24.825195 0.203125 m /a glyphshow
-33.404297 0.203125 m /O glyphshow
-44.423828 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-662.674 91.98 m
-662.674 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-662.674 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-662.674 827.82 o
-grestore
-gsave
-661.037171 34.828882 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /a glyphshow
-19.427734 0.203125 m /T glyphshow
-25.604492 0.203125 m /a glyphshow
-34.183594 0.203125 m /O glyphshow
-45.203125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-685.374 91.98 m
-685.374 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-685.374 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-685.374 827.82 o
-grestore
-gsave
-683.123840 30.255827 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /G glyphshow
-30.310547 0.203125 m /e glyphshow
-38.923828 0.203125 m /O glyphshow
-49.943359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-708.073 91.98 m
-708.073 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-708.073 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-708.073 827.82 o
-grestore
-gsave
-706.807327 36.635658 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /S glyphshow
-28.348633 0.203125 m /i glyphshow
-32.238281 0.203125 m /O glyphshow
-43.257812 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-730.772 91.98 m
-730.772 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-730.772 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-730.772 827.82 o
-grestore
-gsave
-730.060704 40.771028 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-9.180664 0.203125 m /N glyphshow
-19.653320 0.203125 m /b glyphshow
-28.540039 0.203125 m /O glyphshow
-39.559570 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-753.472 91.98 m
-753.472 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-753.472 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-753.472 827.82 o
-grestore
-gsave
-753.381388 46.374714 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-8.055664 0.203125 m /T glyphshow
-14.232422 0.203125 m /a glyphshow
-22.811523 0.203125 m /O glyphshow
-33.831055 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-776.171 91.98 m
-776.171 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-776.171 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-776.171 827.82 o
-grestore
-gsave
-774.539948 34.874159 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /C glyphshow
-26.154297 0.203125 m /o glyphshow
-34.719727 0.203125 m /O glyphshow
-45.739258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-798.87 91.98 m
-798.87 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-798.87 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-798.87 827.82 o
-grestore
-gsave
-797.554725 37.228604 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /F glyphshow
-23.681641 0.203125 m /e glyphshow
-32.294922 0.203125 m /O glyphshow
-43.314453 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-821.57 91.98 m
-821.57 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-821.57 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-821.57 827.82 o
-grestore
-gsave
-819.600954 32.353697 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /M glyphshow
-28.458008 0.203125 m /n glyphshow
-37.331055 0.203125 m /O glyphshow
-48.350586 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-844.269 91.98 m
-844.269 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-844.269 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-844.269 827.82 o
-grestore
-gsave
-843.274331 38.658065 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /N glyphshow
-26.851562 0.203125 m /i glyphshow
-30.741211 0.203125 m /O glyphshow
-41.760742 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-866.968 91.98 m
-866.968 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-866.968 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-866.968 827.82 o
-grestore
-gsave
-865.933232 38.356214 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /N glyphshow
-22.162109 0.203125 m /b glyphshow
-31.048828 0.203125 m /O glyphshow
-42.068359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-889.668 91.98 m
-889.668 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-889.668 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-889.668 827.82 o
-grestore
-gsave
-889.229071 42.808528 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /T glyphshow
-17.866211 0.203125 m /a glyphshow
-26.445312 0.203125 m /O glyphshow
-37.464844 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-912.367 91.98 m
-912.367 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-912.367 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-912.367 827.82 o
-grestore
-gsave
-910.379543 31.247603 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /N glyphshow
-29.524414 0.203125 m /b glyphshow
-38.411133 0.203125 m /O glyphshow
-49.430664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-935.066 91.98 m
-935.066 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-935.066 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-935.066 827.82 o
-grestore
-gsave
-933.554642 35.764622 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /T glyphshow
-25.228516 0.203125 m /a glyphshow
-33.807617 0.203125 m /O glyphshow
-44.827148 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-957.766 91.98 m
-957.766 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-957.766 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-957.766 827.82 o
-grestore
-gsave
-956.504134 36.665843 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /H glyphshow
-27.856445 0.203125 m /f glyphshow
-32.785156 0.203125 m /O glyphshow
-43.804688 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-980.465 91.98 m
-980.465 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-980.465 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-980.465 827.82 o
-grestore
-gsave
-979.551264 39.261769 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /i glyphshow
-30.105469 0.203125 m /O glyphshow
-41.125000 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1003.16 91.98 m
-1003.16 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1003.16 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1003.16 827.82 o
-grestore
-gsave
-1001.605581 34.447233 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /n glyphshow
-35.088867 0.203125 m /O glyphshow
-46.108398 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1025.86 91.98 m
-1025.86 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1025.86 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1025.86 827.82 o
-grestore
-gsave
-1025.042962 39.956028 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /T glyphshow
-25.505859 0.203125 m /i glyphshow
-29.395508 0.203125 m /O glyphshow
-40.415039 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1048.56 91.98 m
-1048.56 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1048.56 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1048.56 827.82 o
-grestore
-gsave
-1047.317679 36.786584 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /Z glyphshow
-26.919922 0.203125 m /r glyphshow
-32.675781 0.203125 m /O glyphshow
-43.695312 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1071.26 91.98 m
-1071.26 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1071.26 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1071.26 827.82 o
-grestore
-gsave
-1069.329533 31.655103 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /N glyphshow
-29.086914 0.203125 m /b glyphshow
-37.973633 0.203125 m /O glyphshow
-48.993164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1093.96 91.98 m
-1093.96 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1093.96 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1093.96 827.82 o
-grestore
-gsave
-1092.625372 36.107418 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /T glyphshow
-24.791016 0.203125 m /a glyphshow
-33.370117 0.203125 m /O glyphshow
-44.389648 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1116.66 91.98 m
-1116.66 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1116.66 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1116.66 827.82 o
-grestore
-gsave
-1115.541071 37.722325 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /b glyphshow
-17.773438 0.203125 m /A glyphshow
-27.350586 0.203125 m /l glyphshow
-31.240234 0.203125 m /O glyphshow
-42.259766 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1139.36 91.98 m
-1139.36 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1139.36 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1139.36 827.82 o
-grestore
-gsave
-1137.983616 35.805566 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /H glyphshow
-28.287109 0.203125 m /f glyphshow
-33.215820 0.203125 m /O glyphshow
-44.235352 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1162.06 91.98 m
-1162.06 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1162.06 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1162.06 827.82 o
-grestore
-gsave
-1161.030746 38.401491 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /i glyphshow
-30.536133 0.203125 m /O glyphshow
-41.555664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1184.76 91.98 m
-1184.76 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1184.76 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1184.76 827.82 o
-grestore
-gsave
-1182.964322 33.651660 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /n glyphshow
-35.519531 0.203125 m /O glyphshow
-46.539062 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1207.46 91.98 m
-1207.46 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1207.46 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1207.46 827.82 o
-grestore
-gsave
-1206.522443 39.095751 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /T glyphshow
-25.936523 0.203125 m /i glyphshow
-29.826172 0.203125 m /O glyphshow
-40.845703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1230.16 91.98 m
-1230.16 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1230.16 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1230.16 827.82 o
-grestore
-gsave
-1228.676419 35.991011 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /Z glyphshow
-27.350586 0.203125 m /r glyphshow
-33.106445 0.203125 m /O glyphshow
-44.125977 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1252.86 91.98 m
-1252.86 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1252.86 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1252.86 827.82 o
-grestore
-gsave
-1251.391938 36.111752 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /C glyphshow
-24.417969 0.203125 m /o glyphshow
-32.983398 0.203125 m /O glyphshow
-44.002930 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1275.56 91.98 m
-1275.56 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1275.56 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1275.56 827.82 o
-grestore
-gsave
-1274.406716 38.466196 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /F glyphshow
-21.945312 0.203125 m /e glyphshow
-30.558594 0.203125 m /O glyphshow
-41.578125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1298.26 91.98 m
-1298.26 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1298.26 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1298.26 827.82 o
-grestore
-gsave
-1297.283415 38.824084 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /H glyphshow
-25.169922 0.203125 m /f glyphshow
-30.098633 0.203125 m /O glyphshow
-41.118164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1320.96 91.98 m
-1320.96 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1320.96 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1320.96 827.82 o
-grestore
-gsave
-1319.152286 33.591289 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /M glyphshow
-26.721680 0.203125 m /n glyphshow
-35.594727 0.203125 m /O glyphshow
-46.614258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1343.65 91.98 m
-1343.65 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1343.65 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1343.65 827.82 o
-grestore
-gsave
-1342.825663 39.895658 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /N glyphshow
-25.115234 0.203125 m /i glyphshow
-29.004883 0.203125 m /O glyphshow
-40.024414 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1366.35 91.98 m
-1366.35 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1366.35 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1366.35 827.82 o
-grestore
-gsave
-1365.729229 41.420010 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /i glyphshow
-27.418945 0.203125 m /O glyphshow
-38.438477 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1389.05 91.98 m
-1389.05 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1389.05 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1389.05 827.82 o
-grestore
-gsave
-1387.662805 36.670178 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /n glyphshow
-32.402344 0.203125 m /O glyphshow
-43.421875 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1411.75 91.98 m
-1411.75 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1411.75 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1411.75 827.82 o
-grestore
-gsave
-1411.220927 42.114269 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /T glyphshow
-22.819336 0.203125 m /i glyphshow
-26.708984 0.203125 m /O glyphshow
-37.728516 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1434.45 91.98 m
-1434.45 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1434.45 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1434.45 827.82 o
-grestore
-gsave
-1433.374903 39.009529 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /Z glyphshow
-24.233398 0.203125 m /r glyphshow
-29.989258 0.203125 m /O glyphshow
-41.008789 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1457.15 91.98 m
-1457.15 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1457.15 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1457.15 827.82 o
-grestore
-gsave
-1456.431563 40.710658 translate
-75.000000 rotate
-0.000000 0.203125 m /T glyphshow
-8.551758 0.203125 m /l glyphshow
-12.441406 0.203125 m /T glyphshow
-18.618164 0.203125 m /a glyphshow
-27.197266 0.203125 m /O glyphshow
-38.216797 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1479.85 91.98 m
-1479.85 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1479.85 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1479.85 827.82 o
-grestore
-gsave
-1479.947803 46.808065 translate
-75.000000 rotate
-0.000000 0.203125 m /Y glyphshow
-7.426758 0.203125 m /A glyphshow
-17.003906 0.203125 m /l glyphshow
-20.893555 0.203125 m /O glyphshow
-31.913086 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1502.55 91.98 m
-1502.55 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 827.82 o
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 91.98 m
-1502.55 91.98 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 91.98 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-178.437500 85.175312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 183.96 m
-1502.55 183.96 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 183.96 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 183.96 o
-grestore
-gsave
-178.828125 177.155312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 275.94 m
-1502.55 275.94 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 275.94 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 275.94 o
-grestore
-gsave
-179.234375 269.135312 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 367.92 m
-1502.55 367.92 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 367.92 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 367.92 o
-grestore
-gsave
-179.625000 361.232500 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 459.9 m
-1502.55 459.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 459.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 459.9 o
-grestore
-gsave
-178.562500 453.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /two glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 551.88 m
-1502.55 551.88 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 551.88 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 551.88 o
-grestore
-gsave
-178.953125 545.075312 translate
-0.000000 rotate
-0.000000 0.250000 m /two glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 643.86 m
-1502.55 643.86 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 643.86 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 643.86 o
-grestore
-gsave
-178.625000 637.055313 translate
-0.000000 rotate
-0.000000 0.250000 m /three glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 735.84 m
-1502.55 735.84 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 735.84 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 735.84 o
-grestore
-gsave
-179.015625 729.035313 translate
-0.000000 rotate
-0.000000 0.250000 m /three glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 827.82 m
-1502.55 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 827.82 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 827.82 o
-grestore
-gsave
-178.125000 821.015313 translate
-0.000000 rotate
-0.000000 0.250000 m /four glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-173.125000 278.860937 translate
-90.000000 rotate
-0.000000 4.156250 m /T glyphshow
-8.841797 4.156250 m /o glyphshow
-21.078125 4.156250 m /t glyphshow
-28.919922 4.156250 m /a glyphshow
-41.175781 4.156250 m /l glyphshow
-46.732422 4.156250 m /space glyphshow
-53.089844 4.156250 m /m glyphshow
-72.572266 4.156250 m /a glyphshow
-84.828125 4.156250 m /g glyphshow
-97.523438 4.156250 m /n glyphshow
-110.199219 4.156250 m /e glyphshow
-122.503906 4.156250 m /t glyphshow
-130.345703 4.156250 m /i glyphshow
-135.902344 4.156250 m /z glyphshow
-146.400391 4.156250 m /a glyphshow
-158.656250 4.156250 m /t glyphshow
-166.498047 4.156250 m /i glyphshow
-172.054688 4.156250 m /o glyphshow
-184.291016 4.156250 m /n glyphshow
-196.966797 4.156250 m /space glyphshow
-203.324219 4.156250 m /bracketleft glyphshow
-211.126953 4.156250 m /B glyphshow
-224.847656 4.156250 m /o glyphshow
-237.083984 4.156250 m /h glyphshow
-249.759766 4.156250 m /r glyphshow
-257.607422 4.156250 m /m glyphshow
-277.089844 4.156250 m /a glyphshow
-289.345703 4.156250 m /g glyphshow
-302.041016 4.156250 m /space glyphshow
-308.398438 4.156250 m /slash glyphshow
-315.136719 4.156250 m /space glyphshow
-321.494141 4.156250 m /c glyphshow
-332.490234 4.156250 m /e glyphshow
-344.794922 4.156250 m /l glyphshow
-350.351562 4.156250 m /l glyphshow
-355.908203 4.156250 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-208.688 827.82 m
-1502.55 827.82 l
-stroke
-grestore
-gsave
-1502.55 91.98 m
-1502.55 827.82 l
-stroke
-grestore
-gsave
-208.688 91.98 m
-1502.55 91.98 l
-stroke
-grestore
-gsave
-208.688 91.98 m
-208.688 827.82 l
-stroke
-grestore
-gsave
-1291.06 732.654 m
-1493.55 732.654 l
-1493.55 818.82 l
-1291.06 818.82 l
-1291.06 732.654 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-gsave
-1298.26 797.948 m
-1334.26 797.948 l
-1334.26 810.548 l
-1298.26 810.548 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-1348.662500 793.698125 translate
-0.000000 rotate
-0.000000 4.250000 m /l glyphshow
-5.000977 4.250000 m /d glyphshow
-16.426758 4.250000 m /a glyphshow
-27.457031 4.250000 m /underscore glyphshow
-36.457031 4.250000 m /g glyphshow
-47.882812 4.250000 m /b glyphshow
-59.308594 4.250000 m /r glyphshow
-66.708984 4.250000 m /v glyphshow
-77.361328 4.250000 m /underscore glyphshow
-86.361328 4.250000 m /one glyphshow
-97.813477 4.250000 m /two glyphshow
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1298.26 771.026 m
-1334.26 771.026 l
-1334.26 783.626 l
-1298.26 783.626 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-1348.662500 766.776250 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /underscore glyphshow
-42.925781 4.250000 m /g glyphshow
-54.351562 4.250000 m /b glyphshow
-65.777344 4.250000 m /r glyphshow
-73.177734 4.250000 m /v glyphshow
-83.830078 4.250000 m /underscore glyphshow
-92.830078 4.250000 m /one glyphshow
-104.282227 4.250000 m /two glyphshow
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1298.26 744.104 m
-1334.26 744.104 l
-1334.26 756.704 l
-1298.26 756.704 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-1348.662500 739.854375 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png
deleted file mode 100644
index 859fcf3a..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/qb_example_1.png b/docs/assets/2018_PRACE_MaX/latex/img/qb_example_1.png
deleted file mode 100644
index 3fee6f94..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/qb_example_1.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/qb_example_2.png b/docs/assets/2018_PRACE_MaX/latex/img/qb_example_2.png
deleted file mode 100644
index 6a0c9117..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/qb_example_2.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.eps
deleted file mode 100644
index 637d6b0f..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.eps
+++ /dev/null
@@ -1,3197 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/smearing_energy_vs_bandgap_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:57:05 2014
-%%Orientation: portrait
-%%BoundingBox: -418 -40 1030 832
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /hyphen /period /zero /one /two /three /four /five /six /seven /eight /B /C /N /O /S /T /V /bracketleft /bracketright /underscore /a /b /d /e /g /i /l /m /n /o /p /r /s /u /v /y /bar ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 39 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/hyphen{361 0 49 234 312 314 _sc
-49 314 _m
-312 314 _l
-312 234 _l
-49 234 _l
-49 314 _l
-_cl}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/five{{636 0 77 -13 549 729 _sc
-108 729 _m
-495 729 _l
-495 646 _l
-198 646 _l
-198 467 _l
-212 472 227 476 241 478 _c
-255 480 270 482 284 482 _c
-365 482 429 459 477 415 _c
-525 370 549 310 549 234 _c
-549 155 524 94 475 51 _c
-426 8 357 -13 269 -13 _c
-238 -13 207 -10 175 -6 _c
-143 -1 111 6 77 17 _c
-77 116 _l
-106 100 136 88 168 80 _c
-199 72 232 69 267 69 _c
-323 69 368 83 401 113 _c
-433 143 450 183 450 234 _c
-450 284 433 324 401 354 _c
-368 384 323 399 267 399 _c
-241 399 214 396 188 390 _c
-162 384 135 375 108 363 _c
-108 729 _l
-_cl}_e}_d
-/six{{636 0 70 -13 573 742 _sc
-330 404 _m
-286 404 251 388 225 358 _c
-199 328 186 286 186 234 _c
-186 181 199 139 225 109 _c
-251 79 286 64 330 64 _c
-374 64 409 79 435 109 _c
-461 139 474 181 474 234 _c
-474 286 461 328 435 358 _c
-409 388 374 404 330 404 _c
-526 713 _m
-526 623 _l
-501 635 476 644 451 650 _c
-425 656 400 659 376 659 _c
-310 659 260 637 226 593 _c
-192 549 172 482 168 394 _c
-187 422 211 444 240 459 _c
-269 474 301 482 336 482 _c
-409 482 467 459 509 415 _c
-551 371 573 310 573 234 _c
-573 159 550 99 506 54 _c
-462 9 403 -13 330 -13 _c
-246 -13 181 19 137 83 _c
-92 147 70 241 70 364 _c
-70 479 97 571 152 639 _c
-206 707 280 742 372 742 _c
-}_e{396 742 421 739 447 735 _c
-472 730 498 723 526 713 _c
-_cl}_e}_d
-/seven{636 0 82 0 551 729 _sc
-82 729 _m
-551 729 _l
-551 687 _l
-286 0 _l
-183 0 _l
-432 646 _l
-82 646 _l
-82 729 _l
-_cl}_d
-/eight{{636 0 68 -13 568 742 _sc
-318 346 _m
-271 346 234 333 207 308 _c
-180 283 167 249 167 205 _c
-167 161 180 126 207 101 _c
-234 76 271 64 318 64 _c
-364 64 401 76 428 102 _c
-455 127 469 161 469 205 _c
-469 249 455 283 429 308 _c
-402 333 365 346 318 346 _c
-219 388 _m
-177 398 144 418 120 447 _c
-96 476 85 511 85 553 _c
-85 611 105 657 147 691 _c
-188 725 245 742 318 742 _c
-390 742 447 725 489 691 _c
-530 657 551 611 551 553 _c
-551 511 539 476 515 447 _c
-491 418 459 398 417 388 _c
-464 377 501 355 528 323 _c
-554 291 568 251 568 205 _c
-568 134 546 80 503 43 _c
-459 5 398 -13 318 -13 _c
-237 -13 175 5 132 43 _c
-89 80 68 134 68 205 _c
-68 251 81 291 108 323 _c
-134 355 171 377 219 388 _c
-}_e{183 544 _m
-183 506 194 476 218 455 _c
-242 434 275 424 318 424 _c
-360 424 393 434 417 455 _c
-441 476 453 506 453 544 _c
-453 582 441 611 417 632 _c
-393 653 360 664 318 664 _c
-275 664 242 653 218 632 _c
-194 611 183 582 183 544 _c
-_cl}_e}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/V{684 0 8 0 676 729 _sc
-286 0 _m
-8 729 _l
-111 729 _l
-342 115 _l
-573 729 _l
-676 729 _l
-398 0 _l
-286 0 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/y{592 0 30 -207 562 547 _sc
-322 -50 _m
-296 -114 271 -157 247 -177 _c
-223 -197 191 -207 151 -207 _c
-79 -207 _l
-79 -132 _l
-132 -132 _l
-156 -132 175 -126 189 -114 _c
-203 -102 218 -75 235 -31 _c
-251 9 _l
-30 547 _l
-125 547 _l
-296 119 _l
-467 547 _l
-562 547 _l
-322 -50 _l
-_cl}_d
-/bar{337 0 127 -235 210 764 _sc
-210 764 _m
-210 -235 _l
-127 -235 _l
-127 764 _l
-210 764 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--418.5 -40.5 translate
-1449 873 0 0 clipbox
-gsave
-0 0 m
-1449 0 l
-1449 873 l
-0 873 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-1304.1 785.7 l
-181.125 785.7 l
-cl
-1.000 setgray
-fill
-grestore
-2.500 setlinewidth
-1 setlinejoin
-0 setlinecap
-[] 0 setdash
-0.000 setgray
-gsave
-1123 698.4 181.1 87.3 clipbox
-/o {
-gsave
-newpath
-translate
-2.5 setlinewidth
-1 setlinejoin
-0 setlinecap
--5 -5 m
-5 5 l
--5 5 m
-5 -5 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-287.184 561.807 o
-181.125 710.196 o
-524.256 497.999 o
-1297.86 130.676 o
-181.125 701.682 o
-grestore
-0.500 setlinewidth
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-168.000000 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-305.9 87.3 m
-305.9 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-305.9 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-305.9 785.7 o
-grestore
-gsave
-293.079688 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-430.675 87.3 m
-430.675 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-430.675 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-430.675 785.7 o
-grestore
-gsave
-417.464063 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-555.45 87.3 m
-555.45 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 785.7 o
-grestore
-gsave
-542.301563 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-680.225 87.3 m
-680.225 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-680.225 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-680.225 785.7 o
-grestore
-gsave
-667.123438 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /eight glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-805 87.3 m
-805 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-805 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-805 785.7 o
-grestore
-gsave
-792.273438 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-929.775 87.3 m
-929.775 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 785.7 o
-grestore
-gsave
-917.353125 69.940625 translate
-0.000000 rotate
-0.000000 0.000000 m /one glyphshow
-11.452148 0.000000 m /period glyphshow
-17.173828 0.000000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1054.55 87.3 m
-1054.55 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1054.55 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1054.55 785.7 o
-grestore
-gsave
-1041.737500 70.175000 translate
-0.000000 rotate
-0.000000 0.000000 m /one glyphshow
-11.452148 0.000000 m /period glyphshow
-17.173828 0.000000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1179.33 87.3 m
-1179.33 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1179.33 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1179.33 785.7 o
-grestore
-gsave
-1166.575000 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-1291.396875 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /eight glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-671.815625 45.331250 translate
-0.000000 rotate
-0.000000 4.156250 m /B glyphshow
-13.720703 4.156250 m /a glyphshow
-25.976562 4.156250 m /n glyphshow
-38.652344 4.156250 m /d glyphshow
-51.347656 4.156250 m /space glyphshow
-57.705078 4.156250 m /g glyphshow
-70.400391 4.156250 m /a glyphshow
-82.656250 4.156250 m /p glyphshow
-95.351562 4.156250 m /space glyphshow
-101.708984 4.156250 m /bracketleft glyphshow
-109.511719 4.156250 m /e glyphshow
-121.816406 4.156250 m /V glyphshow
-135.498047 4.156250 m /bracketright glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-139.125000 76.800000 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/seven glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 187.071 m
-1304.1 187.071 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 187.071 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 187.071 o
-grestore
-gsave
-139.125000 176.571429 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/six glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 286.843 m
-1304.1 286.843 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 286.843 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 286.843 o
-grestore
-gsave
-139.125000 276.342857 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/five glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 386.614 m
-1304.1 386.614 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 386.614 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 386.614 o
-grestore
-gsave
-139.125000 376.114286 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/four glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 486.386 m
-1304.1 486.386 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 486.386 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 486.386 o
-grestore
-gsave
-139.125000 475.885714 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/three glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 586.157 m
-1304.1 586.157 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 586.157 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 586.157 o
-grestore
-gsave
-139.125000 575.657143 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/two glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 685.929 m
-1304.1 685.929 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 685.929 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 685.929 o
-grestore
-gsave
-139.125000 675.428571 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/one glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-144.125000 775.200000 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/zero glyphshow
-
-
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 117.334 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 117.334 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 147.368 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 147.368 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 164.937 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 164.937 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 177.403 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 177.403 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 217.106 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 217.106 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 247.14 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 247.14 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 264.709 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 264.709 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 277.174 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 277.174 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 316.877 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 316.877 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 346.911 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 346.911 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 364.48 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 364.48 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 376.945 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 376.945 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 416.648 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 416.648 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 446.683 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 446.683 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 464.252 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 464.252 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 476.717 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 476.717 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 516.42 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 516.42 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 546.454 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 546.454 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 564.023 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 564.023 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 576.488 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 576.488 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 616.191 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 616.191 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 646.226 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 646.226 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 663.794 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 663.794 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 676.26 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 676.26 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 715.963 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 715.963 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 745.997 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 745.997 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 763.566 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 763.566 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 776.031 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 776.031 o
-grestore
-gsave
-134.125000 320.671875 translate
-90.000000 rotate
-0.000000 4.718750 m /bar glyphshow
-6.738281 4.718750 m /S glyphshow
-19.433594 4.718750 m /m glyphshow
-38.916016 4.718750 m /e glyphshow
-51.220703 4.718750 m /a glyphshow
-63.476562 4.718750 m /r glyphshow
-71.699219 4.718750 m /i glyphshow
-77.255859 4.718750 m /n glyphshow
-89.931641 4.718750 m /g glyphshow
-102.626953 4.718750 m /space glyphshow
-108.984375 4.718750 m /e glyphshow
-121.289062 4.718750 m /n glyphshow
-133.964844 4.718750 m /e glyphshow
-146.269531 4.718750 m /r glyphshow
-154.117188 4.718750 m /g glyphshow
-166.812500 4.718750 m /y glyphshow
-178.648438 4.718750 m /bar glyphshow
-185.386719 4.718750 m /space glyphshow
-191.744141 4.718750 m /bracketleft glyphshow
-199.546875 4.718750 m /e glyphshow
-211.851562 4.718750 m /V glyphshow
-225.533203 4.718750 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-299.661250 561.557428 translate
-0.000000 rotate
-0.000000 0.250000 m /C glyphshow
-12.568359 0.250000 m /u glyphshow
-23.976562 0.250000 m /T glyphshow
-31.971680 0.250000 m /a glyphshow
-43.001953 0.250000 m /O glyphshow
-57.169922 0.250000 m /three glyphshow
-grestore
-gsave
-193.602500 712.352378 translate
-0.000000 rotate
-0.000000 0.250000 m /S glyphshow
-11.425781 0.250000 m /r glyphshow
-18.826172 0.250000 m /N glyphshow
-32.291016 0.250000 m /i glyphshow
-37.291992 0.250000 m /O glyphshow
-51.459961 0.250000 m /three glyphshow
-grestore
-gsave
-536.733750 497.748991 translate
-0.000000 rotate
-0.000000 0.250000 m /C glyphshow
-12.568359 0.250000 m /d glyphshow
-23.994141 0.250000 m /S glyphshow
-35.419922 0.250000 m /i glyphshow
-40.420898 0.250000 m /O glyphshow
-54.588867 0.250000 m /three glyphshow
-grestore
-gsave
-1310.338750 130.425691 translate
-0.000000 rotate
-0.000000 0.250000 m /B glyphshow
-12.348633 0.250000 m /a glyphshow
-23.378906 0.250000 m /T glyphshow
-33.874023 0.250000 m /i glyphshow
-38.875000 0.250000 m /O glyphshow
-53.042969 0.250000 m /three glyphshow
-grestore
-gsave
-193.602500 687.313365 translate
-0.000000 rotate
-0.000000 0.250000 m /S glyphshow
-11.425781 0.250000 m /r glyphshow
-18.826172 0.250000 m /C glyphshow
-31.394531 0.250000 m /o glyphshow
-42.407227 0.250000 m /O glyphshow
-56.575195 0.250000 m /three glyphshow
-grestore
-0.000 setgray
-gsave
-1092.61 744.378 m
-1295.1 744.378 l
-1295.1 776.7 l
-1092.61 776.7 l
-1092.61 744.378 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-2.500 setlinewidth
-0 setlinecap
-gsave
-/o {
-gsave
-newpath
-translate
-2.5 setlinewidth
-1 setlinejoin
-0 setlinecap
--5 -5 m
-5 5 l
--5 5 m
-5 -5 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1105.21 762.128 o
-1130.41 762.128 o
-grestore
-gsave
-1150.212500 751.578125 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.png
deleted file mode 100644
index 0b79bc8d..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_bandgap_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
deleted file mode 100644
index 06ef2925..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
+++ /dev/null
@@ -1,7017 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:47:12 2014
-%%Orientation: portrait
-%%BoundingBox: -418 -40 1030 832
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /period /zero /one /two /three /four /six /eight /A /B /C /F /G /H /K /L /M /N /O /P /R /S /T /V /Y /Z /bracketleft /bracketright /underscore /a /b /c /d /e /f /g /i /l /m /n /o /p /r /s /u /v /y /bar ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 49 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/six{{636 0 70 -13 573 742 _sc
-330 404 _m
-286 404 251 388 225 358 _c
-199 328 186 286 186 234 _c
-186 181 199 139 225 109 _c
-251 79 286 64 330 64 _c
-374 64 409 79 435 109 _c
-461 139 474 181 474 234 _c
-474 286 461 328 435 358 _c
-409 388 374 404 330 404 _c
-526 713 _m
-526 623 _l
-501 635 476 644 451 650 _c
-425 656 400 659 376 659 _c
-310 659 260 637 226 593 _c
-192 549 172 482 168 394 _c
-187 422 211 444 240 459 _c
-269 474 301 482 336 482 _c
-409 482 467 459 509 415 _c
-551 371 573 310 573 234 _c
-573 159 550 99 506 54 _c
-462 9 403 -13 330 -13 _c
-246 -13 181 19 137 83 _c
-92 147 70 241 70 364 _c
-70 479 97 571 152 639 _c
-206 707 280 742 372 742 _c
-}_e{396 742 421 739 447 735 _c
-472 730 498 723 526 713 _c
-_cl}_e}_d
-/eight{{636 0 68 -13 568 742 _sc
-318 346 _m
-271 346 234 333 207 308 _c
-180 283 167 249 167 205 _c
-167 161 180 126 207 101 _c
-234 76 271 64 318 64 _c
-364 64 401 76 428 102 _c
-455 127 469 161 469 205 _c
-469 249 455 283 429 308 _c
-402 333 365 346 318 346 _c
-219 388 _m
-177 398 144 418 120 447 _c
-96 476 85 511 85 553 _c
-85 611 105 657 147 691 _c
-188 725 245 742 318 742 _c
-390 742 447 725 489 691 _c
-530 657 551 611 551 553 _c
-551 511 539 476 515 447 _c
-491 418 459 398 417 388 _c
-464 377 501 355 528 323 _c
-554 291 568 251 568 205 _c
-568 134 546 80 503 43 _c
-459 5 398 -13 318 -13 _c
-237 -13 175 5 132 43 _c
-89 80 68 134 68 205 _c
-68 251 81 291 108 323 _c
-134 355 171 377 219 388 _c
-}_e{183 544 _m
-183 506 194 476 218 455 _c
-242 434 275 424 318 424 _c
-360 424 393 434 417 455 _c
-441 476 453 506 453 544 _c
-453 582 441 611 417 632 _c
-393 653 360 664 318 664 _c
-275 664 242 653 218 632 _c
-194 611 183 582 183 544 _c
-_cl}_e}_d
-/A{684 0 8 0 676 729 _sc
-342 632 _m
-208 269 _l
-476 269 _l
-342 632 _l
-286 729 _m
-398 729 _l
-676 0 _l
-573 0 _l
-507 187 _l
-178 187 _l
-112 0 _l
-8 0 _l
-286 729 _l
-_cl}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/F{575 0 98 0 517 729 _sc
-98 729 _m
-517 729 _l
-517 646 _l
-197 646 _l
-197 431 _l
-486 431 _l
-486 348 _l
-197 348 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/G{{775 0 56 -13 693 742 _sc
-595 104 _m
-595 300 _l
-434 300 _l
-434 381 _l
-693 381 _l
-693 68 _l
-655 40 613 20 567 7 _c
-521 -6 472 -13 420 -13 _c
-306 -13 216 20 152 86 _c
-88 152 56 245 56 364 _c
-56 482 88 575 152 642 _c
-216 708 306 742 420 742 _c
-467 742 512 736 555 724 _c
-598 712 638 695 674 673 _c
-674 568 _l
-637 598 598 621 557 637 _c
-516 653 473 661 428 661 _c
-338 661 271 636 227 586 _c
-182 536 160 462 160 364 _c
-160 265 182 191 227 141 _c
-271 91 338 67 428 67 _c
-462 67 493 70 521 76 _c
-549 82 573 91 595 104 _c
-_cl}_e}_d
-/H{752 0 98 0 654 729 _sc
-98 729 _m
-197 729 _l
-197 430 _l
-555 430 _l
-555 729 _l
-654 729 _l
-654 0 _l
-555 0 _l
-555 347 _l
-197 347 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/K{656 0 98 0 677 729 _sc
-98 729 _m
-197 729 _l
-197 421 _l
-524 729 _l
-651 729 _l
-289 389 _l
-677 0 _l
-547 0 _l
-197 351 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/L{557 0 98 0 552 729 _sc
-98 729 _m
-197 729 _l
-197 83 _l
-552 83 _l
-552 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/M{863 0 98 0 765 729 _sc
-98 729 _m
-245 729 _l
-431 233 _l
-618 729 _l
-765 729 _l
-765 0 _l
-669 0 _l
-669 640 _l
-481 140 _l
-382 140 _l
-194 640 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/P{603 0 98 0 569 729 _sc
-197 648 _m
-197 374 _l
-321 374 _l
-367 374 402 385 427 409 _c
-452 433 465 467 465 511 _c
-465 555 452 588 427 612 _c
-402 636 367 648 321 648 _c
-197 648 _l
-98 729 _m
-321 729 _l
-402 729 464 710 506 673 _c
-548 636 569 582 569 511 _c
-569 439 548 384 506 348 _c
-464 311 402 293 321 293 _c
-197 293 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/R{{695 0 98 0 666 729 _sc
-444 342 _m
-465 334 486 319 506 296 _c
-526 272 546 240 566 199 _c
-666 0 _l
-560 0 _l
-467 187 _l
-443 235 419 268 397 284 _c
-374 300 343 308 304 308 _c
-197 308 _l
-197 0 _l
-98 0 _l
-98 729 _l
-321 729 _l
-404 729 466 711 507 677 _c
-548 642 569 589 569 519 _c
-569 473 558 434 537 404 _c
-515 374 484 353 444 342 _c
-197 648 _m
-197 389 _l
-321 389 _l
-368 389 404 400 428 422 _c
-452 444 465 476 465 519 _c
-465 561 452 593 428 615 _c
-404 637 368 648 321 648 _c
-197 648 _l
-_cl}_e}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/V{684 0 8 0 676 729 _sc
-286 0 _m
-8 729 _l
-111 729 _l
-342 115 _l
-573 729 _l
-676 729 _l
-398 0 _l
-286 0 _l
-_cl}_d
-/Y{611 0 -1 0 613 729 _sc
--1 729 _m
-104 729 _l
-306 429 _l
-507 729 _l
-613 729 _l
-355 347 _l
-355 0 _l
-256 0 _l
-256 347 _l
--1 729 _l
-_cl}_d
-/Z{685 0 45 0 640 729 _sc
-56 729 _m
-629 729 _l
-629 654 _l
-168 83 _l
-640 83 _l
-640 0 _l
-45 0 _l
-45 75 _l
-506 646 _l
-56 646 _l
-56 729 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/c{{550 0 55 -13 488 560 _sc
-488 526 _m
-488 442 _l
-462 456 437 466 411 473 _c
-385 480 360 484 334 484 _c
-276 484 230 465 198 428 _c
-166 391 150 339 150 273 _c
-150 206 166 154 198 117 _c
-230 80 276 62 334 62 _c
-360 62 385 65 411 72 _c
-437 79 462 90 488 104 _c
-488 21 _l
-462 9 436 0 410 -5 _c
-383 -10 354 -13 324 -13 _c
-242 -13 176 12 128 64 _c
-79 115 55 185 55 273 _c
-55 362 79 432 128 483 _c
-177 534 244 560 330 560 _c
-358 560 385 557 411 551 _c
-437 545 463 537 488 526 _c
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/f{352 0 23 0 371 760 _sc
-371 760 _m
-371 685 _l
-285 685 _l
-253 685 230 678 218 665 _c
-205 652 199 629 199 595 _c
-199 547 _l
-347 547 _l
-347 477 _l
-199 477 _l
-199 0 _l
-109 0 _l
-109 477 _l
-23 477 _l
-23 547 _l
-109 547 _l
-109 585 _l
-109 645 123 690 151 718 _c
-179 746 224 760 286 760 _c
-371 760 _l
-_cl}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/y{592 0 30 -207 562 547 _sc
-322 -50 _m
-296 -114 271 -157 247 -177 _c
-223 -197 191 -207 151 -207 _c
-79 -207 _l
-79 -132 _l
-132 -132 _l
-156 -132 175 -126 189 -114 _c
-203 -102 218 -75 235 -31 _c
-251 9 _l
-30 547 _l
-125 547 _l
-296 119 _l
-467 547 _l
-562 547 _l
-322 -50 _l
-_cl}_d
-/bar{337 0 127 -235 210 764 _sc
-210 764 _m
-210 -235 _l
-127 -235 _l
-127 764 _l
-210 764 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--418.5 -40.5 translate
-1449 873 0 0 clipbox
-gsave
-0 0 m
-1449 0 l
-1449 873 l
-0 873 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-1304.1 785.7 l
-181.125 785.7 l
-cl
-1.000 setgray
-fill
-grestore
-1.000 setlinewidth
-1 setlinejoin
-2 setlinecap
-[] 0 setdash
-0.000 0.000 1.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-184.08 87.3 m
-188.02 87.3 l
-188.02 87.3375 l
-184.08 87.3375 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-203.782 87.3 m
-207.722 87.3 l
-207.722 87.3026 l
-203.782 87.3026 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-223.483 87.3 m
-227.423 87.3 l
-227.423 87.3 l
-223.483 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-243.184 87.3 m
-247.124 87.3 l
-247.124 87.3 l
-243.184 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-262.885 87.3 m
-266.826 87.3 l
-266.826 87.8701 l
-262.885 87.8701 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-282.587 87.3 m
-286.527 87.3 l
-286.527 87.3005 l
-282.587 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-302.288 87.3 m
-306.228 87.3 l
-306.228 87.3 l
-302.288 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-321.989 87.3 m
-325.93 87.3 l
-325.93 87.3048 l
-321.989 87.3048 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-341.691 87.3 m
-345.631 87.3 l
-345.631 87.3697 l
-341.691 87.3697 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-361.392 87.3 m
-365.332 87.3 l
-365.332 90.8317 l
-361.392 90.8317 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-381.093 87.3 m
-385.034 87.3 l
-385.034 87.4204 l
-381.093 87.4204 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-400.795 87.3 m
-404.735 87.3 l
-404.735 87.3 l
-400.795 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-420.496 87.3 m
-424.436 87.3 l
-424.436 87.3 l
-420.496 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-440.197 87.3 m
-444.138 87.3 l
-444.138 87.3 l
-440.197 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-459.899 87.3 m
-463.839 87.3 l
-463.839 87.3 l
-459.899 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-479.6 87.3 m
-483.54 87.3 l
-483.54 93.6364 l
-479.6 93.6364 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-499.301 87.3 m
-503.242 87.3 l
-503.242 87.5502 l
-499.301 87.5502 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-519.003 87.3 m
-522.943 87.3 l
-522.943 87.3011 l
-519.003 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-538.704 87.3 m
-542.644 87.3 l
-542.644 117.986 l
-538.704 117.986 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-558.405 87.3 m
-562.345 87.3 l
-562.345 108.443 l
-558.405 108.443 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-578.107 87.3 m
-582.047 87.3 l
-582.047 93.1539 l
-578.107 93.1539 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-597.808 87.3 m
-601.748 87.3 l
-601.748 87.3412 l
-597.808 87.3412 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-617.509 87.3 m
-621.449 87.3 l
-621.449 87.3 l
-617.509 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-637.21 87.3 m
-641.151 87.3 l
-641.151 87.3158 l
-637.21 87.3158 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-656.912 87.3 m
-660.852 87.3 l
-660.852 87.3 l
-656.912 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-676.613 87.3 m
-680.553 87.3 l
-680.553 547.925 l
-676.613 547.925 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-696.314 87.3 m
-700.255 87.3 l
-700.255 510.684 l
-696.314 510.684 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-716.016 87.3 m
-719.956 87.3 l
-719.956 284.712 l
-716.016 284.712 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-735.717 87.3 m
-739.657 87.3 l
-739.657 216.47 l
-735.717 216.47 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-755.418 87.3 m
-759.359 87.3 l
-759.359 87.3042 l
-755.418 87.3042 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-775.12 87.3 m
-779.06 87.3 l
-779.06 87.3 l
-775.12 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-794.821 87.3 m
-798.761 87.3 l
-798.761 87.3058 l
-794.821 87.3058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-814.522 87.3 m
-818.463 87.3 l
-818.463 87.3 l
-814.522 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-834.224 87.3 m
-838.164 87.3 l
-838.164 87.3 l
-834.224 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-853.925 87.3 m
-857.865 87.3 l
-857.865 87.3 l
-853.925 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-873.626 87.3 m
-877.567 87.3 l
-877.567 87.3026 l
-873.626 87.3026 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-893.328 87.3 m
-897.268 87.3 l
-897.268 87.3153 l
-893.328 87.3153 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-913.029 87.3 m
-916.969 87.3 l
-916.969 87.3 l
-913.029 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-932.73 87.3 m
-936.67 87.3 l
-936.67 87.329 l
-932.73 87.329 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-952.432 87.3 m
-956.372 87.3 l
-956.372 87.3 l
-952.432 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-972.133 87.3 m
-976.073 87.3 l
-976.073 87.5629 l
-972.133 87.5629 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-991.834 87.3 m
-995.774 87.3 l
-995.774 87.3005 l
-991.834 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1011.54 87.3 m
-1015.48 87.3 l
-1015.48 87.3121 l
-1011.54 87.3121 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1031.24 87.3 m
-1035.18 87.3 l
-1035.18 87.3132 l
-1031.24 87.3132 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1050.94 87.3 m
-1054.88 87.3 l
-1054.88 88.9185 l
-1050.94 88.9185 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1070.64 87.3 m
-1074.58 87.3 l
-1074.58 87.3011 l
-1070.64 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1090.34 87.3 m
-1094.28 87.3 l
-1094.28 638.082 l
-1090.34 638.082 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1110.04 87.3 m
-1113.98 87.3 l
-1113.98 299.434 l
-1110.04 299.434 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1129.74 87.3 m
-1133.68 87.3 l
-1133.68 87.3 l
-1129.74 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1149.44 87.3 m
-1153.38 87.3 l
-1153.38 363.046 l
-1149.44 363.046 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1169.15 87.3 m
-1173.09 87.3 l
-1173.09 780.45 l
-1169.15 780.45 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1188.85 87.3 m
-1192.79 87.3 l
-1192.79 87.3 l
-1188.85 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1208.55 87.3 m
-1212.49 87.3 l
-1212.49 87.3021 l
-1208.55 87.3021 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1228.25 87.3 m
-1232.19 87.3 l
-1232.19 87.3005 l
-1228.25 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1247.95 87.3 m
-1251.89 87.3 l
-1251.89 87.3 l
-1247.95 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1267.65 87.3 m
-1271.59 87.3 l
-1271.59 101.622 l
-1267.65 101.622 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1287.35 87.3 m
-1291.29 87.3 l
-1291.29 87.3 l
-1287.35 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-189.006 87.3 m
-192.946 87.3 l
-192.946 87.3343 l
-189.006 87.3343 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-208.707 87.3 m
-212.647 87.3 l
-212.647 87.3005 l
-208.707 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-228.408 87.3 m
-232.348 87.3 l
-232.348 87.3 l
-228.408 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-248.109 87.3 m
-252.05 87.3 l
-252.05 87.5676 l
-248.109 87.5676 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-267.811 87.3 m
-271.751 87.3 l
-271.751 98.2798 l
-267.811 98.2798 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-287.512 87.3 m
-291.452 87.3 l
-291.452 87.3016 l
-287.512 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-307.213 87.3 m
-311.154 87.3 l
-311.154 87.3 l
-307.213 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-326.915 87.3 m
-330.855 87.3 l
-330.855 87.3137 l
-326.915 87.3137 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-346.616 87.3 m
-350.556 87.3 l
-350.556 87.4631 l
-346.616 87.4631 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-366.317 87.3 m
-370.258 87.3 l
-370.258 93.307 l
-366.317 93.307 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-386.019 87.3 m
-389.959 87.3 l
-389.959 93.9917 l
-386.019 93.9917 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-405.72 87.3 m
-409.66 87.3 l
-409.66 87.3 l
-405.72 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-425.421 87.3 m
-429.362 87.3 l
-429.362 87.3 l
-425.421 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-445.123 87.3 m
-449.063 87.3 l
-449.063 87.3 l
-445.123 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-464.824 87.3 m
-468.764 87.3 l
-468.764 87.3 l
-464.824 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-484.525 87.3 m
-488.466 87.3 l
-488.466 90.9071 l
-484.525 90.9071 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-504.227 87.3 m
-508.167 87.3 l
-508.167 87.4642 l
-504.227 87.4642 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-523.928 87.3 m
-527.868 87.3 l
-527.868 87.3005 l
-523.928 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-543.629 87.3 m
-547.569 87.3 l
-547.569 126.886 l
-543.629 126.886 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-563.331 87.3 m
-567.271 87.3 l
-567.271 107.825 l
-563.331 107.825 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-583.032 87.3 m
-586.972 87.3 l
-586.972 89.344 l
-583.032 89.344 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-602.733 87.3 m
-606.673 87.3 l
-606.673 91.548 l
-602.733 91.548 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-622.434 87.3 m
-626.375 87.3 l
-626.375 87.3 l
-622.434 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-642.136 87.3 m
-646.076 87.3 l
-646.076 87.3211 l
-642.136 87.3211 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-661.837 87.3 m
-665.777 87.3 l
-665.777 87.3 l
-661.837 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-681.538 87.3 m
-685.479 87.3 l
-685.479 635.875 l
-681.538 635.875 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-701.24 87.3 m
-705.18 87.3 l
-705.18 377.8 l
-701.24 377.8 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-720.941 87.3 m
-724.881 87.3 l
-724.881 252.374 l
-720.941 252.374 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-740.642 87.3 m
-744.583 87.3 l
-744.583 218.488 l
-740.642 218.488 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-760.344 87.3 m
-764.284 87.3 l
-764.284 87.3042 l
-760.344 87.3042 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-780.045 87.3 m
-783.985 87.3 l
-783.985 87.3 l
-780.045 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-799.746 87.3 m
-803.687 87.3 l
-803.687 87.3063 l
-799.746 87.3063 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-819.448 87.3 m
-823.388 87.3 l
-823.388 87.3 l
-819.448 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-839.149 87.3 m
-843.089 87.3 l
-843.089 87.3 l
-839.149 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-858.85 87.3 m
-862.791 87.3 l
-862.791 87.3275 l
-858.85 87.3275 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-878.552 87.3 m
-882.492 87.3 l
-882.492 87.9103 l
-878.552 87.9103 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-898.253 87.3 m
-902.193 87.3 l
-902.193 87.3032 l
-898.253 87.3032 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-917.954 87.3 m
-921.894 87.3 l
-921.894 87.3 l
-917.954 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-937.656 87.3 m
-941.596 87.3 l
-941.596 87.3428 l
-937.656 87.3428 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-957.357 87.3 m
-961.297 87.3 l
-961.297 87.3 l
-957.357 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-977.058 87.3 m
-980.998 87.3 l
-980.998 87.6342 l
-977.058 87.6342 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-996.759 87.3 m
-1000.7 87.3 l
-1000.7 87.3005 l
-996.759 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1016.46 87.3 m
-1020.4 87.3 l
-1020.4 88.3912 l
-1016.46 88.3912 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1036.16 87.3 m
-1040.1 87.3 l
-1040.1 87.7345 l
-1036.16 87.7345 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1055.86 87.3 m
-1059.8 87.3 l
-1059.8 87.8152 l
-1055.86 87.8152 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1075.56 87.3 m
-1079.51 87.3 l
-1079.51 87.3005 l
-1075.56 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1095.27 87.3 m
-1099.21 87.3 l
-1099.21 635.199 l
-1095.27 635.199 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1114.97 87.3 m
-1118.91 87.3 l
-1118.91 336.627 l
-1114.97 336.627 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1134.67 87.3 m
-1138.61 87.3 l
-1138.61 87.3 l
-1134.67 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1154.37 87.3 m
-1158.31 87.3 l
-1158.31 335.016 l
-1154.37 335.016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1174.07 87.3 m
-1178.01 87.3 l
-1178.01 785.118 l
-1174.07 785.118 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1193.77 87.3 m
-1197.71 87.3 l
-1197.71 87.3 l
-1193.77 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1213.47 87.3 m
-1217.41 87.3 l
-1217.41 88.0037 l
-1213.47 88.0037 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1233.18 87.3 m
-1237.12 87.3 l
-1237.12 87.3005 l
-1233.18 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1252.88 87.3 m
-1256.82 87.3 l
-1256.82 87.3 l
-1252.88 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1272.58 87.3 m
-1276.52 87.3 l
-1276.52 93.2473 l
-1272.58 93.2473 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1292.28 87.3 m
-1296.22 87.3 l
-1296.22 87.3 l
-1292.28 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-193.931 87.3 m
-197.871 87.3 l
-197.871 87.3412 l
-193.931 87.3412 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-213.632 87.3 m
-217.572 87.3 l
-217.572 87.3016 l
-213.632 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-233.333 87.3 m
-237.274 87.3 l
-237.274 87.3 l
-233.333 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-253.035 87.3 m
-256.975 87.3 l
-256.975 87.3058 l
-253.035 87.3058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-272.736 87.3 m
-276.676 87.3 l
-276.676 90.0277 l
-272.736 90.0277 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-292.437 87.3 m
-296.378 87.3 l
-296.378 87.3011 l
-292.437 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-312.139 87.3 m
-316.079 87.3 l
-316.079 87.3 l
-312.139 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-331.84 87.3 m
-335.78 87.3 l
-335.78 87.3111 l
-331.84 87.3111 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-351.541 87.3 m
-355.482 87.3 l
-355.482 87.4246 l
-351.541 87.4246 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-371.243 87.3 m
-375.183 87.3 l
-375.183 92.2438 l
-371.243 92.2438 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-390.944 87.3 m
-394.884 87.3 l
-394.884 88.4133 l
-390.944 88.4133 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-410.645 87.3 m
-414.586 87.3 l
-414.586 87.3 l
-410.645 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-430.347 87.3 m
-434.287 87.3 l
-434.287 87.3 l
-430.347 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-450.048 87.3 m
-453.988 87.3 l
-453.988 87.3 l
-450.048 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-469.749 87.3 m
-473.69 87.3 l
-473.69 87.3 l
-469.749 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-489.451 87.3 m
-493.391 87.3 l
-493.391 92.3726 l
-489.451 92.3726 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-509.152 87.3 m
-513.092 87.3 l
-513.092 87.5075 l
-509.152 87.5075 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-528.853 87.3 m
-532.793 87.3 l
-532.793 87.3005 l
-528.853 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-548.555 87.3 m
-552.495 87.3 l
-552.495 127.284 l
-548.555 127.284 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-568.256 87.3 m
-572.196 87.3 l
-572.196 109.42 l
-568.256 109.42 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-587.957 87.3 m
-591.897 87.3 l
-591.897 92.1134 l
-587.957 92.1134 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-607.658 87.3 m
-611.599 87.3 l
-611.599 87.7102 l
-607.658 87.7102 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-627.36 87.3 m
-631.3 87.3 l
-631.3 87.3 l
-627.36 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-647.061 87.3 m
-651.001 87.3 l
-651.001 87.3206 l
-647.061 87.3206 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-666.762 87.3 m
-670.703 87.3 l
-670.703 87.3 l
-666.762 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-686.464 87.3 m
-690.404 87.3 l
-690.404 586.204 l
-686.464 586.204 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-706.165 87.3 m
-710.105 87.3 l
-710.105 400.311 l
-706.165 400.311 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-725.866 87.3 m
-729.807 87.3 l
-729.807 312.811 l
-725.866 312.811 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-745.568 87.3 m
-749.508 87.3 l
-749.508 217.166 l
-745.568 217.166 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-765.269 87.3 m
-769.209 87.3 l
-769.209 87.3048 l
-765.269 87.3048 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-784.97 87.3 m
-788.911 87.3 l
-788.911 87.3 l
-784.97 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-804.672 87.3 m
-808.612 87.3 l
-808.612 87.3074 l
-804.672 87.3074 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-824.373 87.3 m
-828.313 87.3 l
-828.313 87.3 l
-824.373 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-844.074 87.3 m
-848.015 87.3 l
-848.015 87.3 l
-844.074 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-863.776 87.3 m
-867.716 87.3 l
-867.716 87.3016 l
-863.776 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-883.477 87.3 m
-887.417 87.3 l
-887.417 87.3348 l
-883.477 87.3348 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-903.178 87.3 m
-907.118 87.3 l
-907.118 87.3084 l
-903.178 87.3084 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-922.88 87.3 m
-926.82 87.3 l
-926.82 87.3 l
-922.88 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-942.581 87.3 m
-946.521 87.3 l
-946.521 87.3375 l
-942.581 87.3375 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-962.282 87.3 m
-966.222 87.3 l
-966.222 87.3 l
-962.282 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-981.983 87.3 m
-985.924 87.3 l
-985.924 87.669 l
-981.983 87.669 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1001.68 87.3 m
-1005.63 87.3 l
-1005.63 87.3011 l
-1001.68 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1021.39 87.3 m
-1025.33 87.3 l
-1025.33 87.4642 l
-1021.39 87.4642 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1041.09 87.3 m
-1045.03 87.3 l
-1045.03 87.376 l
-1041.09 87.376 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1060.79 87.3 m
-1064.73 87.3 l
-1064.73 88.4619 l
-1060.79 88.4619 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1080.49 87.3 m
-1084.43 87.3 l
-1084.43 87.3011 l
-1080.49 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1100.19 87.3 m
-1104.13 87.3 l
-1104.13 645.418 l
-1100.19 645.418 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1119.89 87.3 m
-1123.83 87.3 l
-1123.83 348.468 l
-1119.89 348.468 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1139.59 87.3 m
-1143.53 87.3 l
-1143.53 87.3 l
-1139.59 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1159.3 87.3 m
-1163.24 87.3 l
-1163.24 330.839 l
-1159.3 330.839 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1179 87.3 m
-1182.94 87.3 l
-1182.94 766.593 l
-1179 766.593 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1198.7 87.3 m
-1202.64 87.3 l
-1202.64 87.3 l
-1198.7 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1218.4 87.3 m
-1222.34 87.3 l
-1222.34 87.348 l
-1218.4 87.348 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1238.1 87.3 m
-1242.04 87.3 l
-1242.04 87.3005 l
-1238.1 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1257.8 87.3 m
-1261.74 87.3 l
-1261.74 87.3 l
-1257.8 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1277.5 87.3 m
-1281.44 87.3 l
-1281.44 98.3696 l
-1277.5 98.3696 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1297.2 87.3 m
-1301.14 87.3 l
-1301.14 87.3 l
-1297.2 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.500 setlinewidth
-0 setlinecap
-[1 3] 0 setdash
-0.000 setgray
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-/DejaVuSans findfont
-14.000 scalefont
-setfont
-gsave
-180.353978 25.203909 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /N glyphshow
-28.936523 2.906250 m /b glyphshow
-37.823242 2.906250 m /O glyphshow
-48.842773 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-200.826 87.3 m
-200.826 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-200.826 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-200.826 785.7 o
-grestore
-gsave
-200.531050 29.720928 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /T glyphshow
-24.640625 2.906250 m /a glyphshow
-33.219727 2.906250 m /O glyphshow
-44.239258 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-220.528 87.3 m
-220.528 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-220.528 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-220.528 785.7 o
-grestore
-gsave
-219.154765 31.155751 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /H glyphshow
-28.710938 0.203125 m /f glyphshow
-33.639648 0.203125 m /O glyphshow
-44.659180 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-240.229 87.3 m
-240.229 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-240.229 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-240.229 785.7 o
-grestore
-gsave
-239.203869 33.751677 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /i glyphshow
-30.959961 0.203125 m /O glyphshow
-41.979492 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-259.93 87.3 m
-259.93 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-259.93 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-259.93 785.7 o
-grestore
-gsave
-258.139418 29.001845 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /n glyphshow
-35.943359 0.203125 m /O glyphshow
-46.962891 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-279.632 87.3 m
-279.632 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-279.632 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-279.632 785.7 o
-grestore
-gsave
-278.699513 34.445936 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /T glyphshow
-26.360352 0.203125 m /i glyphshow
-30.250000 0.203125 m /O glyphshow
-41.269531 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-299.333 87.3 m
-299.333 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.333 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.333 785.7 o
-grestore
-gsave
-297.855464 31.341196 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /Z glyphshow
-27.774414 0.203125 m /r glyphshow
-33.530273 0.203125 m /O glyphshow
-44.549805 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-319.034 87.3 m
-319.034 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-319.034 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-319.034 785.7 o
-grestore
-gsave
-318.526770 37.615380 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /A glyphshow
-23.071289 0.203125 m /l glyphshow
-26.960938 0.203125 m /O glyphshow
-37.980469 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-338.736 87.3 m
-338.736 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-338.736 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-338.736 785.7 o
-grestore
-gsave
-337.457695 31.865103 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /G glyphshow
-24.342773 0.203125 m /a glyphshow
-32.921875 0.203125 m /O glyphshow
-43.941406 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-358.437 87.3 m
-358.437 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-358.437 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-358.437 785.7 o
-grestore
-gsave
-357.524997 34.596862 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /S glyphshow
-22.380859 0.203125 m /c glyphshow
-30.078125 0.203125 m /O glyphshow
-41.097656 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-378.138 87.3 m
-378.138 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-378.138 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-378.138 785.7 o
-grestore
-gsave
-376.029855 26.632308 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /G glyphshow
-29.203125 0.203125 m /e glyphshow
-37.816406 0.203125 m /O glyphshow
-48.835938 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-397.839 87.3 m
-397.839 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-397.839 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-397.839 785.7 o
-grestore
-gsave
-396.367528 30.416214 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /H glyphshow
-28.881836 0.203125 m /f glyphshow
-33.810547 0.203125 m /O glyphshow
-44.830078 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-417.541 87.3 m
-417.541 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-417.541 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-417.541 785.7 o
-grestore
-gsave
-416.416632 33.012140 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /S glyphshow
-27.241211 0.203125 m /i glyphshow
-31.130859 0.203125 m /O glyphshow
-42.150391 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-437.242 87.3 m
-437.242 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-437.242 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-437.242 785.7 o
-grestore
-gsave
-436.210961 33.706399 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /T glyphshow
-26.531250 0.203125 m /i glyphshow
-30.420898 0.203125 m /O glyphshow
-41.440430 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-456.943 87.3 m
-456.943 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-456.943 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-456.943 785.7 o
-grestore
-gsave
-455.366911 30.601659 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /Z glyphshow
-27.945312 0.203125 m /r glyphshow
-33.701172 0.203125 m /O glyphshow
-44.720703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-476.645 87.3 m
-476.645 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-476.645 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-476.645 785.7 o
-grestore
-gsave
-475.480139 32.710288 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /d glyphshow
-18.662109 0.203125 m /S glyphshow
-27.548828 0.203125 m /i glyphshow
-31.438477 0.203125 m /O glyphshow
-42.458008 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-496.346 87.3 m
-496.346 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-496.346 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-496.346 785.7 o
-grestore
-gsave
-494.536429 27.895751 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /N glyphshow
-27.541992 0.203125 m /b glyphshow
-36.428711 0.203125 m /O glyphshow
-47.448242 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-516.047 87.3 m
-516.047 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-516.047 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-516.047 785.7 o
-grestore
-gsave
-514.713501 32.412770 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /T glyphshow
-23.246094 0.203125 m /a glyphshow
-31.825195 0.203125 m /O glyphshow
-42.844727 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-535.749 87.3 m
-535.749 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-535.749 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-535.749 785.7 o
-grestore
-gsave
-533.734836 26.371400 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /N glyphshow
-29.121094 0.203125 m /b glyphshow
-38.007812 0.203125 m /O glyphshow
-49.027344 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-555.45 87.3 m
-555.45 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 785.7 o
-grestore
-gsave
-553.911908 30.888419 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /T glyphshow
-24.825195 0.203125 m /a glyphshow
-33.404297 0.203125 m /O glyphshow
-44.423828 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-575.151 87.3 m
-575.151 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-575.151 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-575.151 785.7 o
-grestore
-gsave
-573.514145 30.148882 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /a glyphshow
-19.427734 0.203125 m /T glyphshow
-25.604492 0.203125 m /a glyphshow
-34.183594 0.203125 m /O glyphshow
-45.203125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-594.853 87.3 m
-594.853 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.853 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.853 785.7 o
-grestore
-gsave
-592.602787 25.575827 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /G glyphshow
-30.310547 0.203125 m /e glyphshow
-38.923828 0.203125 m /O glyphshow
-49.943359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-614.554 87.3 m
-614.554 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-614.554 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-614.554 785.7 o
-grestore
-gsave
-613.288248 31.955658 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /S glyphshow
-28.348633 0.203125 m /i glyphshow
-32.238281 0.203125 m /O glyphshow
-43.257812 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-634.255 87.3 m
-634.255 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-634.255 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-634.255 785.7 o
-grestore
-gsave
-633.543598 36.091028 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-9.180664 0.203125 m /N glyphshow
-19.653320 0.203125 m /b glyphshow
-28.540039 0.203125 m /O glyphshow
-39.559570 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-653.957 87.3 m
-653.957 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-653.957 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-653.957 785.7 o
-grestore
-gsave
-653.866256 41.694714 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-8.055664 0.203125 m /T glyphshow
-14.232422 0.203125 m /a glyphshow
-22.811523 0.203125 m /O glyphshow
-33.831055 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-673.658 87.3 m
-673.658 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-673.658 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-673.658 785.7 o
-grestore
-gsave
-672.026790 30.194159 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /C glyphshow
-26.154297 0.203125 m /o glyphshow
-34.719727 0.203125 m /O glyphshow
-45.739258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-693.359 87.3 m
-693.359 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-693.359 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-693.359 785.7 o
-grestore
-gsave
-692.043541 32.548604 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /F glyphshow
-23.681641 0.203125 m /e glyphshow
-32.294922 0.203125 m /O glyphshow
-43.314453 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-713.061 87.3 m
-713.061 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-713.061 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-713.061 785.7 o
-grestore
-gsave
-711.091743 27.673697 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /M glyphshow
-28.458008 0.203125 m /n glyphshow
-37.331055 0.203125 m /O glyphshow
-48.350586 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-732.762 87.3 m
-732.762 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-732.762 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-732.762 785.7 o
-grestore
-gsave
-731.767094 33.978065 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /N glyphshow
-26.851562 0.203125 m /i glyphshow
-30.741211 0.203125 m /O glyphshow
-41.760742 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-752.463 87.3 m
-752.463 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-752.463 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-752.463 785.7 o
-grestore
-gsave
-751.427969 33.676214 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /N glyphshow
-22.162109 0.203125 m /b glyphshow
-31.048828 0.203125 m /O glyphshow
-42.068359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-772.164 87.3 m
-772.164 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-772.164 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-772.164 785.7 o
-grestore
-gsave
-771.725782 38.128528 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /T glyphshow
-17.866211 0.203125 m /a glyphshow
-26.445312 0.203125 m /O glyphshow
-37.464844 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-791.866 87.3 m
-791.866 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-791.866 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-791.866 785.7 o
-grestore
-gsave
-789.878228 26.567603 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /N glyphshow
-29.524414 0.203125 m /b glyphshow
-38.411133 0.203125 m /O glyphshow
-49.430664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-811.567 87.3 m
-811.567 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-811.567 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-811.567 785.7 o
-grestore
-gsave
-810.055300 31.084622 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /T glyphshow
-25.228516 0.203125 m /a glyphshow
-33.807617 0.203125 m /O glyphshow
-44.827148 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-831.268 87.3 m
-831.268 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-831.268 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-831.268 785.7 o
-grestore
-gsave
-830.006766 31.985843 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /H glyphshow
-27.856445 0.203125 m /f glyphshow
-32.785156 0.203125 m /O glyphshow
-43.804688 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-850.97 87.3 m
-850.97 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-850.97 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-850.97 785.7 o
-grestore
-gsave
-850.055870 34.581769 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /i glyphshow
-30.105469 0.203125 m /O glyphshow
-41.125000 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-870.671 87.3 m
-870.671 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-870.671 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-870.671 785.7 o
-grestore
-gsave
-869.112160 29.767233 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /n glyphshow
-35.088867 0.203125 m /O glyphshow
-46.108398 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-890.372 87.3 m
-890.372 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-890.372 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-890.372 785.7 o
-grestore
-gsave
-889.551514 35.276028 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /T glyphshow
-25.505859 0.203125 m /i glyphshow
-29.395508 0.203125 m /O glyphshow
-40.415039 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-910.074 87.3 m
-910.074 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-910.074 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-910.074 785.7 o
-grestore
-gsave
-908.828205 32.106584 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /Z glyphshow
-26.919922 0.203125 m /r glyphshow
-32.675781 0.203125 m /O glyphshow
-43.695312 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-929.775 87.3 m
-929.775 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 785.7 o
-grestore
-gsave
-927.842033 26.975103 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /N glyphshow
-29.086914 0.203125 m /b glyphshow
-37.973633 0.203125 m /O glyphshow
-48.993164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-949.476 87.3 m
-949.476 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-949.476 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-949.476 785.7 o
-grestore
-gsave
-948.139846 31.427418 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /T glyphshow
-24.791016 0.203125 m /a glyphshow
-33.370117 0.203125 m /O glyphshow
-44.389648 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-969.178 87.3 m
-969.178 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-969.178 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-969.178 785.7 o
-grestore
-gsave
-968.057518 33.042325 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /b glyphshow
-17.773438 0.203125 m /A glyphshow
-27.350586 0.203125 m /l glyphshow
-31.240234 0.203125 m /O glyphshow
-42.259766 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-988.879 87.3 m
-988.879 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-988.879 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-988.879 785.7 o
-grestore
-gsave
-987.502037 31.125566 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /H glyphshow
-28.287109 0.203125 m /f glyphshow
-33.215820 0.203125 m /O glyphshow
-44.235352 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1008.58 87.3 m
-1008.58 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1008.58 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1008.58 785.7 o
-grestore
-gsave
-1007.551141 33.721491 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /i glyphshow
-30.536133 0.203125 m /O glyphshow
-41.555664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1028.28 87.3 m
-1028.28 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1028.28 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1028.28 785.7 o
-grestore
-gsave
-1026.486690 28.971660 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /n glyphshow
-35.519531 0.203125 m /O glyphshow
-46.539062 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1047.98 87.3 m
-1047.98 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1047.98 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1047.98 785.7 o
-grestore
-gsave
-1047.046785 34.415751 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /T glyphshow
-25.936523 0.203125 m /i glyphshow
-29.826172 0.203125 m /O glyphshow
-40.845703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1067.68 87.3 m
-1067.68 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1067.68 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1067.68 785.7 o
-grestore
-gsave
-1066.202735 31.311011 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /Z glyphshow
-27.350586 0.203125 m /r glyphshow
-33.106445 0.203125 m /O glyphshow
-44.125977 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1087.39 87.3 m
-1087.39 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1087.39 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1087.39 785.7 o
-grestore
-gsave
-1085.920227 31.431752 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /C glyphshow
-24.417969 0.203125 m /o glyphshow
-32.983398 0.203125 m /O glyphshow
-44.002930 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1107.09 87.3 m
-1107.09 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1107.09 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1107.09 785.7 o
-grestore
-gsave
-1105.936979 33.786196 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /F glyphshow
-21.945312 0.203125 m /e glyphshow
-30.558594 0.203125 m /O glyphshow
-41.578125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1126.79 87.3 m
-1126.79 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1126.79 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1126.79 785.7 o
-grestore
-gsave
-1125.815652 34.144084 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /H glyphshow
-25.169922 0.203125 m /f glyphshow
-30.098633 0.203125 m /O glyphshow
-41.118164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1146.49 87.3 m
-1146.49 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1146.49 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1146.49 785.7 o
-grestore
-gsave
-1144.686497 28.911289 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /M glyphshow
-26.721680 0.203125 m /n glyphshow
-35.594727 0.203125 m /O glyphshow
-46.614258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1166.19 87.3 m
-1166.19 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1166.19 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1166.19 785.7 o
-grestore
-gsave
-1165.361847 35.215658 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /N glyphshow
-25.115234 0.203125 m /i glyphshow
-29.004883 0.203125 m /O glyphshow
-40.024414 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1185.89 87.3 m
-1185.89 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1185.89 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1185.89 785.7 o
-grestore
-gsave
-1185.267387 36.740010 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /i glyphshow
-27.418945 0.203125 m /O glyphshow
-38.438477 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1205.59 87.3 m
-1205.59 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1205.59 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1205.59 785.7 o
-grestore
-gsave
-1204.202937 31.990178 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /n glyphshow
-32.402344 0.203125 m /O glyphshow
-43.421875 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1225.29 87.3 m
-1225.29 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1225.29 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1225.29 785.7 o
-grestore
-gsave
-1224.763032 37.434269 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /T glyphshow
-22.819336 0.203125 m /i glyphshow
-26.708984 0.203125 m /O glyphshow
-37.728516 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1245 87.3 m
-1245 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1245 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1245 785.7 o
-grestore
-gsave
-1243.918982 34.329529 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /Z glyphshow
-24.233398 0.203125 m /r glyphshow
-29.989258 0.203125 m /O glyphshow
-41.008789 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1264.7 87.3 m
-1264.7 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1264.7 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1264.7 785.7 o
-grestore
-gsave
-1263.977615 36.030658 translate
-75.000000 rotate
-0.000000 0.203125 m /T glyphshow
-8.551758 0.203125 m /l glyphshow
-12.441406 0.203125 m /T glyphshow
-18.618164 0.203125 m /a glyphshow
-27.197266 0.203125 m /O glyphshow
-38.216797 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1284.4 87.3 m
-1284.4 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1284.4 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1284.4 785.7 o
-grestore
-gsave
-1284.495829 42.128065 translate
-75.000000 rotate
-0.000000 0.203125 m /Y glyphshow
-7.426758 0.203125 m /A glyphshow
-17.003906 0.203125 m /l glyphshow
-20.893555 0.203125 m /O glyphshow
-31.913086 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-139.421875 80.495312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 164.9 m
-1304.1 164.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 164.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 164.9 o
-grestore
-gsave
-140.031250 158.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 242.5 m
-1304.1 242.5 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 242.5 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 242.5 o
-grestore
-gsave
-139.250000 235.695312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 320.1 m
-1304.1 320.1 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 320.1 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 320.1 o
-grestore
-gsave
-139.375000 313.295313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 397.7 m
-1304.1 397.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 397.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 397.7 o
-grestore
-gsave
-139.468750 390.895313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /eight glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 475.3 m
-1304.1 475.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 475.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 475.3 o
-grestore
-gsave
-139.421875 468.495313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 552.9 m
-1304.1 552.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 552.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 552.9 o
-grestore
-gsave
-140.031250 546.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 630.5 m
-1304.1 630.5 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 630.5 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 630.5 o
-grestore
-gsave
-139.250000 623.695313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 708.1 m
-1304.1 708.1 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 708.1 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 708.1 o
-grestore
-gsave
-139.375000 701.295313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-139.468750 778.895313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /eight glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-134.250000 320.671875 translate
-90.000000 rotate
-0.000000 4.718750 m /bar glyphshow
-6.738281 4.718750 m /S glyphshow
-19.433594 4.718750 m /m glyphshow
-38.916016 4.718750 m /e glyphshow
-51.220703 4.718750 m /a glyphshow
-63.476562 4.718750 m /r glyphshow
-71.699219 4.718750 m /i glyphshow
-77.255859 4.718750 m /n glyphshow
-89.931641 4.718750 m /g glyphshow
-102.626953 4.718750 m /space glyphshow
-108.984375 4.718750 m /e glyphshow
-121.289062 4.718750 m /n glyphshow
-133.964844 4.718750 m /e glyphshow
-146.269531 4.718750 m /r glyphshow
-154.117188 4.718750 m /g glyphshow
-166.812500 4.718750 m /y glyphshow
-178.648438 4.718750 m /bar glyphshow
-185.386719 4.718750 m /space glyphshow
-191.744141 4.718750 m /bracketleft glyphshow
-199.546875 4.718750 m /e glyphshow
-211.851562 4.718750 m /V glyphshow
-225.533203 4.718750 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-gsave
-190.125 690.534 m
-392.613 690.534 l
-392.613 776.7 l
-190.125 776.7 l
-190.125 690.534 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-gsave
-197.325 755.828 m
-233.325 755.828 l
-233.325 768.428 l
-197.325 768.428 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-247.725000 751.578125 translate
-0.000000 rotate
-0.000000 4.250000 m /l glyphshow
-5.000977 4.250000 m /d glyphshow
-16.426758 4.250000 m /a glyphshow
-27.457031 4.250000 m /underscore glyphshow
-36.457031 4.250000 m /g glyphshow
-47.882812 4.250000 m /b glyphshow
-59.308594 4.250000 m /r glyphshow
-66.708984 4.250000 m /v glyphshow
-77.361328 4.250000 m /underscore glyphshow
-86.361328 4.250000 m /one glyphshow
-97.813477 4.250000 m /two glyphshow
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-197.325 728.906 m
-233.325 728.906 l
-233.325 741.506 l
-197.325 741.506 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-247.725000 724.656250 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /underscore glyphshow
-42.925781 4.250000 m /g glyphshow
-54.351562 4.250000 m /b glyphshow
-65.777344 4.250000 m /r glyphshow
-73.177734 4.250000 m /v glyphshow
-83.830078 4.250000 m /underscore glyphshow
-92.830078 4.250000 m /one glyphshow
-104.282227 4.250000 m /two glyphshow
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-197.325 701.984 m
-233.325 701.984 l
-233.325 714.584 l
-197.325 714.584 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-247.725000 697.734375 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png
deleted file mode 100644
index d7c1f9b2..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.pdf b/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.pdf
deleted file mode 100644
index a0b9090d..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.svg b/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.svg
deleted file mode 100644
index fc7ad6a1..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/img/workfunctions.svg
+++ /dev/null
@@ -1,4389 +0,0 @@
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/pandocfilter.py b/docs/assets/2018_PRACE_MaX/latex/pandocfilter.py
deleted file mode 100755
index 1fdf5719..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/pandocfilter.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python
-"""
-Filters for conversion from LaTeX to MarkDown.
-
- * handle bash/python code blocks
-"""
-from __future__ import absolute_import
-from pandocfilters import toJSONFilter, CodeBlock
-
-
-def log(msg):
- """Log message to file."""
- with open('/tmp/dump', 'w') as f:
- f.write(msg)
-
-
-def code(key, value, format, meta): # pylint: disable=unused-argument,redefined-builtin
- """Handle python/console code blocks."""
- if key == "CodeBlock":
- properties = value[0]
- attributes = properties[2]
-
- # this signifies python codeblock
- if ['frame', 'leftline'] in attributes:
- # set 'python' class
- properties[1] = ['python']
- else:
- # set class
- # - for markdown: use 'terminal'
- # - for rst: use 'console'
- properties[1] = ['console']
-
- # unset attrs
- properties[2] = []
-
- value[0] = properties
-
- #log(str(value))
-
- return CodeBlock(*value)
-
-
-if __name__ == "__main__":
- toJSONFilter(code)
diff --git a/docs/assets/2018_PRACE_MaX/latex/requirements.txt b/docs/assets/2018_PRACE_MaX/latex/requirements.txt
deleted file mode 100644
index 55260b13..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-pandocfilters
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/1_1_ssh_connection.tex b/docs/assets/2018_PRACE_MaX/latex/sections/1_1_ssh_connection.tex
deleted file mode 100644
index b526c100..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/1_1_ssh_connection.tex
+++ /dev/null
@@ -1,74 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-%\newpage
-\subsection{Instructions to SSH to the Amazon EC2 instance}
-\label{sec:sshintro}
-You should have received an IP address from the instructors, and two files with a private and a public
-SSH key (\verb|aiida_tutorial_NUM| and
-\verb|aiida_tutorial_NUM.pub|), where \verb|NUM| is an
-integer.
-These allow you to connect to an Amazon EC2 instance (different for
-each participant of the tutorial). To connect via \texttt{ssh} to this machine follow the steps below, depending on the computer you have.
-
-\textbf{Note!} \emph{If you decide to work in pairs, one of the two people should discard his email. The other person should forward his email to the colleague, and both should then use the same virtual machine IP and account (ssh key). In this case, you will be both using the same account, so be careful not to delete the work of your colleague.}
-
-\subsubsection*{Linux and Mac}
-\begin{itemize}
-% \item If you are using your own laptop, skip this point and go
-% directly to the next one. If your are using one the classroom
-% computer, login into one of the machines using your ETHZ
-% account. If you are not from ETHZ you should have received a
-% username and password to connect first to
-% \texttt{login.phys.ethz.ch} (please do not forget to change this
-% password).
- \item If needed, create a \texttt{.ssh} directory in your home (\verb|mkdir ~/.ssh|), and set its permissions:
- \\ \verb|chmod 700 ~/.ssh|
- \item Copy in this \texttt{.ssh} directory the two files
- \verb|aiida_tutorial_NUM| and\\
- \verb|aiida_tutorial_NUM.pub|
- \item Set the correct permissions on the private key: \\
- \verb|chmod 600 ~/.ssh/aiida_tutorial_NUM| (then check with \verb|ls -l| that the permissions of this file are now \verb|-rw-------|).
- \item Create (or modify if it already exists) the \texttt{config} file in your \texttt{.ssh} directory, adding the following lines:
-\begin{verbatim}
-Host aiidatutorial
- Hostname IP_ADDRESS
- User aiida
- IdentityFile ~/.ssh/aiida_tutorial_NUM
- LocalForward 8888 localhost:8888
-\end{verbatim}
-where you have to replace \verb|IP_ADDRESS| with the IP address
-provided to you.
- \item You can then \texttt{ssh} to the Amazon EC2 instance from the
- terminal, using simply
- \begin{verbatim}
- ssh -X -C aiidatutorial
- \end{verbatim}
- (connecting with \verb|-X| --- note that sometimes \verb|-Y| is needed
- instead ---
- will allow you to run graphical programs such as xmgrace or
- gnuplot interactively, even if they might not be very responsive as the
- Amazon virtual machines are in Ireland).
-\end{itemize}
-
-\subsubsection*{Windows}
-\begin{itemize}
-\item Install PuTTY.
-\item Run PuTTYGen, load the \verb|aiida_tutorial_NN| private key
- (button \verb|"Load"|). remember to choose to show ``All files
- (*.*)'' in the window, and select the file without any extension
- (Type: File).
-\item In the same window, click on ``Save private Key'', and save the
- key with the name\\ \verb|aiida_tutorial_NN.ppk|.
-\item Run Pageant: it will add a new icon near the clock, in the
- bottom right of your screen.
-\item Right click on this Pageant icon, and click on ``View Keys''.
-\item Click on \verb|"Add key"| and select the
- \verb|aiida_tutorial_NN.ppk| you saved a few steps above.
-\item Run PuTTY, put the given IP address as hostname. Write \verb|aiidatutorial| in Saved Sessions and click \verb|Save|. Go to Connection $\to$ Data and put \verb|aiida| as autologin username. Under Connection, go to SSH $\to$ Tunnels, type \texttt{8888} in the \texttt{Source Port} box and \texttt{localhost:8888} in \texttt{Destination} and click \verb|Add|. Click on \verb|Save| again on the Session screen.
-
-\item Now select \verb|aiidatutorial| from the session list, click \verb|Load| and, finally, \verb|open|.
-
-\end{itemize}
-
-\subsection*{Everybody: connect to the machine and start jupyter}
-
-Before starting the tutorial, connect via SSH to the Amazon machine as explained above (the Amazon machine already contains a pre-configured AiiDA installation and some test data for this tutorial).
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/1_2_preparation.tex b/docs/assets/2018_PRACE_MaX/latex/sections/1_2_preparation.tex
deleted file mode 100644
index 69636bca..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/1_2_preparation.tex
+++ /dev/null
@@ -1,35 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\subsection*{Before starting}
-
-Once connected to your machine, type in the remote terminal
-\begin{bashcommand}
- workon aiida
-\end{bashcommand}
-This will enable the virtual environment in which AiiDA is installed, allowing you to use AiiDA. %You will need to type this command at every new connection you open to the Amazon machine.
-
-Now type in the same terminal
-\begin{bashcommand}
- jupyter notebook --no-browser
-\end{bashcommand}
-This will run a server with a web application called \texttt{jupyter}, which is used to create interactive python notebooks. To connect to this application, copy the URL that has been printed to the terminal (it will be something like \texttt{http://localhost:8888/?token=2a3ba37cd1...}) and paste it into the URL bar of a web browser. You will see a list of folders: these are folders on the remote Amazon computer.
-We will use \texttt{jupyter} in section \ref{sec:querybuilder} and optionally in other sections as well.
-
-Now launch an identical \cmd{ssh} connection (again, as explained above) in another terminal, and type \texttt{workon aiida} here too. This terminal is the one you will actually use in this tutorial.
-
-Note: Since the port listening is set to a specific port (8888) in the section \ref{sec:sshintro}, you have to make sure on the server the Jupiter notebook is running on the port 8888. Otherwise, use an alternative port for listening.
-
-% \textbf{We suggest to open two terminals with such an \cmd{ssh} connection}:
-
-A final note: for details on AiiDA that may not be fully explained here, you can refer to the full AiiDA documentation, available online at \url{http://aiida-core.readthedocs.io/en/latest/}.
-
-\subsection*{Troubleshooting tips (in case you have issues later)}
-% Should some of these also be in the online version?
-\begin{itemize}
-\item If you get an error like \texttt{ImportError: No module named aiida} or \texttt{No command 'verdi' found} double check that you have loaded the virtual environment with \texttt{workon aiida} before launching python, ipython or the jupyter server.
-\item If your browser cannot connect to the jupyter instance, check that you have correctly configured SSH tunneling/forwarding as described above. Also note that you should run the jupyter server from the terminal connected to the Amazon machine, while the web browser should be opened locally on your laptop or worstation.
-\item The Jupyter Notebook officially supports the latest stable versions of Chrome, Safari and Firefox. See \url{http://jupyter-notebook.readthedocs.io/en/4.x/notebook.html#browser-compatibility} for more information on broswer compatibility (and update your browser if it is too old).
-% Marco: tested and working on Firefox 53.0.2
-% Change this link if we switch to jupyter 5 or later
-\end{itemize}
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/2_verdi_graphs.tex b/docs/assets/2018_PRACE_MaX/latex/sections/2_verdi_graphs.tex
deleted file mode 100644
index 4570389c..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/2_verdi_graphs.tex
+++ /dev/null
@@ -1,268 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\section[Verdi command line]{Using the verdi command line}
-
-This part of the tutorial will help to familiarize you with the command-line utility \cmd{verdi}, one of the most common ways to interact with AiiDA. \cmd{verdi} with its subcommands enables a variety of operations such as inspecting the status of ongoing or terminated calculations, showing the details of calculations, computers, codes, or data structures, access the input and the output of a calculation, etc. Similar to the \texttt{bash} shell, verdi command support Tab completion. Try right now to type \cmd{verdi}, followed by a space, in a terminal and tap Tab twice to have a list of subcommands. Whenever you need the explanation of a command type \cmd{verdi help} or add \cmd{-h} flag if you are using any of the \cmd{verdi} subcommands.
-Finally, fields enclosed in angular brackets, such as \texttt{}, are placeholders to be replaced by the actual value of that field (an integer, a string, etc...).
-
-\subsection{The list of calculations}
-Let us try our first \cmd{verdi} commands. Type in the terminal
-\begin{bashcommand}
-verdi calculation list
-\end{bashcommand}
-(Note: the first time you run this command, it might take a few seconds as it is the first time you are accessing the database in the virtual machine. Subsequent calls will be faster).
-This will print the list of ongoing calculations, which should be empty. The first output line should look like
-\begin{verbatim}
-PK Creation State Type Computer Job state
----- ---------- ------- ------ ---------- -----------
-
-Total results: 0
-
-Info: last time an entry changed state: never
-\end{verbatim}
-
-In order to print a list with all calculations that finished correctly in the AiiDA database, you can use the \cmd{-s/-{}-states} flag as follows:
-\begin{bashcommand}
-verdi calculation list --states FINISHED
-\end{bashcommand}
-Another very typical option combination allows to get calculations in \emph{any} state (flag \cmd{-a}) generated in the past \cmd{NUM} days (\cmd{-p }): e.g., for calculation in the past 1 day: \cmd{verdi calculation list -p1 -a}. Since you have not yet run any calculations at the virtual machine that you currently use and all the existing calculations were imported and belong to a different user, you can type (flag \cmd{-A} shows the calculations of all the users):
-\begin{bashcommand}
-verdi calculation list -A --states IMPORTED
-\end{bashcommand}
-
-Each row of the output identifies a calculation and shows some information about it. For a more detailed list of properties, choose one row by noting down its PK (primary key) number (first column of the output) and type in the terminal
-\begin{bashcommand}
-verdi calculation show
-\end{bashcommand}
-The output depends on the specific pk chosen and should inform you about the input nodes (e.g. pseudopotentials, kpoints, initial structure, etc.), and output nodes (e.g. output structure, output parameters, etc.).
-
-\begin{tcolorbox}
-\textbf{PKs/IDs vs.\@ UUIDs}: Beside the (integer) PK, very convenient to reference a calculation or data node
-in your database, every node has a UUID (Universally Unique ID) to identify it, that is preserved even when you share some nodes with coworkers---while the PK
-will most likely change. You can see the UUID in the output of \texttt{verdi calculation show} or \texttt{verdi node show}. Moreover, if you have already a UUID and you want
-to get the corresponding PK in your database, you can use \texttt{verdi node show -u },
-as we are going to do now.
-\end{tcolorbox}
-
-Let us now consider the node with \texttt{UUID = ce81c420-7751-48f6-af8e-eb7c6a30cec3}, which identifies a relaxation of a BaTiO$_3$ unit cell run with Quantum Espresso \cmd{pw.x}.
-You can check the information on this node and get the PK with:
-\begin{verbatim}
-$ verdi node show -u ce81c420-7751-48f6-af8e-eb7c6a30cec3
-Property Value
-------------- ------------------------------------
-type PwCalculation
-pk 4235
-uuid ce81c420-7751-48f6-af8e-eb7c6a30cec3
-label
-description
-ctime 2014-10-27 17:51:21.781045+00:00
-mtime 2018-05-16 11:19:39.848446+00:00
-process state
-finish status
-computer [2] daint
-code pw-SVN-piz-daint
-
-Inputs PK Type
----------- ---- -------------
-parameters 4236 ParameterData
-kpoints 4526 KpointsData
-pseudo_Ba 966 UpfData
-pseudo_Ti 4315 UpfData
-settings 4529 ParameterData
-pseudo_O 4342 UpfData
-structure 436 StructureData
-
-Outputs PK Type
------------------------ ---- -------------
-output_kpoints 3665 KpointsData
-output_parameters 3670 ParameterData
-output_structure 3666 StructureData
-retrieved 3668 FolderData
-output_trajectory_array 265 ArrayData
-remote_folder 1977 RemoteData
-\end{verbatim}
-\emph{Keep in mind that you can also use just a part (beginning) of the UUID, as long as it is unique, to show the node information information.} For example, to display the above information, you could also type \cmd{verdi node show -u ce81c420}. In what follows, we are going to mention only the prefixes of the UUIDs since they are sufficient to identify the correct node.
-
-\subsection{A typical AiiDA graph}
-\label{sec:aiida_graph}
-AiiDA stores inputs required by a calculation as well as the its outputs in the database. These objects are connected in a graph that looks like Fig.~\ref{fig:graph}. We suggest that you have a look to the figure before going ahead.
-
-\begin{figure}
-\centering
-\includegraphics[width=0.5\textwidth]{img/graph/graph-inputonly}
-
-\vspace {1cm}
-
-\includegraphics[width=0.5\textwidth]{img/graph/graph-full}
-\caption{\label{fig:graph}\textbf{(a, top)} Graph with all inputs (data, circles; and code, diamond) to the Quantum Espresso calculation (square) that you will create in Sec.~\ref{sec:qe} of this tutorial. \textbf{(b, bottom)} Same as (a), but also with the outputs that the daemon will create and connect automatically. The RemoteData node is created during submission and can be thought as a symbolic link to the remote folder in which the calculation runs on the cluster. The other nodes are created when the calculation has finished, after retrieval and parsing. The node with linkname ``retrieved'' contains the raw output files stored in the AiiDA repository; all other nodes are added by the parser. Additional nodes (symbolized in gray) can be added by the parser (e.g., an output StructureData if you performed a relaxation calculation, a TrajectoryData for molecular dynamics, \ldots).}
-\end{figure}
-
-You can create a similar graph for any calculation node by using the utility \cmd{verdi graph generate }. For example, before you obtained information (in text form) for \texttt{UUID = ce81c420}. To visualize similar information in graph(ical) form, run (replacing \cmd{} with the PK of the node):
-\begin{bashcommand}
-verdi graph generate
-\end{bashcommand}
-
-This command will create the file \texttt{.dot} that can be rendered by means of the utility \cmd{dot}. If you now type
-\begin{bashcommand}
-dot -Tpdf -o .pdf .dot
-\end{bashcommand}
-you will create a pdf file \texttt{.pdf}. You can open this file on the Amazon machine by using \cmd{evince} or, if you feel that the ssh connection is too slow, copy it via \cmd{scp} to your local machine.
-To do so, if you are using Linux/Mac OS X, you can type in your \emph{local} machine:
-\begin{bashcommand}
-scp aiidatutorial:
-\end{bashcommand}
-and then open the file. Alternatively, you can use graphical software to achieve the same, for instance: WinSCP on Windows, Cyberduck on the Mac, or the ``Connect to server'' option in the main menu after clicking on the desktop for Ubuntu.
-
-Spend some time to familiarize yourself with the graph structure. Choose the root node (highlighted in blue) and trace back the parent calculation which produced the structure used as an input. This is an example of a Quantum ESPRESSO pw.x calculation, where the input structure was actually obtained as the output of a previous calculation. We will now inspect the different elements of this graph.
-
-\subsection{Inspecting the nodes of a graph}
-\subsubsection*{ParameterData and Calculations}
-Now, let us have a closer look at the some of the nodes appearing in the graph.
-Choose the node of the type \texttt{ParameterData} with input link name \texttt{parameters}
-(to double check, it should have UUID \texttt{d1bbe1ea})
-and type in the terminal:
-\begin{bashcommand}
-verdi data parameter show
-\end{bashcommand}
-A \texttt{ParameterData} contains a dictionary (i.e., key--value pairs), stored in the database in a format ready to be queried (we will learn how to run queries later on in this tutorial). The command above will print the content dictionary, containing the parameters used to define the input file for the calculation. You can compare the dictionary with the content of the raw input file to Quantum ESPRESSO (that was generated by AiiDA) via the command
-\begin{bashcommand}
-verdi calculation inputcat
-\end{bashcommand}
-where you substitute the pk of the calculation node.
-Check the consistency of the parameters written in the input file and those stored in the ParameterData node. Even if you don't know the meaning of the input flags of a Quantum ESPRESSO calculation, you should be able to see how the input dictionary
-has been converted to Fortran namelists.
-
-The previous command just printed the content of the ``default'' input file \texttt{aiida.in}.
-To see a list of all the files used to run a calculation (input file, submission script, etc.) instead type
-\begin{bashcommand}
-verdi calculation inputls
-\end{bashcommand}
-(Adding a \texttt{-{}-color} flag allows you to easily distinguish files from folders by a different coloring).
-
-Once you know the name of the file you want to visualize, you can call the \cmd{verdi
-calculation inputcat} command specifying the path. For instance, to see the submission
-script, you can do:
-\begin{bashcommand}
-verdi calculation inputcat -p _aiidasubmit.sh
-\end{bashcommand}
-
-%%%%%%%%%%%%%%%%%%%%%%Structure data%%%%%%%%%%%%%%%%%%%
-\subsubsection*{StructureData}
-Now let us focus on StructureData objects, representing a crystal structure.
-We can consider for instance the input structure to the calculation we were
-considering before (it should have UUID prefix \texttt{3a4b1270}).
-Such objects can be inspected interactively by means of an atomic viewer such as the one provided by \texttt{ase}. AiiDA however supports several other viewers such as \texttt{xcrysden}, \texttt{jmol}, and \texttt{vmd}. Type in the terminal
-\begin{bashcommand}
-verdi data structure show --format ase
-\end{bashcommand}
-to show the selected structure (it will take a few seconds to appear, and you can rotate the view with the right mouse button---if
-you receive some errors, make sure you started your SSH connection with the
-\texttt{-X} or \texttt{-Y} flag).
-
-Alternatively, especially if showing them interactively is too slow over SSH, you can export the content of a structure node in various popular formats such as \texttt{xyz} or \texttt{xsf}. This is achieved by typing in the terminal
-\begin{bashcommand}
-verdi data structure export --format xsf > .xsf
-\end{bashcommand}
-You can open the generated \texttt{xsf} file and observe the cell and the coordinates. Then, you can then copy \texttt{.xsf} from the Amazon machine to your local one and then visualize it, e.g. with xcrysden (if you have it installed):
-\begin{bashcommand}
-xcrysden --xsf .xsf
-\end{bashcommand}
-
-%%%%%%%%Verdi code%%%%%%%%%%%%
-\subsubsection*{Codes and computers}
-Let us focus now on the nodes of type \texttt{code}. A code represents (in the database) the actual executable used to run the calculation. Find the pk of such a node in the graph and type
-\begin{bashcommand}
-verdi code show
-\end{bashcommand}
-
-The command prints information on the plugin used to interface the code to AiiDA, the remote machine on which the code is executed, the path of its executable, etc. To show a list of all available codes type
-\begin{bashcommand}
-verdi code list
-\end{bashcommand}
-If you want to show all codes, including hidden ones and those created by other users, use \texttt{verdi code list -a -A}. Now, among the entries of the output you should also find the code just shown.
-
-%%%%%%%%%%%Verdi computer%%%%%%%%%%
-Similarly, the list of computers on which AiiDA can submit calculations is accessible by means of the command
-\begin{bashcommand}
-verdi computer list -a
-\end{bashcommand}
-(\cmd{-a} shows all computers, also the one imported in your database but that you did not configure, i.e., to which you don't have access).
-Details about each computer can be obtained by the command
-\begin{bashcommand}
-verdi computer show
-\end{bashcommand}
-Now you have the tools to answer the question:
-\begin{tcolorbox}
-What is the scheduler installed on the computer where the calculations of the graph have run?
-\end{tcolorbox}
-
-
-%%%%%%%%%%%%%%%verdi output|res%%%%%%%%%%%%%%%%
-\subsubsection*{Calculation results}
-The results of a calculation can be accessed directly from the calculation node. Type in the terminal
-\begin{bashcommand}
-verdi calculation res
-\end{bashcommand}
-which will print the output dictionary of the ``scalar'' results parsed by AiiDA at the end of the calculation. Note that this is actually a shortcut for
-\begin{bashcommand}
-verdi data parameter show
-\end{bashcommand}
-where \texttt{pk2} refers to the ParameterData node attached as an output of the calculation node, with link name \texttt{output\_parameters}.
-
-\begin{tcolorbox}
-By looking at the output of the command, what is the Fermi energy of the calculation with UUID prefix \texttt{ce81c420}?
-\end{tcolorbox}
-
-
-
-%%%%%%%%%%%%verdi output cat%%%%%%%%%%%
-Similarly to what you did for the calculation inputs, you can access the output files via the commands
-\begin{bashcommand}
-verdi calculation outputls
-\end{bashcommand}
-and
-\begin{bashcommand}
-verdi calculation outputcat
-\end{bashcommand}
-Use the latter to verify that the Fermi energy that you have found in the last step has been extracted correctly from the output file (Hint: filter the lines containing the string ``Fermi'', e.g. using \texttt{grep}, to isolate the relevant lines).
-
-%%%%%%%%%%%verdi data array show%%%%%%%%%%%%
-The results of calculations are stored in two ways: \texttt{ParameterData} objects are stored in the database, which makes querying them very convenient, whereas \texttt{ArrayData} objects are stored on the disk. Once more, use the command \cmd{verdi data array show } to know the Fermi energy obtained from calculation with UUID prefix \texttt{ce81c420} (you need to use, this time, the PK of the output ArrayData of the calculation, with link name \cmd{output\_trajectory\_array}). As you might have realized the difference now is that the whole series of values of the Fermi energy calculated after each relax/vc-relax step are stored. (The choice of what to store in \texttt{ParameterData} and \texttt{ArrayData} nodes is made by the parser of \texttt{pw.x} implemented in the \texttt{aiida-quantumespresso} plugin.)
-
-%%%%%%%%%%%verdi comments%%%%%%%%%%%%%%5
-\subsubsection*{(Optional section) Comments}
-AiiDA offers the possibility to attach comments to a calculation node, in order to be able to remember more easily its details. Node with UUID prefix ce81c420 has no comment already defined, but you can add a very instructive one by typing in the terminal
-%%%%%%%%%%verdi comment%%%%%%%%%%%%%%
-\begin{bashcommand}
-verdi comment add -c "vc-relax of a BaTiO3 done with QE pw.x"
-\end{bashcommand}
-Now, if you ask for a list of all comments associated to that calculation by typing
-\begin{bashcommand}
-verdi comment show
-\end{bashcommand}
-the comment that you just added will appear together with some useful information such as its creator and creation date. We let you play with the other options of \cmd{verdi comment} command to learn how to update or remove comments.
-
-
-% %%%%%%%%%%TO BE DISCUSSED%%%%%%%%%%%%%%%%%%
-% \textcolor{red}{We might discuss the \cmd{verdi node repo ls|cat command} e.g.}
-% \begin{bashcommand}
-% verdi node repo cat -p 4079 raw_input/aiida.in
-% \end{bashcommand}
-% \textcolor{red}{Moreover, at this state no RemoteData concept has been introduced}
-
-
-\subsection{AiiDA groups of calculations}
-In AiiDA, calculations (and more generally nodes) can be organized in groups, which are particularly useful to assign a set of calculations or data to a common project. This allows you to have quick access to a whole set of calculations with no need for tedious browsing of the database or writing complex scripts for retrieving the desired nodes. Type in the terminal
-\begin{bashcommand}
-verdi group list
-\end{bashcommand}
-to show a list of the groups that already exist in the database. Choose the PK of the group named \texttt{tutorial\_pbesol} and look at the calculations that it contains by typing
-\begin{bashcommand}
-verdi group show
-\end{bashcommand}
-In this case, we have used the name of the group to organize calculations according to the pseudopotential that has been used to perform them. Among the rows printed by the last command you will be able to find the calculation we have been inspecting until now.
-
-If, instead, you want to know all the groups to which a specific node belomngs, you can run
-\begin{bashcommand}
-verdi group list --node
-\end{bashcommand}
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/3_verdi_shell_and_orm.tex b/docs/assets/2018_PRACE_MaX/latex/sections/3_verdi_shell_and_orm.tex
deleted file mode 100644
index 53682bec..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/3_verdi_shell_and_orm.tex
+++ /dev/null
@@ -1,329 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\section[Verdi shell and AiiDA objects]{Using the verdi shell and familiarizing
-with AiiDA objects\label{shell}}
-
-In this section we will use an interactive ipython environment with all the basic AiiDA classes
-already loaded. We propose two realizations of such a tool. The first consist of a special ipython shell where all the AiiDA classes, methods and functions are accessible.
-Type in the terminal
-%Open a second terminal, connect to the Amazon machine with \cmd{ssh} and type:
-\begin{bashcommand}
- verdi shell
-\end{bashcommand}
-For all the everyday AiiDA-based operations, i.e. creating,
-querying and using AiiDA objects, the \cmd{verdi shell} is probably the best tool.
-In this case, we suggest that you use two terminals, one for the \cmd{verdi shell} and one to execute bash commands.
-
-The second option is based on \texttt{jupyter} notebooks and is probably most suitable to the purposes of our tutorial. Go to the browser where you have opened \texttt{jupyter} and click \texttt{New} $\to$ \texttt{Python 2} (top right corner). This will open an ipython notebook based on cells where you can type portions of python code. The code will not be executed until you press \verb|Shift+Enter| from within a cell.
-Type in the first cell
-\begin{pythoncommand}
- %aiida
-\end{pythoncommand}
-and execute it. This will set exactly the same environment as the \cmd{verdi shell}.
-The notebook will be automatically saved upon any modification and when you think you are done, you can export your notebook in many formats by going to \verb|File| $\to$ \verb|Download as|. We suggest you to have a look to the drop-down menus \texttt{Insert} and \texttt{Cell} where you will find the main commands to manage the cells of your notebook.
-\textbf{The \cmd{verdi shell} and the \cmd{jupyter} notebook are completely equivalent. Use either according to your personal preference.}
-
-Note: you will still need sometimes to type command-line
-instructions in \cmd{bash} in the first terminal you opened today.
-To differentiate these from the commands to be typed in the
-\cmd{verdi shell}, the latter will be marked in this document by a vertical line
-on the left, like:
-\begin{pythoncommand}
- some verdi shell command
-\end{pythoncommand}
-while command-line instructions in \cmd{bash} to be typed on a terminal will
-be encapsulated between horizontal lines:
-\begin{bashcommand}
- some bash command
-\end{bashcommand}
-Alternatively, to avoid changing terminal, you can execute \cmd{bash} commands within the \cmd{verdi shell} or the notebook adding an exclamation mark before the command itself
-\begin{pythoncommand}
- !some bash command
-\end{pythoncommand}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Load node and .res method
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\subsection[load_node]{Loading a node\label{load_node}}
-
-Most AiiDA objects are represented by nodes, identified in the database by its pk number (an integer).
-You can access a node using the following command in the shell:
-\begin{pythoncommand}
- node = load_node(PK)
-\end{pythoncommand}
-Load a node using one of the calculation pks visible in the graph you displayed
-in the previous section of the tutorial. Then get the energy of the
-calculation with the command
-\begin{pythoncommand}
- node.res.energy
-\end{pythoncommand}
-You can also type
-\begin{pythoncommand}
- node.res.
-\end{pythoncommand}
-and then press \cmd{TAB} to see all the possible output
-results of the calculation.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Loading several kinds of nodes
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\subsection{Loading different kinds of nodes}
-
-\subsubsection{Pseudopotentials}
-
-From the graph displayed in Section~\ref{sec:aiida_graph}, find the pk of the barium pseudopotential file (LDA). Load it and verify that it describes barium. Type
-\begin{pythoncommand}
- upf = load_node(PK)
- upf.element
-\end{pythoncommand}
-All methods of \texttt{UpfData} are accessible by typing \texttt{upf.} and then pressing \cmd{TAB}.
-
-\subsubsection{k-points}
-
-A set of k-points in the Brillouin zone is represented by an instance of the
-\texttt{KpointsData} class. Choose one from the graph of Section~\ref{sec:aiida_graph},
-load it as \texttt{kpoints} and inspect its content:
-% kpoints = load_node(PK)
-\begin{pythoncommand}
- kpoints.get_kpoints_mesh()
-\end{pythoncommand}
-Then get the full (explicit) list of k-points belonging to this mesh using
-\begin{pythoncommand}
- kpoints.get_kpoints_mesh(print_list=True)
-\end{pythoncommand}
-If you incurred in a \texttt{AttributeError}, it means that the kpoints instance does not
-represent a regular mesh but rather a list of
-k-points defined by their crystal coordinates (typically used when plotting a band structure).
-In this case, get the list of k-points coordinates using
-\begin{pythoncommand}
- kpoints.get_kpoints()
-\end{pythoncommand}
-If you prefer Cartesian (rather than crystal) coordinates, type
-\begin{pythoncommand}
- kpoints.get_kpoints(cartesian=True)
-\end{pythoncommand}
-
-%%%%%%%%%K points%%%%%%%%%%5
-%\subsubsection{K-points definition}
-For later use in this tutorial, let us try now to create a kpoints instance, to
-describe a regular $2\times2\times2$ mesh of k-points, centered at the Gamma point (i.e. without offset).
-This can be done with the following commands:
-\begin{pythoncommand}
- from aiida.orm.data.array.kpoints import KpointsData
- kpoints = KpointsData()
- kpoints_mesh = 2
- kpoints.set_kpoints_mesh([kpoints_mesh,kpoints_mesh,kpoints_mesh])
- kpoints.store()
-\end{pythoncommand}
-
-The import performed in the first line is however unpractical as it requires to remember the exact location of the module containing the KpointsData class. Instead, it is easier to use the \cmd{DataFactory} function instead of an explicit import.
-
-\begin{pythoncommand}
- KpointsData = DataFactory("array.kpoints")
-\end{pythoncommand}
-
-This function loads the appropriate class defined in a string (here \texttt{array.kpoints}).\footnote{The string provided to the \cmd{DataFactory} encodes both the location and the name of the required class according to some specific rules.}
-Therefore, \texttt{KpointsData} is not a class instance, but the kpoints class itself!
-
-
-\subsubsection{Parameters}
-
-Nested dictionaries with individual parameters, as well as lists and arrays, are
-represented in AiiDA with \texttt{Parameter\-Data} objects. Get the PK and load
-the input parameters of a calculation in the graph of Section~\ref{sec:aiida_graph}.
-Then display its content by typing
-\begin{pythoncommand}
- params.get_dict()
-\end{pythoncommand}
-where \texttt{params} is the \texttt{ParameterData} node you loaded. %You can
-%also access directly the first level of dictionary keys by pressing \cmd{TAB}
-%after having typed
-%\begin{pythoncommand}
-% params.dict.
-%\end{pythoncommand}
-Modify the dictionary content so that the wave-function cutoff is now set to 20 Ry.
-Note that you cannot modify an object already stored in the database.
-To save the modification, you must create a new ParameterData object. Similarly to what discussed before, first load the \texttt{ParameterData} class by typing
-\begin{pythoncommand}
- ParameterData = DataFactory('parameter')
-\end{pythoncommand}
-Then an instance of the class (i.e. the parameter object
-that we want to create) is created and initialized by the command
-\begin{pythoncommand}
- new_params = ParameterData(dict=YOUR_DICT)
-\end{pythoncommand}
-where \texttt{YOUR\_DICT} is the modified dictionary.
-Note that the parameter object is not yet stored in the database.
-In fact, if you simply type \texttt{new\_params} in the verdi shell, you will be prompted with a string notifying you the ``unstored'' status.
-To save an entry in the database corresponding to the \texttt{new\_params} object, you need to type a last command in the verdi shell:
-\begin{pythoncommand}
- new_params.store()
-\end{pythoncommand}
-
-\subsubsection{Structures}
-
-Find a structure in the graph of Section~\ref{sec:aiida_graph} and load it. Display
-its chemical formula, atomic positions and species using
-\begin{pythoncommand}
- structure.get_formula()
- structure.sites
-\end{pythoncommand}
-where \texttt{structure} is the structure you loaded. If you are familiar with ASE and PYMATGEN,
-you can convert this structure to those formats by typing
-\begin{pythoncommand}
- structure.get_ase()
- structure.get_pymatgen()
-\end{pythoncommand}
-%You then have access to all the ASE/PYMATGEN methods.
-Let's try now to define a new structure to study, specifically a silicon
-crystal.
-In the \cmd{verdi shell}, define a cubic unit cell as a $3\times3$ matrix, with lattice parameter $a_{lat}=5.4$ \AA:
-\begin{pythoncommand}
- alat = 5.4
- the_cell = [[alat/2,alat/2,0.],[alat/2,0.,alat/2],[0.,alat/2,alat/2]]
-\end{pythoncommand}
-
-{\bf Note}: Default units for crystal structure cell and coordinates in AiiDA are \AA.
-
-Structures in AiiDA are instances of \texttt{StructureData} class: load it in the verdi shell
-\begin{pythoncommand}
- StructureData = DataFactory("structure")
-\end{pythoncommand}
-Now, initialize the class instance (i.e.\ is the structure we want to study) by the command
-\begin{pythoncommand}
- structure = StructureData(cell=the_cell)
-\end{pythoncommand}
-which sets the cubic cell defined before. From now on, you can access the cell with the command
-\begin{pythoncommand}
- structure.cell
-\end{pythoncommand}
-Finally, append each of the 2 atoms of the cell command. You can do it
-using commands like
-\begin{pythoncommand}
- structure.append_atom(position=(alat/4.,alat/4.,alat/4.),symbols="Si")
-\end{pythoncommand}
-for the first `Si' atom. Repeat it for the other atomic site $\left(0,0,0\right)$.
-You can access and inspect\footnote{if you set the structure incorrectly, for example with overlapping atoms, it is very likely that any DFT code will fail!} the structure sites with the command
-\begin{pythoncommand}
- structure.sites
-\end{pythoncommand}
-If you make a mistake, start over from \texttt{structure = StructureData(cell=the\_cell)}, or equivalently use \\
-\texttt{structure.clear\_kinds()} to remove all kinds (atomic species) and sites.
-Alternatively, AiiDA structures can also be
-converted directly from ASE~\cite{ref:ASE} structures using\footnote{We purposefully do not provide advanced commands
-for crystal structure manipulation in AiiDA, because python packages that accomplish such tasks
-already exist (such as ASE or pymatgen).}
-\begin{pythoncommand}
- from ase.lattice.spacegroup import crystal
- ase_structure = crystal('Si', [(0,0,0)], spacegroup=227,
- cellpar=[alat, alat, alat, 90, 90, 90],primitive_cell=True)
- structure=StructureData(ase=ase_structure)
-\end{pythoncommand}
-%
-Now you can store the new structure object in the database with the command:
-\begin{pythoncommand}
- structure.store()
-\end{pythoncommand}
-%
-%
-Finally, we can also import the silicon structure from an external (online) repository
-such as the Crystallography Open Database~\cite{ref:COD}:
-\begin{pythoncommand}
-from aiida.tools.dbimporters.plugins.cod import CodDbImporter
-importer = CodDbImporter()
-for entry in importer.query(formula='Si',spacegroup='F d -3 m'):
- structure = entry.get_aiida_structure()
- print "Formula", structure.get_formula()
- print "Unit cell volume: ", structure.get_cell_volume()
-\end{pythoncommand}
-In that case two duplicate structures are found for Si.
-%\footnote{Note: one could compare these two structures with the pymatgen tool
-%StructureMatcher}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% .inp / .out methods
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\subsection{Accessing inputs and outputs}
-
-Load again the calculation node used in Section~\ref{load_node}:
-\begin{pythoncommand}
- calc = load_node(PK)
-\end{pythoncommand}
-Then type
-\begin{pythoncommand}
- calc.inp.
-\end{pythoncommand}
-and press \cmd{TAB}: you will see all the link names between the
-calculation and its input nodes. You can use a specific linkname to access the
-corresponding input node, e.g.:
-\begin{pythoncommand}
- calc.inp.structure
-\end{pythoncommand}
-
-You can use the \cmd{inp} method multiple times in order to browse the graph. For instance,
-if the input structure node that you just accessed is the output of another calculation, you can access the latter by typing
-
-\begin{pythoncommand}
- calc2 = calc.inp.structure.inp.output_structure
-\end{pythoncommand}
-Here \texttt{calc2} is the \texttt{PwCalculation} that produced the structure used as an input for \texttt{calc}.
-
-Similarly, if you type:
-\begin{pythoncommand}
- calc2.out.
-\end{pythoncommand}
-and then \cmd{TAB}, you will list all output link names of the calculation.
-One of them leads to the structure that was the input of \texttt{calc} we loaded
-previously:
-\begin{pythoncommand}
- calc2.out.output_structure
-\end{pythoncommand}
-Note that links have a single name, that was assigned by the
-calculation that used the corresponding input or produced the corresponding
-output, as illustrated in Fig.~\ref{fig:graph}.
-
-For a more programmatic approach, you can get a list of the inputs and outputs of a node, say \texttt{calc}, with the methods
-\begin{pythoncommand}
- calc.get_inputs()
- calc.get_outputs()
-\end{pythoncommand}
-
-Alternatively, you can get a dictionary where the keys are the link names and the values are the linked objects, with the methods
-\begin{pythoncommand}
- calc.get_inputs_dict()
- calc.get_outputs_dict()
-\end{pythoncommand}
-
-Note: You will sometime see entries in the dictionary with names like \texttt{output\_kpoints\_3511}. These exist because standard python dictionaries require unique key names while link labels may not be unique. Therefore, we use the link label plus the PK separated by underscores.
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Upf Families
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\subsection{Pseudopotential families}
-
-Pseudopotentials in AiiDA are grouped in ``families'' that contain one
-single pseudo per element. We will see how to work with UPF pseudopotentials (the format used by Quantum ESPRESSO and some other codes).\\
-Download and untar the SSSP~\cite{ref:SSSP} pseudopotentials via the
-commands:
-% wget http://www.materialscloud.org/sssp/pseudos/SSSP_eff_PBESOL.tar.gz
-\begin{bashcommand}
- wget https://archive.materialscloud.org/file/2018.0001/v1/SSSP_efficiency_pseudos.tar.gz
- tar -zxvf SSSP_efficiency_pseudos.tar.gz
-\end{bashcommand}
-Then you can upload the whole set of pseudopotentials to AiiDA by to the following
-\texttt{verdi} command:
-\begin{bashcommand}
-verdi data upf uploadfamily SSSP_efficiency_pseudos 'SSSP' 'SSSP pseudopotential library'
-\end{bashcommand}
-In the command above, \texttt{SSSP\_efficiency\_pseudos} is the folder containing the pseudopotentials, 'SSSP' is the name given to the family and the last
-argument is its description.\\
-Finally, you can list all the pseudo families present in the database with
-\begin{bashcommand}
- verdi data upf listfamilies
-\end{bashcommand}
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/4_qe_submission.tex b/docs/assets/2018_PRACE_MaX/latex/sections/4_qe_submission.tex
deleted file mode 100644
index 93c8c6a6..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/4_qe_submission.tex
+++ /dev/null
@@ -1,427 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-%%%%%%%%%INTRO%%%%%%%%%
-\section[Submit, monitor and debug calculations]{\label{sec:qe}Submit, monitor and debug calculations}
-The goal of this section is to understand how to create new data in AiiDA. We will launch a total energy calculation and check its results. We will introduce intentionally some common mistakes along the process of defining and submitting a calculation and we will explain you how to recognize and correct them. While this debugging is done here `manually', workflows (that we will learn later in this tutorial) can automate this procedure considerably.
-%Optionally, you will run a band structure calculation using a previous (``parent'') calculation.
-For computing the DFT energy of the silicon crystal (with a PBE functional) we will use Quantum ESPRESSO~\cite{ref:QE}, in particular the PWscf code (\texttt{pw.x}).
-Besides the AiiDA-core package, a number of plugins exist for many different codes.
-These are listed in the \href{https://aiidateam.github.io/aiida-registry/}{AiiDA plugin registry}\footnote{\url{https://aiidateam.github.io/aiida-registry/}}.
-In particular, the ``aiida-quantumespresso'' plugin (already installed in your machine) provides a very extensive set of plugins, covering most (if not all) the functionalities of the underlying codes.
-
-
-\subsection{The AiiDA daemon}
-
-First of all, check that the AiiDA daemon is actually running. The AiiDA daemon is a program running all the time in the background, checking if new calculations appear and need to be submitted to the scheduler\footnote[1]{i.e. first queued on the cluster, and then run when the queuing system allows it}. The daemon also takes care of all the necessary operations before the calculation submission\footnote[2]{creating a directory where to run and copying there the input files}, and after the calculation has completed on the cluster.\footnote[3]{retrieving and copying some of the output files in the database repository, parsing one or several output files, attaching some data to the calculation and storing them in the database.}
-Type in the terminal
-\begin{bashcommand}
-verdi daemon status
-\end{bashcommand}
-If the daemon is running, the output should look like
-
-\begin{verbatim}
- Profile: default
- Daemon is running as PID 1650 since 2018-05-16 16:26:04
- Active workers [1]:
- PID MEM % CPU % started
- ----- ------- ------- -------------------
- 1653 8.225 0 2018-05-16 16:26:04
- Use verdi daemon [incr | decr] [num] to increase / decrease the amount of workers
-\end{verbatim}
-If this is not the case, type in the terminal
-\begin{bashcommand}
-verdi daemon start
-\end{bashcommand}
-to start the daemon.
-
-
-%%%%%%%%%%%%%%CREATE AND SUBMIT CALCULATION%%%%%%%%%%%%%
-%N.B. In the old tutorial calculation are submitted via the interactive shell, whereas here users will do it via verdi run
-%%%%%%%%%%%%%%%
-\subsection{Creating a new calculation\label{sec:create_calc}}
-To launch a calculation, you will need to interact with AiiDA mainly in the \cmd{verdi shell}.
-We strongly suggest you to first try the commands in the shell, and then copy them in a script ``test\_pw.py'' using a text editor. This will be very useful for later execution of a similar series of commands.
-
-\textbf{The best way to run python scripts using AiiDA functionalities is to run them in a terminal by means of the command}
-\begin{bashcommand}
- verdi run
-\end{bashcommand}
-
-Every calculation sent to a cluster is linked to a code, which describes the executable file to be used.
-Therefore, first load the suitable code:
-\begin{pythoncommand}
- code = Code.get_from_string()
-\end{pythoncommand}
-Here \texttt{Code} is the general AiiDA class handling all possible codes, and \texttt{code} is a class instance tagged as \texttt{} (see the first part of the tutorial for listing all codes installed in your AiiDA machine).
-You might also want to list only the codes that define a default calculation plugin for the pw.x code of Quantum ESPRESSO. You can do this with the following command:
-\begin{bashcommand}
-verdi code list -p quantumespresso.pw
-\end{bashcommand}
-Pick the correct codename, that might look like, e.g. \texttt{qe-pw-6.2.1@localhost}.
-
-Once run, AiiDA calculations are instances of the class \texttt{Calculation}, more precisely of one of its subclasses, each corresponding to a code specific plugin (for example, the PWscf plugin). You have already seen \texttt{Calculation} classes in the previous sections.
-
-However, to create a new calculation, rather than manually creating a new class,
-the suggested way is to use a \texttt{Builder}, that helps in setting the various
-calculation inputs and parameters, and provides TAB-completion.
-
-To obtain a new builder, we can use the \texttt{get\_builder} method of the \texttt{code} object:
-\begin{pythoncommand}
- builder = code.get_builder()
-\end{pythoncommand}
-This returns a builder that helps in setting up the inputs for the \texttt{PwCalculation} class (associated to the \texttt{quantumespresso.pw} plugin, i.e. the default
-plugin for the code you chose before).
-
-As the first step, you can assign a (short) label or a (long) description
-to the calculation that you are going to create, that you might find
-convenient in the future. This can be achieved with:
-\begin{pythoncommand}
- builder.label = "PW test"
- builder.description = "My first AiiDA calc with Quantum ESPRESSO on BaTiO3"
-\end{pythoncommand}
-This information will be saved in the database for later query or inspection.
-Note that you can press TAB after writing \texttt{builder.} to see all available inputs.
-
-Now you have to specify the number of machines (a.k.a. cluster nodes) you are going to run on and the maximum time allowed for the calculation. These general calculation options,
-that are independent of the code or plugin, but rather mainly passed later to the scheduler
-that handles the queue, are all grouped under ``builder.options'':
-\begin{pythoncommand}
- builder.options.resources = {'num_machines': 1}
- builder.options.max_wallclock_seconds = 30*60
-\end{pythoncommand}
-Just like the normal inputs, these builder options are also TAB-completed.
-Type "builder.options." and hit the TAB button to see the list of available options.
-
-%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Preparation of inputs}
-Quantum ESPRESSO requires an input file containing Fortran namelists and variables, plus some cards sections (the documentation is available \href{http://www.quantum-espresso.org/wp-content/uploads/Doc/INPUT_PW.html}{online}\footnote{\url{http://www.quantum-espresso.org/wp-content/uploads/Doc/INPUT_PW.html}}).
-The Quantum ESPRESSO plugin of AiiDA requires quite a few nodes in input, which are documented
-\href{http://aiida-core.readthedocs.io/en/latest/plugins/quantumespresso/pw.html}{online}\footnote{\url{http://aiida-core.readthedocs.io/en/latest/plugins/quantumespresso/pw.html}}.
-Here we will instruct our calculation with a minimal configuration for computing the energy of silicon. We need:
-\begin{enumerate}
-\item Pseudopotentials
-\item a structure
-\item the k-points
-\item the input parameters
-\end{enumerate}
-We leave the parameters as the last thing to setup and start with structure, k-points, and pseudopotentials.
-
-\begin{tcolorbox}
-Use what you learned in the previous section and define these two kinds of objects in this script.
-Define in particular a silicon structure and a 2$\times$2$\times$2 mesh of k-points.
-Notice that if you just copy and paste the code that you executed previously, you will create duplicated information in the database (i.e. every time you will execute the script, you will create another StructureData, another KpointsData, \dots).
-In fact, you already have the opportunity to re-use an already existing structure.\footnote{However, to avoid duplication of KpointsData, you should first learn how to query the database, therefore we will ignore this duplication issue for now.}
-Use therefore a combination of the bash command \cmd{verdi data structure list} and of the shell command \texttt{load\_node()} to get an object representing the structure created earlier.
-%For the KpointsData instead we will ignore this duplication for the time being, and you can simply use the same code of this morning.
-\end{tcolorbox}
-
-\subsubsection{Attaching the input information to the calculation}
-So far we have defined (or loaded) some of the input data, but we haven't instructed the calculation to use them.
-To do this, let's just set the appropriate attributes of the builder (we assume here
-that you created the structure and k-points AiiDA nodes before and called them
-\texttt{structure} and \texttt{kpoints}, respectively):
-\begin{pythoncommand}
- builder.structure = structure
- builder.kpoints = kpoints
-\end{pythoncommand}
-Note that you can set in the builder both stored and unstored nodes.
-AiiDA will take care of storing the unstored nodes upon submission. Otherwise,
-if you decide not to submit, nothing will be stored in the database.
-
-Moreover, PWscf also needs information on the pseudopotentials, specified by UpfData objects.
-This is set by storing a dictionary in ``builder.pseudo'', with keys being the
-kind names, and value being the UpfData pseudopotential nodes.
-To simplify the task of choosing pseudopotentials, we can however use a helper
-function that automatically returns this dictionary picking the pseudopotentials
-from a given UPF family.
-
-You can list the preconfigured families from the command line:
-\begin{bashcommand}
- verdi data upf listfamilies
-\end{bashcommand}
-Pick the one you configured earlier or one of the \texttt{SSSP} families that we provide, and link it to the calculation using the command:
-\begin{pythoncommand}
- from aiida.orm.data.upf import get_pseudos_from_structure
- builder.pseudo = get_pseudos_from_structure(structure, '')
-\end{pythoncommand}
-
-
-
-\subsubsection{Preparing and debugging input parameters}
-The last thing we miss is a set of parameters (i.e. cutoffs, convergence thresholds, etc\dots) to launch the Quantum ESPRESSO calculation.
-This part requires acquaintance with Quantum ESPRESSO and, very often, this is the part to tune when a calculation shows a problem.
-Let's therefore use this part of the tutorial to learn how to debug problems, and {\bf let's introduce errors intentionally}.
-Note also that some of the problems we will investigate appear the first times you launch calculations and can be systematically avoided by using workflows.
-
-
-Let's define a set of input parameters for Quantum ESPRESSO, preparing a dictionary of the form:
-\begin{pythoncommand}
-parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'mickeymouse': 240.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-8,
- },
-}
-\end{pythoncommand}
-This dictionary is almost a valid input for the Quantum ESPRESSO plugin, except for an invalid key called ``mickeymouse''.
-When Quantum ESPRESSO receives an unrecognized key (even when you misspell one) its behavior is to stop almost immediately.
-By default, the AiiDA plugin will not validate your input and simply pass it over.
-Therefore let's pass this dictionary to the calculation and observe this unsuccessful behavior.
-
-As done before, load the ParameterData class
-\begin{pythoncommand}
- ParameterData = DataFactory("parameter")
-\end{pythoncommand}
-and create an instance of the class containing all the input parameters you just defined
-\begin{pythoncommand}
- parameters = ParameterData(dict=parameters_dict)
-\end{pythoncommand}
-Finally, set the parameters in the builder
-\begin{pythoncommand}
- builder.parameters = parameters
-\end{pythoncommand}
-
-
-
-
-
-
-\subsubsection{Simulate submission}
-At this stage, you have recreated in memory (it's not yet stored in the database) the input of the graph shown in Fig.~\ref{fig:graph}a, whereas the outputs will be created later by the daemon.
-
-In order to check how AiiDA creates the actual input files for the calculation, we can simulate the submission process with the (otherwise optional) command
-\begin{pythoncommand}
- builder.submit_test()
-\end{pythoncommand}
-This creates a folder of the form \texttt{submit\_test/[date]-0000[x]} in the current directory. Check (in your second terminal) the input file \texttt{aiida.in} within this folder, comparing it with the content of the input data nodes you created earlier, and that the `pseudo' folder contains the needed pseudopotentials. You can also check the submission script \texttt{\_aiidasubmit.sh} (the scheduler that is installed on the machine is Torque, so AiiDA creates the files with the proper format for this scheduler).
-Note: you cannot correct the input file from the ``submit\_test'' folder: you have to correct the script and re-execute it; the files created by \texttt{submit\_test()} are only for final inspection.
-
-
-
-
-
-
-
-
-
-\subsubsection{Storing and submitting the calculation}
-Up to now the calculation \texttt{calc} is kept in memory and not in the database.
-We will now submit it, that will implicitly create a \texttt{PwCalculation} class,
-store it in the database, store also all its inputs parameters, k-points, structure,
-and properly link them.
-To submit it, run
-\begin{pythoncommand}
- from aiida.work.launch import submit
- calc = submit(builder)
-\end{pythoncommand}
-\texttt{calc} will now be the stored \texttt{PwCalculation}, already submitted
-to the daemon. The calculation has now a ``database primary key" or \texttt{pk}
-(an integer ID) to the calculation (typing \texttt{calc.pk} will print this number).
-Moreover, it also gets a universally-unique ID (\texttt{UUID}),
-visible with \texttt{calc.uuid} that does not change even upon sharing
-the data with collaborators (while the \texttt{pk} will change in that case).
-
-Now that the calculation is stored, you can also attach any additional attributes
-of your choice, which are called ``extra'' and defined in as key-value pairs.
-For example, you can add an extra attribute called \texttt{element}, with value \texttt{Si} through
-\begin{pythoncommand}
- calc.set_extra("element","Si")
-\end{pythoncommand}
-You will see later the advantage of doing so for querying.
-
-In the meantine, as soon as you submitted your calculation, the daemon picked it up
-and started to perform all the operations to do the actual submission, going through
-input file generation, submission to the queue, waiting for it to run and finish,
-retrieving the output files, parsing them, storing them in the database and setting the
-state of the calculation to \texttt{Finished}.
-
-\textbf{N.B.} If the daemon is not running the calculation will remain in the \texttt{NEW} state until when you start it.
-
-
-
-%%%%%%%%%%%%%%%%%%%MONITOR CALCULATION%%%%
-%Add here parts on troubleshooting failed caluclations
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsubsection{Checking the status of the calculation}
-You can check the calculation status from the command line:
-\begin{bashcommand}
- verdi calculation list
-\end{bashcommand}
-Note that \cmd{verdi} commands can be slow in this tutorial when the calculation is running (because you just have one CPU which is also used by the PWscf calculation).
-
-By now, it is possible that the calculation you submitted has already finished,
-and therefore that you don't see any calculation in the output. In fact,
-by default, the command only prints calculations that are still being handled by the daemon, i.e.\ those with a state that is not \texttt{FINISHED} yet\footnote{For JobCalculations (i.e., calculations that are submitted to a remote computer through a scheduler) there is an additional "Job state" (last column of the output of \texttt{verdi calculation list}) that can either be FINISHED if all went well, or one of the possible failure states (FAILED, PARSINGFAILED, SUBMISSIONFAILED, RETRIEVALFAILED). These states are represented as
-a Finished state (third column of \texttt{verdi calculation list}, with a zero/non-zero
-error code depending if they finished/did not finish correctly). This latter state
-is more general than just JobCalculations and also applies to workflows, as we will
-see later in the tutorial.}.
-
-To see also (your) calculations that have finished (and limit those only to the one created in the past day), use instead
-\begin{bashcommand}
- verdi calculation list -a -p1
-\end{bashcommand}
-as explained in the first section.
-
-To inspect the list of input files generated by the AiiDA (this can be done even
-when the calculation did not finish yet), type
-\begin{bashcommand}
- verdi calculation inputls -c
-\end{bashcommand}
-with \texttt{pk\_number} the pk number of your calculation. This will show the contents of the input directory (\cmd{-c} prints directories in colour). Then you can also check the content of the actual input file with
-\begin{bashcommand}
- verdi calculation inputcat | less
-\end{bashcommand}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\subsection{Troubleshooting}
-After all this work the calculation should end up in a FAILED Job state (last column of
-\texttt{verdi calculation list}), and
-correspondingly the error code near the ``Finished" status of the State should be non-zero
-(400 for FAILED calculations). This was expected, since we used an invalid key in the input parameters.
-Situations like this happen (probably often...) in real life, so we built in AiiDA the tools to traceback the problem source and correct it.
-
-A first way to proceed is the manual inspection of the output file of PWscf. You can visualize it with:
-\begin{bashcommand}
- verdi calculation outputcat | less
-\end{bashcommand}
-This can be a good primer for problem inspection.
-For something more compact, you can also try to inspect the calculation log (from AiiDA):
-\begin{bashcommand}
- verdi calculation logshow
-\end{bashcommand}
-If the calculation has encountered a mistake, this log shows a handful of warnings coming from various processes, such as the daemon, the parser of the output or the scheduler on the cluster.
-In production runs, errors will mostly come from an unexpected termination of the PWscf calculation.
-The most programmatic way to handle these errors is to inspect the warnings key by loading the calculation object, say \texttt{calc}, and the using the following method:
-\begin{pythoncommand}
-calc.res.warnings
-\end{pythoncommand}
-This will print a list of strings reporting errors experienced during the execution, that can be easily read in python (and thus addressed programmatically), but are also reported in the calculation log.
-With any of these three methods you can understand that the problem is something like an `invalid input key', which is exactly what we did.
-
-Let's use a parameters dictionary that actually works.
-Modify the script \texttt{test\_pw.py} script modifying the parameter dictionary as
-\begin{pythoncommand}
-parameters_dict = {
- "CONTROL": {"calculation": "scf",
- },
- "SYSTEM": {"ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {"conv_thr": 1.e-6,
- }
- }
-\end{pythoncommand}
-
-If you launch the modified script by typing
-\begin{bashcommand}
- verdi run test_pw.py
-\end{bashcommand}
-you should now be able to see a calculation reaching successfully the FINISHED state.
-Now you can access the results as you have seen earlier.
-For example, note down the pk of the calculation so that you can load it in the \texttt{verdi shell} and check the total energy with the commands:
-\begin{pythoncommand}
-calc=load_node()
-calc.res.energy
-\end{pythoncommand}
-
-% As a last thing for this section you can run it via the \cmd{verdi run} command. You may substitute the last command by something like
-% \begin{pythoncommand}
-% print calc.res.energy
-% \end{pythoncommand}
-% in order to print the final energy. and verify that it corresponds to what obtained via the stepwise ``shell submission''.
-%
-% We remind that to run an AiiDA script you need to type
-% \begin{bashcommand}
-% verdi run pw_test.py
-% \end{bashcommand}
-
-
-
-
-
-
-
-%
-%
-%\subsection{Optional: band structure calculation}
-%
-%Now that you know how to restart a calculation, with a few extra commands you can compute the band structure of silicon.
-%Identify a calculation that successfully computed the total energy of silicon and load it.
-%Now, we create a restart calculation, but this time we let the calculation use the charge density of the `parent' calculation.
-%\begin{pythoncommand}
-%c1 = load_node(PK)
-%c2 = c1.create_restart(use_output_structure=True)
-%\end{pythoncommand}
-%PWscf requires to set a flag to signal that you want to obtain the energy of bands (and not the total energy).
-%Therefore, modify the input dictionary with
-%\begin{pythoncommand}
-%new_dict = c2.inp.parameters.get_dict()
-%new_dict['CONTROL']['calculation'] = 'bands'
-%new_parameters = ParameterData(dict=parameter_dict)
-%\end{pythoncommand}
-%By default, the AiiDA plugin of PWscf does not retrieve the files containing the entire band structure (mainly for concerns of disk space usage).
-%If you want to see the band structure, you need to set also an additional input node called \texttt{settings}
-%\begin{pythoncommand}
-%settings_dict = {'also_bands': True,
-% 'PARENT_FOLDER_SYMLINK': True}
-%settings = ParameterData(dict=settings_dict)
-%\end{pythoncommand}
-%Notice that we also set another (optional) key \texttt{PARENT\_FOLDER\_SYMLINK}, so that the new calculation \texttt{c2} will not copy the old charge density file in a new folder, but will use the old one via a symlink (helping you to save space on the cluster).
-%Lastly, we want to compute the band structure along the high symmetry paths of the Brillouin zone.
-%In this case you do not need to provide explicitely the coordinates of the k-points. Type instead
-%\begin{pythoncommand}
-%kpoints = KpointsData()
-%kpoints.set_cell(c2.inp.structure.cell, c2.inp.structure.pbc)
-%kpoints.set_kpoints_path(kpoint_distance = 0.05)
-%\end{pythoncommand}
-%In this way, you passed the crystal structure to the kpoints class, which has a built in utility to build the list of k-points on high symmetry directions of the Brillouin zone.
-%\texttt{kpoint\_distance} is simply a parameter determining the resolution: the smaller, the more k-points.
-%Now, don't forget to set the calculation to use these new nodes
-%\begin{pythoncommand}
-%c2.use_kpoints(kpoints)
-%c2.use_parameters(new_parameters)
-%c2.use_settings(settings)
-%\end{pythoncommand}
-%And the band structure is ready to be computed.
-%
-%After the calculation has run, checked that it finished successfully.
-%In this case, the AiiDA parser has read the output files containing the band structure and has inserted this information in the database.
-%To visually inspect the band structure, load the calculation (previously \texttt{c2}) and look for an output node at linkname \texttt{output\_band}.
-%\begin{pythoncommand}
-%band = c2.out.output_band
-%\end{pythoncommand}
-%In this way you loaded the \texttt{BandsData} object that contains all the information concerning the band structure.
-%Take your time to explore the methods of this class.
-%Here we just mention the command
-%\begin{pythoncommand}
-%band.export('silicon_band_structure.agr')
-%\end{pythoncommand}
-%This command should have created an xmgrace plot, which you can open and inspect from the bash shell:
-%\begin{bashcommand}
-%xmgrace silicon_band_structure.agr
-%\end{bashcommand}
-%
-
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder.tex b/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder.tex
deleted file mode 100644
index 99b4134d..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder.tex
+++ /dev/null
@@ -1,563 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-%%%%%%%%Inherited from old tutorial
-%Task 1 and Taks 2 do not actually need QueryTool, as they inspect a previously defined group.
-%The decision to improve it is left to authors of this part
-%Taks 3 might be reused but recast to the logic and syntax of QueryBuilder
-%%%%%%%%
-
-\section{Queries in AiiDA: The QueryBuilder}
-\label{sec:querybuilder}
-In this part of the tutorial we will focus on how to query our database using a querying tool for AiiDA called the \textit{QueryBuilder}.
-Queries are, very loosely defined, questions to your database.
-We will first show you some simple examples and tasks on how to explore your database.
-Then we will proceed to a more concrete exercise on the screening of magnetic and metallic perovskites.\\
-
-% In the end we will present some more complicated examples and exercises showing all the possibilities of the QueryBuilder.
-
-
-
-%To be deleted or incorporated to the above text:
-%
-%In the first part of the tutorial, you got an idea of how a single calculation is submitted with AiiDA and how its results can be retrieved, both from the command line and from the \verb|verdi shell|. In this second part of the tutorial, we will instead focus on how to systematically retrieve, query and analyse the results of multiple calculations using AiiDA features. The idea of this part of the tutorial is to screen magnetic and metallic perovskites.
-%For time reasons, a set of calculations have already been performed on 57 perovskites, using three different pseudopotential families (LDA, PBE and PBESOL, all from GBRV 1.2~\cite{ref:GBRV}). Each of them was run with the same type of script you tried in Sec.~\ref{sec:qe}, so there is nothing new.
-%These calculations have been imported, and they were created by a different user.
-
-
-%\textcolor{red}{LK: Some text on what is the difference, and to use -A option for all-users with command line}
-
-
-% If you want to reproduce them, simply put the code of Sec.~\ref{sec:qe} in a Python function, and change the A and B species in a for loop.These calculations are spin-polarised (without spin-orbit coupling), use a Gaussian smearing and perform a variable-cell relaxation of the full unit cell.}
-
-%\textcolor{red}{LK: Some words in QueryBuilder here}
-
-
-\subsection*{Task 1 - Introduction to QueryBuilder}
-\begin{table}[b]
-\centering
-\begin{tabular}{cc}
-\hline
-Node \& subclasses & Number in DB \\ \hline
-Node & 4707 \\
-StructureData & 621 \\
-ParameterData & 1338 \\
-KpointsData & 861 \\
-UpfData & 99 \\
-JobCalculation & 448 \\ \hline
-\end{tabular}
-\caption{List of some Node subclasses and how many times they occur in our test database.}
-\label{fig.types}
-\end{table}
-
-
-In this task we will use the QueryBuilder to do some basic queries and understand our database.
-As a first step we should import our querying tool, the \textit{QueryBuilder}.
-\begin{pythoncommand}
-from aiida.orm.querybuilder import QueryBuilder
-\end{pythoncommand}
-After the above import, we create our first query.
-To do so, we will have to instantiate a QueryBuilder instance:
-\begin{pythoncommand}
-qb = QueryBuilder()
-\end{pythoncommand}
-Our query is still empty, we have not yet defined what we want to see.
-For example, we will ask for all the nodes of our database.
-This is as simple as appending the Node class to the query that we construct.
-\begin{pythoncommand}
-qb.append(Node)
-\end{pythoncommand}
-At this point, we can finish our query by asking back all nodes and by typing
-\begin{pythoncommand}
-qb.all() # Returns all nodes in the database
-\end{pythoncommand}
-However, this command will return us all the Nodes directly, which may not be the most wise thing to do
-considering that is the biggest family of AiiDA stored objects that we can query.
-To understand the size of the result, we can type the following command:
-\begin{pythoncommand}
-qb.count() # Returns an integer, the number of nodes in the database
-\end{pythoncommand}
-% Taking some stuff out do reduce length
-%~ If we decide to get a large number of results,
-%~ then it is could be better to retrieve them using an iterator and not using the \texttt{.all()} method.
-%~ \begin{pythoncommand}
-%~ for node, in qb.iterall():
- %~ print node
-%~ \end{pythoncommand}
-If you are interested to retrieve a subclass of a node, append that specific subclass instead of Node:
-\begin{pythoncommand}
-StructureData = DataFactory('structure')
-qb = QueryBuilder() # Creating a new QueryBuilder instance
-qb.append(StructureData) # Telling the QueryBuilder instance that I want structures
-qb.all() # Asking for all the results!
-\end{pythoncommand}
-
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item
-Try now to find the number of instances for some subclasses of Node (e.g. StructureData, ParameterData, etc.)
-that are stored in your database.
-The result should look like \autoref{fig.types}.
-Of course, the numbers can be different!
-\end{itemize}
-\end{tcolorbox}
-
-\textbf{Comment:} If you are familiar with the SQL (Structured Query Language) syntax then you may wonder what the issued SQL command is.
-This can be easily seen by typing:
-\begin{pythoncommand}
-str(qb)
-\end{pythoncommand}
-
-\textbf{Comment:}
-If you want to get inspired by the available QueryBuilder options you can just press the
-\emph{tab} key in an interactive shell (after typing \texttt{qb.}) to see the available options.
-
-\textbf{Comment:} After you run a query, a new \texttt{QueryBuilder} instance
-needs to be defined if you want to make a new query.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection*{Task 2 - Projections and filters}
-
-\begin{table}[h]
-\begin{center}
-
-\begin{tabular}{ccc} \hline
-Operator & Datatype & Example \\ \hline
-== & All & \{'==':12\} \\
-in & All & \{'in':['FINISHED', 'PARSING']\} \\ \hline
-$>,<,<=,>=$ & floats, integers, dates & \{'$>$':5.2\} \\ \hline
-like & Chars & \{'like':'calculation\%'\} \\
-ilike & Chars & \{'ilike':'caLculAtioN\%'\} \\ \hline
-or & & \{'or':[\{'$<$':5.3\}, \{'$>$':6.3\}]\} \\
-and & & \{'and':[\{'$>$':5.3\}, \{'$<$':6.3\}]\} \\
-\hline
-\end{tabular}
-\end{center}
-\caption{Operators currently implemented for all backends.}
-\label{tab.filterops}
-\end{table}
-
-In database language performing a projection means to extract one or more specific columns from a table. In the AiiDA language this is equivalent to say that we select what properties a query should return out of the queried objects.
-For example, we might be interested only in the id of a set of nodes (or their creation date, or any stored value).
-To this purpose we should suitably instruct a QueryBuilder object by means of the "project" key.
-For example, if we would like to get all the ids of the nodes, we would type the following:
-\begin{pythoncommand}
-qb = QueryBuilder()
-qb.append(Node, project=["id"])
-qb.all()
-\end{pythoncommand}
-
-\begin{table}[b]
-\centering
-\begin{tabular}{cc}
-\hline
-Entity & Properties \\ \hline
-Node & id, uuid, type, label, description, ctime, mtime \\ \hline
-Computer & \begin{tabular}{@{}c@{}}id, uuid, name, hostname, description,\\ enabled, transport\_type, scheduler\_type\end{tabular} \\ \hline
-User & id, email, first\_name, last\_name, institution \\ \hline
-Group & id, uuid, name, type, time, description \\ \hline
-\end{tabular}
-\caption{A selection of entities and some of their properties.}
-\label{tab.properties}
-\end{table}
-
-
-
-\begin{tcolorbox}
-Please note that if you would like to perform an operation on the \emph{pk} of a node,
-you should use the keyword \emph{id} in QueryBuilder queries.
-\end{tcolorbox}
-
-
-Most likely, performing a query implies to select only those elements that fulfill certain criteria.
-For example, we might want to select all the calculations that were launched on a specific date.
-In database language, this is called "adding a filter" to a query.
-A filter is a boolean operator that returns True or False.
-\autoref{tab.filterops} lists all operators that we implemented.
-A selection of entities and some of their properties that you can use at your projections and filters
-can be found at table \autoref{tab.properties}.
-
-If you want to add filters to your query, you simply add the \emph{filters} keyword with a dictionary.
-Suppose you want to know the creation date of a structure of which you know the uuid:
-\begin{pythoncommand}
-qb = QueryBuilder() # Instantiating a new QueryBuilder
-qb.append(
- StructureData, # I want structures!
- project=["ctime"], # I'm interested in creation time!
- filters={"uuid": {
- "==":"ace6523a-2019-47c4-98a3-48429265f62c"
- }}) # I want the structure with this UUID
-qb.all()
-\end{pythoncommand}
-Try it out!
-There is also the possibility to combine multiple filters on the same object using the ``and'' or the ``or''
- keyword in the filter section. Let's see an example.
-\begin{pythoncommand}
-from datetime import datetime, timedelta
-qb = QueryBuilder()
-qb.append(
- StructureData,
- project=["uuid"], # I want to see only the UUID
- filters={"or":[ # First filter is an or statement
- {"ctime": {">":datetime.now() - timedelta(days=12)}},
- {"label": "graphene"}
- ]}
- )
-qb.all()
-\end{pythoncommand}
-
-In the above example we added an ``or'' keyword between the two filters.
-The query return every structure in the database that was created
-in the last 12 days or is named "graphene". \\
-\textbf{Hints for the exercises:}
-\begin{itemize}
-\item The operator '>', '<' works with date-type properties with the expected behavior.
-\item For your date comparisons you will need to create a \texttt{datetime} object to which you can assign a date of your preference.
- You will have to do the necessary import (\texttt{from datetime import datetime}) and create an object by giving a specific date.
- E.g. datetime(2015, 12, 26). For further information, you can consult the Python's online documentation.
-\end{itemize}
-
-\begin{tcolorbox}
-\textbf{Exercises:}
-\begin{itemize}
-\item
-Write a query that returns all instances of StructureData that have been created after the 1st of January 2016.
-\item
-Write a query that returns all instances of Group whose name starts with ``tutorial''.
-\end{itemize}
-\end{tcolorbox}
-
-% \textbf{Hint 2:} The creation time is stored in a column called \textit{ctime}.
-
-\subsection*{Task 3 - Defining relationships}
-In the previous tasks we saw how to select specific entities from AiiDA, how to apply projections
-on their properties and how to apply filters.
-Moreover, you should know by now how to write complex filters including ``and'' and ``or'' keywords.
-In this task we will see how to associate entities by defining relationships among them.
-
-Defining a relationship between two entities is as easy as appending another entity to the QueryBuilder query.
-For example, let's look at the following query:
-
-\begin{pythoncommand}
-from aiida.orm import Group, JobCalculation
-qb = QueryBuilder()
-qb.append(JobCalculation,
- tag="mycalculation", # I tag, so I can refer to this entity later
- project=["*"]) # I'm asking for ORM instances ("*")
-qb.append(Group, # Also asking for groups
- group_of="mycalculation", # I want the calculation to be part of the group
- filters={ # A filter, the name has to be "pbe_calculation"
- "name":{"==":"pbe_calculation"}
- })
-qb.all()
-\end{pythoncommand}
-This returns all jobs that belong to a Group with the name ``pbe\_calculation''.
-The \emph{project=["*"]} returns the AiiDA orm instance (i.e. an instance of \emph{aiida.orm.calculation.job.JobCalculation}).
-%
-%The graphical representation of the above query can be seen at Figure~\ref{fig:simple_query}.
-%~ \begin{figure}[h]
-%~ \begin{center}
-%~ \includegraphics[width=3.5cm]{img/qb_example_1.png}
-%~ \end{center}
-%~ \caption{Query: Fetch me all the RemoteData that belong to a Group.}
-%~ \label{fig:simple_query}
-%~ \end{figure}
-%
-%
-There are few details that we should remember from the above query:
-\begin{itemize}
-\item We \emph{append} to the QueryBuilder instance new entities, and specify how they linked
-to previous entities with keywords (``input\_of'', ``output\_of'', ``group\_of'').
-The possible relationship keywords can be seen at table~\ref{table:join_rel}.
-\item Therefore, we have to \emph{tag} the entities that we want to reference.
-We pass these tags along with the keyword, to define a relationship.
-\end{itemize}
-
-
-\begin{table}
- \begin{center}
- \begin{tabular}{l l l l}
- Entity from & Entity to & Relationship & Explanation\\ \hline\hline
- Node & Node & input\_of & One node as input of another node\\
- Node & Node & output\_of & One node as output of another node\\
- Node & Node & ancestor\_of & One node as the ancestor of another node\\
- Node & Node & descendant\_of & One node as descendant of another node\\\hline
- Group & Node & group\_of & The group of a node\\
- Node & Group & member\_of & The node is a member of a group\\\hline
- Computer & Node & computer\_of & The computer of a node\\
- Node & Computer & has\_computer & The node of a computer\\\hline
- User & Node & creator\_of & The creator of a node is a user\\
- Node & User & created\_by & The node was created by a user\\
- \end{tabular}
- \caption{Available relationships}
- \label{table:join_rel}
- \end{center}
- \end{table}
-
-
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
- \item Write a query that returns all the StructureData that are an input of a JobCalculation.
-\end{itemize}
-More (optional) exercises on entity relationships can be found at the appendix.
-\end{tcolorbox}
-
-
-\subsection*{Task 4 - Attributes and extras}
-Node and its subclasses have properties stored in key/value format.
-These are called \emph{attributes} and \emph{extras} and can be used in filters and projections as the other properties that we have seen previously.
-
-Let's project the value of the property \emph{attributes.energy\_smearing}.
-\begin{pythoncommand}
-qb = QueryBuilder()
-qb.append(
- ParameterData,
- project=["attributes.energy_smearing"]
- )
-qb.all()
-\end{pythoncommand}
-The above query takes the attributes properties of every ParameterData and searches for a
-key called energy\_smearing. If that key is found, the value is projected,
-otherwise the value is None. Try it out!
-% Of course, searching inside key/values can go as deep as needed.
-% E.g. you can project on attributes.a.b.c which will correspond to a property \texttt{\{..., "a": \{... "b": \{... "c": "val" ...\} ...\}, ...\}} % THIS STUFF DOES NOT CORRESPOND TO OUTPUT
-~\\~\\
-% textcolor{blue}{SZ: What happens with lists?}
-
-\textbf{Hints for the exercises:}
-\begin{itemize}
-\item If you are unsure about the key of the node that you would like to project, you can print all the attributes of a specific node to get some inspiration. This can be done by calling the \texttt{.get\_attrs()} method of a specific node.
-\item The pseudopotentials are stored in AiiDA in with the help of the ORM class UpfData. The element that the pseudopotential correspond to is stored in the \emph{attributes.element} property.
-\end{itemize}
-
-\begin{tcolorbox}
-\textbf{Exercises:}
-\begin{itemize}
- \item Print all the attributes of any ParameterData node stored in your database.
- \item Write a query that checks if you have the pseudopotentials for the element \textit{Si}. Do the same for \textit{C}.
-\end{itemize}
-More (optional) exercises on attributes and extras can be found at the appendix.
-\end{tcolorbox}
-
-%\textcolor{blue}{SZ: Distinct doesn't seem to work on attributes.}
-
-\subsection*{Task 5 - A small ``high-throughput'' analysis}
-
-\begin{figure}[!b]
- \includegraphics[width=\linewidth]{img/magnetization_smearing_perovskites.pdf}
- \caption{The contribution from the smearing to the total energy (upper) and the magnetization per unit cell (lower)
- in all the perovskites analyzed and for three different pseudopotential families.}
- \label{fig:barplot_perov}
-\end{figure}
-%
-%In the first part of the tutorial, you got an idea of how a single calculation is submitted with AiiDA and how its results can be retrieved, both from the command line and from the \verb|verdi shell|.
-In this part of the tutorial, we will focus on how to systematically retrieve, query and analyze the results of multiple calculations using AiiDA.
-We know you're able to do this yourself, but to save time, a set of calculations have already been done with AiiDA for you on 57 perovskites,
-using three different pseudopotential families (LDA, PBE and PBESOL, all from GBRV 1.2~\cite{ref:GBRV}).
-These calculations are spin-polarized (without spin-orbit coupling),
-use a Gaussian smearing and perform a variable-cell relaxation of the full unit cell.
-The idea of this part of the tutorial is to ``screen'' for magnetic and metallic perovskites in a ``high-throughput'' way.
-
-As you learned in the first part of the tutorial, AiiDA allows to organize calculations in groups.
-Once more check the list of groups in your database by typing
-
-\begin{bashcommand}
- verdi group list
-\end{bashcommand}
-
-The calculations needed for this task were put in three different groups whose names start with "tutorial\_" (one for each pseudopotential family).
-The main task is to make a plot showing, for all perovskites and for each pseudopotential family,
-the total magnetization and the $-TS$ contribution from the smearing to the total energy.
-An example is shown in \autoref{fig:barplot_perov}.
-
-\subsubsection*{Preparing the analysis}
-Let us now guide you through the definition of the query that allows you to retrieve the relevant data.\\~\\
-\textbf{Hint for the exercise}:
-\begin{itemize}
-\item To select multiple names in a filter your filter-dictionary should look like
-\begin{pythoncommand}
-qb.append(Group, filters={"name": {"in": ["name1","name2","name3"]}})
-\end{pythoncommand}
-\end{itemize}
-
-\begin{tcolorbox}
-\textbf{Exercise:}\\~\\
-Please perform the following steps
-\begin{enumerate}
-\item Write a query to retrieve the three groups and project the respective names.
-\item Extend the query to the PwCalculation nodes that are members of the selected groups.
-\item Extend the query so that also the chemical formula of the input structure of each calculation is returned.
-For simplicity the formulas have been added in the extras of each structure node under the key \textit{"formula"}.
-The chemical formula of a StructureData node can also be accessed by the method \cmd{structure.get\_formula()}
-\item Every successful PwCalculation has in output a ParameterData instance that stores the results as key-value pairs.
-You can find these pairs among the attributes.
-To facilitate querying, the parser takes care of storing values always in the same units, and these are documented.
-For convenience, the units are also added as key/value pairs (with the same key name, but with \cmd{\_units} appended).
-% Load a ParameterData node (ex. pk=3516) and find the keys that you are interested in by typing:
-% \begin{pythoncommand}
-% node.get_attrs()
-% \end{pythoncommand}
-Extend the query so that also the output ParameterData of each calculation is returned.
-Project only the attributes relevant to your analysis (like smearing energy, ...).
-\end{enumerate}
-\end{tcolorbox}
-
-\subsubsection*{Running the query and plotting the results}
-
-% We will now get into a small high-throughput analysis of a larger number of PwCalculations.
-% The goal is to extend the above query so that you project also on the resulting magnetization, smearing, and group name of the group they belong to.
-Now that your query is ready just run it:
-\begin{pythoncommand}
- res = qb.dict()
-\end{pythoncommand}
-The above results returns a list of dictionaries.
-In order to be able to plot the data that you have retrieved a script called \texttt{plot\_calculation\_results.py}
-was provided to you. This script reads an input text file containing the data and produces a plot similar to \autoref{fig:barplot_perov}.
-
-You should prepare this input text file in the following format,
-formatting the data present in \texttt{res}.
-Each row in the input file represents one calculation and contains the following informations separated by a comma:
-
-\begin{enumerate}
-\item The structure formula.
-\item The name of the pseudo family. Remove the tutorial\_ substring from the name if it bothers you.
-\item The smearing energy
-\item The unit used for the smearing energy.
-\item The magnetization.
-\item The unit of the magnetization.
-\end{enumerate}
-
-As an example, the first three lines can look like:
-\begin{bashcommand}
-Sn2O3, pbesol, -1.95921960844e-05, eV, 0.0, Bohrmag / cell
-CaSiO3, pbe, 0.0, eV, 0.0, Bohrmag / cell
-CuNbO3, pbe, -0.010202636111, eV, 0.0, Bohrmag / cell
-\end{bashcommand}
-
-%Once this is done, you can read the this file with the provided script.
-
-
-\iffalse
-You should be able to print the data in the desired format with about ten lines of python code. In case you are not very familiar with python, you may take inspiration from the following snippet:
-
-\begin{pythoncommand}
-with open("res.txt","w") as fout:
- for row in res:
- formula = row["structure"]["extras.formula"]
- magnetization = row["results"]["attributes.total_magnetization"]
- magnetization_units = row["results"]["attributes.total_magnetization_units"]
- smearing = row["results"]["attributes.energy_smearing"]
- smearing_units = row["results"]["attributes.energy_smearing_units"]
- pseudo_family = row["group"]["name"].replace("tutorial_", "")
- str_row = ", ".join(
- map(str, (formula, pseudo_family,
- smearing, smearing_units, magnetization, magnetization_units
- ))
- )
- fout.write("{}\n".format(str_row))
-
-\end{pythoncommand}
-\fi
-
-
-If you are producing the desired output, write that output to a file (here we will call it \texttt{res.txt}).
-If you are using \emph{jupyter}, you can plot the files and see the results directly in the browser. First, in a cell, do
-\begin{pythoncommand}
-cd ~/tutorial_scripts/
-\end{pythoncommand}
-to go to the right folder, and then in the following cell type:
-\begin{pythoncommand}
-%pylab inline
-import plot_calculation_results
-plot_calculation_results.plot_results('../res.txt')
-\end{pythoncommand}
-(possibly replacing \texttt{../res.txt} with the correct location of the file).
-
-Otherwise, if you are not using \emph{jupyter}, to plot your data just go in the shell and change directory to the subfolder \texttt{tutorial\_scripts}. Then type in the shell
-\begin{bashcommand}
-python plot_calculation_results.py ../res.txt
-\end{bashcommand}
-(or replace \texttt{../res.txt} with the correct location of the \texttt{res.txt} file). The \texttt{plot\_calculation\_results.py} file is already provided to you among the scripts given to you for the tutorial, in the \texttt{tutorial\_scripts} folder. If everything is right, you should get a plot similar to \autoref{fig:barplot_perov}.
-You can also pass an option to store the output as a plot on a file:
-\begin{bashcommand}
-python plot_calculation_results.py res.txt -o myresult.pdf
-\end{bashcommand}
-
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Look at the plot that you produced. Which of the perovskites are metals?
-\end{itemize}
-\end{tcolorbox}
-
-
-%~ \begin{pythoncommand}
-%~ qb = QueryBuilder()
-%~ qb.append(StructureData, project="*")
-%~ qb.append(Calculation, tag="calc")
-%~ qb.append(
- %~ ParameterData,
- %~ project="attributes.energy",
- %~ filters={"attributes.energy":{"<=":0}}
- %~ )
-%~ qb.append(Group, group_of="calc")
-%~
-%~ for structure, energy in qb.iterall():
- %~ print structure.get_formula(), energy
-%~ \end{pythoncommand}
-
-
-%~ Figures~\ref{fig:barplot_mag} and~\ref{fig:barplot_smearing} show the plots you should obtain (note that in Fig.~\ref{fig:barplot_smearing} we actually plotted $|-TS|=TS$ since $-TS$ is negative for all the species studied).
-
-%
-
-%\begin{figure}[tb]
-% \includegraphics[width=\linewidth]{img/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png}
-% \caption{$-TS$ contribution to the total energy (in absolute value, since it is actually negative for all species) from the smearing, for all the perovskites analyzed and for three different pseudopotential families\label{fig:barplot_smearing}.}
-%\end{figure}
-%
-%Two python scripts can help you doing this (you can find them in the subfolder \texttt{$\sim$/tutorial\_scripts}):
-%\begin{itemize}
-%\item \texttt{get\_pks.py}: gives a list of pk numbers for a given group, possibly filtering also for those perovskites with given ``A"" and/or ``B"" species.
-%
-%Use it from the command line in the following way:
-%\begin{bashcommand}
-% ./get_pks.py -A -B
-%\end{bashcommand}
-%This script prints on output the list of pks (first column) and chemical formulas (second column) of the perovskite(s). The \cmd{-A} and \cmd{-B} options are optional.
-% \item \texttt{get\_info.py}: prints several information about a given calculation.
-%
-%You can use it (from a terminal) with the command
-%\begin{bashcommand}
-% ./get_info.py
-%\end{bashcommand}
-%\end{itemize}
-%%
-%We suggest that you give a look to the content of the scripts we provide, to understand what they do. To prepare the plots, you can either create your own python script taking inspiration from the two scripts that we provide, or (if you do not want to write a Python script, but rather use bash commands) you can simply use the provided scripts as they are.
-%Note also that if the graphical plotting software is too slow to load over SSH, you can create a text data file on the remote machine, then copy the data on your computer, and prepare the plot there (you can use any software you like: gnuplot, xmgrace, or even simply Excel).
-
-
-%~ \subsection*{Task 5.2}
-%~ We chose five calculations (using the PBEsol pseudopotential family) of five different representative perovskites, for which we plotted the $-TS$ contribution as a function of the Kohn-Sham band-gap. The resulting plot is shown in \cref{fig:smearing_vs_bandgaps}. \begin{tcolorbox}
-%~ Use this plot and the plots you obtained for the smearing energy of all perovskites, to define a criterion to distinguish which compounds are metals and which ones are insulators.
-%~ \end{tcolorbox}
-
-%
-%\begin{figure}[tb]
-% \centering
-% \includegraphics[width=0.7\linewidth]{img/smearing_energy_vs_bandgap_Gaussian_0p02.png}
-% \caption{$-TS$ contribution (in absolute value) vs. Kohn-Sham band-gap for five selected perovskites, using the pseudopotentials with PBEsol functional\label{fig:smearing_vs_bandgaps}.}
-%\end{figure}
-%
-
-%~ \subsection*{Task 5.3}
-%~ Finally, we want to print the list of perovskites which are metals according to the criterion we defined, and those that are magnetic. To this aim, we can use the \emph{QueryBuilder} that helps you making easy queries to the database, without the need of knowing the SQL language.
-
-
-
-%~ \begin{tcolorbox}
-%~ Do another query to find out metallic perovskites according to the criterion on the smearing energy you found above. Check that your query results are consistent with the plots you did at the beginning of the exercise.
-%~ \end{tcolorbox}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder_jupyter.tex b/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder_jupyter.tex
deleted file mode 100644
index 2a89cca9..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/5_querybuilder_jupyter.tex
+++ /dev/null
@@ -1,29 +0,0 @@
-% Version using the Jupyter Notebook
-
-\section{Queries in AiiDA: The QueryBuilder}
-\label{sec:querybuilder}
-
-\begin{tcolorbox}
-This part of the tutorial is provided only in interactive mode through a Jupyter notebook, which you will be able to run in your browser.
-To accomplish this we first need to start the Jupyter server, if you didn't do it already at the very beginning of the tutorial.
-First make sure you are connected to the virtual machine with local forwarding enabled, as described in section \ref{sec:sshintro}.
-Then, on the virtual machine, first make sure your are in the \texttt{aiida} virtual environment:
-
-\begin{bashcommand}
-workon aiida
-\end{bashcommand}
-
-If the virtual environment is successfully loaded, your prompt should be prefixed with \texttt{(aiida)}.
-To finally launch the Jupyter server, execute the following commands:
-
-\begin{bashcommand}
-cd ~/examples/aiida-demos/tutorial/
-jupyter notebook --no-browser
-\end{bashcommand}
-
-If all went well, you should now be able to open up a browser on your local machine and point it to the following address \texttt{http://localhost:8888/?token=2a3ba3...} (replace the token with the one printed on output by the previous command).
-This should now show you a directory navigator.
-To open the notebook, click on \texttt{querybuilder} and then select the file \texttt{tutorial.ipynb}.
-Note that there is also a \texttt{solution.ipynb}, which is a copy of the same notebook, but which contains the solutions to all the exercises.
-You can use this version at your own discretion if you get stuck at some point (but we suggest that you try not to look at it at first).
-\end{tcolorbox}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/6_workflows.tex b/docs/assets/2018_PRACE_MaX/latex/sections/6_workflows.tex
deleted file mode 100644
index fae37abe..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/6_workflows.tex
+++ /dev/null
@@ -1,581 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-%%%%%%%%%%%%%%%%This slot is devoted to workflows, although the material inherited from the old tutorial does not use them.
-% Nevertheless, it has been suggested to use workflows for calculating equation of state, so all this stuff can be inspirational
-%%%%%%%%%%%%%%%%%%%%%%
-
-\section{AiiDA Workflows: workfunctions, workchains}
-
-The aim of the last part of this tutorial is to introduce the concept of workflows in AiiDA.
-
-In this section, we will ask you to:
-\begin{enumerate}
-\item Understand how to keep the provenance when running small python scripts to convert one data object into another (postprocessing, preparation of inputs, \ldots)
-\item Understand how to represent simple python functions in the AiiDA database
-\item Learn how to write a simple workflow in AiiDA (without and with remote calculation submission)
-\item Learn how to write a workflow with checkpoints: this means that, even if your
-workflows requires external calculations to start, them and their dependences are managed through the daemon. While you are waiting for the calculations to complete, you can stop and even shutdown the computer in which AiiDA is running. When you restart, the workflow will
-continue from where it was.
-\item (optional) Go a bit deeper in the syntax of workflows with checkpoints (WorkChain), e.g. implementing a convergence workflow using \texttt{while} loops.
-\end{enumerate}
-
-A note: this is probably the most ``complex'' part of the tutorial.
-We suggest that you try to understand the underlying logic behind the scripts,
-without focusing too much on the details of the workflows implementation or the syntax.
-If you want, you can then focus more on the technicalities in a second reading.
-
-\subsection[Workfunctions]{Introduction}
-The ultimate aim of this section is to create a workflow to calculate the equation of state of silicon. This is a very common task for an \textit{ab initio} researcher. An equation of state consists in calculating the total energy $E$ as a function of the unit cell volume $V$. The minimal energy is reached at the equilibrium volume $V^{\star}$. Equivalently, the equilibrium is defined by a vanishing pressure $p=-dE/dV$. In the vicinity of the minimum, the functional form of the equation of state can be approximated by a parabola. Such an approximation greatly simplifies the calculation of the bulk modulus, that is proportional to the second derivative of the energy $d^2E/dV^2$ (a more advanced treatment requires fitting the curve with, e.g., the Birch--Murnaghan expression).
-
-The process of calculating an equation of state puts together several operations.
-First, we need to define and store in the AiiDA database the basic structure of, e.g., bulk Si.
-Next, one has to define several structures with different lattice parameters. Those structures must be connected between them in the database, in order to ensure that their provenance is recorded. In other words, we want to be sure that in the future we will know that if we find a bunch of rescaled structures in the database, they all descend from the same one. How to link two nodes in the database in a easy way is the subject of Sec.~\ref{sec:provenancewf}.
-
-In the following sections, the newly created structures will then serve as an input for total energy calculations performed, in this tutorial, with Quantum ESPRESSO. This task is very similar to what you have done in the previous part of the tutorial. Finally, you will fit the resulting energies as a function of volume to get the bulk modulus.
-As the EOS task is very common, we will show how to automate its computation with workflows, and how to deal with both serial and parallel (i.e., independent) execution of multiple tasks. Finally, we will show how to introduce more complex logic in your workflows such as loops and conditional statements (Sec.~\ref{sec:convpressure}), with an example on a convergence loop to find iteratively the minimum of an EOS.
-
-
-\subsection[Workfunctions]{\label{sec:provenancewf}Workfunctions: a way to generalize provenance in AiiDA}
-
-
-%Figure with workfunction graph
-\begin{figure}[!th]
-\centering
- \includegraphics[width=\linewidth]{img/workfunctions}
- \caption{ \label{Fig:workfunctions}Typical graphs created by using a workfunction. (a) The workfunction ``create\_structure'' takes a \texttt{Str} object as input and returns a single \texttt{StructureData} object which is used as input for the workfunction ``rescale'' together with a \texttt{Float} object. This latter workfunction returns another \texttt{StructureData} object, defining a crystal having the rescaled lattice constant. (b) Graph generated by nesting workfunctions. A wrapper workfunction ``create\_rescaled" calls serially ``create\_structure'' and ``rescale". This relationship is stored via ``CALL'' links.}
-\end{figure}
-
-
-Imagine to have a function that takes as input a string of the name of a chemical element and generates the corresponding bulk structure as a \texttt{StructureData} object. The function might look like this (you will find this function in the folder \texttt{/home/aiida/tutorial\_scripts/create\_rescale.py} on your virtual machine):
-
-\begin{pythoncommand}
-def create_diamond_fcc(element):
- """
- Workfunction to create the crystal structure of a given element.
- For simplicity, only Si and Ge are valid elements.
- :param element: The element to create the structure with.
- :return: The structure.
- """
- import numpy as np
- elem_alat= {
- "Si": 5.431, # Angstrom
- "Ge": 5.658,
- }
-
- # Validate input element
- symbol = str(element)
- if symbol not in elem_alat.keys():
- raise ValueError("Valid elements are only Si and Ge")
-
- # Create cel starting having lattice parameter alat corresponding to the element
- alat = elem_alat[symbol]
- the_cell = np.array([[0., 0.5, 0.5],
- [0.5, 0., 0.5],
- [0.5, 0.5, 0.]]) * alat
-
- # Create a structure data object
- StructureData = DataFactory("structure")
- structure = StructureData(cell=the_cell)
- structure.append_atom(position=(0., 0., 0.), symbols=str(element))
- structure.append_atom(position=(0.25*alat, 0.25*alat, 0.25*alat),
- symbols=str(element))
- return structure
-\end{pythoncommand}
-
-For the equation of state you need another function that takes as input a \texttt{StructureData} object and a rescaling factor, and returns a \texttt{StructureData} object with the rescaled lattice parameter (you will find this function in the same file \texttt{create\_rescale.py} on your virtual machine):
-
-\begin{pythoncommand}
-def rescale(structure, scale):
- """
- Workfunction to rescale a structure
-
- :param structure: An AiiDA structure to rescale
- :param scale: The scale factor (for the lattice constant)
- :return: The rescaled structure
- """
- the_ase = structure.get_ase()
- new_ase = the_ase.copy()
- new_ase.set_cell(the_ase.get_cell() * float(scale), scale_atoms=True)
- new_structure = DataFactory('structure')(ase=new_ase)
- return new_structure
-\end{pythoncommand}
-
-In order to generate the rescaled starting structures, say for five different lattice parameters you would combine the two functions. Enter the following commands in the \texttt{verdi shell} from the \texttt{tutorial\_scripts} folder.
-
-\begin{pythoncommand}
-from create_rescale import create_diamond_fcc, rescale
-
-s0 = create_diamond_fcc("Si")
-rescaled_structures = [rescale(s0, factor) for factor
- in (0.98, 0.99, 1.0, 1.1, 1.2)]
-\end{pythoncommand}
-
-and store them in the database:
-
-\begin{pythoncommand}
-s0.store()
-for struct in rescaled_structures:
- struct.store()
-\end{pythoncommand}
-
-\begin{tcolorbox}
-Run the commands above to store all the structures.
-\end{tcolorbox}
-
-As expected, all the structures that you have created are not linked in any manner as you can verify via the \cmd{get\_inputs()/get\_outputs()} methods of the StuctureData class.
-Instead, you would like these objects to be connected as sketched in Fig.~\ref{Fig:workfunctions}a. Now that you are familiar with AiiDA, you know that the way to connect two data nodes is through a calculation.
-%However, you do not want to run such simple python functions on a cluster! Rather, you would like to simply run them as simple python functions, but keep at the same time the provenance.
-In order to ``wrap'' python functions and automate the generation of the
-needed links, in AiiDA we provide you with what we call ``workfunctions''. A normal function can be converted to a workfunction by using the \texttt{@workfunction} decorator\footnote{In simple (or even simplified) words, a decorator is a function that modifies the behavior of another function. In python, a function can be decorated by adding a line of the form \texttt{@decorating\_function\_name} on the line just before the \texttt{def} line of the decorated function. If you want to know more, there are many online resources explaining python decorators.} that takes care of storing the execution as a calculation and adding the links between the input and output data nodes.
-
-\begin{tcolorbox}
-In our case, what you need to do is to modify the two functions as follows (note that we import \texttt{workfunction} as \texttt{wf} to be shorter, but this is not required). You can do it in the file \texttt{create\_rescale.py}:
-\end{tcolorbox}
-
-\begin{pythoncommand}
-# Add this import
-from aiida.work import workfunction as wf
-
-# Add decorators
-@wf
-def create_diamond_fcc(element):
- ...
- ...
-
-@wf
-def rescale(structure, scale):
- ...
- ...
-\end{pythoncommand}
-
-\emph{Important}: when you use workfunctions, you have to make sure that their input and output are actually Data nodes, so that they can be stored in the database. AiiDA objects such as \texttt{StructureData}, ParameterData, etc.\@ carry around information about their provenance as stored in the database. This is why we must use the special database-storable types Float, Str, etc.\@ as shown in the snippet below.
-
-\begin{tcolorbox}
-Try now to run the following script:
-\end{tcolorbox}
-\begin{pythoncommand}
-from aiida.orm.data.base import Float, Str
-from create_rescale import create_diamond_fcc, rescale
-
-s0 = create_diamond_fcc(Str("Si"))
-rescaled_structures = [rescale(s0,Float(factor)) for factor in (0.98, 0.99, 1.0, 1.1, 1.2)]
-\end{pythoncommand}
-and check now that the output of \texttt{s0} as well as the input of the rescaled structures point to an intermediate ProcessCalculation node, representing the execution of the
-workfunction, see Fig.~\ref{Fig:workfunctions}.
-\begin{tcolorbox}
-For instance, you can check that the output links of \texttt{s0} are the five \texttt{rescale} calculations:
-\end{tcolorbox}
-\begin{pythoncommand}
-s0.get_outputs()
-\end{pythoncommand}
-which outputs
-\begin{pythoncommand}
-[,
- ,
- ,
- ,
- ]
-\end{pythoncommand}
-\begin{tcolorbox}
-and the inputs of each ProcessCalculation (``rescale'') are obtained with:
-\end{tcolorbox}
-\begin{pythoncommand}
-for s in s0.get_outputs():
- print s.get_inputs()
-\end{pythoncommand}
-that will return
-\begin{pythoncommand}
-[0.98, ]
-[0.99, ]
-[1.0, ]
-[1.1, ]
-[1.2, ]
-\end{pythoncommand}
-
-\subsubsection{Workfunction nesting}
-One key advantage of workfunctions is that they can be nested, namely, a workfunction can invoke workfunctions inside its definition, and this ``call'' relationship will also be automatically recorded in the database.
-As an example, let us combine the two previously defined workfunctions by means of a wrapper workfunction called ``create\_rescaled'' that takes as input the element and the rescale factor.
-\begin{tcolorbox}
-Type in your shell (or modify the functions defined in \texttt{create\_rescale.py} and then run):
-\end{tcolorbox}
-%%%%%%%%%%Call link
-\begin{pythoncommand}
-@wf
-def create_rescaled(element, scale):
- """
- Workfunction to create and immediately rescale
- a crystal structure of a given element.
- """
- s0 = create_diamond_fcc(element)
- return rescale(s0,scale)
-\end{pythoncommand}
-and create an already rescaled structure by typing
-\begin{pythoncommand}
-s1 = create_rescaled(element=Str("Si"), scale=Float(0.98))
-\end{pythoncommand}
-\begin{tcolorbox}
-Now inspect the input links of \texttt{s1}:
-\end{tcolorbox}
-\begin{pythoncommand}
-In [6]: s1.get_inputs()
-Out[6]:
-[,
- ,
- ]
-\end{pythoncommand}
-
-The object \texttt{s1} has three incoming links, corresponding to \emph{two} different calculations as input (in this case, pks 5002 and 5005). These correspond to the calculations ``create\_rescaled'' and ``rescale'' as shown in Fig.~\ref{Fig:workfunctions}b.
-It is normal that calculation 5005 has two links, don't worry about that\footnote{If you are curious: the two links have the same label, but are of different \emph{link\_type}: one is a \textbf{create} link, that keeps track of the calculation that actually generated the node. Instead the other one is of type \textbf{return}, stating that the workfunction, beside creating that node, also returned it as an output. Calculation 5002 instead only returned the node but it did not generate it, therefore there is only one link between it and the final \texttt{StructureData}.}.
-To see the ``call'' link, inspect now the outputs of the calculation appearing only once in the list. Write down its \texttt{} (in general, it will be different from 5002), then in the shell load the corresponding node and inspect the outputs:
-\begin{pythoncommand}
-In [12]: p1 = load_node()
-In [13]: p1.get_outputs_dict()
-\end{pythoncommand}
-\begin{tcolorbox}
-You should be able to identify the two ``children" calculations as well as the final structure (you will see the calculations linked via CALL links: these are calculation-to-calculation links representing the fact that \texttt{create\_rescaled} called two sub-workfunctions). The graphical representation of what you have in the database should match Fig.~\ref{Fig:workfunctions}b.
-\end{tcolorbox}
-
-\subsection{\label{sec:sync} Run a simple workflow}
-
-Let us now use the workfunctions that we have just created to build a simple workflow to calculate the equation of state of silicon. We will consider five different values of the lattice parameter obtained rescaling the experimental minimum, $a=5.431~\text{\AA}$, by a factor in $[0.96, 0.98, 1.0, 1.02, 1.04]$. We will write a simple script that runs a series of five calculations and at the end returns the volume and the total energy corresponding to each value of the lattice parameter. For your convenience, besides the functions that you have written so far in the file \texttt{create\_rescale.py}, we provide you with some other utilities to get the correct pseudopotential and to generate a pw input file, in the module \texttt{common\_wf.py} which has been put in the \texttt{tutorial\_scripts} folder.
-
-\begin{tcolorbox}
-We have already created the following script named \texttt{simple\_sync\_workflow.py}, which you are free to look at but please go through the lines carefully and make sure you understand them.
-If you decide to create your own new script, make sure to also place it in the folder \texttt{tutorial\_scripts}, otherwise the imports won't work.
-\end{tcolorbox}
-Besides the functions in the local folder
-\begin{pythoncommand}
-from create_rescale import create_diamond_fcc, rescale
-from common_wf import generate_scf_input_params
-\end{pythoncommand}
-you need to import few further AiiDA classes and functions:
-\begin{pythoncommand}
-from aiida.work import run, Process
-from aiida.work import workfunction as wf
-from aiida.orm.data.base import Str, Float
-from aiida.orm import CalculationFactory, DataFactory
-\end{pythoncommand}
-
-The only imported function that deserves an explanation is \texttt{run}.
-For the time being, you just need to know that it is a function that needs to be used to execute a new workflow.
-The actual body of the script is the following.
-We suggest that you first have a careful look at it before running it.
-
-\begin{pythoncommand}
-# Load the calculation class 'PwCalculation' using its entry point 'quantumespresso.pw'
-PwCalculation = CalculationFactory('quantumespresso.pw')
-
-scale_facs = (0.96, 0.98, 1.0, 1.02, 1.04)
-labels = ["c1", "c2", "c3", "c4", "c5"]
-
-@wf
-def run_eos_wf(codename, pseudo_family, element):
- print "Workfunction node identifiers: {}".format(Process.current().calc)
- s0 = create_diamond_fcc(Str(element))
-
- calcs = {}
- for label, factor in zip(labels, scale_facs):
- s = rescale(s0, Float(factor))
- inputs = generate_scf_input_params(s, str(codename), Str(pseudo_family))
- print "Running a scf for {} with scale factor {}".format(element, factor)
- result = run(PwCalculation, **inputs)
- print "RESULT: {}".format(result)
- calcs[label] = get_info(result)
-
- eos = []
- for label in labels:
- eos.append(calcs[label])
-
- # Return information to plot the EOS
- ParameterData = DataFactory("parameter")
- retdict = {
- 'initial_structure': s0,
- 'result': ParameterData(dict={'eos_data': eos})
- }
-
- return retdict
-\end{pythoncommand}
-
-If you look into the previous snippets of code, you will notice that the way we submit a QE calculation is slightly different from what you have seen in the first part of the tutorial. The following:
-\begin{pythoncommand}
-result = run(PwCalculation, **inputs)
-\end{pythoncommand}
-runs in the current python session (without the daemon), waits for its completion and returns the output in the user-defined variable \texttt{result}.
-The latter is a dictionary whose values are the output nodes generated by the calculation, with the link labels as keys.
-For example, once the calculation is finished, in order to access the total energy, we need to access the ParameterData node which is linked via the ``output\_parameters'' link (see again Fig.~1 of Day 1 Tutorial, to see inputs and outputs of a Quantum ESPRESSO calculation).
-Once the right node is retrieved as \cmd{result[`output\_parameters']}, we need to get the \texttt{energy} attribute. The global operation is achieved by the command
-\begin{pythoncommand}
-result['output_parameters'].dict.energy
-\end{pythoncommand}
-As you see, the function \texttt{run\_eos\_wf} has been decorated as a workfunction to keep track of the provenance.
-Finally, in order to get the \texttt{} associated to the workfunction (and print on the screen for our later reference), we have used the following command to get the node corresponding to the ProcessCalculation:
-\begin{pythoncommand}
-from aiida.work import Process
-print Process.current().calc
-\end{pythoncommand}
-
-To run the workflow it suffices to call the function \texttt{run\_eos\_wf} in a python script providing the required input parameters. For simplicity, we have included few lines at the end of the script that invoke the function with a static choice of parameters:
-
-\begin{pythoncommand}
-def run_eos(codename='pw-5.1@localhost', pseudo_family='GBRV_lda', element="Si"):
- return run_eos_wf(Str(codename), Str(pseudo_family), Str(element))
-
-if __name__ == '__main__':
- run_eos()
-\end{pythoncommand}
-
-\begin{tcolorbox}
-Run the workflow by running the following command from the \texttt{tutorial\_scripts} directory:
-\begin{bashcommand}
-verdi run simple_sync_workflow.py
-\end{bashcommand}
-and write down the \texttt{} of the ProcessCalculation printed on screen at execution.
-\end{tcolorbox}
-
-The command above locks the shell until the full workflow has completed (we will see in a moment how to avoid this).
-While the calculation is running, you can use (in a different shell) the command \cmd{verdi work list} to show ongoing and finished workfunctions. You can ``grep'' for the \texttt{} you are interested in. Additionally, you can use the command \cmd{verdi work status } to show the tree of the sub-workfunctions called by the root workfunction with a given \texttt{}.
-
-\begin{tcolorbox}
-Wait for the calculation to finish, then call the function \cmd{plot\_eos()} that we provided in the file \texttt{common\_wf.py} to plot the equation of state and fit it with a Birch--Murnaghan equation.
-\end{tcolorbox}
-
-\subsection{\label{sec:wf-multiple-calcs}Run multiple calculations}
-
-You should have noticed that the calculations for different lattice parameters are executed serially, although they might perfectly be executed in parallel because their inputs and outputs are not connected in any way.
-In the language of workflows, these calculations are executed in a synchronous (or blocking) way, whereas we would like to have them running \emph{asynchronously} (i.e., in a non-blocking way, to run them in parallel).
-One way to achieve this to submit the calculation to the daemon using the \cmd{submit} function.
-Make a copy of the script \texttt{simple\_sync\_workflow.py} that we worked on in the previous section and name it \texttt{simple\_submit\_workflow.py}.
-To make the new script work asynchronously, simply change the following subset of lines:
-\begin{pythoncommand}
-from aiida.work import run
-[...]
-for label, factor in zip(labels, scale_facs):
- [...]
- result = run(PwCalculation, **inputs)
- calcs[label] = get_info(result)
-[...]
-eos = []
-for label in labels:
- eos.append(calcs[label])
-\end{pythoncommand}
-replacing them with
-\begin{pythoncommand}
-from aiida.work import submit
-from time import sleep
-[...]
-for label, factor in zip(labels, scale_facs):
- [...]
- calcs[label] = submit(PwCalculation, **inputs)
-[...]
-# Wait for the calculations to finish
-for calc in calcs.values():
- while not calc.is_finished:
- sleep(1)
-
-eos = []
-for label in labels:
- eos.append(get_info(calcs[label].get_outputs_dict()))
-\end{pythoncommand}
-
-The main differences are:
-\begin{itemize}
- \item \cmd{run} is replaced by \cmd{submit}
- \item The return value of \texttt{submit} is not a dictionary describing the outputs of the calculation, but it is the calculation node for that submission.
- \item Each calculation starts in the background and calculation nodes are added to the \texttt{calc} dictionary.
- \item At the end of the loop, when all calculations have been launched with \cmd{submit}, another loop is used to wait for all calculations to finish before gathering the results as the final step.
-
-\end{itemize}
-In the next section we will show you another way to achieve this, which has the added bonus that it introduces checkpoints in the workfunction, from which the calculation can be resumed should it be interrupted.
-
-\begin{tcolorbox}
-After applying the modifications, run the script. You will see that all calculations start at the same time, without waiting for the previous ones to finish.
-\end{tcolorbox}
-If in the meantime you run \cmd{verdi work status }, all five calculations are already shown as output. Also, if you run \cmd{verdi calculation list}, you will see how the calculations are submitted to the scheduler.
-
-
-\subsection{\label{sec:workchainsimple}Workchains, or how not to get lost if your computer shuts down or crashes}
-The simple workflows that we have used so far have been launched by a python script that needs to be running for the whole time of the execution, namely the time in which the calculations are submitted, and the actual time needed by Quantum ESPRESSO to perform the calculation and the time taken to retrieve the results.
-If you had killed the main python process during this time, the workflow would not have terminated correctly. Perhaps you have kill the calculation and you experienced the unpleasant consequences: intermediate calculation results are potentially lost and it is extremely difficult to restart a workflow from the exact place where it stopped.
-
-In order to overcome this limitation, in AiiDA we have implemented a way to insert checkpoints, where the main code defining a workflow can be stopped (you can even shut down the machine on which AiiDA is running!). We call these workfunctions with checkpoints ``workchains'' because, as you will see, they basically amount to splitting a workfunction in a chain of steps. Each step is then ran by the daemon, in a way similar to the remote calculations.
-
-The basic rules that allow you to convert your workfunction-based script to a workchain-based one are listed in Table~\ref{Tab:wf2frag}, which focus on the code used to perform the calculation of an equation of state. The modifications needed are put side-to-side to allow for a direct comparison. In the following, when referencing a specific part of the code we will refer to the line number appearing in Table~\ref{Tab:wf2frag}.
-
-\begin{sidewaystable}
-\caption{\label{Tab:wf2frag}Side-to-side comparison of the EOS workflow using standard workfunctions (left panel) or ``workchains'' (right panel).}
-\scriptsize
-\begin{tabular}{|c|c|}
-\hline
-{Workfunctions}&
-{Workchains}\\
-\hline
-{
-\begin{lstlisting}[language=Python,numbers=left,moredelim={[is][\color{gray}]{??}{??}}]
-from aiida.work import submit, Process
-# ...
-
-
-
-
-
-
-
-
-
-
-
-
-
-@wf
-def run_eos_wf(codename, pseudo_family, element):
- # ...
- s0 = create_diamond_fcc(Str(element))
-
-
- calcs = {}
- for label, factor in zip(labels, scale_facs):
- s = rescale(s0,Float(factor))
- inputs = generate_scf_input_params(
- s, str(codename), pseudo_family)
- # ...
- calcs[label] = submit(PwCalculation, **inputs)
-
-
- # Wait for the calculations to finish
- for calc in calcs.values():
- while not calc.is_finished:
- sleep(1)
-
- eos = []
- for label in labels:
- eos.append(get_info(calcs[label].get_outputs_dict()))
-
- #Return information to plot the EOS
- ParameterData = DataFactory("parameter")
- retdict = {
- 'initial_structure': s0,
- 'result': ParameterData(dict={'eos_data': eos})
- }
-
- return retdict
-
-\end{lstlisting}
-} &
-{
-\begin{lstlisting}[language=Python,numbers=left,moredelim={[is][\color{gray}]{??}{??}}]
-from aiida.work.workchain import WorkChain, ToContext
-# ...
-
-class EquationOfState(WorkChain):
- @classmethod
- def define(cls, spec):
- super(EquationOfState, cls).define(spec)
- spec.input('element', valid_type=Str)
- spec.input('code', valid_type=Str)
- spec.input('pseudo_family', valid_type=Str)
- spec.outline(
- cls.run_pw,
- cls.return_results,
- )
-
-
- def run_pw(self):
- # ...
- self.ctx.s0 = create_diamond_fcc(Str(self.inputs.element))
-
-
- calcs = {}
- for label, factor in zip(labels, scale_facs):
- s = rescale(self.ctx.s0,Float(factor))
- inputs = generate_scf_input_params(
- s, str(self.inputs.code), self.inputs.pseudo_family)
- # ...
- future = self.submit(PwCalculation, **inputs)
- calcs[label] = future
-
- # Ask the workflow to continue when the results are ready
- # and store them in the context
- return ToContext(**calcs)
-
- def return_results(self):
- eos = []
- for label in labels:
- eos.append(get_info(self.ctx[label].get_outputs_dict()))
-
- # Return information to plot the EOS
- ParameterData = DataFactory('parameter')
- retdict = {
- 'initial_structure': self.ctx.s0,
- 'result': ParameterData(dict={'eos_data': eos})
- }
- for link_name, node in retdict.iteritems():
- self.out(link_name, node)
-
-\end{lstlisting}
-}
-\\
-\hline
-\end{tabular}
-\end{sidewaystable}
-
-
-\begin{itemize}
- \item Instead of using decorated functions you need to define a class, inheriting from a prototype class called \cmd{WorkChain} that is provided by AiiDA (line 4)
- %
- \item Within your class you need to implement a \cmd{define} classmethod that always takes \texttt{cls} and \texttt{spec} as inputs. (lines 6--7). Here you specify the main information on the workchain, in particular:
- \begin{itemize}
- \item the \emph{inputs} that the workchain expects. This is obtained by means of the \text{spec.input()} method, which provides as the key feature the automatic validation of the input types via the \texttt{valid\_type} argument (lines 8--10). The same holds true for outputs, as you can use the \texttt{spec.output()} method to state what output types are expected to be returned by the workchain. Both \texttt{spec.input()} and \texttt{spec.output()} methods are optional, and if not specified, the workchain will accept any set of inputs and will not perform any check on the outputs, as long as the values are database storable AiiDA types.
- %
- \item the \cmd{outline} consisting in a list of ``steps'' that you want to run, put in the right sequence (lines 11--14). This is obtained by means of the method \cmd{spec.outline()} which takes as input the steps. \emph{Note}: in this example we just split the main execution in two sequential steps, that is, first \cmd{run\_pw} then \cmd{return\_results}. However, more complex logic is allowed, as will be explained in the Sec.~\ref{sec:convpressure}.
- \end{itemize}
- %
- \item You need to split your main code into methods, with the names you specified before into the outline (\cmd{run\_pw} and \cmd{return\_results} in this example, lines 17 and 35). Where exactly should you split the code? Well, the splitting points should be put where you would normally block the execution of the script for collecting results in a standard workfunction, namely whenever you call the method \cmd{.result()}. Each method should accept only one parameter, \texttt{self}, e.g. \cmd{def step\_name(self)}.
- %
- \item You will notice that the methods reference the attribute \cmd{ctx} through \cmd{self.ctx}, which is called the \emph{context} and is inherited from the base class \texttt{WorkChain}.
- A python function or workfunction normally just stores variables in the local scope of the function.
- For instance, in the example of the subsection~\ref{sec:sync}, you stored the \cmd{calc\_results} in the \cmd{eos} list, that was a local variable.
- In workchains, instead, to preserve variables between different steps, you need to store them in a special dictionary called \emph{context}.
- As explained above, the context variable \cmd{ctx} is inherited from the base class \texttt{WorkChain}, and at each step method you just need to update its content.
- AiiDA will take care of saving the context somewhere between workflow steps (on disk, in the database, \ldots{}, depending on how AiiDA was configured).
- For your convenience, you can also access the value of a context variable as \cmd{self.ctx.varname} instead of \cmd{self.ctx['varname']} (see e.g. lines 19, 24, 38, 43).
- %
- \item Any submission within the workflow should not call the normal \cmd{run} or \cmd{submit} functions, but \cmd{self.submit} to which you have to pass the Process class, and a dictionary of inputs (line 28).
- %
- \item The submission in line 28, returns a future and not the actual calculation, because at that point in time we have only just launched the calculation to the daemon and it is not yet completed. Therefore it literally is a ``future'' result. Yet we still need to add these futures to the context, so that in the next step of the workchain, when the calculations are in fact completed, we can access them and continue the work. To do this, we can use the \texttt{ToContext} class. This class takes a dictionary, where the values are the futures and the keys will be the names under which the corresponding calculations will be made available in the context when they are done. See line 33 how the \texttt{ToContext} object is created and returned from the step.
- By doing this, the workchain will implicitly wait for the results of all the futures you have specified, and then call the next step \emph{only when all futures have completed}.
- %
- \item \emph{Return values}: While in a normal workfunction you attach output nodes to the \texttt{FunctionCalculation} by invoking the \textit{return} statement, in a workchain you need to call \cmd{self.out(link\_name, node)} for each node you want to return (line 46-47). Of course, if you have already prepared a dictionary of outputs, you can just use the following syntax:
-\begin{pythoncommand}
-self.out_many(retdict) # Keys are link names, value the nodes
-\end{pythoncommand}
-
-
-The advantage of this different syntax is that you can start emitting output nodes already in the middle of the execution, and not necessarily at the very end as it happens for normal functions (\textit{return} is always the last instruction executed in a function). Also, note that once you have called \cmd{self.out(link\_name, node)} on a given \cmd{link\_name}, you can no longer call \cmd{self.out()} on the same \cmd{link\_name}: this will raise an exception.
-\end{itemize}
-
-Inspect the example in the table that compares the two versions of workfunctions to understand in detail the different syntaxes.
-
-Finally, the workflow has to be run. For this you have to use the function \cmd{run} passing as arguments the \texttt{EquationOfState} class and the inputs as key-value arguments. For example, you can execute
-
-\begin{pythoncommand}
- run(EquationOfState, element=Str('Si'), code=Str('qe-pw-6.2.1@localhost'),
- pseudo_family=Str('GBRV_lda'))
-\end{pythoncommand}
-
-While the workflow is running, you can check (in a different terminal) what is happening
-to the calculations using \cmd{verdi calculation list}. You will see that after a few seconds the calculations are all submitted to the scheduler and can potentially run at the same time.
-
-\begin{tcolorbox}
-\textbf{Note:}
-You will see warnings that say \texttt{`Exception trying to save checkpoint, this means you will not be able to restart in case of a crash until the next successful checkpoint'}, these are generated by the \texttt{PwCalculation} which is unable to save a checkpoint because it is not in a so called `importable path'. Simply put this means that if AiiDA were to try and reload the class it wouldn't know which file to find it in.\\
-To get around this you could simply put the workchain in a different file that is in the `PYTHONPATH' and then launch it by importing it in your launch file, this way AiiDA knows where to find it next time it loads the checkpoint.
-\end{tcolorbox}
-
-As an additional exercise (optional), instead of running the main workflow (\texttt{EquationOfState}),
-try to submit it. Note that the file where the WorkChain is defined will need to be globally importable (so the daemon knows how to load it) and you need to launch it (with \cmd{submit}) from a different python file. The easiest way to achieve this is typically to embed the workflow inside a python package.
-
-\begin{tcolorbox}
-\textbf{Note:}
-As good practice, you should try to keep the steps as short as possible in term of execution time. The reason is that the daemon can be stopped and restarted only between execution steps and not if a step is in the middle of a long execution.
-\end{tcolorbox}
-
-Finally, as an optional exercise if you have time, you can jump to the Appendix~\ref{sec:convpressure}, which shows how to introduce more complex logic into your WorkChains (if conditionals, while loops etc.). The exercise will show how to realize a convergence loop to obtain the minimum-volume structure in a EOS using the Newton's algorithm.
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/7_bandstructure.tex b/docs/assets/2018_PRACE_MaX/latex/sections/7_bandstructure.tex
deleted file mode 100644
index dfef5ccf..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/7_bandstructure.tex
+++ /dev/null
@@ -1,46 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-
-\section{\label{sec:workchain_demonstration}WorkChains, a real-world example: computing a band structure for a simple crystal structure}
-
-\textbf{Note}: \emph{If you still have enough time, you might want to check first Appendix~\ref{sec:convpressure} before continuing with this section.}
-
-As a final demonstration of the power of WorkChains in AiiDA, we want to give a demonstration of a WorkChain that we have written that will take a structure as its only input and will compute its band structure.
-All of the steps that would normally have to be done manually by the researcher, choosing appropriate pseudopotentials, energy cutoffs, k-points meshes, high-symmetry k-point paths and performing the various calculation steps, are performed automatically by the WorkChain.
-
-The demonstration of the workchain will be performed in a Jupyter notebook.
-To run it, follow the instructions that were given for the querybuilder notebook in section \ref{sec:querybuilder}.
-The only difference is that instead of selecting the notebook in the \texttt{querybuilder} directory, go to \texttt{pw/bandstructure} instead and choose the \texttt{bandstructure.ipynb} notebook.
-There you will find some example structures that are loaded from COD, through the importer integrated within AiiDA.
-Note that the required time to calculate the bandstructure for these example structures ranges from 3 minutes to almost half an hour, given that the virtual machine is running on a single core with minimal computational power.
-It is not necessary to run these examples as it may take too long to complete.
-For reference, the expected output band structures are plotted in Fig.\,\ref{fig:workchain_band_structures}.
-
-\begin{figure}
-\begin{subfigure}{.5\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{sections/images/bandstructures/Al_bands.pdf}
- \caption{Al}
- \label{fig:workchain_band_structures_Al}
-\end{subfigure}%
-\begin{subfigure}{.5\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{sections/images/bandstructures/GaAs_bands.pdf}
- \caption{GaAs}
- \label{fig:workchain_band_structures_GaAs}
-\end{subfigure}%
-\newline
-\begin{subfigure}{.5\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{sections/images/bandstructures/CaF2_bands.pdf}
- \caption{CaF$_2$}
- \label{fig:workchain_band_structures_CaF2}
-\end{subfigure}%
-\begin{subfigure}{.5\textwidth}
- \centering
- \includegraphics[width=.9\linewidth]{sections/images/bandstructures/hBN_bands.pdf}
- \caption{$h$-BN}
- \label{fig:workchain_band_structures_hBN}
-\end{subfigure}%
-\caption{Electronic band structures of four different crystal structures computed with AiiDA's PwBandsWorkChain}
-\label{fig:workchain_band_structures}
-\end{figure}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/8_computer_code_setup.tex b/docs/assets/2018_PRACE_MaX/latex/sections/8_computer_code_setup.tex
deleted file mode 100644
index 8a684b46..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/8_computer_code_setup.tex
+++ /dev/null
@@ -1,484 +0,0 @@
-% !TEX root = ../AiiDA_tutorial_addition.tex
-%%%%%%%%%%%
-%Various Installation and setup procedures
-%%%%%%%%%%%
-
-
-\section[Installation and Setup]{Various installation and setup procedures}
-\subsection{\label{sec:codesetup}Setting up a new computer and code in AiiDA: NWChem}
-
-To be able to run a calculation, AiiDA needs to know certain information such as which computer the code can be found on and what the executable name is. In the main tutorial, for instance, you have been using an existing Quantum ESPRESSO pw code.
-You can check its name calling
-\begin{bashcommand}
-verdi code list
-\end{bashcommand}
-and then inpsect its properties using
-\begin{bashcommand}
-verdi code show
-\end{bashcommand}
-
-\begin{tcolorbox}
-\textbf{Exercises:}
-\begin{itemize}
-\item
-Setup a new code (for the simulation package NWChem)
-\end{itemize}
-\end{tcolorbox}
-
-To learn how to setup a new code, let us configure AiiDA to be able to run NWChem, an open source computational chemistry package. First we can check which calculation plugins are available:
-
-\begin{bashcommand}
-verdi calculation plugins
-\end{bashcommand}
-
-You will see an entry called \texttt{nwchem.pymatgen}. This plugin creates the input and parses the output files and acts as the interface between AiiDA and NWChem (the parsing part is delegated to the pymatgen code, which explains the name of the plugin). To configure the code type:
-
-\begin{bashcommand}
-verdi code setup
-\end{bashcommand}
-
-Provide the following details to tell AiiDA about the code (if you want to learn more details on the \texttt{verdi code setup} command, refer to Appendix~\ref{app:codesetup} at page \pageref{app:codesetup}):
-
-\begin{bashcommand}
-=> Label: NWChem
-=> Description: NWChem computational chemistry code
-=> Local: False
-=> Default input plugin: nwchem.pymatgen
-=> Remote computer name: localhost
-=> Remote absolute path: /usr/bin/nwchem
-=> Text to prepend to each command execution
-[Press CTRL+D for the next two steps]
-\end{bashcommand}
-
-If you want to inspect the details of the code you just generated, you can run
-\begin{bashcommand}
-verdi code show NWChem@localhost
-\end{bashcommand}
-
-\textbf{Note} Similarly, also new computers (e.g., a new cluster) can be configured using the \texttt{verdi computer setup} command, as we will see in Sec.~\ref{sec:computersetuptask}.
-
-\subsubsection*{Task (optional, if you want to use the code you just created)}
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Run a simple simulation with the code NWChem
-\end{itemize}
-\end{tcolorbox}
-
-
-Use the following \texttt{ParametersData} dict to run an NWChem calculation on silicon carbide:
-
-\begin{pythoncommand}
-parameters = ParameterData(dict={
- 'directives': [
- ['set nwpw:minimizer', '2'],
- ['set nwpw:psi_nolattice', '.true.'],
- ['set includestress', '.true.']
- ],
- 'geometry_options': [
- 'units',
- 'au',
- 'center',
- 'noautosym',
- 'noautoz',
- 'print'
- ],
- 'memory_options': [],
- 'symmetry_options': [],
- 'tasks': [
- {
- 'alternate_directives': {
- 'driver': {'clear': '', 'maxiter': 40},
- 'nwpw': {'ewald_ncut': 8,
- 'simulation_cell': '\n ngrid 16 16 16\n end'}
- },
- 'basis_set': {},
- 'basis_set_option': 'cartesian',
- 'charge': 0,
- 'operation': 'optimize',
- 'spin_multiplicity': None,
- 'theory': 'pspw',
- 'theory_directives': {},
- 'title': None
- }
- ],
- 'add_cell': True
-})
-\end{pythoncommand}
-
-and we can use an ASE \texttt{Atoms} object to create the structure like so:
-
-\begin{pythoncommand}
-from ase import Atoms
-asestruc = Atoms(['Si', 'Si', 'Si' ,'Si', 'C', 'C', 'C', 'C'],
- cell=[8.277, 8.277, 8.277])
-asestruc.set_scaled_positions([
- (-0.5, -0.5, -0.5),
- (0.0, 0.0, -0.5),
- (0.0, -0.5, 0.0),
- (-0.5, 0.0, 0.0),
- (-0.25, -0.25, -0.25),
- (0.25 ,0.25 ,-0.25),
- (0.25, -0.25, 0.25),
- (-0.25 ,0.25 ,0.25),
-])
-structure = StructureData(ase=asestruc)
-\end{pythoncommand}
-
-The procedure is the same as before with QuantumEspresso except for fetching the NWCode. This should take about a minute to run.
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Inspect the results.
-\end{itemize}
-\end{tcolorbox}
-
-Once the calculation is done you can retrieve the calculation node using the PK from \texttt{verdi calculation list -a -p1}. After loading the node have a look at \texttt{node.out.trajectory}. This stores information about the positions of the atoms at each relaxation steps. You can for instance see how the cell evolved by printing
-\cmd{node.out.trajectory.get\_cells()}, and how the positions changed with
-\cmd{node.out.trajectory.get\_positions()}.
-
-
-\section{\label{sec:computersetuptask}Setup a new computer}
-\subsection{Setting up the computer in the database}
-Until now, we just had on computer configured in the test machine, called \texttt{localhost}. To see all computers configured, you can use
-\begin{bashcommand}
-verdi computer list
-\end{bashcommand}
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Install a new computer (the test machine of your neighbor).
-\item Check if the installation was successful.
-\end{itemize}
-\end{tcolorbox}
-
-\subsubsection*{Preliminary steps}
-\begin{itemize}
-\item As a first step, choose a computer you have. You can try to setup this machine.
-If you don't have one, or you want to try a tested setup, you can setup the same computer on which
-you are running the tests, but this time not with a local transport, but via SSH, as an example. The instructions below are for this use case. We will call the computer \texttt{localhost-ssh}.
-
-\item Generate a new ssh key pair, without passphrase:
-\begin{verbatim}
- ssh-keygen
-\end{verbatim}
-and press enter when asked.
-Copy the content of the \texttt{$\sim$/.ssh/id\_rsa.pub} file that was created and
-paste it as a new line into the file \texttt{$\sim$/.ssh/authorized\_keys}. \textbf{IMPORTANT!}
-Append it to the file, without modifying the current content, otherwise you will
-not be able to ssh into the machine again.
-
-\item Check that you can connect to the computer: from the shell, run \texttt{ssh localhost} and check that you can connect. Then, logout (only once to close the ssh session;
-you should remain on the tutorial machine).
-\end{itemize}
-
-Now you are ready to setup the computer.
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Run the command \texttt{verdi computer setup} to install the computer called \texttt{localhost-ssh}. See below for some hints.
-\end{itemize}
-\end{tcolorbox}
-
-Hints:
-\begin{itemize}
-\item Read appendix~\ref{app:computersetup} for an explanation of the various items you will be asked for
-\item Type \texttt{localhost} when you are asked for the fully-qualified hostname
-\item As transport, use SSH; as scheduler, write \texttt{torque}
-\item As work directory, you can use \texttt{/home/\{username\}/.aiida\_run}
-\item As MPI run command, the default value should be OK: \texttt{mpirun -np \{tot\_num\_mpiprocs\}}
-\item set only 2 CPU per machine for this tutorial
-\item Leave empty the next two prepend/append strings (you need to press CTRL+D as indicated)
-\end{itemize}
-
-\subsection{Configuring the computer connection credentials}
-
-You can now type \texttt{verdi computer list -a} to see that you computer is now present (\texttt{-a} to show all computers, also the unconfigured ones and the ones not setup by you).
-
-You will notice that your computer is marked as ``unconfigured'' (and you might see also other unconfigured computers, coming with the import data that we used in earlier parts of this tutorial). Indeed, the command \cmd{verdi computer setup} just creates a reference for the computer in your database. Something similar also happens when you import data. However, if you want to run simulations with a computer, you need also to specify the credentials of how to connect to it.
-
-To do this, you need to run
-\begin{bashcommand}
-verdi computer configure COMPUTERNAME
-\end{bashcommand}
-
-\begin{tcolorbox}
-\textbf{Exercise:}
-\begin{itemize}
-\item Configure your computer with the above command (see hints below)
-\item Check if AiiDA can connect to the computer
-\end{itemize}
-\end{tcolorbox}
-
-Hints:
-\begin{itemize}
-\item If you properly set up the \texttt{$\sim$/.ssh/config} file in the step before, AiiDA will read that information and all parameters will be already set by default. You just need to press Enter.
-\item Still, try to understand each item---you can refer to Appendix~\ref{sec:computerconfigure} for a detailed explanation of each item.
-\end{itemize}
-
-When you are done, you can test if everything worked by running
-\begin{bashcommand}
-verdi computer test COMPUTERNAME
-\end{bashcommand}
-If everything worked, The last line should read something like ``Test completed (all tests succeeded)''.
-
-\subsection{Final useful commands}
-To get information on a specific computer, run:
-\begin{bashcommand}
-verdi computer show COMPUTERNAME
-\end{bashcommand}
-
-It is also possible to enable/disable a computer with the command
-\begin{bashcommand}
-verdi computer enable COMPUTERNAME
-verdi computer disable COMPUTERNAME
-\end{bashcommand}
-The last two commands might be useful when new resources might
-or not be available (e.g. during maintenance),
-so that you can still submit calculations to
-AiiDA, but AiiDA will not try to connect to the computer until when
-you enable the computer again.
-
-\begin{tcolorbox}
-\textbf{Exercise (optional):}
-\begin{itemize}
-\item Configure the Quantum ESPRESSO code as explained in Sec.~\ref{sec:codesetup}.
-To know the \texttt{pw.x} executable path, that you will need during the
-code configuration, you can find it in the output of \texttt{verdi code show CODENAME} for the code that was already setup for you and that you used during the tutorial (on the machine \texttt{localhost} that uses a \texttt{local} transport -- you are instead
-setting up the same code but on the \texttt{localhost-ssh} machine, that uses a \texttt{ssh} transport).
-\item Try to run a simulation with this code, to see if it works, as explained in the main tutorial.
-\end{itemize}
-\end{tcolorbox}
-
-
-
-
-
-\begin{appendices}
-\section{\label{app:computersetup}Options when setting up and configuring a computer}
-\subsection{\texttt{verdi computer setup}}
-Here is a list of what is asked during the execution of \cmd{verdi computer setup}, together with an explanation of each item.
-
-\begin{itemize}
-
-\item {}
-\textbf{Computer name}: the (user-friendly) name of the new computer instance
-which is about to be created in the DB (the name is used for instance when
-you have to pick up a computer to launch a calculation on it). Names must
-be unique. This command should be thought as a AiiDA-wise configuration of
-computer, independent of the AiiDA user that will actually use it.
-
-\item {}
-\textbf{Fully-qualified hostname}: the fully-qualified hostname of the computer
-to which you want to connect.
-
-\item {}
-\textbf{Description}: A human-readable description of this computer; this is
-useful if you have a lot of computers and you want to add some text to
-distinguish them (e.g.: ``cluster of computers at EPFL, with 434 nodes, 2 GB of RAM per CPU'')
-
-\item {}
-\textbf{Enabled}: either True or False; if False, the computer is disabled
-and calculations associated with it will not be submitted. This allows to
-disable temporarily a computer if it is giving problems or it is down for
-maintenance, without the need to delete it from the DB.
-
-\item {}
-\textbf{Transport type}: The name of the transport to be used. A list of valid
-transport types can be obtained typing \textit{?}
-
-\item {}
-\textbf{Scheduler type}: The name of the plugin to be used to manage the
-job scheduler on the computer. A list of valid
-scheduler plugins can be obtained typing \textit{?}.
-
-\item {}
-\textbf{shebang line at the beginning of the submission script}:
-The first line of any submission script. The default is \texttt{\#!/bin/bash}.
-This is often used by the scheduler to decide which shell to use. AiiDA expects
-this to be bash, but some supercomputer need a login shell, and then you need
-to specify \texttt{\#!/bin/bash -l}.
-
-\item {}
-\textbf{AiiDA work directory}: The absolute path of the directory on the
-remote computer where AiiDA will run the calculations
-(often, it is the scratch of the computer). You can (should) use the
-\textit{\{username\}} replacement, that will be replaced by your username on the
-remote computer automatically: this allows the same computer to be used
-by different users, without the need to setup a different computer for
-each one.
-
-\item {}
-\textbf{mpirun command}: The \cmd{mpirun} command needed on the cluster to run parallel MPI
-programs. You can (should) use the \textit{\{tot\_num\_mpiprocs\}} replacement,
-that will be replaced by the total number of cpus, or the other
-scheduler-dependent fields.
-
-\item {}
-\textbf{Default number of CPUs}: Setup the number of CPUs per node of the cluster. In this way, if you specify to use one node (a 'machine' in AiiDA), the calculation will try by default to use all the CPUs of the node.
-
-\item {}
-\textbf{Text to prepend to each command execution}: This is a multiline string,
-whose content will be prepended inside the submission script before the
-real execution of the job. It is your responsibility to write proper \cmd{bash} code!
-This is intended for computer-dependent code, like for instance loading a
-module that should always be loaded on that specific computer. \emph{Remember}
-\emph{to end the input by pressing} \textit{\textless{}CTRL\textgreater{}+D}.
-
-\item {}
-\textbf{Text to append to each command execution}: This is a multiline string,
-whose content will be appended inside the submission script after the
-real execution of the job. It is your responsibility to write proper \cmd{bash} code!
-This is intended for computer-dependent code. \emph{Remember}
-\emph{to end the input by pressing} \textit{\textless{}CTRL\textgreater{}+D}.
-
-\end{itemize}
-
-\subsection{\label{sec:computerconfigure}\texttt{verdi computer configure}}
-To setup the credentials to be able to run on a computer, you should use the following command:
-\begin{bashcommand}
-verdi computer configure COMPUTERNAME
-\end{bashcommand}
-
-When using the SSH transport, the command will try to provide automatically default answers, mainly reading
-the existing ssh configuration in \textbf{\textasciitilde{}/.ssh/config}, and in most cases one
-simply need to press enter a few times.
-
-At the moment, the in-line help (i.e., just typing \textbf{?} to get
-some help) is not yet supported in \cmd{verdi configure}, but only in
-\cmd{verdi setup}.
-
-The following options will be asked for ssh transport type.
-
-\begin{itemize}
-\item {}
-\textbf{username}: your username on the remote machine
-
-\item {}
-\textbf{port}: the port to connect to (the default SSH port is 22)
-
-\item {}
-\textbf{look\_for\_keys}: automatically look for the private key in \textbf{\textasciitilde{}/.ssh}.
-Default: True.
-
-\item {}
-\textbf{key\_filename}: the absolute path to your private SSH key. You can leave
-it empty to use the default SSH key, if you set \textbf{look\_for\_keys} to True.
-
-\item {}
-\textbf{timeout}: A timeout in seconds if there is no response (e.g., the
-machine is down). You can leave it empty to use the default value.
-
-\item {}
-\textbf{allow\_agent}: If True, it will try to use an SSH agent.
-
-\item {}
-\textbf{proxy\_command}: Leave empty if you do not need a proxy command (i.e.,
-if you can directly connect to the machine).
-
-\item {}
-\textbf{compress}: True to compress the traffic (recommended)
-
-\item {}
-\textbf{gss\_auth, gss\_kex, gss\_deleg\_creds, gss\_host}: These are parameters needed if your cluster requires authentication via Kerberos. If you don't know what Kerberos is, just ignore these four variables and leave their value to the default one (in particular, \texttt{gss\_auth = no}). Otherwise, read the documentation of AiiDA (and of the paramiko python package) online for more details.
-
-\item {}
-\textbf{load\_system\_host\_keys}: True to load the known hosts keys from the
-default SSH location (recommended)
-
-\item {}
-\textbf{key\_policy}: What is the policy in case the host is not known.
-It is a string among the following:
-\begin{itemize}
-\item {}
-\textbf{RejectPolicy} (default, recommended): reject the connection if the
-host is not known.
-
-\item {}
-\textbf{WarningPolicy} (\emph{not} recommended): issue a warning if the
-host is not known.
-
-\item {}
-\textbf{AutoAddPolicy} (\emph{not} recommended): automatically add the host key
-at the first connection to the host.
-
-\end{itemize}
-
-\end{itemize}
-
-\section{\label{app:codesetup}Setting up a code: \texttt{verdi code setup} options}
-
-Once you have at least one computer configured, you can configure the codes, using the command \cmd{verdi code setup}.
-
-In AiiDA, for full reproducibility of each calculation, we store each code in the database, and attach to each calculation a given code. This has the further advantage to make it very easy to query for all calculations that were run with a given code (for instance because I am looking for phonon calculations, or because I discovered that a specific version had a bug and I want to rerun the calculations).
-
-In AiiDA there are two types of codes:
-
-\begin{itemize}
- \item \textbf{Remote codes} are installed on a remote computer like a supercomputer.
- \item \textbf{Local codes} are not already present on the remote machine and must be copied for every submission.
-\end{itemize}
-
-The command \cmd{verdi code setup} will ask several values. Here is a description of their meaning.
-
-\begin{itemize}
-\item {}
-\textbf{label}: A label to refer to this code. Note: this label is not enforced
-to be unique. However, if you try to keep it unique, you can use it later
-to refer and use to your code. Otherwise, you need to remember its ID or UUID.
-
-\item {}
-\textbf{description}: A human-readable description of this code (for instance ``Quantum
-Espresso v.5.0.2 with 5.0.3 patches, pw.x code, compiled with openmpi'')
-
-\item {}
-\textbf{default input plugin}: A string that identifies the default input plugin to
-used to generate new calculations to use with this code.
-This string has to be a valid string recognised by the \textbf{CalculationFactory}
-function. To get the list of all available Calculation plugin strings,
-use the \cmd{verdi calculation plugins} command. Note: if you do not want to
-specify a default input plugin, you can write the string ``None'', but this is
-discouraged, because then you will not be able to use
-the \textbf{.get\_builder()} method of the \textbf{Code} object.
-
-\item {}
-\textbf{local}: either True (for local codes) or False (for remote
-codes). For the meaning of the distinction, see above. Depending
-on your choice, you will be asked for:
-\begin{itemize}
-\item {}
-LOCAL CODES:
-\begin{itemize}
-\item {}
-\textbf{Folder with the code}: The folder on your local computer in which there
-are the files to be stored in the AiiDA repository, and that will then be
-copied over to the remote computers for every submitted calculation.
-This must be an absolute path on your computer.
-
-\item {}
-\textbf{Relative path of the executable}: The relative path of the executable
-file inside the folder entered in the previous step.
-
-\end{itemize}
-
-\item {}
-REMOTE CODES:
-\begin{itemize}
-\item {}
-\textbf{Remote computer name}: The computer name as on which the code resides,
-as configured and stored in the AiiDA database
-
-\item {}
-\textbf{Remote absolute path}: The (full) absolute path of the code executable
-on the remote machine
-
-\end{itemize}
-
-\end{itemize}
-
-\end{itemize}
-\end{appendices}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/appendix_AB.tex b/docs/assets/2018_PRACE_MaX/latex/sections/appendix_AB.tex
deleted file mode 100644
index 45e2b9cf..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/appendix_AB.tex
+++ /dev/null
@@ -1,157 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\section{Calculation input validation}
-This appendix shows additional ways to debug possible errors with QE, how to use a useful tool that we included in AiiDA to validate the input to Quantum ESPRESSO (and possibly suggest the correct name to mispelled keywords)
-
-There are various reasons why you might end up providing a wrong input to a Quantum ESPRESSO calculation.
-Let's check for example this input dictionary, where we inserted two mistakes:
-\begin{pythoncommand}
-parameters_dict = {
- "CTRL": {
- "calculation": "scf",
- "restart_mode": "from_scratch",
- },
- "SYSTEM": {
- "nat": 2,
- "ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {
- "conv_thr": 1.e-6,
- }
-}
-\end{pythoncommand}
-
-The two mistakes in the dictionary are the following.
-First, we wrote a wrong namelist name ('CTRL' instead of 'CONTROL').
-Second, we inserted the number of atoms explicitly: while that is how the number of atoms is specified in Quantum ESPRESSO, in AiiDA this key is reserved by the system: in fact this information is already contained in the StructureData. Modify the script with this ParameterData.
-In this case, we use a tool (the input validator that we provide in AiiDA) to check the input file before submitting. Therefore, the behavior will be slightly different from the previous example: the plugin will check for some keys and will refuse to submit the calculation.
-This kind of mistakes is revealed by either
-\begin{itemize}
-\item Submitting a calculation. You will see the calculation ending up in the SUBMISSIONFAILED status. Check therefore the logs to recognize the source of the error.
-\item Submitting a test. You will not be able to successfully create the test and the traceback will guide you to the problem.
-\end{itemize}
-
-
-Over the time this kind of trivial mistakes can be annoying, but they can be avoided with a utility function that checks the ``grammar'' of the input parameters.
-In your script, after you defined the parameters\_dict, you can validate it with the command
-(note that you need to pass also the input crystal structure, \texttt{s}, to
-allow the validator to perform all needed checks):
-
-\begin{pythoncommand}
-PwCalculation = CalculationFactory('quantumespresso.pw')
-validated_dict = PwCalculation.input_helper(parameters_dict, structure=s)
-parameters = ParameterData(dict=validated_dict)
-\end{pythoncommand}
-
-The \texttt{input\_helper} method will check for the correctness of the input parameters.
-If misspelling or incorrect keys are detected, the method raises an exception, which stops the script before submitting the calculation and thus allows for a more effective debugging.
-
-With this utility, you can also provide a list of keys, without providing the namelists (useful if you don't remember where to put some variables in the input file).
-Hence, you can provide to \texttt{input\_helper()} a dictionary like this one:
-\begin{pythoncommand}
-parameters_dict = {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'conv_thr': 1.e-6,
-}
-validated_dict = PwCalculation.input_helper(
- parameters_dict, structure=s, flat_mode=True)
-\end{pythoncommand}
-If you print the \texttt{validated\_dict}, it will look like:
-\begin{pythoncommand}
-{
- "CONTROL": {
- "calculation": "scf",
- "tstress": True,
- "tprnfor": True,
- },
- "SYSTEM": {
- "ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {
- "conv_thr": 1.e-6,
- }
- }
-\end{pythoncommand}
-
-
-
-\section{Restarting calculations}
-Up to now, we have only presented cases in which we were passing wrong input parameters to the calculations, which required us to modify the input scripts and relaunch calculations from scratch.
-There are several other scenarios in which, more generally, we need to restart calculations from the last step that they have executed.
-For example when we run molecular dynamics, we might want to add more time steps than we initially thought, or as another example you might want to refine the relaxation of a structure with tighter parameters.
-
-In this section, you will learn how to restart and/or modify a calculation that has run previously. As an example, let us first submit a total energy calculation using a parameters dictionary of the form:
-\begin{pythoncommand}
-parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-14,
- 'electron_maxstep': 3,
- },
-}
-\end{pythoncommand}
-and submit the calculation with this input.
-In this case, we set a very low number of self consistent iterations (3), too small to be able to reach the desired accuracy of 10$^{-14}$: therefore the calculation will not reach a complete end and will be flagged in a FAILED state. However, there is no mistake in the parameter dictionary.
-
-Now, create a new script file, where you will try to restart and correct the input dictionary.
-We first load the calculation that has just failed (let's call it \texttt{c1})
-\begin{pythoncommand}
-old_calc = load_node(PK)
-\end{pythoncommand}
-(take care of using the correct PK).
-Then, create a new Builder \texttt{builder} which is set to reuse all inputs
-from the previous step, with a few adaptations to the input parameters
-that might be needed by the code to properly deal with restarts.
-\begin{pythoncommand}
-from aiida_quantumespresso.utils.restart import create_restart_pw
-builder = create_restart_pw(
- old_calc,
- use_output_structure=False,
- restart_from_beginning=False,
- force_restart=True)
-\end{pythoncommand}
-The flag usage (most of them are optional) is:
-\begin{itemize}
- \item \texttt{use\_output\_structure}: if True and \texttt{old\_calc} has an output structure, the new calculation will use it as input;
- \item \texttt{restart\_from\_beginning}: if False the new calculation will start from the charge density of \texttt{old\_calc}, it will start from the beginning otherwise;
- \item \texttt{force\_restart}: if True, the new calculation will be created even
- if \texttt{old\_calc} is not in a FINISHED job state.
-\end{itemize}
-
-Since this calculation has exactly the same parameters of before, we have to modify the input parameters and increase \texttt{electron\_maxstep} to a larger value.
-To this aim, let's load the dictionary of values and change it
-\begin{pythoncommand}
-old_parameters = builder.parameters
-parameters_dict = old_parameters.get_dict()
-parameters_dict['ELECTRONS']['electron_maxstep'] = 100
-\end{pythoncommand}
-Note that you cannot modify the \texttt{old\_parameters} object: it has been used by calculation \texttt{c1} and is saved in the database; hence a modification would break the provenance.
-We have to create a new ParameterData and pass it to c2:
-\begin{pythoncommand}
-ParameterData = DataFactory('parameter')
-new_parameters = ParameterData(dict=parameters_dict)
-builder.parameters = new_parameters
-\end{pythoncommand}
-Now you can launch the new calculation
-\begin{pythoncommand}
-from aiida.work.run import submit
-new_calc = submit(builder)
-print new_calc.pk
-\end{pythoncommand}
-that this time can proceed until the end and return converged total energy.
-Using the restart method, the script is much shorter than the one needed to launch a new one from scratch: you didn't need to define pseudopotentials, structures and k-points, which are the same as before.
-You can indeed inspect the new calculation to check that now it actually
-completed successfully.
\ No newline at end of file
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/appendix_CD.tex b/docs/assets/2018_PRACE_MaX/latex/sections/appendix_CD.tex
deleted file mode 100644
index b6fd21b9..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/appendix_CD.tex
+++ /dev/null
@@ -1,159 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\section{Queries in AiiDA - Optional examples and exercises}
-
-
-\subsection*{Optional exercises on relationships (Task 3)}
-\textbf{Hint for the exercises:}
-\begin{itemize}
-\item You can have projections on properties of more than one entity in your query. You just have to add the \emph{project} key (specifying the list of properties that you want to project) along with the corresponding entity when you append it.
-\end{itemize}
-
-\begin{tcolorbox}
-\textbf{Exercises:}\\~\\
-Try to write the following queries:
-\begin{itemize}
- \item Find all descendants of a StructureData with a certain uuid. Print both the StructureData and the descendant.
- \item Find all the FolderData created by a specific user.
-\end{itemize}
-\end{tcolorbox}
-
-\subsection*{Optional exercises on attributes and extras (Task 4)}
-\textbf{Hint for the exercises:}
-\begin{itemize}
-\item You can easily order or limit the number of the results by using the \emph{order\_by()} and \emph{limit()} methods of the QueryBuilder. For example, we can order all our job calculation by their \textit{id} and limit the result to the first 10 as follows:
-\begin{pythoncommand}
-qb = QueryBuilder()
-qb.append(JobCalculation, tag='calc')
-qb.order_by({'calc':'id'})
-qb.limit(10)
-qb.all()
-\end{pythoncommand}
-\end{itemize}
-
-\begin{tcolorbox}
-\textbf{Exercises:}
-\begin{itemize}
- \item Write a code snippet that informs you how many pseudopotentials you have for each element.
- \item Smearing contribution to the total energy for calculations:
- \begin{enumerate}
- \item Write a query that returns the smearing contribution to the energy stored in some instances of ParameterData.
- \item Extend the previous query to also get the input structures.
- \item Which structures have a smearing contribution to the energy smaller or equal to -0.02?
- \end{enumerate}
-\end{itemize}
-\end{tcolorbox}
-
-\subsection*{Summarizing what we learned by now - An example}
-At this point you should be able to do queries with projections, joins and filters. Moreover, you saw how to apply filters and projections even on attributes and extras. Let's discover the full power of the QueryBuilder with a complex graph query that allows you to project various properties from different nodes and apply different filters and joins.
-
-Imagine that you would like to get the smearing energy for all the calculations that have finished and have a $\mathrm{Sn_{2}O_{3}}$ as input. Moreover, besides from the smearing energy, you would like to print the units of this energy and the formula of the structure that was given to the calculation.
-The graphical representation of this query can be seen in Figure~\ref{fig:qb2} and the actual query follows:
-\begin{figure}[!th]
-\begin{center}
-\includegraphics[width=7cm]{img/qb_example_2.png}
-\end{center}
-\caption{Complex graph query.}
-\label{fig:qb2}
-\end{figure}
-
-\begin{pythoncommand}
-qb = QueryBuilder()
-qb.append(
- StructureData,
- project=["extras.formula"],
- filters={"extras.formula":"Sn2O3"},
- tag="structure"
- )
-qb.append(
- Calculation,
- tag="calculation",
- output_of="structure"
- )
-qb.append(
- ParameterData,
- tag="results",
- filters={"attributes.energy_smearing":{"<=":-0.0001}},
- project=[
- "attributes.energy_smearing",
- "attributes.energy_smearing_units",
- ],
- output_of="calculation"
-)
-qb.all()
-\end{pythoncommand}
-
-\section{\label{sec:convpressure}More complex logic in workflows: while loops and conditional statements}
-In the previous sections, you have been introduced to WorkChains, and the reason for using them over ``standard'' workfunctions (i.e., functions decorated with \cmd{@wf}).
-
-However, in the example of Sec.~\ref{sec:workchainsimple}, the \cmd{spec.outline} was quite simple, with a ``static'' sequence of two steps.
-Most often, however, you need dynamic workflows, where you need to decide at runtime whether to continue to compute or not (e.g. in a convergence loop, where you need to stop if convergence has been achieved).
-To support this scenario, the \cmd{spec.outline} can support logic: \emph{while} loops and \emph{if/elif/else} blocks.
-The simplest way to explain it is to show an example:
-\begin{pythoncommand}
-from aiida.work.workchain import if_, while_
-
-spec.outline(
- cls.s1,
- if_(cls.isA)(
- cls.s2
- ).elif_(cls.isB)(
- cls.s3
- ).else_(
- cls.s4
- ),
- cls.s5,
- while_(cls.condition)(
- cls.s6
- ),
-)
-\end{pythoncommand}
-that would \emph{roughly} correspond, in a python syntax, to:
-\begin{pythoncommand}
-s1()
-if isA():
- s2()
-elif isB():
- s3()
-else:
- s4()
-s5()
-while condition():
- s6()
-\end{pythoncommand}
-The only constraint is that condition functions (in the example above \cmd{isA}, \cmd{isB} and \cmd{condition}) must be class methods that returns \texttt{True} or \texttt{False} depending on whether the condition is met or not.
-
-A suggestion on how to write new workchains: Use the outline to help you in designing the logic. First create the spec outline writing, almost if you were explaining it in words, what you expect the workflow to do. Then, define one by one the methods.
-For example, we have prepared a simple workfunction to optimize the lattice parameter of silicon efficiently using a Newton's algorithm on the energy derivative, i.e. the pressure $p=-dE/dV$. You can find it the code at \texttt{tutorial\_scripts/pressure\_convergence.py}.
-The outline looks like this:
-\begin{pythoncommand}
-spec.outline(
- cls.init,
- cls.put_step0_in_ctx,
- cls.move_next_step,
- while_(cls.not_converged)(
- cls.move_next_step,
- ),
- cls.report
-)
-\end{pythoncommand}
-This outline already roughly explains the algorithm: after an initialization (\cmd{init}) and putting the first step (number zero) in the ctx (\cmd{put\_step0\_in\_ctx}), a function to move to the next step is called (\cmd{move\_next\_step}). This is iterated while a given convergence criterion is not met (\cmd{not\_converged}). Finally, some reporting is done, including returning some output nodes (\cmd{report}).
-
-If you are interested in the details of the algorithm, you can inspect the file. The main ideas are described here:
-\begin{description}
-\item[init] Generate a \texttt{pw.x} calculation for the input structure (with volume $V$), and one for a structure where the volume is $V+4\text{\AA}^3$ (just to get a closeby volume). Store the results in the context as \cmd{r0} and \cmd{r1}
-\item[put\_step0\_in\_ctx] Store in the context $V$, $E(V)$ and $dE/dV$ for the first calculation \cmd{r0}
-\item[move\_next\_step] This is the most important function. Calculate $V$, $E(V)$ and $dE/dV$ for \cmd{r1}. Also, estimate $d^2E/dV^2$ from the finite difference of the first derivative of \cmd{r0} and \cmd{r1} (helper functions to achieve this are provided).
-Get the $a$, $b$ and $c$ coefficients of a parabolic fit $E=aV^2 + bV + c$ and estimated the expected minimum of the EOS function as the minimum of the fit $V_0=-b/2a$. Finally, replace \cmd{r0} with \cmd{r1} in the context (i.e., get rid of the oldest point) and launch a new pw calculation at volume $V_0$, that will be stored in the context replacing \cmd{r1}. In this way, at the next iteration \cmd{r0} and \cmd{r1} will contain the latest two simulations. Finally, at each step some relevant information (coefficients $a$, $b$ and $c$, volumes, energies, energy derivatives, ...) are stored in a list called \cmd{steps}. This whole list is stored in the context because it provides quantities to be preserved between different workfunction steps.
-\item[not\_converged] Return \cmd{True} if convergence has not been achieved yet. Convergence is achieved if the difference in volume between the two latest simulations is smaller than a given threshold (\cmd{volume\_tolerance}).
-\item[report] This is the final step. Mainly, we return the output nodes: \cmd{steps} with the list of results at each step, and \cmd{structure} with the final converged structure.
-\end{description}
-
-The results returned in \cmd{steps} can be used to represent the evolution of the minimisation algorithm. A possible way to visualize it is presented in Fig.~\ref{fig:convpressure}, obtained with an initial lattice constant of $a_{\text{lat}} = 5.2\text{\AA}$.
-%You can try to reproduce the same graph by running the WorkChain and then using the script \texttt{tutorial\_scripts/plot\_convergence\_pressure.py} to generate the same plot.
-
-\begin{figure}[tb]
-\centering\includegraphics[width=0.6\linewidth]{img/convergence_pressure}
-\caption{\label{fig:convpressure}Example of results of the convergence algorithm presented in Sec.~\ref{sec:convpressure}. The bottom plot is a zoom near the minimum. The dots represent the (volume,energy) points obtained from Quantum ESPRESSO, and the numbers indicate at which iteration they were obtained. The parabolas represent the parabolic fits used in the algorithm; the minimum of the parabola is represented with a small cross, in correspondence of the vertical lines, used as the volume for the following step.}
-\end{figure}
-
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/biblio.tex b/docs/assets/2018_PRACE_MaX/latex/sections/biblio.tex
deleted file mode 100644
index 8996e005..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/biblio.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-
-\begin{thebibliography}{9}
-%
-\bibitem{ref:QE}
-P. Giannozzi et al., J.Phys. Cond. Matt. 29, 465901 (2017).
-\bibitem{ref:ASE}
-S. R. Bahn and K. W. Jacobsen, %``An object-oriented scripting interface to a legacy electronic structure code''
-Comput. Sci. Eng., 4, 56-66 (2002).
-\bibitem{ref:pymatgen} S. Ping Ong et al., %Python Materials Genomics (pymatgen) : A Robust, Open-Source Python Library for Materials Analysis.
-Comput. Mater. Sci. 68, 314-319 (2013). %doi:10.1016/j.commatsci.2012.10.028
-\bibitem{ref:GBRV}
-K.F. Garrity, J.W. Bennett, K.M. Rabe and D. Vanderbilt, Comput. Mater. Sci. 81, 446 (2014).
-\bibitem{ref:SSSP}
-G. Prandini, A. Marrazzo, I. E. Castelli, N. Mounet, N. Marzari, A Standard Solid State Pseudopotentials (SSSP) library optimized for accuracy and efficiency (Version 1.0, data download), Materials Cloud Archive (2018), \href{http://doi.org/10.24435/materialscloud:2018.0001/v1}{doi:10.24435/materialscloud:2018.0001/v1}.
-\bibitem{ref:COD}
-Crystallographic Open Database ({COD}), \href{http://www.crystallography.net/cod/}{http://www.crystallography.net/cod/}.
-\end{thebibliography}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/custom_specifications.tex b/docs/assets/2018_PRACE_MaX/latex/sections/custom_specifications.tex
deleted file mode 100644
index dbaba483..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/custom_specifications.tex
+++ /dev/null
@@ -1,34 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-
-\iftoggle{online}{
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Version for online tutorial with virtual machine
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
- % Do not show first section 'how to connect'
- \newif \ifsshpreparation \sshpreparationfalse
-
- % Strings
- \newcommand{\aiidatutorialtitle}{AiiDA tutorial}
- \newcommand{\aiidatutorialdate}{May--June 2018}
- \newcommand{\aiidatutorialauthors}{The AiiDA Team}
-
- \newcommand{\aiidaouterheader}{\aiidatutorialtitle}
- \newcommand{\aiidainnerheader}{\aiidatutorialdate}
-}
-{
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Version for real-life tutorial with people
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
- % Show first section 'how to connect'
- \newif \ifsshpreparation \sshpreparationtrue
-
- % Strings
- \newcommand{\aiidaouterheader}{AiiDA tutorial}
- \newcommand{\aiidainnerheader}{Cineca, Italy, May 30--June 1, 2018}
- \newcommand{\aiidatutorialtitle}{PRACE--MaX Tutorial on high-throughput computations:\\ General methods and applications using AiiDA}
- \newcommand{\aiidatutorialdate}{Cineca, Italy, May 30--June 1, 2018}
- \newcommand{\aiidatutorialauthors}{Instructors: Sebastiaan Huber, Leonid Kahle, Giovanni Pizzi,\\Martin Uhrin, Spyros Zoupanos}
-
-}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/defs-private.sty b/docs/assets/2018_PRACE_MaX/latex/sections/defs-private.sty
deleted file mode 100644
index c778d919..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/defs-private.sty
+++ /dev/null
@@ -1,24 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-
-\renewcommand{\headrulewidth}{0.5pt}
-\renewcommand{\plainheadrulewidth}{0pt}
-%\renewcommand{\footrulewidth}{0.5pt}
-\renewcommand{\footrulewidth}{0.pt}
-\renewcommand{\plainfootrulewidth}{0pt}
-
-\newcommand{\cmd}[1]{\texttt{#1}}
-
-\newenvironment{pythoncommand}
-{\VerbatimEnvironment%
-\begin{Verbatim}[frame=leftline]}
-{\end{Verbatim}}
-
-\newenvironment{bashcommandinner}
-{\VerbatimEnvironment%
-\begin{Verbatim}[frame=lines]}
-{\end{Verbatim}}
-
-\newenvironment{bashcommand}
-{\VerbatimEnvironment%
-\begin{center}\begin{minipage}{\linewidth}\begin{bashcommandinner}}
-{\end{bashcommandinner}\end{minipage}\end{center}}
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/Al_bands.pdf b/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/Al_bands.pdf
deleted file mode 100644
index fbf8020c..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/Al_bands.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/CaF2_bands.pdf b/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/CaF2_bands.pdf
deleted file mode 100644
index 6e5bbec4..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/CaF2_bands.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/GaAs_bands.pdf b/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/GaAs_bands.pdf
deleted file mode 100644
index f85b148f..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/GaAs_bands.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/hBN_bands.pdf b/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/hBN_bands.pdf
deleted file mode 100644
index ca0ea353..00000000
Binary files a/docs/assets/2018_PRACE_MaX/latex/sections/images/bandstructures/hBN_bands.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/main_body.tex b/docs/assets/2018_PRACE_MaX/latex/sections/main_body.tex
deleted file mode 100644
index fbebb13c..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/main_body.tex
+++ /dev/null
@@ -1,38 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-\maketitle
-
-{\setcounter{tocdepth}{1} \tableofcontents}
-
-\section{Preliminaries}
-
-\ifsshpreparation
-%Intro on SSH-ing to Amazon machines
-\input{sections/1_1_ssh_connection.tex}
-\fi
-\input{sections/1_2_preparation.tex}
-
-% Day1
-\input{sections/2_verdi_graphs.tex}
-\input{sections/3_verdi_shell_and_orm.tex}
-\input{sections/4_qe_submission.tex}
-
-% Day2
-%\iftoggle{online} {
-%\input{sections/5_querybuilder.tex}
-%}{
-\input{sections/5_querybuilder_jupyter.tex}
-%}
-\input{sections/6_workflows.tex}
-\input{sections/7_bandstructure.tex}
-
-% Not included
-%\input{sections/8_computer_code_setup.tex}
-
-\begin{appendices}
-\phantomsection
-\addcontentsline{toc}{part}{Appendices}\part*{Appendices}
-\emph{The following appendices consist of optional exercises, and are mentioned in earlier parts of the tutorial. Go through them only if you have time.}
-\input{sections/appendix_AB.tex}
-\input{sections/appendix_CD.tex}
-\end{appendices}
-
diff --git a/docs/assets/2018_PRACE_MaX/latex/sections/preamble.tex b/docs/assets/2018_PRACE_MaX/latex/sections/preamble.tex
deleted file mode 100644
index 3790c26f..00000000
--- a/docs/assets/2018_PRACE_MaX/latex/sections/preamble.tex
+++ /dev/null
@@ -1,79 +0,0 @@
-% !TEX root = ../AiiDA_tutorial.tex
-
-\usepackage[T1]{fontenc} % Use type 1 (vector) fonts
-\usepackage{upquote}
-\usepackage{ae,aecompl}
-\usepackage{amsmath,amssymb}
-\usepackage{graphicx}% Include figure files
-% \usepackage{subfig}
-\usepackage{hyperref}
-\usepackage{xcolor}
-\usepackage{url}
-\usepackage{dcolumn}% Align table columns on decimal point
-\usepackage{bm}% bold math
-\usepackage[left=1cm,right=1cm,top=1.9cm,bottom=1.5cm]{geometry}
-\usepackage{fancyhdr}
-\usepackage{fancyvrb}
-\usepackage{titling}
-\usepackage{tcolorbox}
-\usepackage{listings}
-%\usepackage{lscape}
-\usepackage{rotating}
-\usepackage{appendix}
-\usepackage{subcaption}
-
-
-\usepackage{caption}
-\captionsetup[figure]{margin=20pt,font=footnotesize,labelfont=bf,labelsep=endash}
-
-\usepackage{cleveref} % Clever references, needs to come after hyperref
-
-% Define some colours I want to use throughout
-\definecolor{mygreen}{rgb}{0,0.6,0}
-\definecolor{mygray}{rgb}{0.5,0.5,0.5}
-\definecolor{mymauve}{rgb}{0.58,0,0.82}
-\definecolor{orange}{rgb}{1,0.6,0}
-\definecolor{blue}{rgb}{0,0,1}
-
-\definecolor{acolour}{HTML}{E66101}
-\definecolor{bcolour}{HTML}{B2ABD2}
-\definecolor{ccolour}{HTML}{5E3C99}
-
-\definecolor{linkcolor}{HTML}{2222EE}
-\definecolor{urlcolor}{HTML}{2222EE}
-
-\pagestyle{fancy}
-\fancyhf{}
-\setlength\headheight{15pt}
-\fancyhead[LE,RO]{\fancyplain{}{\small\textsf{\aiidaouterheader}}}
-\fancyhead[RE,LO]{\fancyplain{}{\small\textsf{\aiidainnerheader}}}
-%\fancyhead[RO,LE]{\fancyplain{}{\textsc{\leftmark}}}
-%\fancyhead[RE,LO]{\fancyplain{}{\textsc{\rightmark}}}
-\fancyfoot[C]{\textbf{\thepage}}
-
-\title{\aiidatutorialtitle}
-
-\date{\aiidatutorialdate} % Deleting this command produces today's date
-\author{\aiidatutorialauthors}
-
-% Set up link colours
-\hypersetup{
- unicode=true, % non-Latin characters in Acrobat’s bookmarks
- pdftoolbar=true, % show Acrobat’s toolbar?
- pdfmenubar=true, % show Acrobat’s menu?
- pdffitwindow=false, % window fit to page when opened
- pdfstartview={FitH}, % fits the width of the page to the window
- pdftitle={AiiDA tutorial}, % title
- pdfauthor={The AiiDA Team}, % author
- pdfsubject={}, % subject of the document
- pdfcreator={The AiiDA Team}, % creator of the document
- pdfproducer={The AiiDA Team}, % producer of the document
- pdfkeywords={}, % list of keywords
- pdfnewwindow=true, % links in new PDF window
- colorlinks=true,
-% colorlinks=false, % false: boxed links; true: colored links
- linkcolor=linkcolor, % color of internal links (change box color with linkbordercolor)
- citecolor=acolour, % color of links to bibliography
- filecolor=magenta, % color of file links
- urlcolor=urlcolor % color of external links
-}
diff --git a/docs/assets/2018_PRACE_MaX/magnetization_smearing_perovskites.pdf b/docs/assets/2018_PRACE_MaX/magnetization_smearing_perovskites.pdf
deleted file mode 100644
index 73196a87..00000000
Binary files a/docs/assets/2018_PRACE_MaX/magnetization_smearing_perovskites.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
deleted file mode 100644
index 6e8fd379..00000000
--- a/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
+++ /dev/null
@@ -1,6953 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:48:08 2014
-%%Orientation: portrait
-%%BoundingBox: -528 -63 1140 855
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /period /slash /zero /one /two /three /four /five /A /B /C /F /G /H /K /L /M /N /O /P /R /S /T /Y /Z /bracketleft /bracketright /underscore /a /b /c /d /e /f /g /h /i /l /m /n /o /p /r /s /t /u /v /z ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 49 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/slash{337 0 0 -92 337 729 _sc
-254 729 _m
-337 729 _l
-83 -92 _l
-0 -92 _l
-254 729 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/five{{636 0 77 -13 549 729 _sc
-108 729 _m
-495 729 _l
-495 646 _l
-198 646 _l
-198 467 _l
-212 472 227 476 241 478 _c
-255 480 270 482 284 482 _c
-365 482 429 459 477 415 _c
-525 370 549 310 549 234 _c
-549 155 524 94 475 51 _c
-426 8 357 -13 269 -13 _c
-238 -13 207 -10 175 -6 _c
-143 -1 111 6 77 17 _c
-77 116 _l
-106 100 136 88 168 80 _c
-199 72 232 69 267 69 _c
-323 69 368 83 401 113 _c
-433 143 450 183 450 234 _c
-450 284 433 324 401 354 _c
-368 384 323 399 267 399 _c
-241 399 214 396 188 390 _c
-162 384 135 375 108 363 _c
-108 729 _l
-_cl}_e}_d
-/A{684 0 8 0 676 729 _sc
-342 632 _m
-208 269 _l
-476 269 _l
-342 632 _l
-286 729 _m
-398 729 _l
-676 0 _l
-573 0 _l
-507 187 _l
-178 187 _l
-112 0 _l
-8 0 _l
-286 729 _l
-_cl}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/F{575 0 98 0 517 729 _sc
-98 729 _m
-517 729 _l
-517 646 _l
-197 646 _l
-197 431 _l
-486 431 _l
-486 348 _l
-197 348 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/G{{775 0 56 -13 693 742 _sc
-595 104 _m
-595 300 _l
-434 300 _l
-434 381 _l
-693 381 _l
-693 68 _l
-655 40 613 20 567 7 _c
-521 -6 472 -13 420 -13 _c
-306 -13 216 20 152 86 _c
-88 152 56 245 56 364 _c
-56 482 88 575 152 642 _c
-216 708 306 742 420 742 _c
-467 742 512 736 555 724 _c
-598 712 638 695 674 673 _c
-674 568 _l
-637 598 598 621 557 637 _c
-516 653 473 661 428 661 _c
-338 661 271 636 227 586 _c
-182 536 160 462 160 364 _c
-160 265 182 191 227 141 _c
-271 91 338 67 428 67 _c
-462 67 493 70 521 76 _c
-549 82 573 91 595 104 _c
-_cl}_e}_d
-/H{752 0 98 0 654 729 _sc
-98 729 _m
-197 729 _l
-197 430 _l
-555 430 _l
-555 729 _l
-654 729 _l
-654 0 _l
-555 0 _l
-555 347 _l
-197 347 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/K{656 0 98 0 677 729 _sc
-98 729 _m
-197 729 _l
-197 421 _l
-524 729 _l
-651 729 _l
-289 389 _l
-677 0 _l
-547 0 _l
-197 351 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/L{557 0 98 0 552 729 _sc
-98 729 _m
-197 729 _l
-197 83 _l
-552 83 _l
-552 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/M{863 0 98 0 765 729 _sc
-98 729 _m
-245 729 _l
-431 233 _l
-618 729 _l
-765 729 _l
-765 0 _l
-669 0 _l
-669 640 _l
-481 140 _l
-382 140 _l
-194 640 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/P{603 0 98 0 569 729 _sc
-197 648 _m
-197 374 _l
-321 374 _l
-367 374 402 385 427 409 _c
-452 433 465 467 465 511 _c
-465 555 452 588 427 612 _c
-402 636 367 648 321 648 _c
-197 648 _l
-98 729 _m
-321 729 _l
-402 729 464 710 506 673 _c
-548 636 569 582 569 511 _c
-569 439 548 384 506 348 _c
-464 311 402 293 321 293 _c
-197 293 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/R{{695 0 98 0 666 729 _sc
-444 342 _m
-465 334 486 319 506 296 _c
-526 272 546 240 566 199 _c
-666 0 _l
-560 0 _l
-467 187 _l
-443 235 419 268 397 284 _c
-374 300 343 308 304 308 _c
-197 308 _l
-197 0 _l
-98 0 _l
-98 729 _l
-321 729 _l
-404 729 466 711 507 677 _c
-548 642 569 589 569 519 _c
-569 473 558 434 537 404 _c
-515 374 484 353 444 342 _c
-197 648 _m
-197 389 _l
-321 389 _l
-368 389 404 400 428 422 _c
-452 444 465 476 465 519 _c
-465 561 452 593 428 615 _c
-404 637 368 648 321 648 _c
-197 648 _l
-_cl}_e}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/Y{611 0 -1 0 613 729 _sc
--1 729 _m
-104 729 _l
-306 429 _l
-507 729 _l
-613 729 _l
-355 347 _l
-355 0 _l
-256 0 _l
-256 347 _l
--1 729 _l
-_cl}_d
-/Z{685 0 45 0 640 729 _sc
-56 729 _m
-629 729 _l
-629 654 _l
-168 83 _l
-640 83 _l
-640 0 _l
-45 0 _l
-45 75 _l
-506 646 _l
-56 646 _l
-56 729 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/c{{550 0 55 -13 488 560 _sc
-488 526 _m
-488 442 _l
-462 456 437 466 411 473 _c
-385 480 360 484 334 484 _c
-276 484 230 465 198 428 _c
-166 391 150 339 150 273 _c
-150 206 166 154 198 117 _c
-230 80 276 62 334 62 _c
-360 62 385 65 411 72 _c
-437 79 462 90 488 104 _c
-488 21 _l
-462 9 436 0 410 -5 _c
-383 -10 354 -13 324 -13 _c
-242 -13 176 12 128 64 _c
-79 115 55 185 55 273 _c
-55 362 79 432 128 483 _c
-177 534 244 560 330 560 _c
-358 560 385 557 411 551 _c
-437 545 463 537 488 526 _c
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/f{352 0 23 0 371 760 _sc
-371 760 _m
-371 685 _l
-285 685 _l
-253 685 230 678 218 665 _c
-205 652 199 629 199 595 _c
-199 547 _l
-347 547 _l
-347 477 _l
-199 477 _l
-199 0 _l
-109 0 _l
-109 477 _l
-23 477 _l
-23 547 _l
-109 547 _l
-109 585 _l
-109 645 123 690 151 718 _c
-179 746 224 760 286 760 _c
-371 760 _l
-_cl}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/h{634 0 91 0 549 760 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/t{392 0 27 0 368 702 _sc
-183 702 _m
-183 547 _l
-368 547 _l
-368 477 _l
-183 477 _l
-183 180 _l
-183 135 189 106 201 94 _c
-213 81 238 75 276 75 _c
-368 75 _l
-368 0 _l
-276 0 _l
-206 0 158 13 132 39 _c
-106 65 93 112 93 180 _c
-93 477 _l
-27 477 _l
-27 547 _l
-93 547 _l
-93 702 _l
-183 702 _l
-_cl}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/z{525 0 43 0 482 547 _sc
-55 547 _m
-482 547 _l
-482 465 _l
-144 72 _l
-482 72 _l
-482 0 _l
-43 0 _l
-43 82 _l
-381 475 _l
-55 475 _l
-55 547 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--528.75 -63.9 translate
-1669.5 919.8 0 0 clipbox
-gsave
-0 0 m
-1669.5 0 l
-1669.5 919.8 l
-0 919.8 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-208.688 91.98 m
-1502.55 91.98 l
-1502.55 827.82 l
-208.688 827.82 l
-cl
-1.000 setgray
-fill
-grestore
-1.000 setlinewidth
-1 setlinejoin
-2 setlinecap
-[] 0 setdash
-0.000 0.000 1.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-212.092 91.98 m
-216.632 91.98 l
-216.632 91.98 l
-212.092 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-234.792 91.98 m
-239.332 91.98 l
-239.332 91.98 l
-234.792 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-257.491 91.98 m
-262.031 91.98 l
-262.031 91.98 l
-257.491 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-280.19 91.98 m
-284.73 91.98 l
-284.73 91.98 l
-280.19 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-302.89 91.98 m
-307.43 91.98 l
-307.43 91.98 l
-302.89 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-325.589 91.98 m
-330.129 91.98 l
-330.129 91.98 l
-325.589 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-348.288 91.98 m
-352.828 91.98 l
-352.828 91.98 l
-348.288 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-370.988 91.98 m
-375.528 91.98 l
-375.528 91.98 l
-370.988 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-393.687 91.98 m
-398.227 91.98 l
-398.227 91.98 l
-393.687 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-416.386 91.98 m
-420.926 91.98 l
-420.926 91.98 l
-416.386 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-439.086 91.98 m
-443.626 91.98 l
-443.626 91.98 l
-439.086 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-461.785 91.98 m
-466.325 91.98 l
-466.325 91.98 l
-461.785 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-484.485 91.98 m
-489.024 91.98 l
-489.024 91.98 l
-484.485 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-507.184 91.98 m
-511.724 91.98 l
-511.724 91.98 l
-507.184 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-529.883 91.98 m
-534.423 91.98 l
-534.423 91.98 l
-529.883 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-552.583 91.98 m
-557.122 91.98 l
-557.122 91.98 l
-552.583 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-575.282 91.98 m
-579.822 91.98 l
-579.822 91.98 l
-575.282 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-597.981 91.98 m
-602.521 91.98 l
-602.521 91.98 l
-597.981 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-620.681 91.98 m
-625.22 91.98 l
-625.22 91.98 l
-620.681 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-643.38 91.98 m
-647.92 91.98 l
-647.92 91.98 l
-643.38 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-666.079 91.98 m
-670.619 91.98 l
-670.619 91.98 l
-666.079 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-688.779 91.98 m
-693.318 91.98 l
-693.318 91.98 l
-688.779 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-711.478 91.98 m
-716.018 91.98 l
-716.018 91.98 l
-711.478 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-734.177 91.98 m
-738.717 91.98 l
-738.717 91.98 l
-734.177 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-756.877 91.98 m
-761.416 91.98 l
-761.416 91.98 l
-756.877 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-779.576 91.98 m
-784.116 91.98 l
-784.116 261.223 l
-779.576 261.223 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-802.275 91.98 m
-806.815 91.98 l
-806.815 559.238 l
-802.275 559.238 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-824.975 91.98 m
-829.515 91.98 l
-829.515 625.464 l
-824.975 625.464 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-847.674 91.98 m
-852.214 91.98 l
-852.214 91.98 l
-847.674 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-870.373 91.98 m
-874.913 91.98 l
-874.913 91.98 l
-870.373 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-893.073 91.98 m
-897.613 91.98 l
-897.613 91.98 l
-893.073 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-915.772 91.98 m
-920.312 91.98 l
-920.312 91.98 l
-915.772 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-938.471 91.98 m
-943.011 91.98 l
-943.011 91.98 l
-938.471 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-961.171 91.98 m
-965.711 91.98 l
-965.711 91.98 l
-961.171 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-983.87 91.98 m
-988.41 91.98 l
-988.41 91.98 l
-983.87 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1006.57 91.98 m
-1011.11 91.98 l
-1011.11 91.98 l
-1006.57 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1029.27 91.98 m
-1033.81 91.98 l
-1033.81 91.98 l
-1029.27 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1051.97 91.98 m
-1056.51 91.98 l
-1056.51 91.98 l
-1051.97 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1074.67 91.98 m
-1079.21 91.98 l
-1079.21 91.98 l
-1074.67 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1097.37 91.98 m
-1101.91 91.98 l
-1101.91 91.98 l
-1097.37 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1120.07 91.98 m
-1124.61 91.98 l
-1124.61 91.98 l
-1120.07 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1142.77 91.98 m
-1147.31 91.98 l
-1147.31 91.98 l
-1142.77 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1165.46 91.98 m
-1170 91.98 l
-1170 91.98 l
-1165.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1188.16 91.98 m
-1192.7 91.98 l
-1192.7 91.98 l
-1188.16 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1210.86 91.98 m
-1215.4 91.98 l
-1215.4 91.98 l
-1210.86 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1233.56 91.98 m
-1238.1 91.98 l
-1238.1 91.98 l
-1233.56 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1256.26 91.98 m
-1260.8 91.98 l
-1260.8 478.296 l
-1256.26 478.296 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1278.96 91.98 m
-1283.5 91.98 l
-1283.5 643.86 l
-1278.96 643.86 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1301.66 91.98 m
-1306.2 91.98 l
-1306.2 91.98 l
-1301.66 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1324.36 91.98 m
-1328.9 91.98 l
-1328.9 619.945 l
-1324.36 619.945 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1347.06 91.98 m
-1351.6 91.98 l
-1351.6 209.714 l
-1347.06 209.714 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1369.76 91.98 m
-1374.3 91.98 l
-1374.3 91.98 l
-1369.76 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1392.46 91.98 m
-1397 91.98 l
-1397 91.98 l
-1392.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1415.16 91.98 m
-1419.7 91.98 l
-1419.7 91.98 l
-1415.16 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1437.86 91.98 m
-1442.4 91.98 l
-1442.4 91.98 l
-1437.86 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1460.56 91.98 m
-1465.1 91.98 l
-1465.1 91.98 l
-1460.56 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1483.26 91.98 m
-1487.8 91.98 l
-1487.8 91.98 l
-1483.26 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-217.767 91.98 m
-222.307 91.98 l
-222.307 91.98 l
-217.767 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-240.467 91.98 m
-245.006 91.98 l
-245.006 91.98 l
-240.467 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-263.166 91.98 m
-267.706 91.98 l
-267.706 91.98 l
-263.166 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-285.865 91.98 m
-290.405 91.98 l
-290.405 91.98 l
-285.865 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-308.565 91.98 m
-313.104 91.98 l
-313.104 91.98 l
-308.565 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-331.264 91.98 m
-335.804 91.98 l
-335.804 91.98 l
-331.264 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-353.963 91.98 m
-358.503 91.98 l
-358.503 91.98 l
-353.963 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-376.663 91.98 m
-381.202 91.98 l
-381.202 91.98 l
-376.663 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-399.362 91.98 m
-403.902 91.98 l
-403.902 91.98 l
-399.362 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-422.061 91.98 m
-426.601 91.98 l
-426.601 91.98 l
-422.061 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-444.761 91.98 m
-449.301 91.98 l
-449.301 91.98 l
-444.761 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-467.46 91.98 m
-472 91.98 l
-472 91.98 l
-467.46 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-490.159 91.98 m
-494.699 91.98 l
-494.699 91.98 l
-490.159 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-512.859 91.98 m
-517.399 91.98 l
-517.399 91.98 l
-512.859 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-535.558 91.98 m
-540.098 91.98 l
-540.098 91.98 l
-535.558 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-558.257 91.98 m
-562.797 91.98 l
-562.797 91.98 l
-558.257 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-580.957 91.98 m
-585.497 91.98 l
-585.497 91.98 l
-580.957 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-603.656 91.98 m
-608.196 91.98 l
-608.196 91.98 l
-603.656 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-626.355 91.98 m
-630.895 91.98 l
-630.895 91.98 l
-626.355 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-649.055 91.98 m
-653.595 91.98 l
-653.595 91.98 l
-649.055 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-671.754 91.98 m
-676.294 91.98 l
-676.294 91.98 l
-671.754 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-694.453 91.98 m
-698.993 91.98 l
-698.993 91.98 l
-694.453 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-717.153 91.98 m
-721.693 91.98 l
-721.693 91.98 l
-717.153 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-739.852 91.98 m
-744.392 91.98 l
-744.392 91.98 l
-739.852 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-762.551 91.98 m
-767.091 91.98 l
-767.091 91.98 l
-762.551 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-785.251 91.98 m
-789.791 91.98 l
-789.791 318.251 l
-785.251 318.251 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-807.95 91.98 m
-812.49 91.98 l
-812.49 688.01 l
-807.95 688.01 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-830.649 91.98 m
-835.189 91.98 l
-835.189 787.349 l
-830.649 787.349 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-853.349 91.98 m
-857.889 91.98 l
-857.889 91.98 l
-853.349 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-876.048 91.98 m
-880.588 91.98 l
-880.588 91.98 l
-876.048 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-898.747 91.98 m
-903.287 91.98 l
-903.287 91.98 l
-898.747 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-921.447 91.98 m
-925.987 91.98 l
-925.987 91.98 l
-921.447 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-944.146 91.98 m
-948.686 91.98 l
-948.686 91.98 l
-944.146 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-966.846 91.98 m
-971.385 91.98 l
-971.385 91.98 l
-966.846 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-989.545 91.98 m
-994.085 91.98 l
-994.085 91.98 l
-989.545 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1012.24 91.98 m
-1016.78 91.98 l
-1016.78 91.98 l
-1012.24 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1034.94 91.98 m
-1039.48 91.98 l
-1039.48 91.98 l
-1034.94 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1057.64 91.98 m
-1062.18 91.98 l
-1062.18 91.98 l
-1057.64 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1080.34 91.98 m
-1084.88 91.98 l
-1084.88 91.98 l
-1080.34 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1103.04 91.98 m
-1107.58 91.98 l
-1107.58 91.98 l
-1103.04 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1125.74 91.98 m
-1130.28 91.98 l
-1130.28 91.98 l
-1125.74 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1148.44 91.98 m
-1152.98 91.98 l
-1152.98 91.98 l
-1148.44 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1171.14 91.98 m
-1175.68 91.98 l
-1175.68 91.98 l
-1171.14 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1193.84 91.98 m
-1198.38 91.98 l
-1198.38 91.98 l
-1193.84 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1216.54 91.98 m
-1221.08 91.98 l
-1221.08 91.98 l
-1216.54 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1239.24 91.98 m
-1243.78 91.98 l
-1243.78 91.98 l
-1239.24 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1261.94 91.98 m
-1266.48 91.98 l
-1266.48 579.474 l
-1261.94 579.474 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1284.64 91.98 m
-1289.18 91.98 l
-1289.18 741.359 l
-1284.64 741.359 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1307.34 91.98 m
-1311.88 91.98 l
-1311.88 91.98 l
-1307.34 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1330.03 91.98 m
-1334.57 91.98 l
-1334.57 647.539 l
-1330.03 647.539 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1352.73 91.98 m
-1357.27 91.98 l
-1357.27 237.308 l
-1352.73 237.308 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1375.43 91.98 m
-1379.97 91.98 l
-1379.97 91.98 l
-1375.43 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1398.13 91.98 m
-1402.67 91.98 l
-1402.67 91.98 l
-1398.13 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1420.83 91.98 m
-1425.37 91.98 l
-1425.37 91.98 l
-1420.83 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1443.53 91.98 m
-1448.07 91.98 l
-1448.07 91.98 l
-1443.53 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1466.23 91.98 m
-1470.77 91.98 l
-1470.77 91.98 l
-1466.23 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1488.93 91.98 m
-1493.47 91.98 l
-1493.47 91.98 l
-1488.93 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1294 735.8 208.7 91.98 clipbox
-223.442 91.98 m
-227.982 91.98 l
-227.982 91.98 l
-223.442 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-246.141 91.98 m
-250.681 91.98 l
-250.681 91.98 l
-246.141 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-268.841 91.98 m
-273.381 91.98 l
-273.381 91.98 l
-268.841 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-291.54 91.98 m
-296.08 91.98 l
-296.08 91.98 l
-291.54 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-314.239 91.98 m
-318.779 91.98 l
-318.779 91.98 l
-314.239 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-336.939 91.98 m
-341.479 91.98 l
-341.479 91.98 l
-336.939 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-359.638 91.98 m
-364.178 91.98 l
-364.178 91.98 l
-359.638 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-382.337 91.98 m
-386.877 91.98 l
-386.877 91.98 l
-382.337 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-405.037 91.98 m
-409.577 91.98 l
-409.577 91.98 l
-405.037 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-427.736 91.98 m
-432.276 91.98 l
-432.276 91.98 l
-427.736 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-450.435 91.98 m
-454.975 91.98 l
-454.975 91.98 l
-450.435 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-473.135 91.98 m
-477.675 91.98 l
-477.675 91.98 l
-473.135 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-495.834 91.98 m
-500.374 91.98 l
-500.374 91.98 l
-495.834 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-518.534 91.98 m
-523.073 91.98 l
-523.073 91.98 l
-518.534 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-541.233 91.98 m
-545.773 91.98 l
-545.773 91.98 l
-541.233 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-563.932 91.98 m
-568.472 91.98 l
-568.472 91.98 l
-563.932 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-586.632 91.98 m
-591.171 91.98 l
-591.171 91.98 l
-586.632 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-609.331 91.98 m
-613.871 91.98 l
-613.871 91.98 l
-609.331 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-632.03 91.98 m
-636.57 91.98 l
-636.57 91.98 l
-632.03 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-654.73 91.98 m
-659.269 91.98 l
-659.269 91.98 l
-654.73 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-677.429 91.98 m
-681.969 91.98 l
-681.969 91.98 l
-677.429 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-700.128 91.98 m
-704.668 91.98 l
-704.668 91.98 l
-700.128 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-722.828 91.98 m
-727.367 91.98 l
-727.367 91.98 l
-722.828 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-745.527 91.98 m
-750.067 91.98 l
-750.067 91.98 l
-745.527 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-768.226 91.98 m
-772.766 91.98 l
-772.766 91.98 l
-768.226 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-790.926 91.98 m
-795.465 91.98 l
-795.465 286.978 l
-790.926 286.978 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-813.625 91.98 m
-818.165 91.98 l
-818.165 653.058 l
-813.625 653.058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-836.324 91.98 m
-840.864 91.98 l
-840.864 719.284 l
-836.324 719.284 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-859.024 91.98 m
-863.564 91.98 l
-863.564 91.98 l
-859.024 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-881.723 91.98 m
-886.263 91.98 l
-886.263 91.98 l
-881.723 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-904.422 91.98 m
-908.962 91.98 l
-908.962 91.98 l
-904.422 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-927.122 91.98 m
-931.662 91.98 l
-931.662 91.98 l
-927.122 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-949.821 91.98 m
-954.361 91.98 l
-954.361 91.98 l
-949.821 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-972.52 91.98 m
-977.06 91.98 l
-977.06 91.98 l
-972.52 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-995.22 91.98 m
-999.76 91.98 l
-999.76 91.98 l
-995.22 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1017.92 91.98 m
-1022.46 91.98 l
-1022.46 91.98 l
-1017.92 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1040.62 91.98 m
-1045.16 91.98 l
-1045.16 91.98 l
-1040.62 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1063.32 91.98 m
-1067.86 91.98 l
-1067.86 91.98 l
-1063.32 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1086.02 91.98 m
-1090.56 91.98 l
-1090.56 91.98 l
-1086.02 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1108.72 91.98 m
-1113.26 91.98 l
-1113.26 91.98 l
-1108.72 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1131.42 91.98 m
-1135.96 91.98 l
-1135.96 91.98 l
-1131.42 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1154.12 91.98 m
-1158.65 91.98 l
-1158.65 91.98 l
-1154.12 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1176.81 91.98 m
-1181.35 91.98 l
-1181.35 91.98 l
-1176.81 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1199.51 91.98 m
-1204.05 91.98 l
-1204.05 91.98 l
-1199.51 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1222.21 91.98 m
-1226.75 91.98 l
-1226.75 91.98 l
-1222.21 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1244.91 91.98 m
-1249.45 91.98 l
-1249.45 91.98 l
-1244.91 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1267.61 91.98 m
-1272.15 91.98 l
-1272.15 527.965 l
-1267.61 527.965 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1290.31 91.98 m
-1294.85 91.98 l
-1294.85 695.369 l
-1290.31 695.369 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1313.01 91.98 m
-1317.55 91.98 l
-1317.55 91.98 l
-1313.01 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1335.71 91.98 m
-1340.25 91.98 l
-1340.25 642.02 l
-1335.71 642.02 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1358.41 91.98 m
-1362.95 91.98 l
-1362.95 229.95 l
-1358.41 229.95 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1381.11 91.98 m
-1385.65 91.98 l
-1385.65 91.98 l
-1381.11 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1403.81 91.98 m
-1408.35 91.98 l
-1408.35 91.98 l
-1403.81 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1426.51 91.98 m
-1431.05 91.98 l
-1431.05 91.98 l
-1426.51 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1449.21 91.98 m
-1453.75 91.98 l
-1453.75 91.98 l
-1449.21 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1471.91 91.98 m
-1476.45 91.98 l
-1476.45 91.98 l
-1471.91 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1294 735.8 208.7 91.98 clipbox
-1494.61 91.98 m
-1499.15 91.98 l
-1499.15 91.98 l
-1494.61 91.98 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.500 setlinewidth
-0 setlinecap
-[1 3] 0 setdash
-0.000 setgray
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 91.98 m
-208.688 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 827.82 o
-grestore
-/DejaVuSans findfont
-14.000 scalefont
-setfont
-gsave
-207.916478 29.883909 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /N glyphshow
-28.936523 2.906250 m /b glyphshow
-37.823242 2.906250 m /O glyphshow
-48.842773 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-231.387 91.98 m
-231.387 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-231.387 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-231.387 827.82 o
-grestore
-gsave
-231.091577 34.400928 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /T glyphshow
-24.640625 2.906250 m /a glyphshow
-33.219727 2.906250 m /O glyphshow
-44.239258 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-254.086 91.98 m
-254.086 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-254.086 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-254.086 827.82 o
-grestore
-gsave
-252.713318 35.835751 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /H glyphshow
-28.710938 0.203125 m /f glyphshow
-33.639648 0.203125 m /O glyphshow
-44.659180 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-276.786 91.98 m
-276.786 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-276.786 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-276.786 827.82 o
-grestore
-gsave
-275.760448 38.431677 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /i glyphshow
-30.959961 0.203125 m /O glyphshow
-41.979492 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-299.485 91.98 m
-299.485 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.485 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.485 827.82 o
-grestore
-gsave
-297.694024 33.681845 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /n glyphshow
-35.943359 0.203125 m /O glyphshow
-46.962891 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-322.184 91.98 m
-322.184 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-322.184 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-322.184 827.82 o
-grestore
-gsave
-321.252145 39.125936 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /T glyphshow
-26.360352 0.203125 m /i glyphshow
-30.250000 0.203125 m /O glyphshow
-41.269531 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-344.884 91.98 m
-344.884 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-344.884 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-344.884 827.82 o
-grestore
-gsave
-343.406121 36.021196 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /Z glyphshow
-27.774414 0.203125 m /r glyphshow
-33.530273 0.203125 m /O glyphshow
-44.549805 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-367.583 91.98 m
-367.583 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-367.583 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-367.583 827.82 o
-grestore
-gsave
-367.075454 42.295380 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /A glyphshow
-23.071289 0.203125 m /l glyphshow
-26.960938 0.203125 m /O glyphshow
-37.980469 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-390.282 91.98 m
-390.282 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-390.282 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-390.282 827.82 o
-grestore
-gsave
-389.004405 36.545103 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /G glyphshow
-24.342773 0.203125 m /a glyphshow
-32.921875 0.203125 m /O glyphshow
-43.941406 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-412.982 91.98 m
-412.982 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-412.982 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-412.982 827.82 o
-grestore
-gsave
-412.069734 39.276862 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /S glyphshow
-22.380859 0.203125 m /c glyphshow
-30.078125 0.203125 m /O glyphshow
-41.097656 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-435.681 91.98 m
-435.681 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-435.681 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-435.681 827.82 o
-grestore
-gsave
-433.572618 31.312308 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /G glyphshow
-29.203125 0.203125 m /e glyphshow
-37.816406 0.203125 m /O glyphshow
-48.835938 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-458.38 91.98 m
-458.38 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-458.38 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-458.38 827.82 o
-grestore
-gsave
-456.908317 35.096214 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /H glyphshow
-28.881836 0.203125 m /f glyphshow
-33.810547 0.203125 m /O glyphshow
-44.830078 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-481.08 91.98 m
-481.08 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-481.08 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-481.08 827.82 o
-grestore
-gsave
-479.955448 37.692140 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /S glyphshow
-27.241211 0.203125 m /i glyphshow
-31.130859 0.203125 m /O glyphshow
-42.150391 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-503.779 91.98 m
-503.779 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-503.779 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-503.779 827.82 o
-grestore
-gsave
-502.747803 38.386399 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /T glyphshow
-26.531250 0.203125 m /i glyphshow
-30.420898 0.203125 m /O glyphshow
-41.440430 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-526.478 91.98 m
-526.478 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-526.478 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-526.478 827.82 o
-grestore
-gsave
-524.901779 35.281659 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /Z glyphshow
-27.945312 0.203125 m /r glyphshow
-33.701172 0.203125 m /O glyphshow
-44.720703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-549.178 91.98 m
-549.178 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-549.178 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-549.178 827.82 o
-grestore
-gsave
-548.013033 37.390288 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /d glyphshow
-18.662109 0.203125 m /S glyphshow
-27.548828 0.203125 m /i glyphshow
-31.438477 0.203125 m /O glyphshow
-42.458008 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-571.877 91.98 m
-571.877 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-571.877 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-571.877 827.82 o
-grestore
-gsave
-570.067350 32.575751 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /N glyphshow
-27.541992 0.203125 m /b glyphshow
-36.428711 0.203125 m /O glyphshow
-47.448242 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-594.576 91.98 m
-594.576 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.576 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.576 827.82 o
-grestore
-gsave
-593.242448 37.092770 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /T glyphshow
-23.246094 0.203125 m /a glyphshow
-31.825195 0.203125 m /O glyphshow
-42.844727 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-617.276 91.98 m
-617.276 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-617.276 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-617.276 827.82 o
-grestore
-gsave
-615.261810 31.051400 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /N glyphshow
-29.121094 0.203125 m /b glyphshow
-38.007812 0.203125 m /O glyphshow
-49.027344 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-639.975 91.98 m
-639.975 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-639.975 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-639.975 827.82 o
-grestore
-gsave
-638.436908 35.568419 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /T glyphshow
-24.825195 0.203125 m /a glyphshow
-33.404297 0.203125 m /O glyphshow
-44.423828 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-662.674 91.98 m
-662.674 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-662.674 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-662.674 827.82 o
-grestore
-gsave
-661.037171 34.828882 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /a glyphshow
-19.427734 0.203125 m /T glyphshow
-25.604492 0.203125 m /a glyphshow
-34.183594 0.203125 m /O glyphshow
-45.203125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-685.374 91.98 m
-685.374 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-685.374 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-685.374 827.82 o
-grestore
-gsave
-683.123840 30.255827 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /G glyphshow
-30.310547 0.203125 m /e glyphshow
-38.923828 0.203125 m /O glyphshow
-49.943359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-708.073 91.98 m
-708.073 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-708.073 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-708.073 827.82 o
-grestore
-gsave
-706.807327 36.635658 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /S glyphshow
-28.348633 0.203125 m /i glyphshow
-32.238281 0.203125 m /O glyphshow
-43.257812 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-730.772 91.98 m
-730.772 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-730.772 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-730.772 827.82 o
-grestore
-gsave
-730.060704 40.771028 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-9.180664 0.203125 m /N glyphshow
-19.653320 0.203125 m /b glyphshow
-28.540039 0.203125 m /O glyphshow
-39.559570 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-753.472 91.98 m
-753.472 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-753.472 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-753.472 827.82 o
-grestore
-gsave
-753.381388 46.374714 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-8.055664 0.203125 m /T glyphshow
-14.232422 0.203125 m /a glyphshow
-22.811523 0.203125 m /O glyphshow
-33.831055 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-776.171 91.98 m
-776.171 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-776.171 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-776.171 827.82 o
-grestore
-gsave
-774.539948 34.874159 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /C glyphshow
-26.154297 0.203125 m /o glyphshow
-34.719727 0.203125 m /O glyphshow
-45.739258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-798.87 91.98 m
-798.87 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-798.87 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-798.87 827.82 o
-grestore
-gsave
-797.554725 37.228604 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /F glyphshow
-23.681641 0.203125 m /e glyphshow
-32.294922 0.203125 m /O glyphshow
-43.314453 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-821.57 91.98 m
-821.57 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-821.57 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-821.57 827.82 o
-grestore
-gsave
-819.600954 32.353697 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /M glyphshow
-28.458008 0.203125 m /n glyphshow
-37.331055 0.203125 m /O glyphshow
-48.350586 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-844.269 91.98 m
-844.269 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-844.269 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-844.269 827.82 o
-grestore
-gsave
-843.274331 38.658065 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /N glyphshow
-26.851562 0.203125 m /i glyphshow
-30.741211 0.203125 m /O glyphshow
-41.760742 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-866.968 91.98 m
-866.968 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-866.968 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-866.968 827.82 o
-grestore
-gsave
-865.933232 38.356214 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /N glyphshow
-22.162109 0.203125 m /b glyphshow
-31.048828 0.203125 m /O glyphshow
-42.068359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-889.668 91.98 m
-889.668 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-889.668 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-889.668 827.82 o
-grestore
-gsave
-889.229071 42.808528 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /T glyphshow
-17.866211 0.203125 m /a glyphshow
-26.445312 0.203125 m /O glyphshow
-37.464844 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-912.367 91.98 m
-912.367 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-912.367 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-912.367 827.82 o
-grestore
-gsave
-910.379543 31.247603 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /N glyphshow
-29.524414 0.203125 m /b glyphshow
-38.411133 0.203125 m /O glyphshow
-49.430664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-935.066 91.98 m
-935.066 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-935.066 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-935.066 827.82 o
-grestore
-gsave
-933.554642 35.764622 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /T glyphshow
-25.228516 0.203125 m /a glyphshow
-33.807617 0.203125 m /O glyphshow
-44.827148 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-957.766 91.98 m
-957.766 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-957.766 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-957.766 827.82 o
-grestore
-gsave
-956.504134 36.665843 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /H glyphshow
-27.856445 0.203125 m /f glyphshow
-32.785156 0.203125 m /O glyphshow
-43.804688 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-980.465 91.98 m
-980.465 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-980.465 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-980.465 827.82 o
-grestore
-gsave
-979.551264 39.261769 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /i glyphshow
-30.105469 0.203125 m /O glyphshow
-41.125000 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1003.16 91.98 m
-1003.16 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1003.16 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1003.16 827.82 o
-grestore
-gsave
-1001.605581 34.447233 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /n glyphshow
-35.088867 0.203125 m /O glyphshow
-46.108398 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1025.86 91.98 m
-1025.86 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1025.86 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1025.86 827.82 o
-grestore
-gsave
-1025.042962 39.956028 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /T glyphshow
-25.505859 0.203125 m /i glyphshow
-29.395508 0.203125 m /O glyphshow
-40.415039 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1048.56 91.98 m
-1048.56 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1048.56 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1048.56 827.82 o
-grestore
-gsave
-1047.317679 36.786584 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /Z glyphshow
-26.919922 0.203125 m /r glyphshow
-32.675781 0.203125 m /O glyphshow
-43.695312 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1071.26 91.98 m
-1071.26 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1071.26 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1071.26 827.82 o
-grestore
-gsave
-1069.329533 31.655103 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /N glyphshow
-29.086914 0.203125 m /b glyphshow
-37.973633 0.203125 m /O glyphshow
-48.993164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1093.96 91.98 m
-1093.96 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1093.96 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1093.96 827.82 o
-grestore
-gsave
-1092.625372 36.107418 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /T glyphshow
-24.791016 0.203125 m /a glyphshow
-33.370117 0.203125 m /O glyphshow
-44.389648 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1116.66 91.98 m
-1116.66 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1116.66 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1116.66 827.82 o
-grestore
-gsave
-1115.541071 37.722325 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /b glyphshow
-17.773438 0.203125 m /A glyphshow
-27.350586 0.203125 m /l glyphshow
-31.240234 0.203125 m /O glyphshow
-42.259766 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1139.36 91.98 m
-1139.36 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1139.36 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1139.36 827.82 o
-grestore
-gsave
-1137.983616 35.805566 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /H glyphshow
-28.287109 0.203125 m /f glyphshow
-33.215820 0.203125 m /O glyphshow
-44.235352 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1162.06 91.98 m
-1162.06 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1162.06 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1162.06 827.82 o
-grestore
-gsave
-1161.030746 38.401491 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /i glyphshow
-30.536133 0.203125 m /O glyphshow
-41.555664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1184.76 91.98 m
-1184.76 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1184.76 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1184.76 827.82 o
-grestore
-gsave
-1182.964322 33.651660 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /n glyphshow
-35.519531 0.203125 m /O glyphshow
-46.539062 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1207.46 91.98 m
-1207.46 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1207.46 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1207.46 827.82 o
-grestore
-gsave
-1206.522443 39.095751 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /T glyphshow
-25.936523 0.203125 m /i glyphshow
-29.826172 0.203125 m /O glyphshow
-40.845703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1230.16 91.98 m
-1230.16 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1230.16 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1230.16 827.82 o
-grestore
-gsave
-1228.676419 35.991011 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /Z glyphshow
-27.350586 0.203125 m /r glyphshow
-33.106445 0.203125 m /O glyphshow
-44.125977 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1252.86 91.98 m
-1252.86 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1252.86 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1252.86 827.82 o
-grestore
-gsave
-1251.391938 36.111752 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /C glyphshow
-24.417969 0.203125 m /o glyphshow
-32.983398 0.203125 m /O glyphshow
-44.002930 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1275.56 91.98 m
-1275.56 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1275.56 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1275.56 827.82 o
-grestore
-gsave
-1274.406716 38.466196 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /F glyphshow
-21.945312 0.203125 m /e glyphshow
-30.558594 0.203125 m /O glyphshow
-41.578125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1298.26 91.98 m
-1298.26 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1298.26 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1298.26 827.82 o
-grestore
-gsave
-1297.283415 38.824084 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /H glyphshow
-25.169922 0.203125 m /f glyphshow
-30.098633 0.203125 m /O glyphshow
-41.118164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1320.96 91.98 m
-1320.96 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1320.96 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1320.96 827.82 o
-grestore
-gsave
-1319.152286 33.591289 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /M glyphshow
-26.721680 0.203125 m /n glyphshow
-35.594727 0.203125 m /O glyphshow
-46.614258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1343.65 91.98 m
-1343.65 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1343.65 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1343.65 827.82 o
-grestore
-gsave
-1342.825663 39.895658 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /N glyphshow
-25.115234 0.203125 m /i glyphshow
-29.004883 0.203125 m /O glyphshow
-40.024414 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1366.35 91.98 m
-1366.35 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1366.35 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1366.35 827.82 o
-grestore
-gsave
-1365.729229 41.420010 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /i glyphshow
-27.418945 0.203125 m /O glyphshow
-38.438477 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1389.05 91.98 m
-1389.05 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1389.05 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1389.05 827.82 o
-grestore
-gsave
-1387.662805 36.670178 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /n glyphshow
-32.402344 0.203125 m /O glyphshow
-43.421875 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1411.75 91.98 m
-1411.75 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1411.75 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1411.75 827.82 o
-grestore
-gsave
-1411.220927 42.114269 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /T glyphshow
-22.819336 0.203125 m /i glyphshow
-26.708984 0.203125 m /O glyphshow
-37.728516 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1434.45 91.98 m
-1434.45 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1434.45 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1434.45 827.82 o
-grestore
-gsave
-1433.374903 39.009529 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /Z glyphshow
-24.233398 0.203125 m /r glyphshow
-29.989258 0.203125 m /O glyphshow
-41.008789 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1457.15 91.98 m
-1457.15 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1457.15 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1457.15 827.82 o
-grestore
-gsave
-1456.431563 40.710658 translate
-75.000000 rotate
-0.000000 0.203125 m /T glyphshow
-8.551758 0.203125 m /l glyphshow
-12.441406 0.203125 m /T glyphshow
-18.618164 0.203125 m /a glyphshow
-27.197266 0.203125 m /O glyphshow
-38.216797 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1479.85 91.98 m
-1479.85 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1479.85 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1479.85 827.82 o
-grestore
-gsave
-1479.947803 46.808065 translate
-75.000000 rotate
-0.000000 0.203125 m /Y glyphshow
-7.426758 0.203125 m /A glyphshow
-17.003906 0.203125 m /l glyphshow
-20.893555 0.203125 m /O glyphshow
-31.913086 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-1502.55 91.98 m
-1502.55 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 827.82 o
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 91.98 m
-1502.55 91.98 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 91.98 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 91.98 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-178.437500 85.175312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 183.96 m
-1502.55 183.96 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 183.96 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 183.96 o
-grestore
-gsave
-178.828125 177.155312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 275.94 m
-1502.55 275.94 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 275.94 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 275.94 o
-grestore
-gsave
-179.234375 269.135312 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 367.92 m
-1502.55 367.92 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 367.92 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 367.92 o
-grestore
-gsave
-179.625000 361.232500 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 459.9 m
-1502.55 459.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 459.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 459.9 o
-grestore
-gsave
-178.562500 453.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /two glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 551.88 m
-1502.55 551.88 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 551.88 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 551.88 o
-grestore
-gsave
-178.953125 545.075312 translate
-0.000000 rotate
-0.000000 0.250000 m /two glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 643.86 m
-1502.55 643.86 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 643.86 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 643.86 o
-grestore
-gsave
-178.625000 637.055313 translate
-0.000000 rotate
-0.000000 0.250000 m /three glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 735.84 m
-1502.55 735.84 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 735.84 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 735.84 o
-grestore
-gsave
-179.015625 729.035313 translate
-0.000000 rotate
-0.000000 0.250000 m /three glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /five glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1294 735.8 208.7 91.98 clipbox
-208.688 827.82 m
-1502.55 827.82 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-208.688 827.82 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1502.55 827.82 o
-grestore
-gsave
-178.125000 821.015313 translate
-0.000000 rotate
-0.000000 0.250000 m /four glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-173.125000 278.860937 translate
-90.000000 rotate
-0.000000 4.156250 m /T glyphshow
-8.841797 4.156250 m /o glyphshow
-21.078125 4.156250 m /t glyphshow
-28.919922 4.156250 m /a glyphshow
-41.175781 4.156250 m /l glyphshow
-46.732422 4.156250 m /space glyphshow
-53.089844 4.156250 m /m glyphshow
-72.572266 4.156250 m /a glyphshow
-84.828125 4.156250 m /g glyphshow
-97.523438 4.156250 m /n glyphshow
-110.199219 4.156250 m /e glyphshow
-122.503906 4.156250 m /t glyphshow
-130.345703 4.156250 m /i glyphshow
-135.902344 4.156250 m /z glyphshow
-146.400391 4.156250 m /a glyphshow
-158.656250 4.156250 m /t glyphshow
-166.498047 4.156250 m /i glyphshow
-172.054688 4.156250 m /o glyphshow
-184.291016 4.156250 m /n glyphshow
-196.966797 4.156250 m /space glyphshow
-203.324219 4.156250 m /bracketleft glyphshow
-211.126953 4.156250 m /B glyphshow
-224.847656 4.156250 m /o glyphshow
-237.083984 4.156250 m /h glyphshow
-249.759766 4.156250 m /r glyphshow
-257.607422 4.156250 m /m glyphshow
-277.089844 4.156250 m /a glyphshow
-289.345703 4.156250 m /g glyphshow
-302.041016 4.156250 m /space glyphshow
-308.398438 4.156250 m /slash glyphshow
-315.136719 4.156250 m /space glyphshow
-321.494141 4.156250 m /c glyphshow
-332.490234 4.156250 m /e glyphshow
-344.794922 4.156250 m /l glyphshow
-350.351562 4.156250 m /l glyphshow
-355.908203 4.156250 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-208.688 827.82 m
-1502.55 827.82 l
-stroke
-grestore
-gsave
-1502.55 91.98 m
-1502.55 827.82 l
-stroke
-grestore
-gsave
-208.688 91.98 m
-1502.55 91.98 l
-stroke
-grestore
-gsave
-208.688 91.98 m
-208.688 827.82 l
-stroke
-grestore
-gsave
-1291.06 732.654 m
-1493.55 732.654 l
-1493.55 818.82 l
-1291.06 818.82 l
-1291.06 732.654 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-gsave
-1298.26 797.948 m
-1334.26 797.948 l
-1334.26 810.548 l
-1298.26 810.548 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-1348.662500 793.698125 translate
-0.000000 rotate
-0.000000 4.250000 m /l glyphshow
-5.000977 4.250000 m /d glyphshow
-16.426758 4.250000 m /a glyphshow
-27.457031 4.250000 m /underscore glyphshow
-36.457031 4.250000 m /g glyphshow
-47.882812 4.250000 m /b glyphshow
-59.308594 4.250000 m /r glyphshow
-66.708984 4.250000 m /v glyphshow
-77.361328 4.250000 m /underscore glyphshow
-86.361328 4.250000 m /one glyphshow
-97.813477 4.250000 m /two glyphshow
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1298.26 771.026 m
-1334.26 771.026 l
-1334.26 783.626 l
-1298.26 783.626 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-1348.662500 766.776250 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /underscore glyphshow
-42.925781 4.250000 m /g glyphshow
-54.351562 4.250000 m /b glyphshow
-65.777344 4.250000 m /r glyphshow
-73.177734 4.250000 m /v glyphshow
-83.830078 4.250000 m /underscore glyphshow
-92.830078 4.250000 m /one glyphshow
-104.282227 4.250000 m /two glyphshow
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1298.26 744.104 m
-1334.26 744.104 l
-1334.26 756.704 l
-1298.26 756.704 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-1348.662500 739.854375 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png
deleted file mode 100644
index 859fcf3a..00000000
Binary files a/docs/assets/2018_PRACE_MaX/magnetization_vs_perovskites_allpseudo_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/qb_example_1.png b/docs/assets/2018_PRACE_MaX/qb_example_1.png
deleted file mode 100644
index 3fee6f94..00000000
Binary files a/docs/assets/2018_PRACE_MaX/qb_example_1.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/qb_example_2.png b/docs/assets/2018_PRACE_MaX/qb_example_2.png
deleted file mode 100644
index 6a0c9117..00000000
Binary files a/docs/assets/2018_PRACE_MaX/qb_example_2.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.eps
deleted file mode 100644
index 637d6b0f..00000000
--- a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.eps
+++ /dev/null
@@ -1,3197 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/smearing_energy_vs_bandgap_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:57:05 2014
-%%Orientation: portrait
-%%BoundingBox: -418 -40 1030 832
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /hyphen /period /zero /one /two /three /four /five /six /seven /eight /B /C /N /O /S /T /V /bracketleft /bracketright /underscore /a /b /d /e /g /i /l /m /n /o /p /r /s /u /v /y /bar ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 39 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/hyphen{361 0 49 234 312 314 _sc
-49 314 _m
-312 314 _l
-312 234 _l
-49 234 _l
-49 314 _l
-_cl}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/five{{636 0 77 -13 549 729 _sc
-108 729 _m
-495 729 _l
-495 646 _l
-198 646 _l
-198 467 _l
-212 472 227 476 241 478 _c
-255 480 270 482 284 482 _c
-365 482 429 459 477 415 _c
-525 370 549 310 549 234 _c
-549 155 524 94 475 51 _c
-426 8 357 -13 269 -13 _c
-238 -13 207 -10 175 -6 _c
-143 -1 111 6 77 17 _c
-77 116 _l
-106 100 136 88 168 80 _c
-199 72 232 69 267 69 _c
-323 69 368 83 401 113 _c
-433 143 450 183 450 234 _c
-450 284 433 324 401 354 _c
-368 384 323 399 267 399 _c
-241 399 214 396 188 390 _c
-162 384 135 375 108 363 _c
-108 729 _l
-_cl}_e}_d
-/six{{636 0 70 -13 573 742 _sc
-330 404 _m
-286 404 251 388 225 358 _c
-199 328 186 286 186 234 _c
-186 181 199 139 225 109 _c
-251 79 286 64 330 64 _c
-374 64 409 79 435 109 _c
-461 139 474 181 474 234 _c
-474 286 461 328 435 358 _c
-409 388 374 404 330 404 _c
-526 713 _m
-526 623 _l
-501 635 476 644 451 650 _c
-425 656 400 659 376 659 _c
-310 659 260 637 226 593 _c
-192 549 172 482 168 394 _c
-187 422 211 444 240 459 _c
-269 474 301 482 336 482 _c
-409 482 467 459 509 415 _c
-551 371 573 310 573 234 _c
-573 159 550 99 506 54 _c
-462 9 403 -13 330 -13 _c
-246 -13 181 19 137 83 _c
-92 147 70 241 70 364 _c
-70 479 97 571 152 639 _c
-206 707 280 742 372 742 _c
-}_e{396 742 421 739 447 735 _c
-472 730 498 723 526 713 _c
-_cl}_e}_d
-/seven{636 0 82 0 551 729 _sc
-82 729 _m
-551 729 _l
-551 687 _l
-286 0 _l
-183 0 _l
-432 646 _l
-82 646 _l
-82 729 _l
-_cl}_d
-/eight{{636 0 68 -13 568 742 _sc
-318 346 _m
-271 346 234 333 207 308 _c
-180 283 167 249 167 205 _c
-167 161 180 126 207 101 _c
-234 76 271 64 318 64 _c
-364 64 401 76 428 102 _c
-455 127 469 161 469 205 _c
-469 249 455 283 429 308 _c
-402 333 365 346 318 346 _c
-219 388 _m
-177 398 144 418 120 447 _c
-96 476 85 511 85 553 _c
-85 611 105 657 147 691 _c
-188 725 245 742 318 742 _c
-390 742 447 725 489 691 _c
-530 657 551 611 551 553 _c
-551 511 539 476 515 447 _c
-491 418 459 398 417 388 _c
-464 377 501 355 528 323 _c
-554 291 568 251 568 205 _c
-568 134 546 80 503 43 _c
-459 5 398 -13 318 -13 _c
-237 -13 175 5 132 43 _c
-89 80 68 134 68 205 _c
-68 251 81 291 108 323 _c
-134 355 171 377 219 388 _c
-}_e{183 544 _m
-183 506 194 476 218 455 _c
-242 434 275 424 318 424 _c
-360 424 393 434 417 455 _c
-441 476 453 506 453 544 _c
-453 582 441 611 417 632 _c
-393 653 360 664 318 664 _c
-275 664 242 653 218 632 _c
-194 611 183 582 183 544 _c
-_cl}_e}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/V{684 0 8 0 676 729 _sc
-286 0 _m
-8 729 _l
-111 729 _l
-342 115 _l
-573 729 _l
-676 729 _l
-398 0 _l
-286 0 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/y{592 0 30 -207 562 547 _sc
-322 -50 _m
-296 -114 271 -157 247 -177 _c
-223 -197 191 -207 151 -207 _c
-79 -207 _l
-79 -132 _l
-132 -132 _l
-156 -132 175 -126 189 -114 _c
-203 -102 218 -75 235 -31 _c
-251 9 _l
-30 547 _l
-125 547 _l
-296 119 _l
-467 547 _l
-562 547 _l
-322 -50 _l
-_cl}_d
-/bar{337 0 127 -235 210 764 _sc
-210 764 _m
-210 -235 _l
-127 -235 _l
-127 764 _l
-210 764 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--418.5 -40.5 translate
-1449 873 0 0 clipbox
-gsave
-0 0 m
-1449 0 l
-1449 873 l
-0 873 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-1304.1 785.7 l
-181.125 785.7 l
-cl
-1.000 setgray
-fill
-grestore
-2.500 setlinewidth
-1 setlinejoin
-0 setlinecap
-[] 0 setdash
-0.000 setgray
-gsave
-1123 698.4 181.1 87.3 clipbox
-/o {
-gsave
-newpath
-translate
-2.5 setlinewidth
-1 setlinejoin
-0 setlinecap
--5 -5 m
-5 5 l
--5 5 m
-5 -5 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-287.184 561.807 o
-181.125 710.196 o
-524.256 497.999 o
-1297.86 130.676 o
-181.125 701.682 o
-grestore
-0.500 setlinewidth
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-168.000000 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-305.9 87.3 m
-305.9 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-305.9 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-305.9 785.7 o
-grestore
-gsave
-293.079688 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-430.675 87.3 m
-430.675 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-430.675 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-430.675 785.7 o
-grestore
-gsave
-417.464063 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-555.45 87.3 m
-555.45 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 785.7 o
-grestore
-gsave
-542.301563 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-680.225 87.3 m
-680.225 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-680.225 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-680.225 785.7 o
-grestore
-gsave
-667.123438 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /eight glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-805 87.3 m
-805 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-805 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-805 785.7 o
-grestore
-gsave
-792.273438 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-929.775 87.3 m
-929.775 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 785.7 o
-grestore
-gsave
-917.353125 69.940625 translate
-0.000000 rotate
-0.000000 0.000000 m /one glyphshow
-11.452148 0.000000 m /period glyphshow
-17.173828 0.000000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1054.55 87.3 m
-1054.55 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1054.55 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1054.55 785.7 o
-grestore
-gsave
-1041.737500 70.175000 translate
-0.000000 rotate
-0.000000 0.000000 m /one glyphshow
-11.452148 0.000000 m /period glyphshow
-17.173828 0.000000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1179.33 87.3 m
-1179.33 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1179.33 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1179.33 785.7 o
-grestore
-gsave
-1166.575000 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-1291.396875 69.690625 translate
-0.000000 rotate
-0.000000 0.250000 m /one glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /eight glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-671.815625 45.331250 translate
-0.000000 rotate
-0.000000 4.156250 m /B glyphshow
-13.720703 4.156250 m /a glyphshow
-25.976562 4.156250 m /n glyphshow
-38.652344 4.156250 m /d glyphshow
-51.347656 4.156250 m /space glyphshow
-57.705078 4.156250 m /g glyphshow
-70.400391 4.156250 m /a glyphshow
-82.656250 4.156250 m /p glyphshow
-95.351562 4.156250 m /space glyphshow
-101.708984 4.156250 m /bracketleft glyphshow
-109.511719 4.156250 m /e glyphshow
-121.816406 4.156250 m /V glyphshow
-135.498047 4.156250 m /bracketright glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-139.125000 76.800000 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/seven glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 187.071 m
-1304.1 187.071 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 187.071 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 187.071 o
-grestore
-gsave
-139.125000 176.571429 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/six glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 286.843 m
-1304.1 286.843 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 286.843 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 286.843 o
-grestore
-gsave
-139.125000 276.342857 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/five glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 386.614 m
-1304.1 386.614 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 386.614 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 386.614 o
-grestore
-gsave
-139.125000 376.114286 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/four glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 486.386 m
-1304.1 486.386 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 486.386 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 486.386 o
-grestore
-gsave
-139.125000 475.885714 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/three glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 586.157 m
-1304.1 586.157 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 586.157 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 586.157 o
-grestore
-gsave
-139.125000 575.657143 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/hyphen glyphshow
-
-27.450879 11.648438 moveto
-/two glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 685.929 m
-1304.1 685.929 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 685.929 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 685.929 o
-grestore
-gsave
-139.125000 675.428571 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.406250 moveto
-/one glyphshow
-
-11.452148 1.406250 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.812500 moveto
-/hyphen glyphshow
-
-27.450879 11.812500 moveto
-/one glyphshow
-
-
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-144.125000 775.200000 translate
-0.000000 rotate
-/DejaVuSans findfont
-18.0 scalefont
-setfont
-0.000000 1.242188 moveto
-/one glyphshow
-
-11.452148 1.242188 moveto
-/zero glyphshow
-
-/DejaVuSans findfont
-12.6 scalefont
-setfont
-22.904297 11.648438 moveto
-/zero glyphshow
-
-
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 117.334 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 117.334 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 147.368 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 147.368 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 164.937 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 164.937 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 177.403 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 177.403 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 217.106 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 217.106 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 247.14 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 247.14 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 264.709 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 264.709 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 277.174 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 277.174 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 316.877 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 316.877 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 346.911 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 346.911 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 364.48 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 364.48 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 376.945 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 376.945 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 416.648 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 416.648 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 446.683 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 446.683 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 464.252 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 464.252 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 476.717 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 476.717 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 516.42 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 516.42 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 546.454 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 546.454 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 564.023 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 564.023 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 576.488 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 576.488 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 616.191 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 616.191 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 646.226 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 646.226 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 663.794 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 663.794 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 676.26 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 676.26 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 715.963 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 715.963 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 745.997 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 745.997 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 763.566 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 763.566 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 776.031 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--2 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 776.031 o
-grestore
-gsave
-134.125000 320.671875 translate
-90.000000 rotate
-0.000000 4.718750 m /bar glyphshow
-6.738281 4.718750 m /S glyphshow
-19.433594 4.718750 m /m glyphshow
-38.916016 4.718750 m /e glyphshow
-51.220703 4.718750 m /a glyphshow
-63.476562 4.718750 m /r glyphshow
-71.699219 4.718750 m /i glyphshow
-77.255859 4.718750 m /n glyphshow
-89.931641 4.718750 m /g glyphshow
-102.626953 4.718750 m /space glyphshow
-108.984375 4.718750 m /e glyphshow
-121.289062 4.718750 m /n glyphshow
-133.964844 4.718750 m /e glyphshow
-146.269531 4.718750 m /r glyphshow
-154.117188 4.718750 m /g glyphshow
-166.812500 4.718750 m /y glyphshow
-178.648438 4.718750 m /bar glyphshow
-185.386719 4.718750 m /space glyphshow
-191.744141 4.718750 m /bracketleft glyphshow
-199.546875 4.718750 m /e glyphshow
-211.851562 4.718750 m /V glyphshow
-225.533203 4.718750 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-299.661250 561.557428 translate
-0.000000 rotate
-0.000000 0.250000 m /C glyphshow
-12.568359 0.250000 m /u glyphshow
-23.976562 0.250000 m /T glyphshow
-31.971680 0.250000 m /a glyphshow
-43.001953 0.250000 m /O glyphshow
-57.169922 0.250000 m /three glyphshow
-grestore
-gsave
-193.602500 712.352378 translate
-0.000000 rotate
-0.000000 0.250000 m /S glyphshow
-11.425781 0.250000 m /r glyphshow
-18.826172 0.250000 m /N glyphshow
-32.291016 0.250000 m /i glyphshow
-37.291992 0.250000 m /O glyphshow
-51.459961 0.250000 m /three glyphshow
-grestore
-gsave
-536.733750 497.748991 translate
-0.000000 rotate
-0.000000 0.250000 m /C glyphshow
-12.568359 0.250000 m /d glyphshow
-23.994141 0.250000 m /S glyphshow
-35.419922 0.250000 m /i glyphshow
-40.420898 0.250000 m /O glyphshow
-54.588867 0.250000 m /three glyphshow
-grestore
-gsave
-1310.338750 130.425691 translate
-0.000000 rotate
-0.000000 0.250000 m /B glyphshow
-12.348633 0.250000 m /a glyphshow
-23.378906 0.250000 m /T glyphshow
-33.874023 0.250000 m /i glyphshow
-38.875000 0.250000 m /O glyphshow
-53.042969 0.250000 m /three glyphshow
-grestore
-gsave
-193.602500 687.313365 translate
-0.000000 rotate
-0.000000 0.250000 m /S glyphshow
-11.425781 0.250000 m /r glyphshow
-18.826172 0.250000 m /C glyphshow
-31.394531 0.250000 m /o glyphshow
-42.407227 0.250000 m /O glyphshow
-56.575195 0.250000 m /three glyphshow
-grestore
-0.000 setgray
-gsave
-1092.61 744.378 m
-1295.1 744.378 l
-1295.1 776.7 l
-1092.61 776.7 l
-1092.61 744.378 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-2.500 setlinewidth
-0 setlinecap
-gsave
-/o {
-gsave
-newpath
-translate
-2.5 setlinewidth
-1 setlinejoin
-0 setlinecap
--5 -5 m
-5 5 l
--5 5 m
-5 -5 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1105.21 762.128 o
-1130.41 762.128 o
-grestore
-gsave
-1150.212500 751.578125 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.png
deleted file mode 100644
index 0b79bc8d..00000000
Binary files a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_bandgap_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps b/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
deleted file mode 100644
index 06ef2925..00000000
--- a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
+++ /dev/null
@@ -1,7017 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Title: /home/mounet/Documents/PYTHON/AiiDA_scripts/my_first_scripts/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.eps
-%%Creator: matplotlib version 1.1.1rc, http://matplotlib.sourceforge.net/
-%%CreationDate: Wed Oct 29 08:47:12 2014
-%%Orientation: portrait
-%%BoundingBox: -418 -40 1030 832
-%%EndComments
-%%BeginProlog
-/mpldict 8 dict def
-mpldict begin
-/m { moveto } bind def
-/l { lineto } bind def
-/r { rlineto } bind def
-/c { curveto } bind def
-/cl { closepath } bind def
-/box {
-m
-1 index 0 r
-0 exch r
-neg 0 r
-cl
-} bind def
-/clipbox {
-box
-clip
-newpath
-} bind def
-%!PS-Adobe-3.0 Resource-Font
-%%Title: DejaVu Sans
-%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain
-%%Creator: Converted from TrueType to type 3 by PPR
-25 dict begin
-/_d{bind def}bind def
-/_m{moveto}_d
-/_l{lineto}_d
-/_cl{closepath eofill}_d
-/_c{curveto}_d
-/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d
-/_e{exec}_d
-/FontName /DejaVuSans def
-/PaintType 0 def
-/FontMatrix[.001 0 0 .001 0 0]def
-/FontBBox[-1021 -415 1681 1167]def
-/FontType 3 def
-/Encoding [ /space /period /zero /one /two /three /four /six /eight /A /B /C /F /G /H /K /L /M /N /O /P /R /S /T /V /Y /Z /bracketleft /bracketright /underscore /a /b /c /d /e /f /g /i /l /m /n /o /p /r /s /u /v /y /bar ] def
-/FontInfo 10 dict dup begin
-/FamilyName (DejaVu Sans) def
-/FullName (DejaVu Sans) def
-/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def
-/Weight (Book) def
-/Version (Version 2.33) def
-/ItalicAngle 0.0 def
-/isFixedPitch false def
-/UnderlinePosition -130 def
-/UnderlineThickness 90 def
-end readonly def
-/CharStrings 49 dict dup begin
-/space{318 0 0 0 0 0 _sc
-}_d
-/period{318 0 107 0 210 124 _sc
-107 124 _m
-210 124 _l
-210 0 _l
-107 0 _l
-107 124 _l
-_cl}_d
-/zero{636 0 66 -13 570 742 _sc
-318 664 _m
-267 664 229 639 203 589 _c
-177 539 165 464 165 364 _c
-165 264 177 189 203 139 _c
-229 89 267 64 318 64 _c
-369 64 407 89 433 139 _c
-458 189 471 264 471 364 _c
-471 464 458 539 433 589 _c
-407 639 369 664 318 664 _c
-318 742 _m
-399 742 461 709 505 645 _c
-548 580 570 486 570 364 _c
-570 241 548 147 505 83 _c
-461 19 399 -13 318 -13 _c
-236 -13 173 19 130 83 _c
-87 147 66 241 66 364 _c
-66 486 87 580 130 645 _c
-173 709 236 742 318 742 _c
-_cl}_d
-/one{636 0 110 0 544 729 _sc
-124 83 _m
-285 83 _l
-285 639 _l
-110 604 _l
-110 694 _l
-284 729 _l
-383 729 _l
-383 83 _l
-544 83 _l
-544 0 _l
-124 0 _l
-124 83 _l
-_cl}_d
-/two{{636 0 73 0 536 742 _sc
-192 83 _m
-536 83 _l
-536 0 _l
-73 0 _l
-73 83 _l
-110 121 161 173 226 239 _c
-290 304 331 346 348 365 _c
-380 400 402 430 414 455 _c
-426 479 433 504 433 528 _c
-433 566 419 598 392 622 _c
-365 646 330 659 286 659 _c
-255 659 222 653 188 643 _c
-154 632 117 616 78 594 _c
-78 694 _l
-118 710 155 722 189 730 _c
-223 738 255 742 284 742 _c
-359 742 419 723 464 685 _c
-509 647 532 597 532 534 _c
-532 504 526 475 515 449 _c
-504 422 484 390 454 354 _c
-446 344 420 317 376 272 _c
-332 227 271 164 192 83 _c
-_cl}_e}_d
-/three{{636 0 76 -13 556 742 _sc
-406 393 _m
-453 383 490 362 516 330 _c
-542 298 556 258 556 212 _c
-556 140 531 84 482 45 _c
-432 6 362 -13 271 -13 _c
-240 -13 208 -10 176 -4 _c
-144 1 110 10 76 22 _c
-76 117 _l
-103 101 133 89 166 81 _c
-198 73 232 69 268 69 _c
-330 69 377 81 409 105 _c
-441 129 458 165 458 212 _c
-458 254 443 288 413 312 _c
-383 336 341 349 287 349 _c
-202 349 _l
-202 430 _l
-291 430 _l
-339 430 376 439 402 459 _c
-428 478 441 506 441 543 _c
-441 580 427 609 401 629 _c
-374 649 336 659 287 659 _c
-260 659 231 656 200 650 _c
-169 644 135 635 98 623 _c
-98 711 _l
-135 721 170 729 203 734 _c
-235 739 266 742 296 742 _c
-}_e{370 742 429 725 473 691 _c
-517 657 539 611 539 553 _c
-539 513 527 479 504 451 _c
-481 423 448 403 406 393 _c
-_cl}_e}_d
-/four{636 0 49 0 580 729 _sc
-378 643 _m
-129 254 _l
-378 254 _l
-378 643 _l
-352 729 _m
-476 729 _l
-476 254 _l
-580 254 _l
-580 172 _l
-476 172 _l
-476 0 _l
-378 0 _l
-378 172 _l
-49 172 _l
-49 267 _l
-352 729 _l
-_cl}_d
-/six{{636 0 70 -13 573 742 _sc
-330 404 _m
-286 404 251 388 225 358 _c
-199 328 186 286 186 234 _c
-186 181 199 139 225 109 _c
-251 79 286 64 330 64 _c
-374 64 409 79 435 109 _c
-461 139 474 181 474 234 _c
-474 286 461 328 435 358 _c
-409 388 374 404 330 404 _c
-526 713 _m
-526 623 _l
-501 635 476 644 451 650 _c
-425 656 400 659 376 659 _c
-310 659 260 637 226 593 _c
-192 549 172 482 168 394 _c
-187 422 211 444 240 459 _c
-269 474 301 482 336 482 _c
-409 482 467 459 509 415 _c
-551 371 573 310 573 234 _c
-573 159 550 99 506 54 _c
-462 9 403 -13 330 -13 _c
-246 -13 181 19 137 83 _c
-92 147 70 241 70 364 _c
-70 479 97 571 152 639 _c
-206 707 280 742 372 742 _c
-}_e{396 742 421 739 447 735 _c
-472 730 498 723 526 713 _c
-_cl}_e}_d
-/eight{{636 0 68 -13 568 742 _sc
-318 346 _m
-271 346 234 333 207 308 _c
-180 283 167 249 167 205 _c
-167 161 180 126 207 101 _c
-234 76 271 64 318 64 _c
-364 64 401 76 428 102 _c
-455 127 469 161 469 205 _c
-469 249 455 283 429 308 _c
-402 333 365 346 318 346 _c
-219 388 _m
-177 398 144 418 120 447 _c
-96 476 85 511 85 553 _c
-85 611 105 657 147 691 _c
-188 725 245 742 318 742 _c
-390 742 447 725 489 691 _c
-530 657 551 611 551 553 _c
-551 511 539 476 515 447 _c
-491 418 459 398 417 388 _c
-464 377 501 355 528 323 _c
-554 291 568 251 568 205 _c
-568 134 546 80 503 43 _c
-459 5 398 -13 318 -13 _c
-237 -13 175 5 132 43 _c
-89 80 68 134 68 205 _c
-68 251 81 291 108 323 _c
-134 355 171 377 219 388 _c
-}_e{183 544 _m
-183 506 194 476 218 455 _c
-242 434 275 424 318 424 _c
-360 424 393 434 417 455 _c
-441 476 453 506 453 544 _c
-453 582 441 611 417 632 _c
-393 653 360 664 318 664 _c
-275 664 242 653 218 632 _c
-194 611 183 582 183 544 _c
-_cl}_e}_d
-/A{684 0 8 0 676 729 _sc
-342 632 _m
-208 269 _l
-476 269 _l
-342 632 _l
-286 729 _m
-398 729 _l
-676 0 _l
-573 0 _l
-507 187 _l
-178 187 _l
-112 0 _l
-8 0 _l
-286 729 _l
-_cl}_d
-/B{{686 0 98 0 615 729 _sc
-197 348 _m
-197 81 _l
-355 81 _l
-408 81 447 92 473 114 _c
-498 136 511 169 511 215 _c
-511 260 498 293 473 315 _c
-447 337 408 348 355 348 _c
-197 348 _l
-197 648 _m
-197 428 _l
-343 428 _l
-391 428 426 437 450 455 _c
-474 473 486 500 486 538 _c
-486 574 474 602 450 620 _c
-426 638 391 648 343 648 _c
-197 648 _l
-98 729 _m
-350 729 _l
-425 729 483 713 524 682 _c
-564 650 585 606 585 549 _c
-585 504 574 468 553 442 _c
-532 416 502 399 462 393 _c
-510 382 548 360 575 327 _c
-601 294 615 253 615 204 _c
-615 138 592 88 548 53 _c
-504 17 441 0 360 0 _c
-98 0 _l
-98 729 _l
-}_e{_cl}_e}_d
-/C{{698 0 56 -13 644 742 _sc
-644 673 _m
-644 569 _l
-610 599 575 622 537 638 _c
-499 653 460 661 418 661 _c
-334 661 270 635 226 584 _c
-182 533 160 460 160 364 _c
-160 268 182 194 226 143 _c
-270 92 334 67 418 67 _c
-460 67 499 74 537 90 _c
-575 105 610 128 644 159 _c
-644 56 _l
-609 32 572 15 534 4 _c
-496 -7 455 -13 412 -13 _c
-302 -13 215 20 151 87 _c
-87 154 56 246 56 364 _c
-56 481 87 573 151 641 _c
-215 708 302 742 412 742 _c
-456 742 497 736 535 725 _c
-573 713 610 696 644 673 _c
-_cl}_e}_d
-/F{575 0 98 0 517 729 _sc
-98 729 _m
-517 729 _l
-517 646 _l
-197 646 _l
-197 431 _l
-486 431 _l
-486 348 _l
-197 348 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/G{{775 0 56 -13 693 742 _sc
-595 104 _m
-595 300 _l
-434 300 _l
-434 381 _l
-693 381 _l
-693 68 _l
-655 40 613 20 567 7 _c
-521 -6 472 -13 420 -13 _c
-306 -13 216 20 152 86 _c
-88 152 56 245 56 364 _c
-56 482 88 575 152 642 _c
-216 708 306 742 420 742 _c
-467 742 512 736 555 724 _c
-598 712 638 695 674 673 _c
-674 568 _l
-637 598 598 621 557 637 _c
-516 653 473 661 428 661 _c
-338 661 271 636 227 586 _c
-182 536 160 462 160 364 _c
-160 265 182 191 227 141 _c
-271 91 338 67 428 67 _c
-462 67 493 70 521 76 _c
-549 82 573 91 595 104 _c
-_cl}_e}_d
-/H{752 0 98 0 654 729 _sc
-98 729 _m
-197 729 _l
-197 430 _l
-555 430 _l
-555 729 _l
-654 729 _l
-654 0 _l
-555 0 _l
-555 347 _l
-197 347 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/K{656 0 98 0 677 729 _sc
-98 729 _m
-197 729 _l
-197 421 _l
-524 729 _l
-651 729 _l
-289 389 _l
-677 0 _l
-547 0 _l
-197 351 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/L{557 0 98 0 552 729 _sc
-98 729 _m
-197 729 _l
-197 83 _l
-552 83 _l
-552 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/M{863 0 98 0 765 729 _sc
-98 729 _m
-245 729 _l
-431 233 _l
-618 729 _l
-765 729 _l
-765 0 _l
-669 0 _l
-669 640 _l
-481 140 _l
-382 140 _l
-194 640 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/N{748 0 98 0 650 729 _sc
-98 729 _m
-231 729 _l
-554 119 _l
-554 729 _l
-650 729 _l
-650 0 _l
-517 0 _l
-194 610 _l
-194 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/O{787 0 56 -13 731 742 _sc
-394 662 _m
-322 662 265 635 223 582 _c
-181 528 160 456 160 364 _c
-160 272 181 199 223 146 _c
-265 92 322 66 394 66 _c
-465 66 522 92 564 146 _c
-606 199 627 272 627 364 _c
-627 456 606 528 564 582 _c
-522 635 465 662 394 662 _c
-394 742 _m
-496 742 577 707 639 639 _c
-700 571 731 479 731 364 _c
-731 248 700 157 639 89 _c
-577 21 496 -13 394 -13 _c
-291 -13 209 21 148 89 _c
-86 157 56 248 56 364 _c
-56 479 86 571 148 639 _c
-209 707 291 742 394 742 _c
-_cl}_d
-/P{603 0 98 0 569 729 _sc
-197 648 _m
-197 374 _l
-321 374 _l
-367 374 402 385 427 409 _c
-452 433 465 467 465 511 _c
-465 555 452 588 427 612 _c
-402 636 367 648 321 648 _c
-197 648 _l
-98 729 _m
-321 729 _l
-402 729 464 710 506 673 _c
-548 636 569 582 569 511 _c
-569 439 548 384 506 348 _c
-464 311 402 293 321 293 _c
-197 293 _l
-197 0 _l
-98 0 _l
-98 729 _l
-_cl}_d
-/R{{695 0 98 0 666 729 _sc
-444 342 _m
-465 334 486 319 506 296 _c
-526 272 546 240 566 199 _c
-666 0 _l
-560 0 _l
-467 187 _l
-443 235 419 268 397 284 _c
-374 300 343 308 304 308 _c
-197 308 _l
-197 0 _l
-98 0 _l
-98 729 _l
-321 729 _l
-404 729 466 711 507 677 _c
-548 642 569 589 569 519 _c
-569 473 558 434 537 404 _c
-515 374 484 353 444 342 _c
-197 648 _m
-197 389 _l
-321 389 _l
-368 389 404 400 428 422 _c
-452 444 465 476 465 519 _c
-465 561 452 593 428 615 _c
-404 637 368 648 321 648 _c
-197 648 _l
-_cl}_e}_d
-/S{{635 0 66 -13 579 742 _sc
-535 705 _m
-535 609 _l
-497 627 462 640 429 649 _c
-395 657 363 662 333 662 _c
-279 662 237 651 208 631 _c
-179 610 165 580 165 542 _c
-165 510 174 485 194 469 _c
-213 452 250 439 304 429 _c
-364 417 _l
-437 403 491 378 526 343 _c
-561 307 579 260 579 201 _c
-579 130 555 77 508 41 _c
-460 5 391 -13 300 -13 _c
-265 -13 228 -9 189 -2 _c
-150 5 110 16 69 32 _c
-69 134 _l
-109 111 148 94 186 83 _c
-224 71 262 66 300 66 _c
-356 66 399 77 430 99 _c
-460 121 476 152 476 194 _c
-476 230 465 258 443 278 _c
-421 298 385 313 335 323 _c
-275 335 _l
-201 349 148 372 115 404 _c
-82 435 66 478 66 534 _c
-66 598 88 649 134 686 _c
-179 723 242 742 322 742 _c
-}_e{356 742 390 739 426 733 _c
-461 727 497 717 535 705 _c
-_cl}_e}_d
-/T{611 0 -2 0 614 729 _sc
--2 729 _m
-614 729 _l
-614 646 _l
-355 646 _l
-355 0 _l
-256 0 _l
-256 646 _l
--2 646 _l
--2 729 _l
-_cl}_d
-/V{684 0 8 0 676 729 _sc
-286 0 _m
-8 729 _l
-111 729 _l
-342 115 _l
-573 729 _l
-676 729 _l
-398 0 _l
-286 0 _l
-_cl}_d
-/Y{611 0 -1 0 613 729 _sc
--1 729 _m
-104 729 _l
-306 429 _l
-507 729 _l
-613 729 _l
-355 347 _l
-355 0 _l
-256 0 _l
-256 347 _l
--1 729 _l
-_cl}_d
-/Z{685 0 45 0 640 729 _sc
-56 729 _m
-629 729 _l
-629 654 _l
-168 83 _l
-640 83 _l
-640 0 _l
-45 0 _l
-45 75 _l
-506 646 _l
-56 646 _l
-56 729 _l
-_cl}_d
-/bracketleft{390 0 86 -131 293 760 _sc
-86 760 _m
-293 760 _l
-293 690 _l
-176 690 _l
-176 -61 _l
-293 -61 _l
-293 -131 _l
-86 -131 _l
-86 760 _l
-_cl}_d
-/bracketright{390 0 97 -131 304 760 _sc
-304 760 _m
-304 -131 _l
-97 -131 _l
-97 -61 _l
-214 -61 _l
-214 690 _l
-97 690 _l
-97 760 _l
-304 760 _l
-_cl}_d
-/underscore{500 0 -9 -235 510 -165 _sc
-510 -165 _m
-510 -235 _l
--9 -235 _l
--9 -165 _l
-510 -165 _l
-_cl}_d
-/a{{613 0 60 -13 522 560 _sc
-343 275 _m
-270 275 220 266 192 250 _c
-164 233 150 205 150 165 _c
-150 133 160 107 181 89 _c
-202 70 231 61 267 61 _c
-317 61 357 78 387 114 _c
-417 149 432 196 432 255 _c
-432 275 _l
-343 275 _l
-522 312 _m
-522 0 _l
-432 0 _l
-432 83 _l
-411 49 385 25 355 10 _c
-325 -5 287 -13 243 -13 _c
-187 -13 142 2 109 33 _c
-76 64 60 106 60 159 _c
-60 220 80 266 122 298 _c
-163 329 224 345 306 345 _c
-432 345 _l
-432 354 _l
-432 395 418 427 391 450 _c
-364 472 326 484 277 484 _c
-245 484 215 480 185 472 _c
-155 464 127 453 100 439 _c
-100 522 _l
-}_e{132 534 164 544 195 550 _c
-226 556 256 560 286 560 _c
-365 560 424 539 463 498 _c
-502 457 522 395 522 312 _c
-_cl}_e}_d
-/b{{635 0 91 -13 580 760 _sc
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-181 464 _m
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-181 0 _l
-91 0 _l
-91 760 _l
-181 760 _l
-181 464 _l
-_cl}_e}_d
-/c{{550 0 55 -13 488 560 _sc
-488 526 _m
-488 442 _l
-462 456 437 466 411 473 _c
-385 480 360 484 334 484 _c
-276 484 230 465 198 428 _c
-166 391 150 339 150 273 _c
-150 206 166 154 198 117 _c
-230 80 276 62 334 62 _c
-360 62 385 65 411 72 _c
-437 79 462 90 488 104 _c
-488 21 _l
-462 9 436 0 410 -5 _c
-383 -10 354 -13 324 -13 _c
-242 -13 176 12 128 64 _c
-79 115 55 185 55 273 _c
-55 362 79 432 128 483 _c
-177 534 244 560 330 560 _c
-358 560 385 557 411 551 _c
-437 545 463 537 488 526 _c
-_cl}_e}_d
-/d{{635 0 55 -13 544 760 _sc
-454 464 _m
-454 760 _l
-544 760 _l
-544 0 _l
-454 0 _l
-454 82 _l
-435 49 411 25 382 10 _c
-353 -5 319 -13 279 -13 _c
-213 -13 159 13 117 65 _c
-75 117 55 187 55 273 _c
-55 359 75 428 117 481 _c
-159 533 213 560 279 560 _c
-319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-148 273 _m
-148 207 161 155 188 117 _c
-215 79 253 61 301 61 _c
-348 61 385 79 413 117 _c
-440 155 454 207 454 273 _c
-454 339 440 390 413 428 _c
-385 466 348 485 301 485 _c
-253 485 215 466 188 428 _c
-161 390 148 339 148 273 _c
-_cl}_e}_d
-/e{{615 0 55 -13 562 560 _sc
-562 296 _m
-562 252 _l
-149 252 _l
-153 190 171 142 205 110 _c
-238 78 284 62 344 62 _c
-378 62 412 66 444 74 _c
-476 82 509 95 541 113 _c
-541 28 _l
-509 14 476 3 442 -3 _c
-408 -9 373 -13 339 -13 _c
-251 -13 182 12 131 62 _c
-80 112 55 181 55 268 _c
-55 357 79 428 127 481 _c
-175 533 241 560 323 560 _c
-397 560 455 536 498 489 _c
-540 441 562 377 562 296 _c
-472 322 _m
-471 371 457 410 431 440 _c
-404 469 368 484 324 484 _c
-274 484 234 469 204 441 _c
-174 413 156 373 152 322 _c
-472 322 _l
-_cl}_e}_d
-/f{352 0 23 0 371 760 _sc
-371 760 _m
-371 685 _l
-285 685 _l
-253 685 230 678 218 665 _c
-205 652 199 629 199 595 _c
-199 547 _l
-347 547 _l
-347 477 _l
-199 477 _l
-199 0 _l
-109 0 _l
-109 477 _l
-23 477 _l
-23 547 _l
-109 547 _l
-109 585 _l
-109 645 123 690 151 718 _c
-179 746 224 760 286 760 _c
-371 760 _l
-_cl}_d
-/g{{635 0 55 -207 544 560 _sc
-454 280 _m
-454 344 440 395 414 431 _c
-387 467 349 485 301 485 _c
-253 485 215 467 188 431 _c
-161 395 148 344 148 280 _c
-148 215 161 165 188 129 _c
-215 93 253 75 301 75 _c
-349 75 387 93 414 129 _c
-440 165 454 215 454 280 _c
-544 68 _m
-544 -24 523 -93 482 -139 _c
-440 -184 377 -207 292 -207 _c
-260 -207 231 -204 203 -200 _c
-175 -195 147 -188 121 -178 _c
-121 -91 _l
-147 -105 173 -115 199 -122 _c
-225 -129 251 -133 278 -133 _c
-336 -133 380 -117 410 -87 _c
-439 -56 454 -10 454 52 _c
-454 96 _l
-435 64 411 40 382 24 _c
-353 8 319 0 279 0 _c
-211 0 157 25 116 76 _c
-75 127 55 195 55 280 _c
-55 364 75 432 116 483 _c
-157 534 211 560 279 560 _c
-}_e{319 560 353 552 382 536 _c
-411 520 435 496 454 464 _c
-454 547 _l
-544 547 _l
-544 68 _l
-_cl}_e}_d
-/i{278 0 94 0 184 760 _sc
-94 547 _m
-184 547 _l
-184 0 _l
-94 0 _l
-94 547 _l
-94 760 _m
-184 760 _l
-184 646 _l
-94 646 _l
-94 760 _l
-_cl}_d
-/l{278 0 94 0 184 760 _sc
-94 760 _m
-184 760 _l
-184 0 _l
-94 0 _l
-94 760 _l
-_cl}_d
-/m{{974 0 91 0 889 560 _sc
-520 442 _m
-542 482 569 511 600 531 _c
-631 550 668 560 711 560 _c
-767 560 811 540 842 500 _c
-873 460 889 403 889 330 _c
-889 0 _l
-799 0 _l
-799 327 _l
-799 379 789 418 771 444 _c
-752 469 724 482 686 482 _c
-639 482 602 466 575 435 _c
-548 404 535 362 535 309 _c
-535 0 _l
-445 0 _l
-445 327 _l
-445 379 435 418 417 444 _c
-398 469 369 482 331 482 _c
-285 482 248 466 221 435 _c
-194 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-201 495 226 520 255 536 _c
-283 552 317 560 357 560 _c
-397 560 430 550 458 530 _c
-486 510 506 480 520 442 _c
-}_e{_cl}_e}_d
-/n{634 0 91 0 549 560 _sc
-549 330 _m
-549 0 _l
-459 0 _l
-459 327 _l
-459 379 448 417 428 443 _c
-408 469 378 482 338 482 _c
-289 482 251 466 223 435 _c
-195 404 181 362 181 309 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-202 494 227 519 257 535 _c
-286 551 320 560 358 560 _c
-420 560 468 540 500 501 _c
-532 462 549 405 549 330 _c
-_cl}_d
-/o{612 0 55 -13 557 560 _sc
-306 484 _m
-258 484 220 465 192 427 _c
-164 389 150 338 150 273 _c
-150 207 163 156 191 118 _c
-219 80 257 62 306 62 _c
-354 62 392 80 420 118 _c
-448 156 462 207 462 273 _c
-462 337 448 389 420 427 _c
-392 465 354 484 306 484 _c
-306 560 _m
-384 560 445 534 490 484 _c
-534 433 557 363 557 273 _c
-557 183 534 113 490 63 _c
-445 12 384 -13 306 -13 _c
-227 -13 165 12 121 63 _c
-77 113 55 183 55 273 _c
-55 363 77 433 121 484 _c
-165 534 227 560 306 560 _c
-_cl}_d
-/p{{635 0 91 -207 580 560 _sc
-181 82 _m
-181 -207 _l
-91 -207 _l
-91 547 _l
-181 547 _l
-181 464 _l
-199 496 223 520 252 536 _c
-281 552 316 560 356 560 _c
-422 560 476 533 518 481 _c
-559 428 580 359 580 273 _c
-580 187 559 117 518 65 _c
-476 13 422 -13 356 -13 _c
-316 -13 281 -5 252 10 _c
-223 25 199 49 181 82 _c
-487 273 _m
-487 339 473 390 446 428 _c
-418 466 381 485 334 485 _c
-286 485 249 466 222 428 _c
-194 390 181 339 181 273 _c
-181 207 194 155 222 117 _c
-249 79 286 61 334 61 _c
-381 61 418 79 446 117 _c
-473 155 487 207 487 273 _c
-_cl}_e}_d
-/r{411 0 91 0 411 560 _sc
-411 463 _m
-401 469 390 473 378 476 _c
-366 478 353 480 339 480 _c
-288 480 249 463 222 430 _c
-194 397 181 350 181 288 _c
-181 0 _l
-91 0 _l
-91 547 _l
-181 547 _l
-181 462 _l
-199 495 224 520 254 536 _c
-284 552 321 560 365 560 _c
-371 560 378 559 386 559 _c
-393 558 401 557 411 555 _c
-411 463 _l
-_cl}_d
-/s{{521 0 54 -13 472 560 _sc
-443 531 _m
-443 446 _l
-417 458 391 468 364 475 _c
-336 481 308 485 279 485 _c
-234 485 200 478 178 464 _c
-156 450 145 430 145 403 _c
-145 382 153 366 169 354 _c
-185 342 217 330 265 320 _c
-296 313 _l
-360 299 405 279 432 255 _c
-458 230 472 195 472 151 _c
-472 100 452 60 412 31 _c
-372 1 316 -13 246 -13 _c
-216 -13 186 -10 154 -5 _c
-122 0 89 8 54 20 _c
-54 113 _l
-87 95 120 82 152 74 _c
-184 65 216 61 248 61 _c
-290 61 323 68 346 82 _c
-368 96 380 117 380 144 _c
-380 168 371 187 355 200 _c
-339 213 303 226 247 238 _c
-216 245 _l
-160 257 119 275 95 299 _c
-70 323 58 356 58 399 _c
-58 450 76 490 112 518 _c
-148 546 200 560 268 560 _c
-}_e{301 560 332 557 362 552 _c
-391 547 418 540 443 531 _c
-_cl}_e}_d
-/u{634 0 85 -13 543 560 _sc
-85 216 _m
-85 547 _l
-175 547 _l
-175 219 _l
-175 167 185 129 205 103 _c
-225 77 255 64 296 64 _c
-344 64 383 79 411 110 _c
-439 141 453 183 453 237 _c
-453 547 _l
-543 547 _l
-543 0 _l
-453 0 _l
-453 84 _l
-431 50 405 26 377 10 _c
-348 -5 315 -13 277 -13 _c
-214 -13 166 6 134 45 _c
-101 83 85 140 85 216 _c
-_cl}_d
-/v{592 0 30 0 562 547 _sc
-30 547 _m
-125 547 _l
-296 88 _l
-467 547 _l
-562 547 _l
-357 0 _l
-235 0 _l
-30 547 _l
-_cl}_d
-/y{592 0 30 -207 562 547 _sc
-322 -50 _m
-296 -114 271 -157 247 -177 _c
-223 -197 191 -207 151 -207 _c
-79 -207 _l
-79 -132 _l
-132 -132 _l
-156 -132 175 -126 189 -114 _c
-203 -102 218 -75 235 -31 _c
-251 9 _l
-30 547 _l
-125 547 _l
-296 119 _l
-467 547 _l
-562 547 _l
-322 -50 _l
-_cl}_d
-/bar{337 0 127 -235 210 764 _sc
-210 764 _m
-210 -235 _l
-127 -235 _l
-127 764 _l
-210 764 _l
-_cl}_d
-end readonly def
-
-/BuildGlyph
- {exch begin
- CharStrings exch
- 2 copy known not{pop /.notdef}if
- true 3 1 roll get exec
- end}_d
-
-/BuildChar {
- 1 index /Encoding get exch get
- 1 index /BuildGlyph get exec
-}_d
-
-FontName currentdict end definefont pop
-end
-%%EndProlog
-mpldict begin
--418.5 -40.5 translate
-1449 873 0 0 clipbox
-gsave
-0 0 m
-1449 0 l
-1449 873 l
-0 873 l
-cl
-1.000 setgray
-fill
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-1304.1 785.7 l
-181.125 785.7 l
-cl
-1.000 setgray
-fill
-grestore
-1.000 setlinewidth
-1 setlinejoin
-2 setlinecap
-[] 0 setdash
-0.000 0.000 1.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-184.08 87.3 m
-188.02 87.3 l
-188.02 87.3375 l
-184.08 87.3375 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-203.782 87.3 m
-207.722 87.3 l
-207.722 87.3026 l
-203.782 87.3026 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-223.483 87.3 m
-227.423 87.3 l
-227.423 87.3 l
-223.483 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-243.184 87.3 m
-247.124 87.3 l
-247.124 87.3 l
-243.184 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-262.885 87.3 m
-266.826 87.3 l
-266.826 87.8701 l
-262.885 87.8701 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-282.587 87.3 m
-286.527 87.3 l
-286.527 87.3005 l
-282.587 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-302.288 87.3 m
-306.228 87.3 l
-306.228 87.3 l
-302.288 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-321.989 87.3 m
-325.93 87.3 l
-325.93 87.3048 l
-321.989 87.3048 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-341.691 87.3 m
-345.631 87.3 l
-345.631 87.3697 l
-341.691 87.3697 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-361.392 87.3 m
-365.332 87.3 l
-365.332 90.8317 l
-361.392 90.8317 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-381.093 87.3 m
-385.034 87.3 l
-385.034 87.4204 l
-381.093 87.4204 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-400.795 87.3 m
-404.735 87.3 l
-404.735 87.3 l
-400.795 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-420.496 87.3 m
-424.436 87.3 l
-424.436 87.3 l
-420.496 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-440.197 87.3 m
-444.138 87.3 l
-444.138 87.3 l
-440.197 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-459.899 87.3 m
-463.839 87.3 l
-463.839 87.3 l
-459.899 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-479.6 87.3 m
-483.54 87.3 l
-483.54 93.6364 l
-479.6 93.6364 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-499.301 87.3 m
-503.242 87.3 l
-503.242 87.5502 l
-499.301 87.5502 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-519.003 87.3 m
-522.943 87.3 l
-522.943 87.3011 l
-519.003 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-538.704 87.3 m
-542.644 87.3 l
-542.644 117.986 l
-538.704 117.986 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-558.405 87.3 m
-562.345 87.3 l
-562.345 108.443 l
-558.405 108.443 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-578.107 87.3 m
-582.047 87.3 l
-582.047 93.1539 l
-578.107 93.1539 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-597.808 87.3 m
-601.748 87.3 l
-601.748 87.3412 l
-597.808 87.3412 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-617.509 87.3 m
-621.449 87.3 l
-621.449 87.3 l
-617.509 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-637.21 87.3 m
-641.151 87.3 l
-641.151 87.3158 l
-637.21 87.3158 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-656.912 87.3 m
-660.852 87.3 l
-660.852 87.3 l
-656.912 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-676.613 87.3 m
-680.553 87.3 l
-680.553 547.925 l
-676.613 547.925 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-696.314 87.3 m
-700.255 87.3 l
-700.255 510.684 l
-696.314 510.684 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-716.016 87.3 m
-719.956 87.3 l
-719.956 284.712 l
-716.016 284.712 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-735.717 87.3 m
-739.657 87.3 l
-739.657 216.47 l
-735.717 216.47 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-755.418 87.3 m
-759.359 87.3 l
-759.359 87.3042 l
-755.418 87.3042 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-775.12 87.3 m
-779.06 87.3 l
-779.06 87.3 l
-775.12 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-794.821 87.3 m
-798.761 87.3 l
-798.761 87.3058 l
-794.821 87.3058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-814.522 87.3 m
-818.463 87.3 l
-818.463 87.3 l
-814.522 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-834.224 87.3 m
-838.164 87.3 l
-838.164 87.3 l
-834.224 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-853.925 87.3 m
-857.865 87.3 l
-857.865 87.3 l
-853.925 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-873.626 87.3 m
-877.567 87.3 l
-877.567 87.3026 l
-873.626 87.3026 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-893.328 87.3 m
-897.268 87.3 l
-897.268 87.3153 l
-893.328 87.3153 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-913.029 87.3 m
-916.969 87.3 l
-916.969 87.3 l
-913.029 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-932.73 87.3 m
-936.67 87.3 l
-936.67 87.329 l
-932.73 87.329 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-952.432 87.3 m
-956.372 87.3 l
-956.372 87.3 l
-952.432 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-972.133 87.3 m
-976.073 87.3 l
-976.073 87.5629 l
-972.133 87.5629 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-991.834 87.3 m
-995.774 87.3 l
-995.774 87.3005 l
-991.834 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1011.54 87.3 m
-1015.48 87.3 l
-1015.48 87.3121 l
-1011.54 87.3121 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1031.24 87.3 m
-1035.18 87.3 l
-1035.18 87.3132 l
-1031.24 87.3132 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1050.94 87.3 m
-1054.88 87.3 l
-1054.88 88.9185 l
-1050.94 88.9185 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1070.64 87.3 m
-1074.58 87.3 l
-1074.58 87.3011 l
-1070.64 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1090.34 87.3 m
-1094.28 87.3 l
-1094.28 638.082 l
-1090.34 638.082 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1110.04 87.3 m
-1113.98 87.3 l
-1113.98 299.434 l
-1110.04 299.434 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1129.74 87.3 m
-1133.68 87.3 l
-1133.68 87.3 l
-1129.74 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1149.44 87.3 m
-1153.38 87.3 l
-1153.38 363.046 l
-1149.44 363.046 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1169.15 87.3 m
-1173.09 87.3 l
-1173.09 780.45 l
-1169.15 780.45 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1188.85 87.3 m
-1192.79 87.3 l
-1192.79 87.3 l
-1188.85 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1208.55 87.3 m
-1212.49 87.3 l
-1212.49 87.3021 l
-1208.55 87.3021 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1228.25 87.3 m
-1232.19 87.3 l
-1232.19 87.3005 l
-1228.25 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1247.95 87.3 m
-1251.89 87.3 l
-1251.89 87.3 l
-1247.95 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1267.65 87.3 m
-1271.59 87.3 l
-1271.59 101.622 l
-1267.65 101.622 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1287.35 87.3 m
-1291.29 87.3 l
-1291.29 87.3 l
-1287.35 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-189.006 87.3 m
-192.946 87.3 l
-192.946 87.3343 l
-189.006 87.3343 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-208.707 87.3 m
-212.647 87.3 l
-212.647 87.3005 l
-208.707 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-228.408 87.3 m
-232.348 87.3 l
-232.348 87.3 l
-228.408 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-248.109 87.3 m
-252.05 87.3 l
-252.05 87.5676 l
-248.109 87.5676 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-267.811 87.3 m
-271.751 87.3 l
-271.751 98.2798 l
-267.811 98.2798 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-287.512 87.3 m
-291.452 87.3 l
-291.452 87.3016 l
-287.512 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-307.213 87.3 m
-311.154 87.3 l
-311.154 87.3 l
-307.213 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-326.915 87.3 m
-330.855 87.3 l
-330.855 87.3137 l
-326.915 87.3137 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-346.616 87.3 m
-350.556 87.3 l
-350.556 87.4631 l
-346.616 87.4631 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-366.317 87.3 m
-370.258 87.3 l
-370.258 93.307 l
-366.317 93.307 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-386.019 87.3 m
-389.959 87.3 l
-389.959 93.9917 l
-386.019 93.9917 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-405.72 87.3 m
-409.66 87.3 l
-409.66 87.3 l
-405.72 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-425.421 87.3 m
-429.362 87.3 l
-429.362 87.3 l
-425.421 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-445.123 87.3 m
-449.063 87.3 l
-449.063 87.3 l
-445.123 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-464.824 87.3 m
-468.764 87.3 l
-468.764 87.3 l
-464.824 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-484.525 87.3 m
-488.466 87.3 l
-488.466 90.9071 l
-484.525 90.9071 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-504.227 87.3 m
-508.167 87.3 l
-508.167 87.4642 l
-504.227 87.4642 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-523.928 87.3 m
-527.868 87.3 l
-527.868 87.3005 l
-523.928 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-543.629 87.3 m
-547.569 87.3 l
-547.569 126.886 l
-543.629 126.886 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-563.331 87.3 m
-567.271 87.3 l
-567.271 107.825 l
-563.331 107.825 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-583.032 87.3 m
-586.972 87.3 l
-586.972 89.344 l
-583.032 89.344 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-602.733 87.3 m
-606.673 87.3 l
-606.673 91.548 l
-602.733 91.548 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-622.434 87.3 m
-626.375 87.3 l
-626.375 87.3 l
-622.434 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-642.136 87.3 m
-646.076 87.3 l
-646.076 87.3211 l
-642.136 87.3211 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-661.837 87.3 m
-665.777 87.3 l
-665.777 87.3 l
-661.837 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-681.538 87.3 m
-685.479 87.3 l
-685.479 635.875 l
-681.538 635.875 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-701.24 87.3 m
-705.18 87.3 l
-705.18 377.8 l
-701.24 377.8 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-720.941 87.3 m
-724.881 87.3 l
-724.881 252.374 l
-720.941 252.374 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-740.642 87.3 m
-744.583 87.3 l
-744.583 218.488 l
-740.642 218.488 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-760.344 87.3 m
-764.284 87.3 l
-764.284 87.3042 l
-760.344 87.3042 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-780.045 87.3 m
-783.985 87.3 l
-783.985 87.3 l
-780.045 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-799.746 87.3 m
-803.687 87.3 l
-803.687 87.3063 l
-799.746 87.3063 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-819.448 87.3 m
-823.388 87.3 l
-823.388 87.3 l
-819.448 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-839.149 87.3 m
-843.089 87.3 l
-843.089 87.3 l
-839.149 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-858.85 87.3 m
-862.791 87.3 l
-862.791 87.3275 l
-858.85 87.3275 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-878.552 87.3 m
-882.492 87.3 l
-882.492 87.9103 l
-878.552 87.9103 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-898.253 87.3 m
-902.193 87.3 l
-902.193 87.3032 l
-898.253 87.3032 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-917.954 87.3 m
-921.894 87.3 l
-921.894 87.3 l
-917.954 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-937.656 87.3 m
-941.596 87.3 l
-941.596 87.3428 l
-937.656 87.3428 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-957.357 87.3 m
-961.297 87.3 l
-961.297 87.3 l
-957.357 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-977.058 87.3 m
-980.998 87.3 l
-980.998 87.6342 l
-977.058 87.6342 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-996.759 87.3 m
-1000.7 87.3 l
-1000.7 87.3005 l
-996.759 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1016.46 87.3 m
-1020.4 87.3 l
-1020.4 88.3912 l
-1016.46 88.3912 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1036.16 87.3 m
-1040.1 87.3 l
-1040.1 87.7345 l
-1036.16 87.7345 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1055.86 87.3 m
-1059.8 87.3 l
-1059.8 87.8152 l
-1055.86 87.8152 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1075.56 87.3 m
-1079.51 87.3 l
-1079.51 87.3005 l
-1075.56 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1095.27 87.3 m
-1099.21 87.3 l
-1099.21 635.199 l
-1095.27 635.199 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1114.97 87.3 m
-1118.91 87.3 l
-1118.91 336.627 l
-1114.97 336.627 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1134.67 87.3 m
-1138.61 87.3 l
-1138.61 87.3 l
-1134.67 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1154.37 87.3 m
-1158.31 87.3 l
-1158.31 335.016 l
-1154.37 335.016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1174.07 87.3 m
-1178.01 87.3 l
-1178.01 785.118 l
-1174.07 785.118 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1193.77 87.3 m
-1197.71 87.3 l
-1197.71 87.3 l
-1193.77 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1213.47 87.3 m
-1217.41 87.3 l
-1217.41 88.0037 l
-1213.47 88.0037 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1233.18 87.3 m
-1237.12 87.3 l
-1237.12 87.3005 l
-1233.18 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1252.88 87.3 m
-1256.82 87.3 l
-1256.82 87.3 l
-1252.88 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1272.58 87.3 m
-1276.52 87.3 l
-1276.52 93.2473 l
-1272.58 93.2473 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1292.28 87.3 m
-1296.22 87.3 l
-1296.22 87.3 l
-1292.28 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-1123 698.4 181.1 87.3 clipbox
-193.931 87.3 m
-197.871 87.3 l
-197.871 87.3412 l
-193.931 87.3412 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-213.632 87.3 m
-217.572 87.3 l
-217.572 87.3016 l
-213.632 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-233.333 87.3 m
-237.274 87.3 l
-237.274 87.3 l
-233.333 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-253.035 87.3 m
-256.975 87.3 l
-256.975 87.3058 l
-253.035 87.3058 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-272.736 87.3 m
-276.676 87.3 l
-276.676 90.0277 l
-272.736 90.0277 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-292.437 87.3 m
-296.378 87.3 l
-296.378 87.3011 l
-292.437 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-312.139 87.3 m
-316.079 87.3 l
-316.079 87.3 l
-312.139 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-331.84 87.3 m
-335.78 87.3 l
-335.78 87.3111 l
-331.84 87.3111 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-351.541 87.3 m
-355.482 87.3 l
-355.482 87.4246 l
-351.541 87.4246 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-371.243 87.3 m
-375.183 87.3 l
-375.183 92.2438 l
-371.243 92.2438 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-390.944 87.3 m
-394.884 87.3 l
-394.884 88.4133 l
-390.944 88.4133 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-410.645 87.3 m
-414.586 87.3 l
-414.586 87.3 l
-410.645 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-430.347 87.3 m
-434.287 87.3 l
-434.287 87.3 l
-430.347 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-450.048 87.3 m
-453.988 87.3 l
-453.988 87.3 l
-450.048 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-469.749 87.3 m
-473.69 87.3 l
-473.69 87.3 l
-469.749 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-489.451 87.3 m
-493.391 87.3 l
-493.391 92.3726 l
-489.451 92.3726 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-509.152 87.3 m
-513.092 87.3 l
-513.092 87.5075 l
-509.152 87.5075 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-528.853 87.3 m
-532.793 87.3 l
-532.793 87.3005 l
-528.853 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-548.555 87.3 m
-552.495 87.3 l
-552.495 127.284 l
-548.555 127.284 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-568.256 87.3 m
-572.196 87.3 l
-572.196 109.42 l
-568.256 109.42 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-587.957 87.3 m
-591.897 87.3 l
-591.897 92.1134 l
-587.957 92.1134 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-607.658 87.3 m
-611.599 87.3 l
-611.599 87.7102 l
-607.658 87.7102 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-627.36 87.3 m
-631.3 87.3 l
-631.3 87.3 l
-627.36 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-647.061 87.3 m
-651.001 87.3 l
-651.001 87.3206 l
-647.061 87.3206 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-666.762 87.3 m
-670.703 87.3 l
-670.703 87.3 l
-666.762 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-686.464 87.3 m
-690.404 87.3 l
-690.404 586.204 l
-686.464 586.204 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-706.165 87.3 m
-710.105 87.3 l
-710.105 400.311 l
-706.165 400.311 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-725.866 87.3 m
-729.807 87.3 l
-729.807 312.811 l
-725.866 312.811 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-745.568 87.3 m
-749.508 87.3 l
-749.508 217.166 l
-745.568 217.166 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-765.269 87.3 m
-769.209 87.3 l
-769.209 87.3048 l
-765.269 87.3048 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-784.97 87.3 m
-788.911 87.3 l
-788.911 87.3 l
-784.97 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-804.672 87.3 m
-808.612 87.3 l
-808.612 87.3074 l
-804.672 87.3074 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-824.373 87.3 m
-828.313 87.3 l
-828.313 87.3 l
-824.373 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-844.074 87.3 m
-848.015 87.3 l
-848.015 87.3 l
-844.074 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-863.776 87.3 m
-867.716 87.3 l
-867.716 87.3016 l
-863.776 87.3016 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-883.477 87.3 m
-887.417 87.3 l
-887.417 87.3348 l
-883.477 87.3348 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-903.178 87.3 m
-907.118 87.3 l
-907.118 87.3084 l
-903.178 87.3084 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-922.88 87.3 m
-926.82 87.3 l
-926.82 87.3 l
-922.88 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-942.581 87.3 m
-946.521 87.3 l
-946.521 87.3375 l
-942.581 87.3375 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-962.282 87.3 m
-966.222 87.3 l
-966.222 87.3 l
-962.282 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-981.983 87.3 m
-985.924 87.3 l
-985.924 87.669 l
-981.983 87.669 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1001.68 87.3 m
-1005.63 87.3 l
-1005.63 87.3011 l
-1001.68 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1021.39 87.3 m
-1025.33 87.3 l
-1025.33 87.4642 l
-1021.39 87.4642 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1041.09 87.3 m
-1045.03 87.3 l
-1045.03 87.376 l
-1041.09 87.376 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1060.79 87.3 m
-1064.73 87.3 l
-1064.73 88.4619 l
-1060.79 88.4619 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1080.49 87.3 m
-1084.43 87.3 l
-1084.43 87.3011 l
-1080.49 87.3011 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1100.19 87.3 m
-1104.13 87.3 l
-1104.13 645.418 l
-1100.19 645.418 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1119.89 87.3 m
-1123.83 87.3 l
-1123.83 348.468 l
-1119.89 348.468 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1139.59 87.3 m
-1143.53 87.3 l
-1143.53 87.3 l
-1139.59 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1159.3 87.3 m
-1163.24 87.3 l
-1163.24 330.839 l
-1159.3 330.839 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1179 87.3 m
-1182.94 87.3 l
-1182.94 766.593 l
-1179 766.593 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1198.7 87.3 m
-1202.64 87.3 l
-1202.64 87.3 l
-1198.7 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1218.4 87.3 m
-1222.34 87.3 l
-1222.34 87.348 l
-1218.4 87.348 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1238.1 87.3 m
-1242.04 87.3 l
-1242.04 87.3005 l
-1238.1 87.3005 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1257.8 87.3 m
-1261.74 87.3 l
-1261.74 87.3 l
-1257.8 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1277.5 87.3 m
-1281.44 87.3 l
-1281.44 98.3696 l
-1277.5 98.3696 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-gsave
-1123 698.4 181.1 87.3 clipbox
-1297.2 87.3 m
-1301.14 87.3 l
-1301.14 87.3 l
-1297.2 87.3 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.500 setlinewidth
-0 setlinecap
-[1 3] 0 setdash
-0.000 setgray
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-/DejaVuSans findfont
-14.000 scalefont
-setfont
-gsave
-180.353978 25.203909 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /N glyphshow
-28.936523 2.906250 m /b glyphshow
-37.823242 2.906250 m /O glyphshow
-48.842773 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-200.826 87.3 m
-200.826 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-200.826 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-200.826 785.7 o
-grestore
-gsave
-200.531050 29.720928 translate
-75.000000 rotate
-0.000000 2.906250 m /A glyphshow
-9.577148 2.906250 m /g glyphshow
-18.463867 2.906250 m /T glyphshow
-24.640625 2.906250 m /a glyphshow
-33.219727 2.906250 m /O glyphshow
-44.239258 2.906250 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-220.528 87.3 m
-220.528 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-220.528 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-220.528 785.7 o
-grestore
-gsave
-219.154765 31.155751 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /H glyphshow
-28.710938 0.203125 m /f glyphshow
-33.639648 0.203125 m /O glyphshow
-44.659180 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-240.229 87.3 m
-240.229 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-240.229 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-240.229 785.7 o
-grestore
-gsave
-239.203869 33.751677 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /i glyphshow
-30.959961 0.203125 m /O glyphshow
-41.979492 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-259.93 87.3 m
-259.93 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-259.93 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-259.93 785.7 o
-grestore
-gsave
-258.139418 29.001845 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /S glyphshow
-27.070312 0.203125 m /n glyphshow
-35.943359 0.203125 m /O glyphshow
-46.962891 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-279.632 87.3 m
-279.632 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-279.632 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-279.632 785.7 o
-grestore
-gsave
-278.699513 34.445936 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /T glyphshow
-26.360352 0.203125 m /i glyphshow
-30.250000 0.203125 m /O glyphshow
-41.269531 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-299.333 87.3 m
-299.333 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.333 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-299.333 785.7 o
-grestore
-gsave
-297.855464 31.341196 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /a glyphshow
-18.183594 0.203125 m /Z glyphshow
-27.774414 0.203125 m /r glyphshow
-33.530273 0.203125 m /O glyphshow
-44.549805 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-319.034 87.3 m
-319.034 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-319.034 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-319.034 785.7 o
-grestore
-gsave
-318.526770 37.615380 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /A glyphshow
-23.071289 0.203125 m /l glyphshow
-26.960938 0.203125 m /O glyphshow
-37.980469 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-338.736 87.3 m
-338.736 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-338.736 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-338.736 785.7 o
-grestore
-gsave
-337.457695 31.865103 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /G glyphshow
-24.342773 0.203125 m /a glyphshow
-32.921875 0.203125 m /O glyphshow
-43.941406 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-358.437 87.3 m
-358.437 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-358.437 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-358.437 785.7 o
-grestore
-gsave
-357.524997 34.596862 translate
-75.000000 rotate
-0.000000 0.203125 m /B glyphshow
-9.604492 0.203125 m /i glyphshow
-13.494141 0.203125 m /S glyphshow
-22.380859 0.203125 m /c glyphshow
-30.078125 0.203125 m /O glyphshow
-41.097656 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-378.138 87.3 m
-378.138 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-378.138 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-378.138 785.7 o
-grestore
-gsave
-376.029855 26.632308 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /G glyphshow
-29.203125 0.203125 m /e glyphshow
-37.816406 0.203125 m /O glyphshow
-48.835938 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-397.839 87.3 m
-397.839 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-397.839 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-397.839 785.7 o
-grestore
-gsave
-396.367528 30.416214 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /H glyphshow
-28.881836 0.203125 m /f glyphshow
-33.810547 0.203125 m /O glyphshow
-44.830078 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-417.541 87.3 m
-417.541 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-417.541 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-417.541 785.7 o
-grestore
-gsave
-416.416632 33.012140 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /S glyphshow
-27.241211 0.203125 m /i glyphshow
-31.130859 0.203125 m /O glyphshow
-42.150391 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-437.242 87.3 m
-437.242 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-437.242 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-437.242 785.7 o
-grestore
-gsave
-436.210961 33.706399 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /T glyphshow
-26.531250 0.203125 m /i glyphshow
-30.420898 0.203125 m /O glyphshow
-41.440430 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-456.943 87.3 m
-456.943 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-456.943 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-456.943 785.7 o
-grestore
-gsave
-455.366911 30.601659 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /a glyphshow
-18.354492 0.203125 m /Z glyphshow
-27.945312 0.203125 m /r glyphshow
-33.701172 0.203125 m /O glyphshow
-44.720703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-476.645 87.3 m
-476.645 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-476.645 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-476.645 785.7 o
-grestore
-gsave
-475.480139 32.710288 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /d glyphshow
-18.662109 0.203125 m /S glyphshow
-27.548828 0.203125 m /i glyphshow
-31.438477 0.203125 m /O glyphshow
-42.458008 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-496.346 87.3 m
-496.346 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-496.346 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-496.346 785.7 o
-grestore
-gsave
-494.536429 27.895751 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /N glyphshow
-27.541992 0.203125 m /b glyphshow
-36.428711 0.203125 m /O glyphshow
-47.448242 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-516.047 87.3 m
-516.047 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-516.047 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-516.047 785.7 o
-grestore
-gsave
-514.713501 32.412770 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /s glyphshow
-17.069336 0.203125 m /T glyphshow
-23.246094 0.203125 m /a glyphshow
-31.825195 0.203125 m /O glyphshow
-42.844727 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-535.749 87.3 m
-535.749 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-535.749 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-535.749 785.7 o
-grestore
-gsave
-533.734836 26.371400 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /N glyphshow
-29.121094 0.203125 m /b glyphshow
-38.007812 0.203125 m /O glyphshow
-49.027344 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-555.45 87.3 m
-555.45 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-555.45 785.7 o
-grestore
-gsave
-553.911908 30.888419 translate
-75.000000 rotate
-0.000000 0.203125 m /C glyphshow
-9.775391 0.203125 m /u glyphshow
-18.648438 0.203125 m /T glyphshow
-24.825195 0.203125 m /a glyphshow
-33.404297 0.203125 m /O glyphshow
-44.423828 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-575.151 87.3 m
-575.151 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-575.151 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-575.151 785.7 o
-grestore
-gsave
-573.514145 30.148882 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /a glyphshow
-19.427734 0.203125 m /T glyphshow
-25.604492 0.203125 m /a glyphshow
-34.183594 0.203125 m /O glyphshow
-45.203125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-594.853 87.3 m
-594.853 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.853 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-594.853 785.7 o
-grestore
-gsave
-592.602787 25.575827 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /G glyphshow
-30.310547 0.203125 m /e glyphshow
-38.923828 0.203125 m /O glyphshow
-49.943359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-614.554 87.3 m
-614.554 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-614.554 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-614.554 785.7 o
-grestore
-gsave
-613.288248 31.955658 translate
-75.000000 rotate
-0.000000 0.203125 m /G glyphshow
-10.848633 0.203125 m /e glyphshow
-19.461914 0.203125 m /S glyphshow
-28.348633 0.203125 m /i glyphshow
-32.238281 0.203125 m /O glyphshow
-43.257812 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-634.255 87.3 m
-634.255 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-634.255 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-634.255 785.7 o
-grestore
-gsave
-633.543598 36.091028 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-9.180664 0.203125 m /N glyphshow
-19.653320 0.203125 m /b glyphshow
-28.540039 0.203125 m /O glyphshow
-39.559570 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-653.957 87.3 m
-653.957 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-653.957 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-653.957 785.7 o
-grestore
-gsave
-653.866256 41.694714 translate
-75.000000 rotate
-0.000000 0.203125 m /K glyphshow
-8.055664 0.203125 m /T glyphshow
-14.232422 0.203125 m /a glyphshow
-22.811523 0.203125 m /O glyphshow
-33.831055 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-673.658 87.3 m
-673.658 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-673.658 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-673.658 785.7 o
-grestore
-gsave
-672.026790 30.194159 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /C glyphshow
-26.154297 0.203125 m /o glyphshow
-34.719727 0.203125 m /O glyphshow
-45.739258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-693.359 87.3 m
-693.359 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-693.359 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-693.359 785.7 o
-grestore
-gsave
-692.043541 32.548604 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /F glyphshow
-23.681641 0.203125 m /e glyphshow
-32.294922 0.203125 m /O glyphshow
-43.314453 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-713.061 87.3 m
-713.061 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-713.061 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-713.061 785.7 o
-grestore
-gsave
-711.091743 27.673697 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /M glyphshow
-28.458008 0.203125 m /n glyphshow
-37.331055 0.203125 m /O glyphshow
-48.350586 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-732.762 87.3 m
-732.762 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-732.762 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-732.762 785.7 o
-grestore
-gsave
-731.767094 33.978065 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /a glyphshow
-16.378906 0.203125 m /N glyphshow
-26.851562 0.203125 m /i glyphshow
-30.741211 0.203125 m /O glyphshow
-41.760742 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-752.463 87.3 m
-752.463 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-752.463 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-752.463 785.7 o
-grestore
-gsave
-751.427969 33.676214 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /N glyphshow
-22.162109 0.203125 m /b glyphshow
-31.048828 0.203125 m /O glyphshow
-42.068359 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-772.164 87.3 m
-772.164 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-772.164 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-772.164 785.7 o
-grestore
-gsave
-771.725782 38.128528 translate
-75.000000 rotate
-0.000000 0.203125 m /L glyphshow
-7.799805 0.203125 m /i glyphshow
-11.689453 0.203125 m /T glyphshow
-17.866211 0.203125 m /a glyphshow
-26.445312 0.203125 m /O glyphshow
-37.464844 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-791.866 87.3 m
-791.866 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-791.866 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-791.866 785.7 o
-grestore
-gsave
-789.878228 26.567603 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /N glyphshow
-29.524414 0.203125 m /b glyphshow
-38.411133 0.203125 m /O glyphshow
-49.430664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-811.567 87.3 m
-811.567 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-811.567 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-811.567 785.7 o
-grestore
-gsave
-810.055300 31.084622 translate
-75.000000 rotate
-0.000000 0.203125 m /N glyphshow
-10.472656 0.203125 m /a glyphshow
-19.051758 0.203125 m /T glyphshow
-25.228516 0.203125 m /a glyphshow
-33.807617 0.203125 m /O glyphshow
-44.827148 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-831.268 87.3 m
-831.268 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-831.268 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-831.268 785.7 o
-grestore
-gsave
-830.006766 31.985843 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /H glyphshow
-27.856445 0.203125 m /f glyphshow
-32.785156 0.203125 m /O glyphshow
-43.804688 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-850.97 87.3 m
-850.97 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-850.97 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-850.97 785.7 o
-grestore
-gsave
-850.055870 34.581769 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /i glyphshow
-30.105469 0.203125 m /O glyphshow
-41.125000 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-870.671 87.3 m
-870.671 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-870.671 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-870.671 785.7 o
-grestore
-gsave
-869.112160 29.767233 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /S glyphshow
-26.215820 0.203125 m /n glyphshow
-35.088867 0.203125 m /O glyphshow
-46.108398 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-890.372 87.3 m
-890.372 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-890.372 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-890.372 785.7 o
-grestore
-gsave
-889.551514 35.276028 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /T glyphshow
-25.505859 0.203125 m /i glyphshow
-29.395508 0.203125 m /O glyphshow
-40.415039 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-910.074 87.3 m
-910.074 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-910.074 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-910.074 785.7 o
-grestore
-gsave
-908.828205 32.106584 translate
-75.000000 rotate
-0.000000 0.203125 m /P glyphshow
-8.442383 0.203125 m /b glyphshow
-17.329102 0.203125 m /Z glyphshow
-26.919922 0.203125 m /r glyphshow
-32.675781 0.203125 m /O glyphshow
-43.695312 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-929.775 87.3 m
-929.775 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-929.775 785.7 o
-grestore
-gsave
-927.842033 26.975103 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /N glyphshow
-29.086914 0.203125 m /b glyphshow
-37.973633 0.203125 m /O glyphshow
-48.993164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-949.476 87.3 m
-949.476 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-949.476 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-949.476 785.7 o
-grestore
-gsave
-948.139846 31.427418 translate
-75.000000 rotate
-0.000000 0.203125 m /R glyphshow
-9.727539 0.203125 m /b glyphshow
-18.614258 0.203125 m /T glyphshow
-24.791016 0.203125 m /a glyphshow
-33.370117 0.203125 m /O glyphshow
-44.389648 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-969.178 87.3 m
-969.178 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-969.178 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-969.178 785.7 o
-grestore
-gsave
-968.057518 33.042325 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /b glyphshow
-17.773438 0.203125 m /A glyphshow
-27.350586 0.203125 m /l glyphshow
-31.240234 0.203125 m /O glyphshow
-42.259766 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-988.879 87.3 m
-988.879 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-988.879 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-988.879 785.7 o
-grestore
-gsave
-987.502037 31.125566 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /H glyphshow
-28.287109 0.203125 m /f glyphshow
-33.215820 0.203125 m /O glyphshow
-44.235352 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1008.58 87.3 m
-1008.58 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1008.58 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1008.58 785.7 o
-grestore
-gsave
-1007.551141 33.721491 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /i glyphshow
-30.536133 0.203125 m /O glyphshow
-41.555664 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1028.28 87.3 m
-1028.28 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1028.28 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1028.28 785.7 o
-grestore
-gsave
-1026.486690 28.971660 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /S glyphshow
-26.646484 0.203125 m /n glyphshow
-35.519531 0.203125 m /O glyphshow
-46.539062 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1047.98 87.3 m
-1047.98 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1047.98 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1047.98 785.7 o
-grestore
-gsave
-1047.046785 34.415751 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /T glyphshow
-25.936523 0.203125 m /i glyphshow
-29.826172 0.203125 m /O glyphshow
-40.845703 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1067.68 87.3 m
-1067.68 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1067.68 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1067.68 785.7 o
-grestore
-gsave
-1066.202735 31.311011 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /n glyphshow
-17.759766 0.203125 m /Z glyphshow
-27.350586 0.203125 m /r glyphshow
-33.106445 0.203125 m /O glyphshow
-44.125977 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1087.39 87.3 m
-1087.39 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1087.39 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1087.39 785.7 o
-grestore
-gsave
-1085.920227 31.431752 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /C glyphshow
-24.417969 0.203125 m /o glyphshow
-32.983398 0.203125 m /O glyphshow
-44.002930 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1107.09 87.3 m
-1107.09 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1107.09 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1107.09 785.7 o
-grestore
-gsave
-1105.936979 33.786196 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /F glyphshow
-21.945312 0.203125 m /e glyphshow
-30.558594 0.203125 m /O glyphshow
-41.578125 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1126.79 87.3 m
-1126.79 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1126.79 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1126.79 785.7 o
-grestore
-gsave
-1125.815652 34.144084 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /H glyphshow
-25.169922 0.203125 m /f glyphshow
-30.098633 0.203125 m /O glyphshow
-41.118164 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1146.49 87.3 m
-1146.49 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1146.49 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1146.49 785.7 o
-grestore
-gsave
-1144.686497 28.911289 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /M glyphshow
-26.721680 0.203125 m /n glyphshow
-35.594727 0.203125 m /O glyphshow
-46.614258 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1166.19 87.3 m
-1166.19 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1166.19 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1166.19 785.7 o
-grestore
-gsave
-1165.361847 35.215658 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /N glyphshow
-25.115234 0.203125 m /i glyphshow
-29.004883 0.203125 m /O glyphshow
-40.024414 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1185.89 87.3 m
-1185.89 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1185.89 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1185.89 785.7 o
-grestore
-gsave
-1185.267387 36.740010 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /i glyphshow
-27.418945 0.203125 m /O glyphshow
-38.438477 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1205.59 87.3 m
-1205.59 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1205.59 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1205.59 785.7 o
-grestore
-gsave
-1204.202937 31.990178 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /S glyphshow
-23.529297 0.203125 m /n glyphshow
-32.402344 0.203125 m /O glyphshow
-43.421875 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1225.29 87.3 m
-1225.29 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1225.29 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1225.29 785.7 o
-grestore
-gsave
-1224.763032 37.434269 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /T glyphshow
-22.819336 0.203125 m /i glyphshow
-26.708984 0.203125 m /O glyphshow
-37.728516 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1245 87.3 m
-1245 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1245 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1245 785.7 o
-grestore
-gsave
-1243.918982 34.329529 translate
-75.000000 rotate
-0.000000 0.203125 m /S glyphshow
-8.886719 0.203125 m /r glyphshow
-14.642578 0.203125 m /Z glyphshow
-24.233398 0.203125 m /r glyphshow
-29.989258 0.203125 m /O glyphshow
-41.008789 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1264.7 87.3 m
-1264.7 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1264.7 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1264.7 785.7 o
-grestore
-gsave
-1263.977615 36.030658 translate
-75.000000 rotate
-0.000000 0.203125 m /T glyphshow
-8.551758 0.203125 m /l glyphshow
-12.441406 0.203125 m /T glyphshow
-18.618164 0.203125 m /a glyphshow
-27.197266 0.203125 m /O glyphshow
-38.216797 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1284.4 87.3 m
-1284.4 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1284.4 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1284.4 785.7 o
-grestore
-gsave
-1284.495829 42.128065 translate
-75.000000 rotate
-0.000000 0.203125 m /Y glyphshow
-7.426758 0.203125 m /A glyphshow
-17.003906 0.203125 m /l glyphshow
-20.893555 0.203125 m /O glyphshow
-31.913086 0.203125 m /three glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-0 -4 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 87.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 87.3 o
-grestore
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-139.421875 80.495312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 164.9 m
-1304.1 164.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 164.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 164.9 o
-grestore
-gsave
-140.031250 158.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 242.5 m
-1304.1 242.5 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 242.5 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 242.5 o
-grestore
-gsave
-139.250000 235.695312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 320.1 m
-1304.1 320.1 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 320.1 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 320.1 o
-grestore
-gsave
-139.375000 313.295313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 397.7 m
-1304.1 397.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 397.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 397.7 o
-grestore
-gsave
-139.468750 390.895313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /zero glyphshow
-28.625977 0.250000 m /eight glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 475.3 m
-1304.1 475.3 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 475.3 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 475.3 o
-grestore
-gsave
-139.421875 468.495313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /zero glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 552.9 m
-1304.1 552.9 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 552.9 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 552.9 o
-grestore
-gsave
-140.031250 546.095312 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /two glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 630.5 m
-1304.1 630.5 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 630.5 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 630.5 o
-grestore
-gsave
-139.250000 623.695313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /four glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 708.1 m
-1304.1 708.1 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 708.1 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 708.1 o
-grestore
-gsave
-139.375000 701.295313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /six glyphshow
-grestore
-[1 3] 0 setdash
-gsave
-1123 698.4 181.1 87.3 clipbox
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-[] 0 setdash
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
-4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-181.125 785.7 o
-grestore
-gsave
-/o {
-gsave
-newpath
-translate
-0.5 setlinewidth
-1 setlinejoin
-0 setlinecap
-0 0 m
--4 0 l
-gsave
-0.000 setgray
-fill
-grestore
-stroke
-grestore
-} bind def
-1304.1 785.7 o
-grestore
-gsave
-139.468750 778.895313 translate
-0.000000 rotate
-0.000000 0.250000 m /zero glyphshow
-11.452148 0.250000 m /period glyphshow
-17.173828 0.250000 m /one glyphshow
-28.625977 0.250000 m /eight glyphshow
-grestore
-/DejaVuSans findfont
-20.000 scalefont
-setfont
-gsave
-134.250000 320.671875 translate
-90.000000 rotate
-0.000000 4.718750 m /bar glyphshow
-6.738281 4.718750 m /S glyphshow
-19.433594 4.718750 m /m glyphshow
-38.916016 4.718750 m /e glyphshow
-51.220703 4.718750 m /a glyphshow
-63.476562 4.718750 m /r glyphshow
-71.699219 4.718750 m /i glyphshow
-77.255859 4.718750 m /n glyphshow
-89.931641 4.718750 m /g glyphshow
-102.626953 4.718750 m /space glyphshow
-108.984375 4.718750 m /e glyphshow
-121.289062 4.718750 m /n glyphshow
-133.964844 4.718750 m /e glyphshow
-146.269531 4.718750 m /r glyphshow
-154.117188 4.718750 m /g glyphshow
-166.812500 4.718750 m /y glyphshow
-178.648438 4.718750 m /bar glyphshow
-185.386719 4.718750 m /space glyphshow
-191.744141 4.718750 m /bracketleft glyphshow
-199.546875 4.718750 m /e glyphshow
-211.851562 4.718750 m /V glyphshow
-225.533203 4.718750 m /bracketright glyphshow
-grestore
-1.000 setlinewidth
-2 setlinecap
-gsave
-181.125 785.7 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-1304.1 87.3 m
-1304.1 785.7 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-1304.1 87.3 l
-stroke
-grestore
-gsave
-181.125 87.3 m
-181.125 785.7 l
-stroke
-grestore
-gsave
-190.125 690.534 m
-392.613 690.534 l
-392.613 776.7 l
-190.125 776.7 l
-190.125 690.534 l
-cl
-gsave
-1.000 setgray
-fill
-grestore
-stroke
-grestore
-0.000 0.000 1.000 setrgbcolor
-gsave
-197.325 755.828 m
-233.325 755.828 l
-233.325 768.428 l
-197.325 768.428 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-/DejaVuSans findfont
-18.000 scalefont
-setfont
-gsave
-247.725000 751.578125 translate
-0.000000 rotate
-0.000000 4.250000 m /l glyphshow
-5.000977 4.250000 m /d glyphshow
-16.426758 4.250000 m /a glyphshow
-27.457031 4.250000 m /underscore glyphshow
-36.457031 4.250000 m /g glyphshow
-47.882812 4.250000 m /b glyphshow
-59.308594 4.250000 m /r glyphshow
-66.708984 4.250000 m /v glyphshow
-77.361328 4.250000 m /underscore glyphshow
-86.361328 4.250000 m /one glyphshow
-97.813477 4.250000 m /two glyphshow
-grestore
-1.000 0.000 0.000 setrgbcolor
-gsave
-197.325 728.906 m
-233.325 728.906 l
-233.325 741.506 l
-197.325 741.506 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-247.725000 724.656250 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /underscore glyphshow
-42.925781 4.250000 m /g glyphshow
-54.351562 4.250000 m /b glyphshow
-65.777344 4.250000 m /r glyphshow
-73.177734 4.250000 m /v glyphshow
-83.830078 4.250000 m /underscore glyphshow
-92.830078 4.250000 m /one glyphshow
-104.282227 4.250000 m /two glyphshow
-grestore
-0.000 0.500 0.000 setrgbcolor
-gsave
-197.325 701.984 m
-233.325 701.984 l
-233.325 714.584 l
-197.325 714.584 l
-cl
-gsave
-fill
-grestore
-stroke
-grestore
-0.000 setgray
-gsave
-247.725000 697.734375 translate
-0.000000 rotate
-0.000000 4.250000 m /p glyphshow
-11.425781 4.250000 m /b glyphshow
-22.851562 4.250000 m /e glyphshow
-33.925781 4.250000 m /s glyphshow
-43.303711 4.250000 m /o glyphshow
-54.316406 4.250000 m /l glyphshow
-59.317383 4.250000 m /underscore glyphshow
-68.317383 4.250000 m /g glyphshow
-79.743164 4.250000 m /b glyphshow
-91.168945 4.250000 m /r glyphshow
-98.569336 4.250000 m /v glyphshow
-109.221680 4.250000 m /underscore glyphshow
-118.221680 4.250000 m /one glyphshow
-129.673828 4.250000 m /two glyphshow
-grestore
-
-end
-showpage
diff --git a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png b/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png
deleted file mode 100644
index d7c1f9b2..00000000
Binary files a/docs/assets/2018_PRACE_MaX/smearing_energy_vs_perovskites_allpseudo_Gaussian_0p02.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/workfunctions.pdf b/docs/assets/2018_PRACE_MaX/workfunctions.pdf
deleted file mode 100644
index a0b9090d..00000000
Binary files a/docs/assets/2018_PRACE_MaX/workfunctions.pdf and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/workfunctions.png b/docs/assets/2018_PRACE_MaX/workfunctions.png
deleted file mode 100644
index 69866c04..00000000
Binary files a/docs/assets/2018_PRACE_MaX/workfunctions.png and /dev/null differ
diff --git a/docs/assets/2018_PRACE_MaX/workfunctions.svg b/docs/assets/2018_PRACE_MaX/workfunctions.svg
deleted file mode 100644
index fc7ad6a1..00000000
--- a/docs/assets/2018_PRACE_MaX/workfunctions.svg
+++ /dev/null
@@ -1,4389 +0,0 @@
-
-
diff --git a/docs/assets/2020_Oxford/example-gaas-wannier.aiida b/docs/assets/2020_Oxford/example-gaas-wannier.aiida
deleted file mode 100644
index f6714e4f..00000000
Binary files a/docs/assets/2020_Oxford/example-gaas-wannier.aiida and /dev/null differ
diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss
deleted file mode 100644
index 5234200a..00000000
--- a/docs/assets/css/style.scss
+++ /dev/null
@@ -1,37 +0,0 @@
----
----
-
-@import "{{ site.theme }}";
-
-body{counter-reset: section}
-
-// Based on https://stackoverflow.com/a/535390/1069467
-// Rewrite only in main_content_wrap div
-//#main_content_wrap {
-#disabled {
-
- h2{counter-reset: sub-section}
- h3{counter-reset: composite}
- h4{counter-reset: detail}
-
- h2:before{
- counter-increment: section;
- content: counter(section) " ";
- }
- h3:before{
- counter-increment: sub-section;
- content: counter(section) "." counter(sub-section) " ";
- }
- h4:before{
- counter-increment: composite;
- content: counter(section) "." counter(sub-section) "." counter(composite) " ";
- }
- h5:before{
- counter-increment: detail;
- content: counter(section) "." counter(sub-section) "." counter(composite) "." counter(detail) " ";
- }
-}
-
-div.language-python pre {
- background-color: #c3c3c3;
-}
diff --git a/docs/assets/images/MARVEL.png b/docs/assets/images/MARVEL.png
deleted file mode 100644
index d17a6eda..00000000
Binary files a/docs/assets/images/MARVEL.png and /dev/null differ
diff --git a/docs/assets/images/MaX.png b/docs/assets/images/MaX.png
deleted file mode 100644
index 44fdbfb3..00000000
Binary files a/docs/assets/images/MaX.png and /dev/null differ
diff --git a/docs/conf.py b/docs/conf.py
index 6506a8b7..1cf53d9a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -17,49 +17,79 @@
import os
import subprocess
+import pathlib
# -- General configuration -----------------------------------------------------
+# Load the prolog
+prolog_path = "prolog.inc"
+with pathlib.Path(prolog_path).open() as prologFile:
+ rst_prolog = prologFile.read()
+
# If your documentation needs a minimal Sphinx version, state it here.
-needs_sphinx = '2.0.0'
+needs_sphinx = "2.0.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 = [
- 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo',
- 'sphinx.ext.ifconfig', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode',
- 'IPython.sphinxext.ipython_console_highlighting',
- 'IPython.sphinxext.ipython_directive', 'myst_nb', 'sphinx.ext.extlinks',
- 'sphinx.ext.mathjax', 'sphinx_copybutton', 'sphinx_panels'
+ "sphinx.ext.autodoc",
+ "sphinx.ext.doctest",
+ "sphinx.ext.todo",
+ "sphinx.ext.ifconfig",
+ "sphinx.ext.intersphinx",
+ "sphinx.ext.viewcode",
+ "IPython.sphinxext.ipython_console_highlighting",
+ "IPython.sphinxext.ipython_directive",
+ "myst_nb",
+ "sphinx.ext.extlinks",
+ "sphinx.ext.mathjax",
+ "sphinx_copybutton",
+ "sphinx_panels",
+ "sphinx_tabs.tabs",
+]
+
+myst_enable_extensions = [
+ # "amsmath",
+ "colon_fence", # Allow ::: to define directives
+ # "deflist",
+ # "dollarmath",
+ # "html_admonition",
+ # "html_image",
+ # "linkify",
+ # "replacements",
+ # "smartquotes",
+ # "substitution",
+ # "tasklist",
]
+
ipython_mplbackend = ""
-copybutton_selector = 'div:not(.no-copy)>div.highlight pre'
-copybutton_prompt_text = '>>> |\\\\$ |In \\\\[\\\\d+\\\\]: |\\\\s+\\.\\.\\.: '
+copybutton_selector = "div:not(.no-copy)>div.highlight pre"
+copybutton_prompt_text = ">>> |\\\\$ |In \\\\[\\\\d+\\\\]: |\\\\s+\\.\\.\\.: "
copybutton_prompt_is_regexp = True
todo_include_todos = True
extlinks = {
- 'doi': ('https://doi.org/%s', 'doi:'),
+ "doi": ("https://doi.org/%s", "doi:"),
}
# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+templates_path = ["_templates"]
# The encoding of source files.
-#source_encoding = 'utf-8-sig'
+# source_encoding = 'utf-8-sig'
# The master toctree document.
-master_doc = 'index'
+master_doc = "index"
# General information about the project.
-project = u'AiiDA Tutorials'
+project = u"AiiDA Tutorials"
# pylint: disable=redefined-builtin
-copyright = u'\
+copyright = u"\
2019, ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (Theory and Simulation of Materials (THEOS) \
and National Centre for Computational Design and Discovery of Novel Materials (NCCR MARVEL)), Switzerland \
-and ROBERT BOSCH LLC, USA. All rights reserved'
+and ROBERT BOSCH LLC, USA. All rights reserved"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -74,187 +104,198 @@
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
-#language = None
+# language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
-#today = ''
+# today = ''
# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
+# 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/*',
- 'assets/*',
- '**/.ipynb_checkpoints/',
- 'pages/*/notebooks/*-solutions.ipynb',
- 'pages/*/notebooks/*-template.ipynb',
- 'pages/2019_*/notebooks/bandstructure.ipynb',
- 'pages/*/notebooks/*-solutions.md',
- 'pages/*/notebooks/*-template.md',
- 'pages/2020_*/notebooks/bandstructure.md',
-]
+exclude_patterns = ["build/*", "assets/*", "**/.ipynb_checkpoints/"]
# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
+# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
+# 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
+# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
-#show_authors = False
+# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
+pygments_style = "sphinx"
# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
+# modindex_common_prefix = []
# -- 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 = 'sphinx_rtd_theme'
+html_theme = "sphinx_book_theme"
+html_static_path = ["_static"]
+html_css_files = [
+ "aiida-tutor-custom.css",
+ "panels-custom.css",
+]
+html_theme_options = {
+ "home_page_in_toc": True,
+ "repository_url": "https://github.com/aiidateam/aiida-pseudo",
+ "repository_branch": "master",
+ "use_repository_button": True,
+ "use_issues_button": True,
+ "path_to_docs": "docs",
+ "use_edit_page_button": True,
+ "extra_navbar": "",
+}
+html_domain_indices = True
+html_title = "AiiDA Tutorials"
+html_logo = "_static/logo.png"
# Enable labeling for figures
numfig = True
+panels_add_bootstrap_css = False #
+
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
-#html_theme_options = {
+# html_theme_options = {
# "navigation_depth": 5,
-#}
+# }
# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
+# html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# " v documentation".
-#html_title = None
+# html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
+# 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
+# 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
+# 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']
# 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'
+# 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
+# html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
+# html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
-#html_additional_pages = {}
+# html_additional_pages = {}
# If false, no module index is generated.
-#html_domain_indices = True
+# html_domain_indices = True
# If false, no index is generated.
-#html_use_index = True
+# html_use_index = True
# If true, the index is split into individual pages for each letter.
-#html_split_index = False
+# html_split_index = False
# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
+# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
+# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
+# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
+# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
+# html_file_suffix = None
# Output file base name for HTML help builder.
# htmlhelp_basename = 'aiidadoc'
# -- Options for LaTeX output --------------------------------------------------
-latex_engine = 'xelatex'
+latex_engine = "xelatex"
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':
- r'''
+ "preamble": r"""
\usepackage{amsmath,amsfonts,amssymb,amsthm}
\usepackage{braket}
\usepackage{newunicodechar}
\newunicodechar{⏹}{\ensuremath{\square}}
-''',
+""",
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
- ('index', 'aiida-tutorials.tex', u'AiiDA Tutorials',
- author.replace(',', r'\and'), 'manual'),
+ (
+ "index",
+ "aiida-tutorials.tex",
+ u"AiiDA Tutorials",
+ author.replace(",", r"\and"),
+ "manual",
+ ),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
-#latex_logo = None
+# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
-#latex_use_parts = False
+# latex_use_parts = False
# If true, show page references after internal links.
-#latex_show_pagerefs = False
+# latex_show_pagerefs = False
# If true, show URL addresses after external links.
-#latex_show_urls = False
+# latex_show_urls = False
# Documents to append as an appendix to all manuals.
-#latex_appendices = []
+# latex_appendices = []
# If false, no module index is generated.
-#latex_domain_indices = True
+# 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 = [('index', 'aiida', u'AiiDA Tutorials', [author], 1)]
+man_pages = [("index", "aiida", u"AiiDA Tutorials", [author], 1)]
# If true, show URL addresses after external links.
-#man_show_urls = False
+# man_show_urls = False
# -- Options for Texinfo output ------------------------------------------------
@@ -262,81 +303,88 @@
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
- ('index', 'aiida-tutorials', u'AiiDA Tutorials', author, 'aiida-tutorials',
- 'Tutorials and demos for AiiDA', 'Miscellaneous'),
+ (
+ "index",
+ "aiida-tutorials",
+ u"AiiDA Tutorials",
+ author,
+ "aiida-tutorials",
+ "Tutorials and demos for AiiDA",
+ "Miscellaneous",
+ ),
]
# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
+# texinfo_appendices = []
# If false, no module index is generated.
-#texinfo_domain_indices = True
+# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
+# texinfo_show_urls = 'footnote'
# -- Options for Epub output ---------------------------------------------------
# Bibliographic Dublin Core info.
-epub_title = u'AiiDA Tutorials'
+epub_title = u"AiiDA Tutorials"
epub_author = author
epub_publisher = author
epub_copyright = copyright
# The language of the text. It defaults to the language option
# or en if the language is not set.
-#epub_language = ''
+# epub_language = ''
# The scheme of the identifier. Typical schemes are ISBN or URL.
-#epub_scheme = ''
+# epub_scheme = ''
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
-#epub_identifier = ''
+# epub_identifier = ''
# A unique identification for the text.
-#epub_uid = ''
+# epub_uid = ''
# A tuple containing the cover image and cover page html template filenames.
-#epub_cover = ()
+# epub_cover = ()
# HTML files that should be inserted before the pages created by sphinx.
# The format is a list of tuples containing the path and title.
-#epub_pre_files = []
+# epub_pre_files = []
# HTML files shat should be inserted after the pages created by sphinx.
# The format is a list of tuples containing the path and title.
-#epub_post_files = []
+# epub_post_files = []
# A list of files that should not be packed into the epub file.
-#epub_exclude_files = []
+# epub_exclude_files = []
# The depth of the table of contents in toc.ncx.
-#epub_tocdepth = 3
+# epub_tocdepth = 3
# Allow duplicate toc entries.
-#epub_tocdup = True
+# epub_tocdup = True
# otherwise, readthedocs.org uses their theme by default, so no need
# to specify it
# Warnings to ignore when using the -n (nitpicky) option
# We should ignore any python built-in exception, for instance
-nitpick_ignore = [('py:class', 'Warning'), ('py:class', 'exceptions.Warning')]
+nitpick_ignore = [("py:class", "Warning"), ("py:class", "exceptions.Warning")]
-#for line in open('nitpick-exceptions'):
+# for line in open('nitpick-exceptions'):
# if line.strip() == "" or line.startswith("#"):
# continue
# dtype, target = line.split(None, 1)
# target = target.strip()
# nitpick_ignore.append((dtype, target))
-suppress_warnings = ['misc.highlighting_failure']
+suppress_warnings = ["misc.highlighting_failure"]
def setup(app):
"""Setup function called by sphinx."""
- app.add_stylesheet('css/custom.css')
+ app.add_stylesheet("css/custom.css")
# We are not installing a full aiida environment
@@ -344,18 +392,18 @@ def setup(app):
# Intersphinx configuration
intersphinx_mapping = {
- 'aiida': ('http://aiida-core.readthedocs.io/en/latest/', None),
- 'plumpy': ('https://plumpy.readthedocs.io/en/latest/', None)
+ "aiida": ("http://aiida-core.readthedocs.io/en/latest/", None),
+ "plumpy": ("https://plumpy.readthedocs.io/en/latest/", None),
}
# Compile all things needed before building the docs
# For instance, convert the notebook templates to actual tutorial and solution versions
print(
- subprocess.check_output([
- 'make', '-C',
- os.path.dirname(os.path.realpath(__file__)), 'pre-docs'
- ],
- universal_newlines=True))
+ subprocess.check_output(
+ ["make", "-C", os.path.dirname(os.path.realpath(__file__)), "pre-docs"],
+ universal_newlines=True,
+ )
+)
nb_render_priority = {
"gettext": (
diff --git a/docs/index.rst b/docs/index.rst
index 1e78cb05..b1263e6a 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,7 +1,8 @@
AiiDA Tutorials
===============
-The official home of AiiDA tutorial materials and videos.
+Welcome to the official home of the AiiDA tutorial materials and videos.
+The tutorials are organised by topic in *sections*, which are listed in the left sidebar or at the bottom of this page.
.. panels::
:body: bg-light text-center
@@ -9,77 +10,52 @@ The official home of AiiDA tutorial materials and videos.
------
:column: col-lg-12 pl-0 pr-0
- .. link-button:: 2020_Intro_Week_Homepage
+ .. link-button:: sections/fundamentals/index
:type: ref
- :text: In-Depth: 2020 Introductory Virtual tutorial
+ :text: Getting started: AiiDA fundamentals
:classes: btn-link btn-block stretched-link
-------
:column: col-lg-12 pl-0 pr-0
-
:download:`AiiDA Cheat Sheet `
-------
:column: col-lg-12 pl-0 pr-0
:body: + font-weight-bold
- Short Demonstrations
+ Previously organised tutorials
-------
:column: col-lg-6 col-xs-12 pl-0 pr-0
- .. link-button:: https://aiida-tutorials.readthedocs.io/en/tutorial-qe-short/
+ .. link-button:: https://aiida-tutorials.readthedocs.io/en/tutorial-2020-intro-week/
:type: url
- :text: Quantum ESPRESSO introductory tutorial
+ :text: In-Depth: 2020 Introductory Virtual tutorial
:classes: btn-link btn-block stretched-link
-------
:column: col-lg-6 col-xs-12 pl-0 pr-0
- .. link-button:: Oxford 2020 Homepage
- :type: ref
- :text: Wannier90: "Virtual Edition" 2020 tutorial
+ .. link-button:: https://aiida-tutorials.readthedocs.io/en/tutorial-qe-short/
+ :type: url
+ :text: Quantum ESPRESSO introductory tutorial
:classes: btn-link btn-block stretched-link
-
Videos
------
For some events we have also recorded the lectures, that you can find here. You will also find the
links inside the respective sections.
-.. Without this, the default list is indented more than the toctree list
-.. rst-class:: toctree-l1
-
+ * `2020 AiiDA virtual tutorial (aiida-core 1.3.0) `_
* `2019 tutorial lectures (aiida-core 1.0.0b3) `_ (`mirror `_)
* `2019 plugin migration workshop lectures (aiida-core 1.0.0b2) `_
- * `2017 tutorial lectures (aiida-core 0.9.0) `_
- * `2017 short demo videos (aiida-core 0.8.0) `_
- * `2016 tutorial lectures (aiida-core 0.6.0) `_
-
-.. toctree::
- :maxdepth: 1
- :caption: Tutorial materials
-
- 2020, BIG-MAP meeting AiiDA tutorial (aiida-core 1.4.3)<./pages/2020_BIGMAP/index>
- 2020, Introductory workshop Virtual Edition (aiida-core 1.3.0)<./pages/2020_Intro_Week/index>
- 2020, Wannier workshop Virtual Edition (aiida-core 1.1.1)<./pages/2020_Oxford/index>
- 2019, ISSP University of Tokyo, Chiba, Japan (aiida-core 1.0.1)<./pages/2019_ISSP_Chiba_Japan/index>
- 2019, IIT Mandi, Mandi, India (aiida-core 1.0.0b6)<./pages/2019_IIT_Mandi_India/index>
- 2019, SINTEF, Oslo, Norway (aiida-core 1.0.0b6)<./pages/2019_SINTEF/index>
- 2019, Jožef Stefan Institute, Ljubljana, Slovenia (aiida-core 1.0.0b6)<./pages/2019_Ljubljana/index>
- 2019, Xiamen University, Xiamen, China (aiida-core 1.0.0b6)<./pages/2019_Xiamen/index>
- 2019, EPFL, Lausanne, Switzerland (aiida-core 1.0.0b3)<./pages/2019_MARVEL_Psik_MaX/index>
- 2019, University of Amsterdam, Amsterdam, Netherlands (aiida-core 0.12.2)<./pages/2019_molsim_school_Amsterdam/index>
- 2018, Cineca, Bologna, Italy (aiida-core 1.0.0a1)<./pages/2018_PRACE_MaX/index>
- 2018, EPFL, Lausanne, Switzerland (aiida-core 0.11.4)<./pages/2018_EPFL_molsim/index>
- 2017, EPFL, Lausanne, Switzerland (aiida-core 0.9.0)<./pages/2017_MARVEL_Psik_MaX/index>
- 2017, ICTP, Trieste, Italy (aiida-core 0.7.1)<./pages/2017_ICTP/index>
- 2016, EPFL, Lausanne, Switzerland (aiida-core 0.6.0)<./pages/2016_MARVEL_Psik_MaX/index>
-
-.. toctree::
- :maxdepth: 1
- :caption: Interactive demos
-
- interactive notebooks, binderized (aiida-core 0.12.3)
- interactive notebooks (aiida-core 0.10.0)
+
+ .. toctree::
+ :hidden:
+
+ sections/fundamentals/index
+ sections/calculations/index
+ sections/data/index
+ sections/workflows/index
+ sections/plugins/index
diff --git a/docs/pages/2016_MARVEL_Psik_MaX/index.rst b/docs/pages/2016_MARVEL_Psik_MaX/index.rst
deleted file mode 100644
index 16dfefb7..00000000
--- a/docs/pages/2016_MARVEL_Psik_MaX/index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-+-----------------+-----------------------------------------------------+
-| Related resources |
-+=================+=====================================================+
-| Virtual Machine | `AiiDA tutorial VM`_ (`installation instructions`_) |
-+-----------------+-----------------------------------------------------+
-| python packages | `aiida-core 0.6.0`_ |
-+-----------------+-----------------------------------------------------+
-| codes | `Quantum Espresso 5.1`_ |
-+-----------------+-----------------------------------------------------+
-| videos | `recorded lectures`_ |
-+-----------------+-----------------------------------------------------+
-
-.. _AiiDA tutorial VM: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/AiiDA_tutorial_2016_07.ova
-.. _installation instructions: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/AiiDA_tutorial_2016_07_instructions.pdf
-.. _aiida-core 0.6.0: https://github.com/aiidateam/aiida_core/releases/tag/tutorial_2016_06_lausanne
-.. _Quantum Espresso 5.1: https://gitlab.com/QEF/q-e/-/tags/qe-5.1.0
-.. _recorded lectures: https://www.youtube.com/watch?v=qUNYEWClS2U&list=PL19kfLn4sO_86ruxDP-sxbRXMuOr0VInR&index=4
-
-The `MARVEL/Psi-k/MaX Tutorial on high-throughput computations: general methods
-and applications using AiiDA
-`_ took place on June
-22-24, 2016 at EPFL (Lausanne, Switzerland).
-
-1\ :sup:`st` MARVEL/Psi-k/MaX tutorial on high-throughput computations
-======================================================================
-
-Please download the `tutorial instructions `_ (pdf format).
diff --git a/docs/pages/2017_ICTP/index.rst b/docs/pages/2017_ICTP/index.rst
deleted file mode 100644
index 6f6c56a0..00000000
--- a/docs/pages/2017_ICTP/index.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-+-----------------+-----------------------------------------------------+
-| Related resources |
-+=================+=====================================================+
-| Virtual Machine | `AiiDA tutorial VM`_ (`installation instructions`_) |
-+-----------------+-----------------------------------------------------+
-| python packages | `aiida-core 0.7.1`_ |
-+-----------------+-----------------------------------------------------+
-| codes | `Quantum Espresso 5.1`_ |
-+-----------------+-----------------------------------------------------+
-
-.. _AiiDA tutorial VM: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/aiida_tutorial_2017_01.ova
-.. _installation instructions: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/aiida_tutorial_2017_01_instructions.pdf
-.. _aiida-core 0.7.1: https://github.com/aiidateam/aiida_core/releases/tag/tutorial_2017_01_trieste
-.. _Quantum Espresso 5.1: https://gitlab.com/QEF/q-e/-/tags/qe-5.1.0
-
-The `eigth AiiDA hands-on tutorial `_ took place on January 24-25, 2017 at ICTP (Trieste, Italy).
-
-AiiDA hands-on tutorial
-=======================
-
-Please download the `tutorial instructions `_ (pdf format).
diff --git a/docs/pages/2017_MARVEL_Psik_MaX/index.rst b/docs/pages/2017_MARVEL_Psik_MaX/index.rst
deleted file mode 100644
index 6fbc52de..00000000
--- a/docs/pages/2017_MARVEL_Psik_MaX/index.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-+-----------------+-----------------------------------------------------+
-| Related resources |
-+=================+=====================================================+
-| Virtual Machine | `AiiDA tutorial VM`_ (`installation instructions`_) |
-+-----------------+-----------------------------------------------------+
-| python packages | `aiida-core 0.9.0`_ |
-+-----------------+-----------------------------------------------------+
-| codes | `Quantum Espresso 5.1`_ |
-+-----------------+-----------------------------------------------------+
-| videos | `recorded lectures`_ |
-+-----------------+-----------------------------------------------------+
-
-.. _AiiDA tutorial VM: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/aiida_tutorial_2017_06.ova
-.. _installation instructions: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/old_tutorials/aiida_tutorial_2017_06_instructions.pdf
-.. _aiida-core 0.9.0: https://pypi.org/project/aiida-core/0.9.0/
-.. _Quantum Espresso 5.1: https://gitlab.com/QEF/q-e/-/tags/qe-5.1.0
-.. _recorded lectures: https://www.youtube.com/watch?v=qD2IcaFV4Io&list=PL19kfLn4sO_86ruxDP-sxbRXMuOr0VInR
-
-The second edition of the `MARVEL/Psi-k/MaX Tutorial on high-throughput
-computations: general methods and applications using AiiDA
-`_ took place on May
-29-31, 2017 at EPFL (Lausanne, Switzerland).
-
-2\ :sup:`nd` MARVEL/Psi-k/MaX tutorial on high-throughput computations
-======================================================================
-
-Please download the `tutorial instructions `_ (pdf format).
diff --git a/docs/pages/2018_EPFL_molsim/index.rst b/docs/pages/2018_EPFL_molsim/index.rst
deleted file mode 100644
index 46698a55..00000000
--- a/docs/pages/2018_EPFL_molsim/index.rst
+++ /dev/null
@@ -1,79 +0,0 @@
-+-----------------+------------------------------------------------------------------+
-| Related resources |
-+=================+==================================================================+
-| Virtual Machine | `Quantum Mobile 18.04.0`_ |
-+-----------------+------------------------------------------------------------------+
-| python packages | `aiida-core 0.11.4`_, `aiida-zeopp 0.1.0`_, `aiida-raspa 0.2.1`_ |
-+-----------------+------------------------------------------------------------------+
-| codes | `zeo++ 0.3`_, `raspa 2.0.30`_ |
-+-----------------+------------------------------------------------------------------+
-
-.. _Quantum Mobile 18.04.0: https://github.com/marvel-nccr/quantum-mobile/releases/tag/18.04.0
-.. _aiida-core 0.11.4: https://pypi.org/project/aiida-core/0.11.4/
-.. _aiida-zeopp 0.1.0: https://pypi.org/project/aiida-zeopp/0.1.0/
-.. _aiida-raspa 0.2.1: https://pypi.org/project/aiida-raspa/0.2.1/
-.. _zeo++ 0.3: http://www.zeoplusplus.org/download.html
-.. _raspa 2.0.30: https://github.com/iRASPA/RASPA2/releases/tag/v2.0.30
-
-The following tutorial is part of the course `Understanding advanced molecular
-simulation `__
-held at EPF Lausanne during the spring semester 2018.
-
-
-Understanding advanced molecular simulation
-===========================================
-
-This tutorial makes use of the AiiDA plugins for the `zeo++
-`__ and `RASPA2
-`__ codes.
-It is meant to be run inside the `Quantum
-Mobile `__ virtual
-machine.
-
-
-AiiDA tutorial
---------------
-
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- Preparation <./tutorial/preparation>
- Using the verdi command line <./tutorial/verdi-commands>
- Submit, monitor and debug calculations <./tutorial/calculations>
- The AiiDA python interface <./tutorial/python-interface>
- Queries in AiiDA: The QueryBuilder <./tutorial/queries>
-
-Screening nanoporous materials
-------------------------------
-
-**Task:** Screen a set of metal-organic frameworks (MOFs) for their
-performance in storing methane at room temperature by computing their
-*deliverable capacities*, i.e. the difference between the amount of
-methane stored in a fully loaded tank (at 65 bar) and an empty tank (at
-5.8 bar) per volume.
-
-**Report:** Write a short report (1 page) outlining your approach and
-identifying the five MOFs with the highest deliverable capacities.
-Include an export of your AiiDA database [1]_.
-
-**Note:** This exercise requires a basic knowledge of python. If you are
-not familiar with python, partner with someone who is.
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- Import the structures
- Perform geometric analysis <./screening/geometry>
- Compute methane loading <./screening/methane-loading>
- Screening <./screening/screening>
- Ranking <./screening/ranking>
- Exporting your database <./screening/export>
-
-.. [1]
- Upload to a file hosting service like
- `SWITCHdrive `__ or
- `Dropbox `__ and include a download link in
- the report.
diff --git a/docs/pages/2018_EPFL_molsim/screening/export.md b/docs/pages/2018_EPFL_molsim/screening/export.md
deleted file mode 100644
index 967f6ced..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/export.md
+++ /dev/null
@@ -1,29 +0,0 @@
-Exporting your database
-=======================
-
-Let's put the nodes to be exported into a new group `report`:
-
-```python
-CifData=DataFactory('cif')
-qb=QueryBuilder()
-qb.append(Group, filters={'name':'mofs'}, tag='mofs') # filter by 'mofs' group
-qb.append(CifData, member_of='mofs', tag='cifs')
-cifs = qb.all()
-
-qb.append(Node, descendant_of='cifs') # get all children
-children = qb.all()
-
-report, created = Group.get_or_create(name='report')
-report.add_nodes([ n[0] for n in cifs + children ])
-```
-
-Once you've grouped your nodes, check the contents of the group and
-export it:
-
-```console
-$ verdi group show report
-$ verdi export create -g report database.aiida
-```
-
-*Note:* AiiDA automatically exports the direct outputs of calculations,
-i.e. we don't need to add them to our group explicitly.
diff --git a/docs/pages/2018_EPFL_molsim/screening/geometry.md b/docs/pages/2018_EPFL_molsim/screening/geometry.md
deleted file mode 100644
index b6986b7b..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/geometry.md
+++ /dev/null
@@ -1,116 +0,0 @@
-Perform geometric analysis of one MOF
-=====================================
-
-Use the [zeo++](http://www.zeoplusplus.org/) code to analyze the
-structure, such as the volume inside the MOF that is accessible to
-methane.
-
-- To make things simple, start with one MOF: `DSoLANSUKYIH.cif`
-
-- Set up the
- [Deneb](https://scitas.epfl.ch/hardware/deneb-and-eltanin) computer
- at EPFL
-
- - Import the `deneb-molsim` computer and its codes into AiiDA
-
- ```console
- $ verdi import {{ "/assets/2018_EPFL_molsim/deneb-molsim.aiida" | absolute_url }}
- $ verdi computer list -a # should show 'deneb-molsim'
- $ verdi code list -A # should show 'zeopp@deneb-molsim', 'raspa@deneb-molsim'
- ```
-
- - Generate an SSH key pair for passwordless connection
-
- ```console
- $ ssh-keygen
-
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/max/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been savedin /home/max/.ssh/id_rsa.
- Your public key has been saved in /home/max/.ssh/id_rsa.pub.
- The key fingerprint is: ...
- The key's randomart image is: ...
- ```
-
- ```console
- $ ssh-copy-id @deneb1.epfl.ch
- $ ssh @deneb1.epfl.ch # should now work without password
- ```
-
- - configure your personal access to the `deneb-molsim` computer
-
- ```console
- $ verdi computer configure deneb-molsim
-
- Configuring computer 'deneb-molsim' for the AiiDA user '@epfl.ch'
- Computer deneb-molsim has transport of type ssh
- Note: to leave a field unconfigured, leave it empty and press [Enter]
- => username =
- => port = 22
- => look_for_keys =
- => key_filename =
- => timeout = 60
- => allow_agent =
- => proxy_command =
- => compress = True
- => gss_auth = no
- => gss_kex = no
- => gss_deleg_creds = no
- => gss_host = deneb1.epfl.ch
- => load_system_host_keys = True
- => key_policy = AutoAddPolicy
- Configuration stored for your user on computer 'deneb-molsim'.
- ```
-
- - Finally, test your new computer
-
- ```console
- $ verdi computer test deneb-molsim
- ```
-
-- Compute the density, accessible volume and [accessible surface
- area](https://en.wikipedia.org/wiki/Accessible_surface_area) using
- zeo++.
-
- Use the [zeo++ web site](http://www.zeoplusplus.org/examples.html)
- to figure out what the `-ha`, `-res`, `-sa`, `-volpo` command line
- options do.
-
- What is an appropriate value for the probe radius `r`?
-
- ```python
- code = Code.get_from_string("zeopp@deneb-molsim")
- calc = code.new_calc()
-
- # computational resources for calculation
- calc.set_withmpi(False)
- calc.set_resources( {"num_machines": 1, "tot_num_mpiprocs":} )
- calc.set_max_wallclock_seconds(30*60) \# 30 minutes
- calc.set_max_memory_kb(2e6)
-
- # zeo++ command line parameters
- NetworkParameters = DataFactory('zeopp.parameters') d={
- 'ha': True,
- 'res': True,
- 'sa': [, , 1000],
- 'volpo': [, , 1000],
- }
- parameters = NetworkParameters(dict=d)
- calc.use_parameters(parameters)
-
- # Load the cif node from the database, e.g. by PK
- # cif = load_node()
- calc.use_structure(cif)
-
- # This places files in a subfolder "submit_test" instead of submitting.
- calc.submit_test()
- # Uncomment lines below when the script runs through
- # calc.store_all()
- # calc.submit()
- # print(calc) # prints UUID and PK
- ```
-
-**Remember:** Use `verdi run ` to run python scripts in the
-same environment as in the `verdi shell`.
diff --git a/docs/pages/2018_EPFL_molsim/screening/import.md b/docs/pages/2018_EPFL_molsim/screening/import.md
deleted file mode 100644
index b157d92f..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/import.md
+++ /dev/null
@@ -1,56 +0,0 @@
-Import the structures
-=====================
-
-You can download a tar file containing the structures from
-
-```console
-$ wget {{ "/assets/2018_EPFL_molsim/mof_structures.tar.gz" | absolute_url }}
-$ tar -xf mof_structures.tar.gz
-```
-
-- Visualize a few structures using `jmol`:
-
- ```console
- $ cd struct/
- $ jmol .cif
- ```
-
- Can you think of two criteria for a high deliverable methane
- capacity?
-
-- Use the `CifData` class to import the structures into your database, e.g.
-
- ```python
- CifData = DataFactory('cif')
- cif = CifData(file='/path/to/file.cif')
- cif.store()
- ```
-
-- Use wildcards with the `glob` and `os` modules to get the file paths
- of all structures like so:
-
- ```python
- from glob import glob
- from os import path
- all_structure_files = glob(path.abspath("/path/to/struct/*"))
- ```
-
-- Keep track of your structures using groups
-
- ```python
- # Use get_or_create to be able to run this multiple times mofs,
- created = Group.get_or_create(name='mofs')
- mofs.add_nodes([cif1, cif2])
- ```
-
-- Finally, you can load your structures from the group using the
- [AiiDA query builder](http://aiida-core.readthedocs.io/en/latest/querying/querybuilder/usage.html)
-
- ```python
- qb = QueryBuilder()
- qb.append(Group, filters = { 'name':'mofs' })
- mofs = qb.one()[0]
-
- for cif in mofs.nodes:
- print cif
- ```
diff --git a/docs/pages/2018_EPFL_molsim/screening/methane-loading.md b/docs/pages/2018_EPFL_molsim/screening/methane-loading.md
deleted file mode 100644
index 1eba42ed..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/methane-loading.md
+++ /dev/null
@@ -1,56 +0,0 @@
-Compute methane loading for one MOF
-===================================
-
-The average loading of the MOF at a given pressure will be computed
-using grand-canonical Monte Carlo (GCMC) simulations with the
-[RASPA](https://github.com/numat/RASPA2) code.
-
-- The RASPA code needs several input parameters, some of which you
- will need to figure out
-
- ```python
- parameters = ParameterData(dict={
- "GeneralSettings": {
- "SimulationType" : "MonteCarlo",
- "NumberOfCycles" : 2000,
- "NumberOfInitializationCycles" : 2000,
- "PrintEvery" : 2000,
- "ChargeMethod" : "Ewald",
- "CutOff" : 12.0,
- "Forcefield" : "",
- "EwaldPrecision" : 1e-6,
- "Framework" : 0,
- "UnitCells" : "",
- "HeliumVoidFraction" : 0.0,
- "ExternalTemperature" : ,
- "ExternalPressure" : ,
- },
- "Component": [{
- "MoleculeName" : "methane"
- "MoleculeDefinition" : "TraPPE",
- "TranslationProbability" : 0.5,
- "ReinsertionProbability" : 0.5,
- "SwapProbability" : 1.0,
- "CreateNumberOfMolecules" :0,
- }],
- })
- ```
-
- - Our simulations are performed under periodic boundary
- conditions. This means, we need to make our simulation cell
- large enough that a molecule will never interact with a two
- periodic copies of any of its neighbors. Given the cutoff radius
- of $12$ Angstroms, how often do you need to replicate the unit
- cell of the material?
-
- *Hint:* The CIF files include information on the size of the
- unit cell.
-
- - To make things more interesting, we are going to use different
- force fields. Ask your instructor to give you a force field
- identifier.
-
-- You already performed a small GCMC calculation at 10 bar during the
- tutorial. Adapt the input file to your needs and run the
- calculation.
- *Hint:* Once running, the calculation should finish within 5 minutes.
diff --git a/docs/pages/2018_EPFL_molsim/screening/ranking.md b/docs/pages/2018_EPFL_molsim/screening/ranking.md
deleted file mode 100644
index fc00f147..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/ranking.md
+++ /dev/null
@@ -1,43 +0,0 @@
-# Ranking the structures
-
-We've prepared an interactive jupyter app that helps you with ranking
-and visualizing the structures. Use at your convenience.
-
-## Installation
-
-To get the app please download it using the following link:
-
-```console
-$ wget {{ "/assets/2018_EPFL_molsim/ranking.tar.gz" | absolute_url }}
-$ tar -xf ranking.tar.gz
-```
-
-If you are working with Quantum Mobile, simply place the extracted
-folder inside `/project/apps` and it should already work.
-
-In case you have configured AiiDA on your own computer please install
-additional packages:
-
-```console
-$ pip install jupyter matplotlib bokeh plotly ase appmode
-$ jupyter nbextension enable --py --sys-prefix appmode
-$ jupyter serverextension enable --py --sys-prefix appmode
-```
-
-## Usage
-
-To use the application please open
-
-- `dc_group.ipynb`, if you followed the *quick and simple* route
-- `dc_wf.ipynb`, if you followed the *elegant and robust* route
-
-Switch to the Appmode for the convenience.
-
-For the users of Quantum Mobile it is enough to launch "Jupyter Apps" icon on
-the desktop and chose corresponding notebook from the "Molsim course" app.
-
-Once you have opened the notebook, specify the group of structures (if
-required) and press the "Plot" button.
-
-We recommend to use the "bokeh" framework as it shows the corresponding
-structure pk once you put the cursor on top of a point.
diff --git a/docs/pages/2018_EPFL_molsim/screening/screening.md b/docs/pages/2018_EPFL_molsim/screening/screening.md
deleted file mode 100644
index b335cf99..00000000
--- a/docs/pages/2018_EPFL_molsim/screening/screening.md
+++ /dev/null
@@ -1,282 +0,0 @@
-# Screening
-
-For the screening part of the work, you can choose one of two possible
-routes:
-
-1. **Quick and simple:** Use `for` loops in your scripts to loop over
- the structures in your database, submitting in total
- 1 (Zeo++) + 2 (Raspa) = 3 calculations per structure.
-
- This should require very little changes to your python scripts and
- is a perfectly valid solution.
-2. **Reusable and elegant:** Write an AiiDA `Workchain` that takes a
- structure, performs all necessary calculations, and outputs the result.
-
- This route requires more advanced python concepts and involves a bit
- of coding, but makes your workflow more robust and reusable.
-
-## Quick and simple
-
-Just use the `QueryBuilder` to load the `CifData` nodes from the AiiDA
-database and loop over them.
-
-Computed properties are automatically linked to `CifData` nodes via
-calculation nodes.
-
-Try `verdi graph generate ` on a zeo++ or RASPA calculation node to
-get an overview of the AiiDA graph.
-
-In order to automatically determine how many unit cells to use in the
-simulation, you may use the following function for convenience:
-
-```python
-def multiply_cell(cif, cutoff):
- """ Determine number of replica of unit cell.
-
- Works for cells of arbitrary shape.
-
- :param cif: CifData object
- :param cutoff: cutoff radius of interaction
- :returns: String of integers specifying replica of unit cell,
- suitable for 'UnitCells' parameter of raspa calculation.
- """
- from math import cos, sin, sqrt, pi
- import numpy as np
- deg2rad=pi/180.
-
- struct = cif.values.dictionary.itervalues().next()
-
- a = float(struct['_cell_length_a'])
- b = float(struct['_cell_length_b'])
- c = float(struct['_cell_length_c'])
-
- alpha = float(struct['_cell_angle_alpha'])*deg2rad
- beta = float(struct['_cell_angle_beta'])*deg2rad
- gamma = float(struct['_cell_angle_gamma'])*deg2rad
-
- # compute cell vectors following https://en.wikipedia.org/wiki/Fractional_coordinates
- v = sqrt(1-cos(alpha)**2-cos(beta)**2- cos(gamma)**2+2*cos(alpha)*cos(beta)*cos(gamma))
- cell=np.zeros((3,3))
- cell[0,:] = [a, 0, 0]
- cell[1,:] = [b*cos(gamma), b*sin(gamma),0]
- cell[2,:] = [c*cos(beta), c*(cos(alpha)-cos(beta)*cos(gamma))/(sin(gamma)),
- c*v /sin(gamma)]
- cell=np.array(cell)
-
- # diagonalize the cell matrix
- diag = np.diag(cell)
- # and computing nx, ny and nz
- nx, ny, nz = tuple(int(i) for i in np.ceil(cutoff/diag*2.))
-
- #return nx, ny, nz
- return "{} {} {}".format(nx, ny, nz)
-```
-
-## Elegant and robust
-
-Combine the calculations into a workchain using the AiiDA `WorkChain`
-class. Here one should define the list of input types using spec.input()
-function and the workflow steps using spec.outline() function. In our
-case the workflow takes as input CifData object with structure and the
-names of Zeo++ and Raspa codes.
-
-```python
-class DcMethane(WorkChain):
- """ Compute deliverable capacity for methane. """
-
- @classmethod
- def define(cls, spec):
- """ Define input, logic and output of Workchain. """
- super(DcMethane, cls).define(spec)
-
- # First we define the inputs, specifying the type we expect
- spec.input("structure", valid_type=CifData, required=True)
- spec.input("zeopp_codename", valid_type=Str, required=True)
- spec.input("raspa_codename", valid_type=Str, required=True)
-
- # The outline describes the business logic that defines
- # which steps are executed in what order and based on
- # what conditions. We will implement each `cls.method` below
- spec.outline(
- cls.init,
- cls.run_geom_zeopp,
- cls.run_loading_raspa_5_8,
- cls.parse_loading_raspa,
- cls.run_loading_raspa_65,
- cls.parse_loading_raspa,
- cls.extract_results,
- )
-
- # Here we define the output the Workchain will generate and
- # return. Dynamic output allows a variety of AiiDA data nodes
- # to be returned
- spec.dynamic_output()
-```
-
-The workchain consists of **7 steps**.
-
-### Step 1: Prepare input parameters and variables
-
- ```python
- def init(self):
- """
- Initialize variables
- """
- # Define cutoff for the methane-methane interactions
- cutoff = 12.00
-
- self.ctx.loading_average = {}
-
- self.ctx.parameters = {}
- # Note: You'll need the multiply_cell function mentioned in section 4.1
-
- self.ctx.options = {
- "resources": {
- "num_machines": 1,
- "tot_num_mpiprocs": 1,
- "num_mpiprocs_per_machine": 1,
- },
- "max_wallclock_seconds": 10 * 60 * 60, # 10 hours
- "max_memory_kb": 2000000, # limiting the
- "withmpi": False,
- }
- ```
-
-### Step 2: Compute the geometric parameters of the MOFs
-
-Draw upon how we submitted Zeo++ calculations in section 2.
-The main difference here is that the calculation inputs,
- such as Code or structure, are provided as a dictionary.
-
-```python
-def run_geom_zeopp(self):
- """ Perform a zeo++ calculation. """
-
- # Create the input dictionary
- NetworkParameters = DataFactory('zeopp.parameters')
- sigma = 1.86
- params = {
- 'ha': True,
- 'res': True,
- 'sa': [sigma, sigma, 100000],
- 'volpo': [sigma, sigma, 100000],
- }
-
- inputs = {
- 'code': : Code.get_from_string(self.inputs.zeopp_codename.value),
- 'structure': : self.inputs.structure,
- 'parameters': : NetworkParameters(dict=params),
- '_options': : self.ctx.options,
- }
-
- # Create the calculation process and launch it
- process = ZeoppCalculation.process()
- future = submit(process, **inputs)
- self.report("pk: {} | Running geometry analysis with zeo++".format(future.pid))
-
- return ToContext(zeopp=Outputs(future))
- ```
-
-### Step 3,5: Compute the methane loading
-
-Steps 3 and 5 compute the methane loading in units of [molecules/cell] at
-5.8 and 65 bars respectively. Since the same calculation is performed twice
-in this workchain, we put the common part of those steps into a function:
-
-```python
-def _run_loading_raspa(self, pressure):
- """ Perform a raspa calculation for one pressure. """
- self.ctx.parameters['GeneralSettings']['ExternalPressure'] = pressure
-
- # Create the input dictionary
- inputs = {
- 'code' : Code.get_from_string(self.inputs.zeopp_codename.value),
- 'structure' : self.inputs.structure,
- 'parameters' : NetworkParameters(dict=params),
- '_options' : self.ctx.options,
- }
-
- # Create the calculation process and launch it
- process = RaspaCalculation.process()
- future = submit(process, **inputs)
- self.report("pk: {} | Running raspa for the pressure {} [bar]" \
- .format(future.pid, pressure/1e5)
-
- return ToContext(raspa=Outputs(future))
-```
-
-The `run_loading_raspa_5_8` and `run_loading_raspa_65` functions
-are defined as follows:
-
-```python
-def run_loading_raspa_5_8(self):
- return self._run_loading_raspa(pressure = 5.8e5)
-
-def run_loading_raspa_65(self):
- return self._run_loading_raspa(pressure = 6.5e6)
-```
-
-### Step 4,6: Extract pressure and methane loading
-
-Steps 4 and 6 extract pressure and methane loading from the input and
-output parameters of the calculation and put them into context (`ctx`)
-that is used to store any data that should be persisted between step.
-
-```python
-def parse_loading_raspa(self):
- """ Extract the pressure and loading average of the last completed raspa calculation """
- pressure = self.ctx.parameters['GeneralSettings']['ExternalPressure']
- loading_average = self.ctx.raspa["component_0"].dict.loading_absolute_average
- self.ctx.loading_average[str(int(pressure))] = loading_average
-```
-
-Last step stores the selected computed parameters as the output of the
-`DcMethane` workchain:
-
-```python
-def extract_results(self):
- """ Attach the results of raspa calculation and the initial structure to the outputs """
- dc = self.ctx.loading_average['6500000'] - self.ctx.loading_average['580000']
-
- zeopp = self.ctx.zeopp
- res = {
- 'density' : zeopp['pore_volume_volpo'].get_attr('Density'),
- 'density_units' : 'g/cm^3',
- 'pore_accesible_volume' : zeopp['pore_volume_volpo'].get_attr('POAV_A^3'),
- 'pore_accesible_volume_units' : 'A^3',
- 'unitcell_volume' : zeopp['pore_volume_volpo'].get_attr( 'Unitcell_volume'),
- 'unitcell_volume_units' : 'A^3',
- 'largest_included_sphere' : zeopp['free_sphere_res'].get_attr('Largest_included_sphere'),
- 'largest_included_sphere_units' : 'A',
- 'accessible_surface_area' : zeopp['surface_area_sa'].get_attr('ASA_m^2/g'),
- 'accessible_surface_area_units' : 'm^2/g',
- 'deliverable_capacity' : dc,
- 'deliverable_capacity_units' : 'molecules/unit cell',
- }
- self.out("result", ParameterData(dict=res))
-
- self.report("Workchain <{}> completed successfully".format(self.calc.pk))
- return
-```
-
-To submit the calculation please adapt the following script. Please
-note, the file containing the `DcMethane` workchain should be accessible
-from the python shell. To achieve that just place the file into a folder
-listed in `PYTHONPATH` system variable and rename it to
-`deliverable_capacity.py`.
-
-```python
-import os
-from deliverable_capacity import DcMethane
-from aiida.orm.data.cif import CifData
-from aiida.orm.data.base import Str
-from aiida.work.run import run, submit
-
-for s in structures:
- outputs = submit(DcMethane, structure=s,
- zeopp_codename=Str('zeopp@deneb-molsim'), raspa_codename=Str('raspa@deneb-molsim'),
- )
-```
-
-Where structures is the list of `CifData` nodes stored in your AiiDA
-database.
diff --git a/docs/pages/2018_EPFL_molsim/tutorial/calculations.rst b/docs/pages/2018_EPFL_molsim/tutorial/calculations.rst
deleted file mode 100644
index 729f706e..00000000
--- a/docs/pages/2018_EPFL_molsim/tutorial/calculations.rst
+++ /dev/null
@@ -1,228 +0,0 @@
-Submit, monitor and debug calculations
-======================================
-
-The goal of this section is to understand how to create new data in
-AiiDA. We will launch a Grand Canonical Monte Carlo simulation and check
-its results. While for now we will do it ‘manually', workflows (that we
-will learn later in this tutorial) can automate this procedure
-considerably.
-
-Computer setup and configuration
---------------------------------
-
-For the tutorial, we've created a “virtual supercomputer” on the Amazon
-elastic cloud, where you can submit your calculations.
-
-Please set up the computer as follows:
-
-.. code:: console
-
- $ verdi computer setup
- At any prompt, type ? to get some help.
- —————————————
- => Computer name: aws Creating new computer with name 'aws'
- => Fully-qualified hostname: 34.244.10.104
- => Description: AWS instance for tutorial
- => Enabled: True
- => Transport type: ssh
- => Scheduler type: torque
- => shebang line at the beginning of the submission script: \#!/bin/console
- => AiiDA work directory: /tmp/{username}/aiida~r~un/
- => mpirun command: mpirun -np {tot_num_mpiprocs}
- => Default number of CPUs per machine: 2
- => Text to prepend to each command execution:
- # This is a multiline input, press CTRL+D on a
- # empty line when you finish
- # ——————————————
- # End of old input. You can keep adding
- # lines, or press CTRL+D to store this value
- # ——————————————
- => Text to append to each command execution:
- # This is a multiline input, press CTRL+D on a
- # empty line when you finish
- # ——————————————
- # End of old input. You can keep adding
- # lines, or press CTRL+D to store this value
- # ——————————————
- Computer 'aws' successfully stored in DB.
-
-At this point, the computer node has been created in the database, see
-
-.. code:: console
-
- $ verdi computer list -a
-
-but it hasn't yet been configured.
-
-In order to access the computer, download the SSH key
-
-.. code:: console
-
- $ wget https://www.dropbox.com/s/.../aiida_tutorial_aiidaaccount?dl=1 -O /home/max/.ssh/aws.pem
-
-and use it to configure the ``aws`` computer:
-
-.. code:: console
-
- $ verdi computer configure aws
- Configuring computer 'aws' for the AiiDA user 'aiida@localhost'
- Computer aws has transport of type ssh
-
- Note: to leave a field unconfigured, leave it empty and press [Enter]
-
- => username = aiida
- => port = 22
- => look for keys = True
- => key filename = /home/max/.ssh/aws.pem
- => timeout = 60
- => allow agent =
- => proxy command =
- => compress = True
- => gssauth = no
- => gsskex = no
- => gssdelegcreds = no
- => gsshost = 34.244.10.104
- => load system hostkeys = True
- => key policy = AutoAddPolicy
- Configuration stored for your user on computer 'aws'.
-
-Finally, let aiida test the computer:
-
-.. code:: console
-
- $ verdi computer test aws
-
-Code setup and configuration
-----------------------------
-
-Next, we need to let AiiDA know about the computer codes available on
-our “virtual supercomputer”.
-
-Let's set up the `RASPA2 `__ code as
-follows:
-
-.. code:: console
-
- $ verdi code setup
- At any prompt, type ? to get some help.
- —————————————
- => Label: raspa
- => Description: Raspa code for molsim course
- => Local: False
- => Default input plugin: raspa
- => Remote computer name: aws
- => Remote absolute path: /home/aiida/.local/bin/simulate
- => Text to prepend to each command execution
- FOR INSTANCE, MODULES TO BE LOADED FOR THIS CODE:
- # This is a multiline input, press CTRL+D on a
- # empty line when you finish
- # ——————————————
- # End of old input. You can keep adding
- # lines, or press CTRL+D to store this value
- # ——————————————
- => Text to append to each command execution:
- # This is a multiline input, press CTRL+D on a
- # empty line when you finish
- # ——————————————
- # End of old input. You can keep adding
- # lines, or press CTRL+D to store this value
- # ——————————————
- Code 'raspa' successfully stored in DB.
-
-The list of codes should now include your new code ``raspa@aws``
-
-.. code:: console
-
- $ verdi computer test aws
-
-The AiiDA daemon
-----------------
-
-First of all check that the AiiDA daemon is actually running. The AiiDA
-daemon is a program running all the time in the background, checking if
-new calculations appear and need to be submitted to the scheduler. The
-daemon also takes care of all the necessary operations before the
-calculation submission, and after the calculation has completed on the
-cluster. Type in the terminal
-
-.. code:: console
-
- $ verdi daemon status
-
-If the daemon is running, the output should look like
-
-::
-
- # Most recent daemon timestamp:0h:00m:26s ago
- ## Found 1 process running:
- * aiida-daemon[aiida-daemon] RUNNING pid 15044, uptime 3 days, 15:38:41
-
-If this is not the case, type in the terminal
-
-.. code:: console
-
- $ verdi daemon start
-
-to start the daemon.
-
-Creating a new calculation
---------------------------
-
-To start please `download the AiiDA submission
-script <./assets/2018_EPFL_molsim/raspa_submission.zip>`__. To launch a
-calculation, you will need to interact with AiiDA mainly in the
-``verdi shell``. We strongly suggest you to first try the commands in
-the shell, and then copy them in a script “test\_pw.py” using a text
-editor. This will be very useful for later execution of a similar series
-of commands.
-
-**The best way to run python scripts using AiiDA functionalities is to
-run them in a terminal by means of the command**
-
-.. code:: console
-
- $ verdi run
-
-Every calculation sent to a cluster is linked to a code, which describes
-the executable file to be used. Therefore, first load the suitable code:
-
-.. code:: python
-
- from aiida.common.example_helpers import test_and_get_code
- code = test_and_get_code(codename, expected_code_type='raspa')
-
-Here ``test_and_get_code`` is an AiiDA function handling all possible
-codes, and ``code`` is a class instance provided as ``codename`` (see
-the first part of the tutorial for listing all codes installed in your
-AiiDA machine). For this example use codename ``raspa@aws``.
-
-AiiDA calculations are instances of the class ``Calculation``, more
-precisely of one of its subclasses, each corresponding to a code
-specific plugin (for example, the Raspa plugin). We create a new
-calculation using the ``new_calc`` method of the ``code`` object:
-
-.. code:: python
-
- calc = code.new_calc()
-
-This creates and initializes an instance of the ``RaspaCalculation``
-class, the subclass associated with the ``raspa`` plugin. Sometimes, you
-might find convenient to annotate information assigning a (short) label
-or a (long) description, like:
-
-.. code:: python
-
- calc.label='Raspa test'
- calc.description='My first AiiDA calc with Raspa'
-
-This information will be saved in the database for later query or
-inspection.
-
-Now you have to specify the number of machines (a.k.a. cluster nodes)
-you are going to run on and the maximum time allowed for the calculation
-— this information is passed to the scheduler that handles the queue:
-
-.. code:: python
-
- calc.set_resources({'num_machines': 1, 'num_mpiprocs_per_machine':1})
- calc.set_max_wallclock_seconds(30*60)
diff --git a/docs/pages/2018_EPFL_molsim/tutorial/preparation.md b/docs/pages/2018_EPFL_molsim/tutorial/preparation.md
deleted file mode 100644
index 12ae4bfc..00000000
--- a/docs/pages/2018_EPFL_molsim/tutorial/preparation.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Preparation
-===========
-
-Start the Quantum Mobile virtual machine, open a terminal window and
-type
-
-```console
-$ workon aiida
-```
-
-This activates the virtual environment, in which AiiDA is installed.
-
-Since Quantum Mobile focuses on *ab initio* calculations, it is missing
-some aiida plugins we are going to need. Let’s install them (this can
-take 3 minutes):
-
-```console
-$ pip install aiida-raspa aiida-zeopp
-```
-
-Before we start creating data ourselves, we are going to look at an
-existing AiiDA database. Let’s import one from the web:
-
-```console
-$ verdi import {{ "/assets/2018_EPFL_molsim/isotherms.aiida" | absolute_url }}
-```
diff --git a/docs/pages/2018_EPFL_molsim/tutorial/python-interface.md b/docs/pages/2018_EPFL_molsim/tutorial/python-interface.md
deleted file mode 100644
index 358d43f6..00000000
--- a/docs/pages/2018_EPFL_molsim/tutorial/python-interface.md
+++ /dev/null
@@ -1,89 +0,0 @@
-The AiiDA python interface
-==========================
-
-In this section we will use an interactive python environment with all
-the basic AiiDA classes already loaded. There are two variants of this:
-
-The first is a customized ipython shell where all the AiiDA classes,
-methods and functions are accessible. Type in the terminal
-
-```console
-verdi shell
-```
-
-For everyday AiiDA-based operations, i.e. creating, querying and using
-AiiDA objects, the `verdi shell` is probably the best tool.
-You would usually use two terminals, one for the
-`verdi shell` and one to execute bash commands.
-
-The second option is based on `jupyter` notebooks and is great for
-tutorial purposes. Double click on the `Jupyter Apps` icon on the
-Desktop to start a jupyter notebook server. After a few seconds, the
-browser will open and display the home app. Click on `File Browser` and
-select `New -> Python 2` (top right corner). You are now inside a
-jupyter notebook, made of cells where you can type portions of python
-code. The code will not be executed until you press `Shift+Enter` from
-within a cell. Type in the first cell
-
-and execute it. This will set exactly the same environment as the
-`verdi shell`. The notebook will be automatically saved
-upon any modification and when you think you are done, you can export
-your notebook in many formats by going to `File -> Download as`. We
-suggest you to have a look to the drop-down menus `Insert` and `Cell`
-where you will find the main commands to manage the cells of your
-notebook. **The `verdi shell` and the
-`jupyter` notebook are completely equivalent. Use either
-according to your personal convenience.**
-
-Note: you will still need sometimes to type command-line instructions in
-`bash` in the first terminal you opened today. To
-differentiate these from the commands to be typed in the
-`verdi shell`, the latter will be marked in this document
-by a vertical line on the left, like:
-
-```python
-# some verdi shell command
-```
-
-while command-line instructions in `bash` to be typed on a
-terminal will be encapsulated between horizontal lines:
-
-```console
-# some bash command
-```
-
-Alternatively, to avoid changing terminal, you can execute
-`bash` commands within the `verdi shell` or
-the notebook adding an exclamation mark before the command itself
-
-```python
-!some bash command
-```
-
-Loading a node
---------------
-
-Most AiiDA objects are represented by nodes, identified in the database
-by its pk number (an integer). You can access a node using the following
-command in the shell:
-
-```python
-node = load_node()
-```
-
-Load a node using one of the calculation pks visible in the graph you
-displayed in the previous section of the tutorial. Then get the energy
-of the calculation with the command
-
-```python
-node.out.output_parameters.get_dict()
-```
-
-You can also type
-
-```python
-node.out.
-```
-
-and then press `TAB` to see all the possible output results
-of the calculation.
diff --git a/docs/pages/2018_EPFL_molsim/tutorial/queries.md b/docs/pages/2018_EPFL_molsim/tutorial/queries.md
deleted file mode 100644
index 87a796df..00000000
--- a/docs/pages/2018_EPFL_molsim/tutorial/queries.md
+++ /dev/null
@@ -1,200 +0,0 @@
-Queries in AiiDA: The QueryBuilder {#sec:querybuilder}
-==================================
-
-In this part of the tutorial we will focus on how to query our database
-using a querying tool for AiiDA called the *QueryBuilder*. Queries are,
-very loosely defined, questions to your database. We will first show you
-some simple examples and tasks on how to explore your database. Then we
-will proceed to a more concrete exercise on the screening of magnetic
-and metallic perovskites.\
-
-Task 1 - Introduction to QueryBuilder
--------------------------------------
-
-| Node & subclasses | Number in DB
-|-------------------| --------------
-| Node | 4707
-| StructureData | 621
-| ParameterData | 1338
-| KpointsData | 861
-| UpfData | 99
-| JobCalculation | 448
-
- : List of some Node subclasses and how many times they occur in our
- test database.
-
-[fig.types]
-
-In this task we will use the QueryBuilder to do some basic queries and
-understand our database. As a first step we should import our querying
-tool, the *QueryBuilder*.
-
-from aiida.orm.querybuilder import QueryBuilder
-
-After the above import, we create our first query. To do so, we will
-have to instantiate a QueryBuilder instance:
-
-```python
-qb = QueryBuilder()
-```
-
-Our query is still empty, we have not yet defined what we want to see.
-For example, we will ask for all the nodes of our database. This is as
-simple as appending the Node class to the query that we construct.
-
-```python
-qb.append(Node)
-```
-
-At this point, we can finish our query by asking back all nodes and by
-typing
-
-```python
-qb.all() # Returns all nodes in the database
-```
-
-However, this command will return us all the Nodes directly, which may
-not be the most wise thing to do considering that is the biggest family
-of AiiDA stored objects that we can query. To understand the size of the
-result, we can type the following command:
-
-```python
-qb.count() # Returns an integer, the number of nodes in the database
-```
-
-If you are interested to retrieve a subclass of a node, append that
-specific subclass instead of Node:
-
-```python
-CifData = DataFactory('cif')
-qb = QueryBuilder() # Creating a new QueryBuilder instance
-qb.append(CifData) # Telling the QueryBuilder instance that I want a cif data type
-qb.all() # Asking for all the results!
-```
-
-**Exercise:**
-
-- Try now to find the number of instances for some subclasses of Node
- (e.g. StructureData, ParameterData, etc.) that are stored in your
- database. The result should look like . Of course, the numbers can
- be different!
-
-**Comment:** If you are familiar with the SQL (Structured Query
-Language) syntax then you may wonder what the issued SQL command is.
-This can be easily seen by typing:
-
-```python
-str(qb)
-```
-
-**Comment:** If you want to get inspired by the available QueryBuilder
-options you can just press the *tab* key in an interactive shell (after
-typing `qb.`) to see the available options.
-
-**Comment:** After you run a query, a new `QueryBuilder` instance needs
-to be defined if you want to make a new query.
-
-Task 2 - Projections and filters
---------------------------------
-
-| Operator | Datatype | Example
-|-------------| -------------------------| ------------------------------------
-| == | All | {'==':12}
-| in | All | {'in':['FINISHED', 'PARSING']}
-| >,<,<=,>= | floats, integers, dates | {'>':5.2}
-| like | Chars | {'like':'calculation%'}
-| ilike | Chars | {'ilike':'caLculAtioN%'}
-| or | | {'or':[{'<':5.3}, {'>':6.3}]}
-| and | | {'and':[{'>':5.3}, {'<':6.3}]}
-
- : Operators currently implemented for all backends.
-
-[tab.filterops]
-
-In database language performing a projection means to extract one or
-more specific columns from a table. In the AiiDA language this is
-equivalent to say that we select what properties a query should return
-out of the queried objects. For example, we might be interested only in
-the id of a set of nodes (or their creation date, or any stored value).
-To this purpose we should suitably instruct a QueryBuilder object by
-means of the "project" key. For example, if we would like to get all the
-ids of the nodes, we would type the following:
-
-```python
-qb = QueryBuilder() qb.append(Node, project=["id"]) qb.all()
-```
-
-|---------| -------------------------|
-|Entity | Properties |
-|---------| -------------------------|
-|Node | id, uuid, type, label, description, ctime, mtime|
-|Computer | id, uuid, name, hostname, description, enabled, transport_type, scheduler_type|
-|User | id, email, first_name, last_name, institution|
-|Group | id, uuid, name, type, time, description|
-|---------| -------------------------|
-
- : A selection of entities and some of their properties.
-
-[tab.properties]
-
-Please note that if you would like to perform an operation on the *pk*
-of a node, you should use the keyword *id* in QueryBuilder queries.
-
-Most likely, performing a query implies to select only those elements
-that fulfill certain criteria. For example, we might want to select all
-the calculations that were launched on a specific date. In database
-language, this is called "adding a filter" to a query. A filter is a
-boolean operator that returns True or False. lists all operators that we
-implemented. A selection of entities and some of their properties that
-you can use at your projections and filters can be found at table .
-
-If you want to add filters to your query, you simply add the *filters*
-keyword with a dictionary. Suppose you want to know the creation date of
-a structure of which you know the uuid:
-
-```python
-qb = QueryBuilder() # Instantiating a new QueryBuilder
-qb.append(CifData, # I want structures!
- project=["ctime"], # I'm interested in creation time!
- filters={"uuid": {"==":"b84e8d4c-908b-45b4-8015-3ace540f7dd6"}}
-) # I want the structure with this UUID
-qb.all()
-```
-
-Try it out! There is also the possibility to combine multiple filters on
-the same object using the "and" or the "or" keyword in the filter
-section. Let's see an example.
-
-```python
-from datetime import datetime, timedelta
-qb = QueryBuilder()
-qb.append(CifData,
- project=["uuid"], # I want to see only the UUID
- filters={ "or":[ # First filter is an or statement
- { "ctime": {">":datetime.now() - timedelta(days=12) }},
- { "label": "Raspa test" }
- ]}
-)
-qb.all()
-```
-
-In the above example we added an "or" keyword between the two filters.
-The query return every structure in the database that was created in the
-last 12 days or is named "graphene".
-
-**Hints for the exercises:**
-
-- The operator '>', '<' works with date-type properties with the expected behavior.
-
-- For your date comparisons you will need to create a `datetime`
- object to which you can assign a date of your preference. You will
- have to do the necessary import (`from datetime import datetime`)
- and create an object by giving a specific date. E.g.
- `datetime(2015, 12, 26)`. For further information, you can consult the Python's
- online documentation.
-
-**Exercises:**
-
-- Write a query that returns all instances of StructureData that have been created after the 1st of January 2016.
-
-- Write a query that returns all instances of Group whose name starts with "tutorial".
diff --git a/docs/pages/2018_EPFL_molsim/tutorial/verdi-commands.md b/docs/pages/2018_EPFL_molsim/tutorial/verdi-commands.md
deleted file mode 100644
index 048ae703..00000000
--- a/docs/pages/2018_EPFL_molsim/tutorial/verdi-commands.md
+++ /dev/null
@@ -1,269 +0,0 @@
-# Using the verdi command line
-
-This part of the tutorial will help you familiarize with the command
-line utility `verdi`, one of the most common ways to
-interact with AiiDA. `verdi` with its subcommands enables a
-variety of operations such as inspecting the status of ongoing or
-terminated calculations, showing the details of calculations, computers,
-codes, or data structures, access the input and the output of a
-calculation, etc. Similar to the `bash` shell, verdi command support Tab
-compltion. Try right now to type `verdi` in a terminal and
-tap Tab twice to have a list of subcommands. Whenever you need the
-explanation of a command type `verdi help` or add
-`-h` flag if you are using any of the `verdi`
-subcommands. Finally, fields enclosed in angular brackets, such as
-``, are placeholders to be replaced by the actual value of that
-field (an integer, a string, etc...).
-
-## The list of calculations
-
-Let us try our first `verdi` commands. Type in the terminal
-
-```console
-verdi calculation list
-```
-
-(Note: the first time you run this command, it might take some seconds
-as it is the first time you are accessing the database in the virtual
-machine. Following calls will be faster). This will print the list of
-ongoing calculations, which should be empty. The first output line
-should look like
-
-```console
-# Last daemon state_updater check: 0h:00m:18s ago (at 17:17:26 on 2016-05-31)
-```
-
-In order to print a list with all calculations that finished correctly
-in the AiiDA database, you can use the `-a/--all-states`
-and `-A/--all-users` flag as follows:
-
-```console
-verdi calculation list –all-states –all-users
-```
-
-Another very typical option combination allows to get calculations in
-*any* state (flag `-a`) d in the past
-`NUM` days (`-p `): e.g., for calculation
-in the past 1 day: `verdi calculation list -p1 -a`.
-
-Each row of the output identifies a calculation and shows several
-information about it. For a more detailed list of properties, choose one
-row by noting down its pk number and type in the terminal
-
-```console
-verdi calculation show
-```
-
-The output depends on the specific pk chosen and should inform you about
-the input nodes (e.g. initial structure, settings etc.), the output
-nodes (e.g. output parameters, etc.). An example of RASPA calculation
-(pk=3006) output is provided below
-
-```console
- ----------- ------------------------------------
- type RaspaCalculation
- pk 3006
- uuid b09ee4b0-8bfe-4083-9371-09b47bf98dce
- label
- description
- ctime 2018-05-07 01:31:29.906303+00:00
- mtime 2018-05-07 10:33:39.871720+00:00
- computer [1] deneb-lsmo
- code raspa
- ----------- ------------------------------------
- ##### INPUTS:
- Link label PK Type
- ------------ ---- -------------
- parameters 2757 ParameterData
- structure 2886 CifData
- ##### OUTPUTS:
- Link label PK Type
- ----------------- ---- -------------
- remote_folder 3314 RemoteData
- retrieved 1132 FolderData
- output_parameters 1131 ParameterData
- component_0 1130 ParameterData
-```
-
-## A typical AiiDA graph
-
-Note that pk number shown in the examples may be different for your
-database.
-
-AiiDA stores in the database the inputs required by a calculation as
-well as the its outputs.
-
-
-
-You can create a similar graph for any calculation node by using the
-utility `verdi graph `. For example, before
-you obtained information (in text form) for `pk=3006`. To visualize
-similar information in graph(ical) form, run (replacing
-`` with your number):
-
-```console
-verdi graph
-```
-
-This command creates the file ``.dot that can be rendered by means
-of the utility `dot`. Convert it to PDF and have a look:
-
-```console
-dot -Tpdf -o .pdf .dot
-evince .pdf
-```
-
-Spend some time to familiarize with the graph structure. Identify the
-root node (highlighted in blue) and trace back the structure used as an
-input. This is an example of a Raspa calculation. We will now inspect
-the different elements of this graph.
-
-## Inspecting the nodes of a graph
-
-### ParameterData and Calculations
-
-Now, let us have a closer look to the some of the nodes appearing in the
-graph. Choose the node of the type `ParameterData` with input link name
-`parameters` (ex. pk=2757) and type in the terminal:
-
-```console
-verdi data parameter show
-```
-
-A `ParameterData` contains a dictionary (i.e., key–value pairs), stored
-in the database in a format ready to be queried (we will learn how to
-run queries later on in this tutorial). The command above will print the
-content dictionary, containing the parameters used to define the input
-file for the calculation. You can compare the dictionary with the
-content of the raw input file to Raspa (that was d by AiiDA) via
-the command
-
-```console
-verdi calculation inputcat
-```
-
-where you substitute the pk of the calculation node (e.g. pk=3006).
-Check the consistency of the parameters written in the input file and
-those stored in the ParameterData node. Even if you don’t know the
-meaning of the input flags of a Raspa calculation, you should be able to
-see how the input dictionary has been converted into the input file.
-
-The previous command just printed the content of the “default” input
-file `simulation.input`. To see a list of all the files used to run a
-calculation (input file, submission script, etc.) type instead
-
-```console
-verdi calculation inputls
-```
-
-(Adding a `--color` flag allows you to easily distinguish files from
-folders by a different coloring).
-
-Once you know the name of the file you want to visualize, you can call
-the `verdi calculation inputcat` command specifying the
-path. For instance, to see the submission script, you can do:
-
-```console
-verdi calculation inputcat -p ~a~iidasubmit.sh
-```
-
-### CifData
-
-Now let us focus on CifData objects, such as node pk=2886 of the graph.
-A CifData object contains a crystal structure and can be inspected
-interactively using viewers like `jmol` or `vesta`. Type in the terminal
-
-```console
-verdi data cif show –format jmol 2886
-```
-
-to show the selected structure.
-
-### Codes and computers
-
-Let us focus now on the nodes of type `code`. A code represents (in the
-database) the actual executable used to run the calculation. Find the pk
-of such a node in the graph and type
-
-```console
-verdi code show
-```
-
-The command prints information on the plugin used to interface the code
-to AiiDA, the remote machine on which the code is executed, the path of
-its executable, etc. To have a list of all available codes type
-
-```console
-verdi code list -a -A
-```
-
-Among the entries of the output you should also find the code just
-shown.
-
-Similarly, the list of computers on which AiiDA can submit calculations
-is accessible by means of the command
-
-```console
-verdi computer list -a
-```
-
-(`-a` shows all computers, also the one imported in your
-database but that you did not configure, i.e., to which you don’t have
-access). Details about each computer can be obtained by the command
-
-```console
-verdi computer show
-```
-
-Now you have the tools to answer the question:
-
-What is the scheduler installed on the computer where the calculations
-of the graph have run?
-
-### Calculation results
-
-The results of a calculation can be accessed directly from the
-calculation node. Type in the terminal
-
-```console
-verdi calculation res
-```
-
-which will print the output dictionary of the “scalar” results parsed by
-AiiDA at the end of the calculation. Note that this is actually a
-shortcut for
-
-```console
-verdi data parameter show
-```
-
-where `pk2` refers to the ParameterData node attached as an output of
-the calculation node, with link name `output_parameters`.
-
-By looking at the output of the command, what is the averate total
-energy of the calculation having pk=3006?
-
-One can access the component-specific output parameters in the same way
-(using pk = 1130 that corresponds to the component 0, methane)
-
-```console
-verdi data parameter show
-```
-
-Similarly to what you did for the calculation inputs, you can access the
-output files via the commands
-
-```console
-verdi calculation outputls
-```
-
-and
-
-```console
-verdi calculation outputcat -p
-```
-
-Use the latter to verify that the average total energy that you have
-found in the last step has been extracted correctly from the output file
-(Hint: filter the lines containing the string “Total energy”, e.g. using
-`grep Total energy: -A 8`, to isolate the relevant lines).
diff --git a/docs/pages/2018_PRACE_MaX/index.rst b/docs/pages/2018_PRACE_MaX/index.rst
deleted file mode 100644
index 5b15dead..00000000
--- a/docs/pages/2018_PRACE_MaX/index.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-+-----------------+-------------------------------------------------------------------+
-| Related resources |
-+=================+===================================================================+
-| Virtual Machine | `Quantum Mobile 18.04.0-tutorial`_ (`installation instructions`_) |
-+-----------------+-------------------------------------------------------------------+
-| python packages | `aiida-core 1.0.0a1`_, `aiida-quantumespresso 3.0.0a1`_ |
-+-----------------+-------------------------------------------------------------------+
-| codes | `Quantum Espresso 6.2.1`_ |
-+-----------------+-------------------------------------------------------------------+
-
-.. _Quantum Mobile 18.04.0-tutorial: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/quantum_mobile_aiida_tutorial_May_2018.ova
-.. _installation instructions: https://object.cscs.ch/v1/AUTH_b1d80408b3d340db9f03d373bbde5c1e/marvel-vms/INSTALL_aiida_tutorial_May_2018.txt
-.. _aiida-core 1.0.0a1: https://github.com/aiidateam/aiida_core/releases/tag/v1.0.0a1
-.. _aiida-quantumespresso 3.0.0a1: https://github.com/aiidateam/aiida-quantumespresso/releases/tag/v3.0.0a1
-.. _Quantum Espresso 6.2.1: https://github.com/QEF/q-e/releases/tag/qe-6.2.1
-
-The `PRACE-MaX Tutorial on high-throughput computations: general methods
-and applications using AiiDA `__
-was held from May 30th to June 1st, 2018 at the Cineca HPC facility in
-Bologna, Italy.
-
-
-PRACE-MaX tutorial on high-throughput computations
-==================================================
-
-The instructions below have been converted from the `original LaTeX source
-`__.
-See also the `original PDF `_.
-
-Sections
---------
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- Preliminaries <./sections/preliminaries>
- ./sections/verdi_cmdline
- ./sections/verdi_shell
- ./sections/calculations
- ./sections/querybuilder
- ./sections/workflows
- ./sections/bands
-
-Appendices
-----------
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- ./sections/appendix_input_validation
- ./sections/appendix_restarting_calculations
- ./sections/appendix_queries
- ./sections/appendix_workflow_logic
diff --git a/docs/pages/2018_PRACE_MaX/notebooks/.gitignore b/docs/pages/2018_PRACE_MaX/notebooks/.gitignore
deleted file mode 100644
index c7ec5d9b..00000000
--- a/docs/pages/2018_PRACE_MaX/notebooks/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-querybuilder-tutorial.ipynb
-querybuilder-solutions.ipynb
diff --git a/docs/pages/2018_PRACE_MaX/notebooks/querybuilder-template.ipynb b/docs/pages/2018_PRACE_MaX/notebooks/querybuilder-template.ipynb
deleted file mode 100644
index c350b5ee..00000000
--- a/docs/pages/2018_PRACE_MaX/notebooks/querybuilder-template.ipynb
+++ /dev/null
@@ -1,1013 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# AiiDA's QueryBuilder"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "*Import statements - make sure to execute the cell below this one (it may be hidden)*"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true,
- "hide_input": false
- },
- "outputs": [],
- "source": [
- "from IPython.display import Image\n",
- "from datetime import datetime, timedelta\n",
- "import numpy as np\n",
- "from aiida import load_dbenv, is_dbenv_loaded\n",
- "from matplotlib import gridspec, pyplot as plt\n",
- "if not is_dbenv_loaded():\n",
- " load_dbenv()\n",
- "from aiida.orm import load_node, Node, Group, Computer, User\n",
- "from aiida.orm import CalculationFactory, DataFactory\n",
- "from aiida.orm.calculation.job import JobCalculation\n",
- "from aiida.orm.querybuilder import QueryBuilder\n",
- "\n",
- "PwCalculation = CalculationFactory('quantumespresso.pw')\n",
- "StructureData = DataFactory('structure')\n",
- "KpointsData = DataFactory('array.kpoints')\n",
- "ParameterData = DataFactory('parameter')\n",
- "UpfData = DataFactory('upf')\n",
- "def plot_results(query_res):\n",
- " \"\"\"\n",
- " :param query_res: The result of an instance of the QueryBuilder\n",
- " \"\"\"\n",
- " smearing_unit_set,magnetization_unit_set,pseudo_family_set = set(), set(), set()\n",
- " # Storing results:\n",
- " results_dict = {}\n",
- " for pseudo_family, formula, smearing, smearing_units, mag, mag_units in query_res:\n",
- " if formula not in results_dict:\n",
- " results_dict[formula] = {}\n",
- " # Storing the results:\n",
- " results_dict[formula][pseudo_family] = (smearing, mag)\n",
- " # Adding to the unit set:\n",
- " smearing_unit_set.add(smearing_units)\n",
- " magnetization_unit_set.add(mag_units)\n",
- " pseudo_family_set.add(pseudo_family)\n",
- "\n",
- " # Sorting by formula:\n",
- " sorted_results = sorted(results_dict.items())\n",
- " formula_list = zip(*sorted_results)[0]\n",
- " nr_of_results = len(formula_list)\n",
- "\n",
- " # Checks that I have not more than 3 pseudo families.\n",
- " # If more are needed, define more colors\n",
- " #pseudo_list = list(pseudo_family_set)\n",
- " if len(pseudo_family_set) > 3:\n",
- " raise Exception('I was expecting 3 or less pseudo families')\n",
- "\n",
- " colors = ['b', 'r', 'g']\n",
- "\n",
- " # Plotting:\n",
- " plt.clf()\n",
- " fig=plt.figure(figsize=(16, 9), facecolor='w', edgecolor=None)\n",
- " gs = gridspec.GridSpec(2,1, hspace=0.01, left=0.1, right=0.94)\n",
- "\n",
- " # Defining barwidth\n",
- " barwidth = 1. / (len(pseudo_family_set)+1)\n",
- " offset = [-0.5+(0.5+n)*barwidth for n in range(len(pseudo_family_set))]\n",
- " # Axing labels with units:\n",
- " yaxis = (\"Smearing energy [{}]\".format(smearing_unit_set.pop()),\n",
- " \"Total magnetization [{}]\".format(magnetization_unit_set.pop()))\n",
- " # If more than one unit was specified, I will exit:\n",
- " if smearing_unit_set:\n",
- " raise Exception('Found different units for smearing')\n",
- " if magnetization_unit_set:\n",
- " raise Exception('Found different units for magnetization')\n",
- " \n",
- " # Making two plots, upper for the smearing, the lower for magnetization\n",
- " for index in range(2):\n",
- " ax=fig.add_subplot(gs[index])\n",
- " for i,pseudo_family in enumerate(pseudo_family_set):\n",
- " X = np.arange(nr_of_results)+offset[i]\n",
- " Y = np.array([thisres[1][pseudo_family][index] for thisres in sorted_results])\n",
- " ax.bar(X, Y, width=0.2, facecolor=colors[i], edgecolor=colors[i], label=pseudo_family)\n",
- " ax.set_ylabel(yaxis[index], fontsize=14, labelpad=15*index+5)\n",
- " ax.set_xlim(-0.5, nr_of_results-0.5)\n",
- " ax.set_xticks(np.arange(nr_of_results))\n",
- " if index == 0:\n",
- " plt.setp(ax.get_yticklabels()[0], visible=False)\n",
- " ax.xaxis.tick_top()\n",
- " ax.legend(loc=3, prop={'size': 18})\n",
- " else:\n",
- " plt.setp(ax.get_yticklabels()[-1], visible=False)\n",
- " for i in range(0, nr_of_results, 2):\n",
- " ax.axvspan(i-0.5, i+0.5, facecolor='y', alpha=0.2)\n",
- " ax.set_xticklabels(list(formula_list),rotation=90, size=14, ha='center')\n",
- " plt.show()\n",
- "\n",
- "def generate_query_graph(qh, out_file_name):\n",
- "\n",
- " def draw_vertice_settings(idx, vertice, **kwargs):\n",
- " \"\"\"\n",
- " Returns a string with all infos needed in a .dot file to define a node of a graph.\n",
- " :param node:\n",
- " :param kwargs: Additional key-value pairs to be added to the returned string\n",
- " :return: a string\n",
- " \"\"\"\n",
- " if 'calculation' in vertice['type']:\n",
- " shape = \"shape=polygon,sides=4\"\n",
- " elif 'code' in vertice['type']:\n",
- " shape = \"shape=diamond\"\n",
- " else:\n",
- " shape = \"shape=ellipse\"\n",
- " filters = kwargs.pop('filters', None)\n",
- " additional_string = \"\"\n",
- " if filters:\n",
- " additional_string += '\\nFilters:'\n",
- " for k,v in filters.items():\n",
- " additional_string += \"\\n {} : {}\".format(k,v)\n",
- "\n",
- "\n",
- " label_string = \" ('{}')\".format(vertice['tag'])\n",
- "\n",
- " labelstring = 'label=\"{} {}{}\"'.format(\n",
- " vertice['type'], #.split('.')[-2] or 'Node',\n",
- " label_string,\n",
- " additional_string)\n",
- " #~ return \"N{} [{},{}{}];\".format(idx, shape, labelstring,\n",
- " return \"{} [{},{}];\".format(vertice['tag'], shape, labelstring)\n",
- " nodes = {v['tag']:draw_vertice_settings(idx, v, filters=qh['filters'][v['tag']]) for idx, v in enumerate(qh['path'])}\n",
- " links = [(v['tag'], v['joining_value'], v['joining_keyword']) for v in qh['path'][1:]]\n",
- "\n",
- " with open('temp.dot','w') as fout:\n",
- " fout.write(\"digraph G {\\n\")\n",
- " for l in links:\n",
- " fout.write(' {} -> {} [label=\" {}\"];\\n'.format(*l))\n",
- " for _, n_values in nodes.items():\n",
- " fout.write(\" {}\\n\".format(n_values))\n",
- "\n",
- " fout.write(\"}\\n\")\n",
- " import os\n",
- " os.system('dot temp.dot -Tpng -o {}'.format(out_file_name))\n",
- "\n",
- "def store_formula_in_extra():\n",
- " qb = QueryBuilder()\n",
- " qb.append(StructureData, filters={'extras':{'!has_key':'formula'}})\n",
- " for structure, in qb.all():\n",
- " structure.set_extra('formula', structure.get_formula(mode='count'))\n",
- "\n",
- "store_formula_in_extra()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 1. Introduction to the QueryBuilder\n",
- "As you will use `AiiDA` to run your calculations, the database that stores all the data and the provenance, will quickly grow to be very large. So in order to find a needle that we might be looking for in this big haystack, we need an efficient excavation and search tool. The tool that `AiiDA` provides to do exactly this is called the `QueryBuilder`. The `QueryBuilder` acts as the gatekeeper to your database, that you can ask questions about the contents of your database (also referred to as queries), by specifying what it is that you are looking for. In this part of the tutorial, we will focus on how to use the `QueryBuilder` to make these queries and understand/use the results.\n",
- "\n",
- "In order to use the `QueryBuilder`, we first need to import it. We can accomplish this by executing the `import` statement in the following cell. Go ahead and select the next cell, and press `Shift+Enter`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "from aiida.orm.querybuilder import QueryBuilder"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Before we can ask the `QueryBuilder` questions about our database, we first need to create an instance of it:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now that we have an instance of our `QueryBuilder` which we named `qb`, we are ready to start asking it about the contents of our database. For example, we may want to know exactly how many nodes there are in our database. To tell `qb` that we are interested in all the occurrences of the `Node` class in our database, we `append` it to the list of objects it should find. The method is called `append`, because, as we will see later, you can append to a `QueryBuilder` instance consecutively, as if you had a list. \n",
- "What we are doing is querying a graph, and for every vertice of the graph in our subquery, we will use one `append` call."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb.append(Node)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We have now narrowed down the scope of `qb` to just the nodes that are present in our database. To learn how many nodes there are exactly, all we have to do is to ask `qb` to count them."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb.count()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now as you may have learned in previous sections of the tutorial, nodes come in different kinds and flavors. For example, all our crystal structures that we have stored in the database, are saved in a node that is of the type `StructureData`. If instead of all the nodes, rather we would like to count only the structure nodes, we simply tell our `QueryBuilder` to narrow its scope to only objects of the `StructureData` type. Since we are creating a new query, we have to create a new instance of the `QueryBuilder`. In the next cell, we have typed part of the code to count all the structure nodes. See if you can finish the line with the comment, to tell the `QueryBuilder` that you are only interested in `StructureData` nodes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "qb = QueryBuilder()\n",
- "qb.append() # How do we finish this line to tell the query builder to count only the structure nodes?\n",
- "qb.count()\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.count()\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Instead of just counting how many structure nodes we have, we may also actually want to see some of them. This is as easy as telling our `QueryBuilder` that we are not interested in the `count` but rather that we want to retrieve `all` the nodes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note that this command is very literal and does in fact retrieve **all** the structure nodes that are stored in your database, which may become very slow if your database becomes very large. One solution is to simply tell the `QueryBuilder` that we are for example only interested in 5 structure nodes. This can be done with the `limit` method as follows:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Another option is to simply use the concept of array slicing, native to python, to specify a subset of the total return set to be returned. Notice that this example can be very slow in big databases. When you want performance, use the functionality native to the QueryBuilder!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb.limit(None)\n",
- "qb.all()[:7]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If we want to know a little bit more about the retrieved structure nodes, we can loop through our results. This allows one for example to print the formula of the structures"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.limit(5)\n",
- "for structure, in qb.all():\n",
- " print structure.get_formula()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This is just a simple example how we can employ the `QueryBuilder` to get details about the contents of our database. We have now seen simple queries for the `Node` and `StructureData` classes of nodes, but the same rules apply to all the `AiiDA` node classes. For example we may want to count the number of entries for each of the node classes in the following list"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "class_list = [Node, StructureData, KpointsData, ParameterData, UpfData]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Using the tools we have learned so far, we can build a table of the number of occurrences of each of these node classes that are stored in our database. We simply loop over the `class_list` and create a `QueryBuilder` for each and count the entries."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "for class_name in class_list:\n",
- " qb = QueryBuilder()\n",
- " qb.append(class_name)\n",
- "#TUT_USER_START\n",
- " print # Finish this line to print the results!\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- " print '{:>15} | {:6}'.format(class_name.__name__, qb.count())\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If all went well, you should see something like the following, where of course the numbers may differ for your database\n",
- "\n",
- "Class name | Entries\n",
- "---------------|--------\n",
- " Node | 10273 \n",
- " StructureData | 271 \n",
- " KpointsData | 953 \n",
- " ParameterData | 2922 \n",
- " UpfData | 85 "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 2. Projection and filters\n",
- "Up till now we have always asked the `QueryBuilder` to return the entire node, of whatever class of nodes that we specified. However, we might not necessarily be interested in all the node's properties, but rather just a select set or even just a single property. We can tell the `QueryBuilder` which properties we would like returned, by asking it to **project** those properties in the result. For example, we may only want to get the uuid's of a set of nodes. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(Node, project=['uuid'])\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We inform the `QueryBuilder` that we are only interested in the `uuid` property of the `Node` class by specifing the `project` keyword in the `append` call. Note that the value that we assign to `project` is a list, as we may want to specify more than one property. See if you can get the `QueryBuilder` to return *both* the `id` and the `uuid` of the first 5 `Node`'s in the following cell."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "#TUT_USER_START\n",
- "qb.append(Node, project=)#? What should the value be for the project key\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(Node, project=['id', 'uuid'])\n",
- "#TUT_SOLUTION_END\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To give you an idea of the various properties that you can project for some of the `AiiDA` node classes you can consult the following table.\n",
- "Note that this is by no means an exhaustive list\n",
- "\n",
- "Class | Properties\n",
- "---------|-----------\n",
- "Node | `id`, `uuid`, `type`, `label`, `description`, `ctime`, `mtime`\n",
- "Computer | `id`, `uuid`, `name`, `hostname`, `description`, `enabled`, `transport_type`, `scheduler_type`\n",
- "User | `id`, `email`, `first_name`, `last_name`, `institution`\n",
- "Group | `id`, `uuid`, `name`, `type`, `time`, `description`"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The same properties can also be used to *filter* for specific nodes in your database. Up till now, we only ever asked to return the `QueryBuilder` all the instances of a certain type of node, or at best a limited number of those. But we might be interested in a very specific node. For example, we may have the `id` of a certain node and we would like to know when it was created and last modified. We can tell the `QueryBuilder` to select nodes that only match that criterion, by telling it to **filter** based on that property."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(Node, project=['ctime', 'mtime'], filters={'id': {'==': 1}})\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note the syntax of the `filters` keyword. The value is a dictionary, where the keys indicate the node property that it is supposed to operate on, in this case the `id` property. The value of that key is again itself a dictionary, where the key indicates the logical operator `==` and the value corresponds to the value of the property.\n",
- "\n",
- "You may have multiple criteria that you want to filter for, in which case you can use the logical `or` and `and` operators. Let's say, for example, that you want the `QueryBuilder` to retrieve all the `StructureData` nodes that have a certain `label` **and** where created no longer than 10 days ago. You can translate this criterion by making use of the `and` operator which allows you to specify multiple filters that all have to be satisfied."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(\n",
- " Node, \n",
- " filters={\n",
- " 'and': [\n",
- " {'ctime': {'>': datetime.now() - timedelta(days=12)}},\n",
- " {'label': {'==':'graphene'}}\n",
- " ]\n",
- " }\n",
- ")\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "You will have noticed that the `>` operator, and its related operators, can work with python `datetime` objects. These are just a few of the operators that `QueryBuilder` understands. Below you find a table with the various logical operators that you can use\n",
- "\n",
- "Operator | Data type | Example | Description\n",
- "---------------------|-----------------------|------------------------------------|------------------\n",
- "`==` | all | `{'==': '12'}` | equality operator\n",
- "`in` | all | `{'in':['FINISHED', 'PARSING']}` | member of a set\n",
- "`<`, `>`, `<=`, `>=` | float, int, datetime | `{'>': 5.2}` | size comparison operator\n",
- "`like` | char, str | `{'like': 'calculation%'}` | string comparison, `%` is wildcard\n",
- "`ilike` | char, str | `{'ilike': 'caLCulAtion%'}` | string comparison, capital insensitive\n",
- "`or` | | `{'or': [{'<': 5.3}, {'>': 6.3}]}` | logical or operator\n",
- "`and` | | `{'and': [{'>=': 2}, {'<=': 6}]}` | logical and operator"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As an exercise, try to write a query below that will retrieve all `Group` nodes whose `name` property starts with the string `tutorial`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# Write your query here\n",
- "qb = QueryBuilder()\n",
- "qb.append(Group, filters={'name': {'like': 'tutorial%'}})\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3. Defining relationships between query clauses"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "So far we have seen how we can use the `QueryBuilder` to search the database for entries of a specific node type, potentially projecting only specific properties and filtering for certain property values. However, our nodes do not live in a vacuum, but they are often related to one another. Especially, there will be interesting relationships between different types of nodes. Therefore we would like to be able to search for nodes, based on a certain relationship that they might have with other nodes. Consider for example that you have a `StructureData` node that was produced by some calculation. How would we be able to retrieve that calculation?\n",
- "\n",
- "To accomplish this, we need to be able to tell the `QueryBuilder` what the relationship is between the nodes that we are interested in. If we take the example of the structure node but abstracting it to all structure nodes, we could do the following to find all the structure nodes that were generated as an output by a `PwCalculation` node."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation, tag='calculation')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We are looking for descendants of `PwCalculation` nodes, so we `append` it to a `QueryBuilder` instance. In the future, we need to be able to reference to this clause and therefore we give it a `tag` with the `tag` keyword."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb.append(StructureData, output_of='calculation')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The goal was to find `StructureData` nodes, so we `append` that to the `qb`. However, we didn't want to find just any `StructureData` nodes; they had to be an output of `PwCalculation`. Note how we expressed this relation by the `output_of` keyword and using the `tag` name `calculation` that we had just assigned in the previous `append` statement.\n",
- "Now all we have to do is execute the query to retrieve our structures:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "What we did can be visualized schematically."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query1.png')\n",
- "Image(filename='query1.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The `output_of` keyword is but one of many potential relationships that exist between the various `AiiDA` nodes, that are implemented in the `QueryBuilder`. The table below gives an overview of the implemented relationships, which nodes they are defined for and which relation it implicates."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Entity from\t| Entity to\t| Relationship | Explanation\n",
- "------------|-----------|---------------|------------\n",
- "Node | Node | input_of | One node as input of another node\n",
- "Node | Node | output_of | One node as output of another node\n",
- "Node | Node | ancestor_of | One node as the ancestor of another node\n",
- "Node | Node | descendant_of | One node as descendant of another node\n",
- "Group | Node | group_of | The group of a node\n",
- "Node | Group | member_of | The node is a member of a group\n",
- "Computer | Node | computer_of | The computer of a node\n",
- "Node | Computer | has_computer | The node of a computer\n",
- "User | Node | creator_of | The creator of a node is a user\n",
- "Node | User | created_by | The node was created by a user"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As an exercise, see if you can write a query that will return all the `UpfData` nodes that are a member of a `Group` whose name starts with the string `SSSP`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "qb = QueryBuilder()\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb = QueryBuilder()\n",
- "qb.append(Group, filters={'name': {'like': 'SSSP%'}}, tag='group')\n",
- "qb.append(UpfData, member_of='group')\n",
- "qb.all()\n",
- "#TUT_SOLUTION_END\n",
- "# Here I also visualize what's going on:\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query2.png')\n",
- "Image(filename='query2.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 4. Attributes and extras"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In section 2, we showed you how you can `project` specific properties of a `Node` and gave a list of properties that a `Node` instance possesses. Since then, we have come across a lot of different `AiiDA` data nodes, such as `StructureData` and `UpfData`, that were secretly `Node`'s in disguise. Or to put it correctly, as `AiiDA` employs the object-oriented programming paradigm, both `StructureData` and `UpfData` are examples of subclasses of the `Node` class and therefore inherit its properties. That means that whatever property a `Node` has, both `StructureData` and `UpfData` will have too. However, there is a semantic difference between a `StructureData` node and a `UpfData`, and so we may want to add a property to one that would not make sense for the other. To solve this, `AiiDA` introduces the concept of `attributes`. These are similar to properties, except that they are specific to the `Node` type that they are attached to. This allows you to add an `attribute` to a certain node, without having to change the implementation of all the others.\n",
- "\n",
- "For example, the `ParameterData` nodes that are generated as output of `PwCalculation`'s may have an attribute named `wfc_cutoff`. To project for this particular `attribute`, one can use exactly the same syntax as shown in section 2 for the regular `Node` properties, and one has to only prepend `attributes.` to the attribute name. Demonstration:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation, tag='pw')\n",
- "qb.append(ParameterData, output_of='pw', project=[\"attributes.wfc_cutoff\"])\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note that not every `ParameterData` node has to have this attribute, in which case the `QueryBuilder` will return the python keyword `None`. Similar to the `attributes`, nodes also can have `extras`, which work in the same way, except that `extras` are mutable, which means that their value can be changed even after a node instance has been stored.\n",
- "\n",
- "If you are not sure which attributes a given node has, you can use the `get_attrs()` method to simply retrieve them all. It will return a dictionary with all the attributes the node has."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation)\n",
- "node, = qb.first()\n",
- "node.get_attrs()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The element type symbol of a pseudopotential, that is represented by a `UpfData` node, is stored in the `element` attribute. Using the knowledge that filtering on attributes works exactly as for normal node properties, see if you can write a query that will search your database for pseudopotentials for silicon."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(UpfData, filters={'attributes.element': {'==': 'Si'}})\n",
- "qb.all()\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**For more exercises on relationships and attributes/extras, have a look at the appendix of the provided PDF.**"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
- "source": [
- "## 5. A small high-throughput study"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "*The following section assumes that a specific dataset is present in your current AiiDA profile. If you are not running this script on the Virtual Machine of the AiiDA tutorial, this script will not produce the desired output.\n",
- "You can download the Virtual Machine image at www.aiida.net/tutorial along with the tutorial text.*"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this part of the tutorial, we will focus on how to systematically retrieve, query and analyze the results of\n",
- "multiple calculations using AiiDA. We know you’re able to do this yourself, but to save time, a set of calculations\n",
- "have already been done with AiiDA for you on 57 perovskites, using three different pseudopotential families (LDA,\n",
- "PBE and PBESOL, all from GBRV 1.2). These calculations are spin-polarized (without spin-orbit coupling), use a Gaussian smearing and perform a variable-cell relaxation of the full unit cell. The idea of this part of the tutorial is to “screen” for magnetic and metallic perovskites in a “high-throughput” way. As you learned in the first part of the tutorial, AiiDA allows to organize calculations in groups. Once more check the list of groups in your database by typing:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "!verdi group list -A"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The calculations needed for this task were put in three different groups whose names start with \"tutorial\" (one for each pseudopotential family). The main task is to make a plot showing, for all perovskites and for each pseudopotential family, the total magnetization and the -T S contribution from the smearing to the total energy."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Start building the query\n",
- "So we first of all need to instantiate a QueryBuilder instance. We `append` the groups of interest, which means that we select only groups that start with the string `tutorial_`. We can execute the query after this append (this will not affect the final results) and check whether we have retrieved 3 groups."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# Instantiating QB:\n",
- "qb = QueryBuilder()\n",
- "# Appending the groups I care about:\n",
- "qb.append(Group, filters={'name':{'like':'tutorial_%'}}, project='name', tag='group')\n",
- "# Visualize:\n",
- "print \"Groups:\", ', '.join([g for g, in qb.all()])\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query3.png')\n",
- "Image(filename='query3.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the calculations that are members of each group"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# I want every PwCalculation that is a member of the specified groups:\n",
- "#TUT_USER_START\n",
- "qb.append(PwCalculation, tag='calculation', member_of=) # Complete the function call with the correct relationship-tag!\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(PwCalculation, tag='calculation', member_of='group')\n",
- "#TUT_SOLUTION_END\n",
- "#Visualize\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query4.png') \n",
- "Image(filename='query4.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the structures that are input of the calculation. \n",
- "We extend the query to include the structures that are input of the calculations that match the query so far.\n",
- "This means that we `append` StructureData, and defining the relationship with the calculation with corresponding keyword.\n",
- "For simplicity the formulas have been added in the extras of each structure node under the key `formula`. \n",
- "The function that does this is called `store_formula_in_extra` and can be found in the second cell. It also uses the QueryBuilder! Project the formula, stored in the extras under the key `formula`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "# Complete the function call with the correct relationship-tag!\n",
- "qb.append(StructureData, project=, tag='structure', input_of=)\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(StructureData, project=['extras.formula'], tag='structure', input_of='calculation')\n",
- "#TUT_SOLUTION_END\n",
- "# Visualize:\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query5.png')\n",
- "Image(filename='query5.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the output of the calculation\n",
- "Every successful PwCalculation has in output a ParameterData instance that stores the results as key-value pairs. You can find these pairs among the attributes. To facilitate querying, the parser takes care of storing values always in the same units, and these are documented. For convenience, the units are also added as key/value pairs (with the same key name, but with _units appended). \n",
- "Extend the query so that also the output ParameterData of each calculation is returned. Project only\n",
- "the attributes relevant to your analysis.\n",
- "\n",
- "Project:\n",
- "\n",
- "* The smearing contribution and the units\n",
- "* The magnetization and the units."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "# Complete the function call with the correct relationship-tag!\n",
- "qb.append(ParameterData,tag='results', project=['attributes.energy_smearing',...], output_of=)\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(ParameterData,tag='results',\n",
- " project=['attributes.energy_smearing', 'attributes.energy_smearing_units',\n",
- " 'attributes.total_magnetization', 'attributes.total_magnetization_units',\n",
- " ], output_of='calculation'\n",
- " )\n",
- "#TUT_SOLUTION_END\n",
- "\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query6.png') \n",
- "Image(filename='query6.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Print the query results\n",
- "We can print the results to see if everything worked."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "results = qb.all()\n",
- "for item in results:\n",
- " print ', '.join(map(str, item))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Plot the results\n",
- "Getting a long list is not always helpful. We prepared a function that visualizes the results of the query:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "plot_results(results)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 2",
- "language": "python",
- "name": "python2"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 2
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.10"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/docs/pages/2018_PRACE_MaX/sections/appendix_input_validation.md b/docs/pages/2018_PRACE_MaX/sections/appendix_input_validation.md
deleted file mode 100644
index 8b62e419..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/appendix_input_validation.md
+++ /dev/null
@@ -1,73 +0,0 @@
-Calculation input validation
-============================
-
-This appendix shows additional ways to debug possible errors with QE, how to use a useful tool that we included in AiiDA to validate the input to Quantum ESPRESSO (and possibly suggest the correct name to mispelled keywords)
-
-There are various reasons why you might end up providing a wrong input to a Quantum ESPRESSO calculation. Let’s check for example this input dictionary, where we inserted two mistakes:
-
-``` python
-parameters_dict = {
- "CTRL": {
- "calculation": "scf",
- "restart_mode": "from_scratch",
- },
- "SYSTEM": {
- "nat": 2,
- "ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {
- "conv_thr": 1.e-6,
- }
-}
-```
-
-The two mistakes in the dictionary are the following. First, we wrote a wrong namelist name (’CTRL’ instead of ’CONTROL’). Second, we inserted the number of atoms explicitly: while that is how the number of atoms is specified in Quantum ESPRESSO, in AiiDA this key is reserved by the system: in fact this information is already contained in the StructureData. Modify the script with this ParameterData. In this case, we use a tool (the input validator that we provide in AiiDA) to check the input file before submitting. Therefore, the behavior will be slightly different from the previous example: the plugin will check for some keys and will refuse to submit the calculation. This kind of mistakes is revealed by either
-
-- Submitting a calculation. You will see the calculation ending up in the SUBMISSIONFAILED status. Check therefore the logs to recognize the source of the error.
-
-- Submitting a test. You will not be able to successfully create the test and the traceback will guide you to the problem.
-
-Over the time this kind of trivial mistakes can be annoying, but they can be avoided with a utility function that checks the “grammar” of the input parameters. In your script, after you defined the parameters\_dict, you can validate it with the command (note that you need to pass also the input crystal structure, `s`, to allow the validator to perform all needed checks):
-
-``` python
-PwCalculation = CalculationFactory('quantumespresso.pw')
-validated_dict = PwCalculation.input_helper(parameters_dict, structure=s)
-parameters = ParameterData(dict=validated_dict)
-```
-
-The `input_helper` method will check for the correctness of the input parameters. If misspelling or incorrect keys are detected, the method raises an exception, which stops the script before submitting the calculation and thus allows for a more effective debugging.
-
-With this utility, you can also provide a list of keys, without providing the namelists (useful if you don’t remember where to put some variables in the input file). Hence, you can provide to `input_helper()` a dictionary like this one:
-
-``` python
-parameters_dict = {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'conv_thr': 1.e-6,
-}
-validated_dict = PwCalculation.input_helper(
- parameters_dict, structure=s, flat_mode=True)
-```
-
-If you print the `validated_dict`, it will look like:
-
-``` python
-{
- "CONTROL": {
- "calculation": "scf",
- "tstress": True,
- "tprnfor": True,
- },
- "SYSTEM": {
- "ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {
- "conv_thr": 1.e-6,
- }
- }
-```
diff --git a/docs/pages/2018_PRACE_MaX/sections/appendix_queries.rst b/docs/pages/2018_PRACE_MaX/sections/appendix_queries.rst
deleted file mode 100644
index 8420eff1..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/appendix_queries.rst
+++ /dev/null
@@ -1,102 +0,0 @@
-Queries in AiiDA - Examples and Exercises
-=========================================
-
-Optional exercises on relationships (Task 3)
---------------------------------------------
-
-**Hint for the exercises:**
-
-- You can have projections on properties of more than one entity in
- your query. You just have to add the *project* key (specifying the
- list of properties that you want to project) along with the
- corresponding entity when you append it.
-
-**Exercises:** Try to write the following queries:
-
-- Find all descendants of a StructureData with a certain uuid. Print
- both the StructureData and the descendant.
-
-- Find all the FolderData created by a specific user.
-
-Optional exercises on attributes and extras (Task 4)
-----------------------------------------------------
-
-**Hint for the exercises:**
-
-- You can easily order or limit the number of the results by using the
- *order_by()* and *limit()* methods of the QueryBuilder. For example,
- we can order all our job calculation by their *id* and limit the
- result to the first 10 as follows:
-
- .. code:: python
-
- qb = QueryBuilder()
- qb.append(JobCalculation, tag='calc')
- qb.order_by({'calc':'id'})
- qb.limit(10)
- qb.all()
-
-**Exercises:**
-
-- Write a code snippet that informs you how many pseudopotentials you
- have for each element.
-
-- Smearing contribution to the total energy for calculations:
-
- 1. Write a query that returns the smearing contribution to the energy
- stored in some instances of ParameterData.
-
- 2. Extend the previous query to also get the input structures.
-
- 3. Which structures have a smearing contribution to the energy
- smaller or equal to -0.02?
-
-Summarizing what we learned by now - An example
------------------------------------------------
-
-At this point you should be able to do queries with projections, joins
-and filters. Moreover, you saw how to apply filters and projections even
-on attributes and extras. Let’s discover the full power of the
-QueryBuilder with a complex graph query that allows you to project
-various properties from different nodes and apply different filters and
-joins.
-
-Imagine that you would like to get the smearing energy for all the
-calculations that have finished and have a Sn\ :sub:`2`\ O\ :sub:`3` as input.
-Moreover, besides from the smearing energy, you would like to
-print the units of this energy and the formula of the structure that was
-given to the calculation. The graphical representation of this query can
-be seen in :numref:`fig_qb_example_2_2018` and the actual query follows:
-
-.. _fig_qb_example_2_2018:
-.. figure:: ../../../assets/2018_PRACE_MaX/qb_example_2.png
- :width: 50%
- :align: center
-
- Complex graph query.
-
-.. code:: python
-
- qb = QueryBuilder()
- qb.append(
- StructureData,
- project=["extras.formula"],
- filters={"extras.formula":"Sn2O3"},
- tag="structure"
- )
- qb.append(
- Calculation,
- tag="calculation",
- output_of="structure"
- )
- qb.append(
- ParameterData,
- tag="results",
- filters={"attributes.energy_smearing":{"<=":-0.0001}},
- project=[
- "attributes.energy_smearing",
- "attributes.energy_smearing_units",
- ],
- output_of="calculation"
- )
- qb.all()
diff --git a/docs/pages/2018_PRACE_MaX/sections/appendix_restarting_calculations.md b/docs/pages/2018_PRACE_MaX/sections/appendix_restarting_calculations.md
deleted file mode 100644
index a15dbc81..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/appendix_restarting_calculations.md
+++ /dev/null
@@ -1,77 +0,0 @@
-Restarting calculations
-=======================
-
-Up to now, we have only presented cases in which we were passing wrong input parameters to the calculations, which required us to modify the input scripts and relaunch calculations from scratch. There are several other scenarios in which, more generally, we need to restart calculations from the last step that they have executed. For example when we run molecular dynamics, we might want to add more time steps than we initially thought, or as another example you might want to refine the relaxation of a structure with tighter parameters.
-
-In this section, you will learn how to restart and/or modify a calculation that has run previously. As an example, let us first submit a total energy calculation using a parameters dictionary of the form:
-
-``` python
-parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-14,
- 'electron_maxstep': 3,
- },
-}
-```
-
-and submit the calculation with this input. In this case, we set a very low number of self consistent iterations (3), too small to be able to reach the desired accuracy of 10\(^{-14}\): therefore the calculation will not reach a complete end and will be flagged in a FAILED state. However, there is no mistake in the parameter dictionary.
-
-Now, create a new script file, where you will try to restart and correct the input dictionary. We first load the calculation that has just failed (let’s call it `c1`)
-
-``` python
-old_calc = load_node(PK)
-```
-
-(take care of using the correct PK). Then, create a new Builder `builder` which is set to reuse all inputs from the previous step, with a few adaptations to the input parameters that might be needed by the code to properly deal with restarts.
-
-``` python
-from aiida_quantumespresso.utils.restart import create_restart_pw
-builder = create_restart_pw(
- old_calc,
- use_output_structure=False,
- restart_from_beginning=False,
- force_restart=True)
-```
-
-The flag usage (most of them are optional) is:
-
-- `use_output_structure`: if True and `old_calc` has an output structure, the new calculation will use it as input;
-
-- `restart_from_beginning`: if False the new calculation will start from the charge density of `old_calc`, it will start from the beginning otherwise;
-
-- `force_restart`: if True, the new calculation will be created even if `old_calc` is not in a FINISHED job state.
-
-Since this calculation has exactly the same parameters of before, we have to modify the input parameters and increase `electron_maxstep` to a larger value. To this aim, let’s load the dictionary of values and change it
-
-``` python
-old_parameters = builder.parameters
-parameters_dict = old_parameters.get_dict()
-parameters_dict['ELECTRONS']['electron_maxstep'] = 100
-```
-
-Note that you cannot modify the `old_parameters` object: it has been used by calculation `c1` and is saved in the database; hence a modification would break the provenance. We have to create a new ParameterData and pass it to c2:
-
-``` python
-ParameterData = DataFactory('parameter')
-new_parameters = ParameterData(dict=parameters_dict)
-builder.parameters = new_parameters
-```
-
-Now you can launch the new calculation
-
-``` python
-from aiida.work.run import submit
-new_calc = submit(builder)
-print new_calc.pk
-```
-
-that this time can proceed until the end and return converged total energy. Using the restart method, the script is much shorter than the one needed to launch a new one from scratch: you didn’t need to define pseudopotentials, structures and k-points, which are the same as before. You can indeed inspect the new calculation to check that now it actually completed successfully.
diff --git a/docs/pages/2018_PRACE_MaX/sections/appendix_workflow_logic.md b/docs/pages/2018_PRACE_MaX/sections/appendix_workflow_logic.md
deleted file mode 100644
index 94cc904b..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/appendix_workflow_logic.md
+++ /dev/null
@@ -1,101 +0,0 @@
-More workflow logic: while loops and conditional statements
-===========================================================
-
-In the previous sections, you have been introduced to WorkChains, and the reason for using them over “standard” workfunctions (i.e., functions decorated with `@wf`).
-
-However, in the example of Sec. [sec:workchainsimple], the `spec.outline` was quite simple, with a “static” sequence of two steps. Most often, however, you need dynamic workflows, where you need to decide at runtime whether to continue to compute or not (e.g. in a convergence loop, where you need to stop if convergence has been achieved). To support this scenario, the `spec.outline` can support logic: *while* loops and *if/elif/else* blocks. The simplest way to explain it is to show an example:
-
-``` python
-from aiida.work.workchain import if_, while_
-
-spec.outline(
- cls.s1,
- if_(cls.isA)(
- cls.s2
- ).elif_(cls.isB)(
- cls.s3
- ).else_(
- cls.s4
- ),
- cls.s5,
- while_(cls.condition)(
- cls.s6
- ),
-)
-```
-
-that would *roughly* correspond, in a python syntax, to:
-
-``` python
-s1()
-if isA():
- s2()
-elif isB():
- s3()
-else:
- s4()
-s5()
-while condition():
- s6()
-```
-
-The only constraint is that condition functions (in the example above `isA`, `isB` and `condition`) must be class methods that returns `True` or `False` depending on whether the condition is met or not.
-
-A suggestion on how to write new workchains: Use the outline to help you in designing the logic. First create the spec outline writing, almost if you were explaining it in words, what you expect the workflow to do. Then, define one by one the methods. For example, we have prepared a simple workfunction to optimize the lattice parameter of silicon efficiently using a Newton’s algorithm on the energy derivative, i.e. the pressure \(p=-dE/dV\). You can find it the code at `tutorial_scripts/pressure_convergence.py`. The outline looks like this:
-
-``` python
-spec.outline(
- cls.init,
- cls.put_step0_in_ctx,
- cls.move_next_step,
- while_(cls.not_converged)(
- cls.move_next_step,
- ),
- cls.report
-)
-```
-
-This outline already roughly explains the algorithm: after an initialization (`init`) and putting the first step (number zero) in the ctx (`put_step0_in_ctx`), a function to move to the next step is called (`move_next_step`). This is iterated while a given convergence criterion is not met (`not_converged`). Finally, some reporting is done, including returning some output nodes (`report`).
-
-If you are interested in the details of the algorithm, you can inspect the file. The main ideas are described here:
-
-init
-Generate a `pw.x` calculation for the input structure (with volume \(V\)), and one for a structure where the volume is \(V+4\text{\AA}^3\) (just to get a closeby volume). Store the results in the context as `r0` and `r1`
-
-put\_step0\_in\_ctx
-Store in the context \(V\), \(E(V)\) and \(dE/dV\) for the first calculation `r0`
-
-move\_next\_step
-This is the most important function. Calculate \(V\), \(E(V)\) and \(dE/dV\) for `r1`. Also, estimate \(d^2E/dV^2\) from the finite difference of the first derivative of `r0` and `r1` (helper functions to achieve this are provided). Get the \(a\), \(b\) and \(c\) coefficients of a parabolic fit \(E=aV^2 + bV + c\) and estimated the expected minimum of the EOS function as the minimum of the fit \(V_0=-b/2a\). Finally, replace `r0` with `r1` in the context (i.e., get rid of the oldest point) and launch a new pw calculation at volume \(V_0\), that will be stored in the context replacing `r1`. In this way, at the next iteration `r0` and `r1` will contain the latest two simulations. Finally, at each step some relevant information (coefficients \(a\), \(b\) and \(c\), volumes, energies, energy derivatives, ...) are stored in a list called `steps`. This whole list is stored in the context because it provides quantities to be preserved between different workfunction steps.
-
-not\_converged
-Return `True` if convergence has not been achieved yet. Convergence is achieved if the difference in volume between the two latest simulations is smaller than a given threshold (`volume_tolerance`).
-
-report
-This is the final step. Mainly, we return the output nodes: `steps` with the list of results at each step, and `structure` with the final converged structure.
-
-The results returned in `steps` can be used to represent the evolution of the minimisation algorithm. A possible way to visualize it is presented in Fig. [fig:convpressure], obtained with an initial lattice constant of \(a_{\text{lat}} = 5.2\text{\AA}\).
-
-![[fig:convpressure]Example of results of the convergence algorithm presented in Sec. [sec:convpressure]. The bottom plot is a zoom near the minimum. The dots represent the (volume,energy) points obtained from Quantum ESPRESSO, and the numbers indicate at which iteration they were obtained. The parabolas represent the parabolic fits used in the algorithm; the minimum of the parabola is represented with a small cross, in correspondence of the vertical lines, used as the volume for the following step.]({{ site.baseurl}}/assets/2018_PRACE_MaX/convergence_pressure)
-
-9 P. Giannozzi et al., J.Phys. Cond. Matt. 29, 465901 (2017). S. R. Bahn and K. W. Jacobsen, Comput. Sci. Eng., 4, 56-66 (2002). S. Ping Ong et al., Comput. Mater. Sci. 68, 314-319 (2013). K.F. Garrity, J.W. Bennett, K.M. Rabe and D. Vanderbilt, Comput. Mater. Sci. 81, 446 (2014). G. Prandini, A. Marrazzo, I. E. Castelli, N. Mounet, N. Marzari, A Standard Solid State Pseudopotentials (SSSP) library optimized for accuracy and efficiency (Version 1.0, data download), Materials Cloud Archive (2018), [doi:10.24435/materialscloud:2018.0001/v1](http://doi.org/10.24435/materialscloud:2018.0001/v1). Crystallographic Open Database (COD), .
-
-[1] The string provided to the `DataFactory` encodes both the location and the name of the required class according to some specific rules.
-
-[2] if you set the structure incorrectly, for example with overlapping atoms, it is very likely that any DFT code will fail!
-
-[3] We purposefully do not provide advanced commands for crystal structure manipulation in AiiDA, because python packages that accomplish such tasks already exist (such as ASE or pymatgen).
-
-[4]
-
-[5]
-
-[6]
-
-[7] However, to avoid duplication of KpointsData, you should first learn how to query the database, therefore we will ignore this duplication issue for now.
-
-[8] For JobCalculations (i.e., calculations that are submitted to a remote computer through a scheduler) there is an additional “Job state” (last column of the output of `verdi calculation list`) that can either be FINISHED if all went well, or one of the possible failure states (FAILED, PARSINGFAILED, SUBMISSIONFAILED, RETRIEVALFAILED). These states are represented as a Finished state (third column of `verdi calculation list`, with a zero/non-zero error code depending if they finished/did not finish correctly). This latter state is more general than just JobCalculations and also applies to workflows, as we will see later in the tutorial.
-
-[9] In simple (or even simplified) words, a decorator is a function that modifies the behavior of another function. In python, a function can be decorated by adding a line of the form `@decorating_function_name` on the line just before the `def` line of the decorated function. If you want to know more, there are many online resources explaining python decorators.
-
-[10] If you are curious: the two links have the same label, but are of different *link\_type*: one is a **create** link, that keeps track of the calculation that actually generated the node. Instead the other one is of type **return**, stating that the workfunction, beside creating that node, also returned it as an output. Calculation 5002 instead only returned the node but it did not generate it, therefore there is only one link between it and the final `StructureData`.
diff --git a/docs/pages/2018_PRACE_MaX/sections/bands.rst b/docs/pages/2018_PRACE_MaX/sections/bands.rst
deleted file mode 100644
index 29fe3c20..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/bands.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-A real-world WorkChain: computing a band structure
-==================================================
-
-**Note**: *If you still have enough time, you might want to check first
-Appendix [sec:convpressure] before continuing with this section.*
-
-As a final demonstration of the power of WorkChains in AiiDA, we want to
-give a demonstration of a WorkChain that we have written that will take
-a structure as its only input and will compute its band structure. All
-of the steps that would normally have to be done manually by the
-researcher, choosing appropriate pseudopotentials, energy cutoffs,
-k-points meshes, high-symmetry k-point paths and performing the various
-calculation steps, are performed automatically by the WorkChain.
-
-The demonstration of the workchain will be performed in a Jupyter
-notebook. To run it, follow the instructions that were given for the
-querybuilder notebook in section [sec:querybuilder]. The only difference
-is that instead of selecting the notebook in the ``querybuilder``
-directory, go to ``pw/bandstructure`` instead and choose the
-``bandstructure.ipynb`` notebook. There you will find some example
-structures that are loaded from COD, through the importer integrated
-within AiiDA. Note that the required time to calculate the bandstructure
-for these example structures ranges from 3 minutes to almost half an
-hour, given that the virtual machine is running on a single core with
-minimal computational power. It is not necessary to run these examples
-as it may take too long to complete. For reference, the expected output
-band structures are plotted in Fig.[fig:workchainbandstructures].
-
-.. image:: /assets/2018_PRACE_MaX/bandstructures/Al_bands.png
- :scale: 48 %
-
-.. image:: /assets/2018_PRACE_MaX/bandstructures/GaAs_bands.png
- :scale: 48 %
-
-.. image:: /assets/2018_PRACE_MaX/bandstructures/CaF2_bands.png
- :scale: 48 %
-
-.. image:: /assets/2018_PRACE_MaX/bandstructures/hBN_bands.png
- :scale: 48 %
-
-Electronic band structures of four different crystal structures computed
-with AiiDA’s PwBandsWorkChain
-
-*The following appendices consist of optional exercises, and are
-mentioned in earlier parts of the tutorial. Go through them only if you
-have time.*
diff --git a/docs/pages/2018_PRACE_MaX/sections/calculations.md b/docs/pages/2018_PRACE_MaX/sections/calculations.md
deleted file mode 100644
index dd8a5f98..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/calculations.md
+++ /dev/null
@@ -1,286 +0,0 @@
-# Submit, monitor and debug calculations
-
-The goal of this section is to understand how to create new data in AiiDA. We will launch a total energy calculation and check its results. We will introduce intentionally some common mistakes along the process of defining and submitting a calculation and we will explain you how to recognize and correct them. While this debugging is done here ‘manually’, workflows (that we will learn later in this tutorial) can automate this procedure considerably. For computing the DFT energy of the silicon crystal (with a PBE functional) we will use Quantum ESPRESSO , in particular the PWscf code (`pw.x`). Besides the AiiDA-core package, a number of plugins exist for many different codes. These are listed in the [AiiDA plugin registry](https://aiidateam.github.io/aiida-registry/)[4]. In particular, the “aiida-quantumespresso” plugin (already installed in your machine) provides a very extensive set of plugins, covering most (if not all) the functionalities of the underlying codes.
-
-## The AiiDA daemon
-
-First of all, check that the AiiDA daemon is actually running. The AiiDA daemon is a program running all the time in the background, checking if new calculations appear and need to be submitted to the scheduler. The daemon also takes care of all the necessary operations before the calculation submission, and after the calculation has completed on the cluster. Type in the terminal
-
-```console
-verdi daemon status
-```
-
-If the daemon is running, the output should look like
-
-```console
- Profile: default
- Daemon is running as PID 1650 since 2018-05-16 16:26:04
- Active workers [1]:
- PID MEM % CPU % started
- ----- ------- ------- -------------------
- 1653 8.225 0 2018-05-16 16:26:04
- Use verdi daemon [incr | decr] [num] to increase / decrease the amount of workers
-```
-
-If this is not the case, type in the terminal
-
-```console
-verdi daemon start
-```
-
-to start the daemon.
-
-## Creating a new calculation
-
-To launch a calculation, you will need to interact with AiiDA mainly in the `verdi shell`. We strongly suggest you to first try the commands in the shell, and then copy them in a script “test\_pw.py” using a text editor. This will be very useful for later execution of a similar series of commands.
-
-**Note**: The best way to run python scripts using AiiDA functionalities is to run them in a terminal by means of the command
-
-```console
- verdi run
-```
-
-Every calculation sent to a cluster is linked to a code, which describes the executable file to be used. Therefore, first load the suitable code:
-
-``` python
- code = Code.get_from_string()
-```
-
-Here `Code` is the general AiiDA class handling all possible codes, and `code` is a class instance tagged as `` (see the first part of the tutorial for listing all codes installed in your AiiDA machine). You might also want to list only the codes that define a default calculation plugin for the pw.x code of Quantum ESPRESSO. You can do this with the following command:
-
-```console
-verdi code list -p quantumespresso.pw
-```
-
-Pick the correct codename, that might look like, e.g. `qe-pw-6.2.1@localhost`.
-
-Once run, AiiDA calculations are instances of the class `Calculation`, more precisely of one of its subclasses, each corresponding to a code specific plugin (for example, the PWscf plugin). You have already seen `Calculation` classes in the previous sections.
-
-However, to create a new calculation, rather than manually creating a new class, the suggested way is to use a `Builder`, that helps in setting the various calculation inputs and parameters, and provides TAB-completion.
-
-To obtain a new builder, we can use the `get_builder` method of the `code` object:
-
-``` python
- builder = code.get_builder()
-```
-
-This returns a builder that helps in setting up the inputs for the `PwCalculation` class (associated to the `quantumespresso.pw` plugin, i.e. the default plugin for the code you chose before).
-
-As the first step, you can assign a (short) label or a (long) description to the calculation that you are going to create, that you might find convenient in the future. This can be achieved with:
-
-``` python
- builder.label = "PW test"
- builder.description = "My first AiiDA calc with Quantum ESPRESSO on BaTiO3"
-```
-
-This information will be saved in the database for later query or inspection. Note that you can press TAB after writing `builder.` to see all available inputs.
-
-Now you have to specify the number of machines (a.k.a. cluster nodes) you are going to run on and the maximum time allowed for the calculation. These general calculation options, that are independent of the code or plugin, but rather mainly passed later to the scheduler that handles the queue, are all grouped under “builder.options”:
-
-``` python
- builder.options.resources = {'num_machines': 1}
- builder.options.max_wallclock_seconds = 30*60
-```
-
-Just like the normal inputs, these builder options are also TAB-completed. Type “builder.options.” and hit the TAB button to see the list of available options.
-
-### Preparation of inputs
-
-Quantum ESPRESSO requires an input file containing Fortran namelists and variables, plus some cards sections (the documentation is available [online](http://www.quantum-espresso.org/wp-content/uploads/Doc/INPUT_PW.html)[5]). The Quantum ESPRESSO plugin of AiiDA requires quite a few nodes in input, which are documented [online](http://aiida-core.readthedocs.io/en/latest/plugins/quantumespresso/pw.html)[6]. Here we will instruct our calculation with a minimal configuration for computing the energy of silicon. We need:
-
-1. Pseudopotentials
-2. a structure
-3. the k-points
-4. the input parameters
-
-We leave the parameters as the last thing to setup and start with structure, k-points, and pseudopotentials.
-
-Use what you learned in the previous section and define these two kinds of objects in this script. Define in particular a silicon structure and a 2\(\times\)2\(\times\)2 mesh of k-points. Notice that if you just copy and paste the code that you executed previously, you will create duplicated information in the database (i.e. every time you will execute the script, you will create another StructureData, another KpointsData, …). In fact, you already have the opportunity to re-use an already existing structure.[7] Use therefore a combination of the bash command `verdi data structure list` and of the shell command `load_node()` to get an object representing the structure created earlier.
-
-### Attaching the input information to the calculation
-
-So far we have defined (or loaded) some of the input data, but we haven’t instructed the calculation to use them. To do this, let’s just set the appropriate attributes of the builder (we assume here that you created the structure and k-points AiiDA nodes before and called them `structure` and `kpoints`, respectively):
-
-``` python
- builder.structure = structure
- builder.kpoints = kpoints
-```
-
-Note that you can set in the builder both stored and unstored nodes. AiiDA will take care of storing the unstored nodes upon submission. Otherwise, if you decide not to submit, nothing will be stored in the database.
-
-Moreover, PWscf also needs information on the pseudopotentials, specified by UpfData objects. This is set by storing a dictionary in “builder.pseudo”, with keys being the kind names, and value being the UpfData pseudopotential nodes. To simplify the task of choosing pseudopotentials, we can however use a helper function that automatically returns this dictionary picking the pseudopotentials from a given UPF family.
-
-You can list the preconfigured families from the command line:
-
-```console
- verdi data upf listfamilies
-```
-
-Pick the one you configured earlier or one of the `SSSP` families that we provide, and link it to the calculation using the command:
-
-``` python
- from aiida.orm.data.upf import get_pseudos_from_structure
- builder.pseudo = get_pseudos_from_structure(structure, '')
-```
-
-### Preparing and debugging input parameters
-
-The last thing we miss is a set of parameters (i.e. cutoffs, convergence thresholds, etc…) to launch the Quantum ESPRESSO calculation. This part requires acquaintance with Quantum ESPRESSO and, very often, this is the part to tune when a calculation shows a problem. Let’s therefore use this part of the tutorial to learn how to debug problems, and **let’s introduce errors intentionally**. Note also that some of the problems we will investigate appear the first times you launch calculations and can be systematically avoided by using workflows.
-
-Let’s define a set of input parameters for Quantum ESPRESSO, preparing a dictionary of the form:
-
-``` python
-parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'mickeymouse': 240.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-8,
- },
-}
-```
-
-This dictionary is almost a valid input for the Quantum ESPRESSO plugin, except for an invalid key called “mickeymouse”. When Quantum ESPRESSO receives an unrecognized key (even when you misspell one) its behavior is to stop almost immediately. By default, the AiiDA plugin will not validate your input and simply pass it over. Therefore let’s pass this dictionary to the calculation and observe this unsuccessful behavior.
-
-As done before, load the ParameterData class
-
-``` python
- ParameterData = DataFactory("parameter")
-```
-
-and create an instance of the class containing all the input parameters you just defined
-
-``` python
- parameters = ParameterData(dict=parameters_dict)
-```
-
-Finally, set the parameters in the builder
-
-``` python
- builder.parameters = parameters
-```
-
-### Simulate submission
-
-At this stage, you have recreated in memory (it’s not yet stored in the database) the input of the graph shown in Fig. [fig:graph]a, whereas the outputs will be created later by the daemon.
-
-In order to check how AiiDA creates the actual input files for the calculation, we can simulate the submission process with the (otherwise optional) command
-
-``` python
- builder.submit_test()
-```
-
-This creates a folder of the form `submit_test/[date]-0000[x]` in the current directory. Check (in your second terminal) the input file `aiida.in` within this folder, comparing it with the content of the input data nodes you created earlier, and that the ‘pseudo’ folder contains the needed pseudopotentials. You can also check the submission script `_aiidasubmit.sh` (the scheduler that is installed on the machine is Torque, so AiiDA creates the files with the proper format for this scheduler). Note: you cannot correct the input file from the “submit\_test” folder: you have to correct the script and re-execute it; the files created by `submit_test()` are only for final inspection.
-
-### Storing and submitting the calculation
-
-Up to now the calculation `calc` is kept in memory and not in the database. We will now submit it, that will implicitly create a `PwCalculation` class, store it in the database, store also all its inputs parameters, k-points, structure, and properly link them. To submit it, run
-
-``` python
- from aiida.work.launch import submit
- calc = submit(builder)
-```
-
-`calc` will now be the stored `PwCalculation`, already submitted to the daemon. The calculation has now a \`\`database primary key" or `pk` (an integer ID) to the calculation (typing `calc.pk` will print this number). Moreover, it also gets a universally-unique ID (`UUID`), visible with `calc.uuid` that does not change even upon sharing the data with collaborators (while the `pk` will change in that case).
-
-Now that the calculation is stored, you can also attach any additional attributes of your choice, which are called “extra” and defined in as key-value pairs. For example, you can add an extra attribute called `element`, with value `Si` through
-
-``` python
- calc.set_extra("element","Si")
-```
-
-You will see later the advantage of doing so for querying.
-
-In the meantine, as soon as you submitted your calculation, the daemon picked it up and started to perform all the operations to do the actual submission, going through input file generation, submission to the queue, waiting for it to run and finish, retrieving the output files, parsing them, storing them in the database and setting the state of the calculation to `Finished`.
-
-**N.B.** If the daemon is not running the calculation will remain in the `NEW` state until when you start it.
-
-### Checking the status of the calculation
-
-You can check the calculation status from the command line:
-
-```console
- verdi calculation list
-```
-
-Note that `verdi` commands can be slow in this tutorial when the calculation is running (because you just have one CPU which is also used by the PWscf calculation).
-
-By now, it is possible that the calculation you submitted has already finished, and therefore that you don’t see any calculation in the output. In fact, by default, the command only prints calculations that are still being handled by the daemon, i.e. those with a state that is not `FINISHED` yet[8].
-
-To see also (your) calculations that have finished (and limit those only to the one created in the past day), use instead
-
-```console
- verdi calculation list -a -p1
-```
-
-as explained in the first section.
-
-To inspect the list of input files generated by the AiiDA (this can be done even when the calculation did not finish yet), type
-
-```console
- verdi calculation inputls -c
-```
-
-with `pk_number` the pk number of your calculation. This will show the contents of the input directory (`-c` prints directories in colour). Then you can also check the content of the actual input file with
-
-```console
- verdi calculation inputcat | less
-```
-
-## Troubleshooting
-
-After all this work the calculation should end up in a FAILED Job state (last column of `verdi calculation list`), and correspondingly the error code near the \`\`Finished" status of the State should be non-zero (400 for FAILED calculations). This was expected, since we used an invalid key in the input parameters. Situations like this happen (probably often...) in real life, so we built in AiiDA the tools to traceback the problem source and correct it.
-
-A first way to proceed is the manual inspection of the output file of PWscf. You can visualize it with:
-
-```console
- verdi calculation outputcat | less
-```
-
-This can be a good primer for problem inspection. For something more compact, you can also try to inspect the calculation log (from AiiDA):
-
-```console
- verdi calculation logshow
-```
-
-If the calculation has encountered a mistake, this log shows a handful of warnings coming from various processes, such as the daemon, the parser of the output or the scheduler on the cluster. In production runs, errors will mostly come from an unexpected termination of the PWscf calculation. The most programmatic way to handle these errors is to inspect the warnings key by loading the calculation object, say `calc`, and the using the following method:
-
-``` python
-calc.res.warnings
-```
-
-This will print a list of strings reporting errors experienced during the execution, that can be easily read in python (and thus addressed programmatically), but are also reported in the calculation log. With any of these three methods you can understand that the problem is something like an ‘invalid input key’, which is exactly what we did.
-
-Let’s use a parameters dictionary that actually works. Modify the script `test_pw.py` script modifying the parameter dictionary as
-
-``` python
-parameters_dict = {
- "CONTROL": {"calculation": "scf",
- },
- "SYSTEM": {"ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {"conv_thr": 1.e-6,
- }
- }
-```
-
-If you launch the modified script by typing
-
-```console
- verdi run test_pw.py
-```
-
-you should now be able to see a calculation reaching successfully the FINISHED state. Now you can access the results as you have seen earlier. For example, note down the pk of the calculation so that you can load it in the `verdi shell` and check the total energy with the commands:
-
-``` python
-calc=load_node()
-calc.res.energy
-```
diff --git a/docs/pages/2018_PRACE_MaX/sections/preliminaries.md b/docs/pages/2018_PRACE_MaX/sections/preliminaries.md
deleted file mode 100644
index 1ee369ae..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/preliminaries.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# Preliminaries
-
-## Instructions to SSH to the Amazon EC2 instance
-
-You should have received an IP address from the instructors, and two files with a private and a public SSH key (`aiida_tutorial_NUM` and `aiida_tutorial_NUM.pub`), where `NUM` is an integer. These allow you to connect to an Amazon EC2 instance (different for each participant of the tutorial). To connect via `ssh` to this machine follow the steps below, depending on the computer you have.
-
-**Note!** *If you decide to work in pairs, one of the two people should discard his email. The other person should forward his email to the colleague, and both should then use the same virtual machine IP and account (ssh key). In this case, you will be both using the same account, so be careful not to delete the work of your colleague.*
-
-### Linux and Mac
-
-- If needed, create a `.ssh` directory in your home (`mkdir ~/.ssh`), and set its permissions: `chmod 700 ~/.ssh`
-- Copy in this `.ssh` directory the two files `aiida_tutorial_NUM` and `aiida_tutorial_NUM.pub`
-- Set the correct permissions on the private key: `chmod 600 ~/.ssh/aiida_tutorial_NUM` (then check with `ls -l` that the permissions of this file are now `-rw-------`).
-- Create (or modify if it already exists) the `config` file in your `.ssh` directory, adding the following lines:
-
- ```console
- Host aiidatutorial
- Hostname IP_ADDRESS
- User aiida
- IdentityFile ~/.ssh/aiida_tutorial_NUM
- LocalForward 8888 localhost:8888
- ```
-
- where you have to replace `IP_ADDRESS` with the IP address provided to you.
-
-- You can then `ssh` to the Amazon EC2 instance from the terminal, using simply
-
- ```console
- ssh -X -C aiidatutorial
-
- ```
-
- (connecting with `-X` — note that sometimes `-Y` is needed instead — will allow you to run graphical programs such as xmgrace or gnuplot interactively, even if they might not be very responsive as the Amazon virtual machines are in Ireland).
-
-### Windows
-
-- Install PuTTY.
-
-- Run PuTTYGen, load the `aiida_tutorial_NN` private key (button `"Load"`). remember to choose to show “All files (\*.\*)” in the window, and select the file without any extension (Type: File).
-
-- In the same window, click on “Save private Key”, and save the key with the name `aiida_tutorial_NN.ppk`.
-
-- Run Pageant: it will add a new icon near the clock, in the bottom right of your screen.
-
-- Right click on this Pageant icon, and click on “View Keys”.
-
-- Click on `"Add key"` and select the `aiida_tutorial_NN.ppk` you saved a few steps above.
-
-- Run PuTTY, put the given IP address as hostname. Write `aiidatutorial` in Saved Sessions and click `Save`. Go to Connection \(\to\) Data and put `aiida` as autologin username. Under Connection, go to SSH \(\to\) Tunnels, type `8888` in the `Source Port` box and `localhost:8888` in `Destination` and click `Add`. Click on `Save` again on the Session screen.
-
-- Now select `aiidatutorial` from the session list, click `Load` and, finally, `open`.
-
-## Everybody: connect to the machine and start jupyter
-
-Before starting the tutorial, connect via SSH to the Amazon machine as explained above (the Amazon machine already contains a pre-configured AiiDA installation and some test data for this tutorial).
-
-## Before starting
-
-Once connected to your machine, type in the remote terminal
-
-```console
- workon aiida
-```
-
-This will enable the virtual environment in which AiiDA is installed, allowing you to use AiiDA. Now type in the same bash
-
-```console
- jupyter notebook --no-browser
-```
-
-This will run a server with a web application called `jupyter`, which is used to create interactive python notebooks. To connect to this application, copy the URL that has been printed to the terminal (it will be something like `http://localhost:8888/?token=2a3ba37cd1...`) and paste it into the URL bar of a web browser. You will see a list of folders: these are folders on the remote Amazon computer. We will use `jupyter` in section [sec:querybuilder] and optionally in other sections as well.
-
-Now launch an identical `ssh` connection (again, as explained above) in another terminal, and type `workon aiida` here too. This terminal is the one you will actually use in this tutorial.
-
-Note: Since the port listening is set to a specific port (8888) in the section [sec:sshintro], you have to make sure on the server the Jupiter notebook is running on the port 8888. Otherwise, use an alternative port for listening.
-
-A final note: for details on AiiDA that may not be fully explained here, you can refer to the full AiiDA documentation, available online at .
-
-## Troubleshooting tips (in case you have issues later)
-
-- If you get an error like `ImportError: No module named aiida` or `No command ’verdi’ found` double check that you have loaded the virtual environment with `workon aiida` before launching python, ipython or the jupyter server.
-
-- If your browser cannot connect to the jupyter instance, check that you have correctly configured SSH tunneling/forwarding as described above. Also note that you should run the jupyter server from the terminal connected to the Amazon machine, while the web browser should be opened locally on your laptop or worstation.
-
-- The Jupyter Notebook officially supports the latest stable versions of Chrome, Safari and Firefox. See for more information on broswer compatibility (and update your browser if it is too old).
diff --git a/docs/pages/2018_PRACE_MaX/sections/querybuilder.rst b/docs/pages/2018_PRACE_MaX/sections/querybuilder.rst
deleted file mode 100644
index 1cddb7bd..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/querybuilder.rst
+++ /dev/null
@@ -1,46 +0,0 @@
-Queries in AiiDA: The Querybuilder
-==================================
-
-This part of the tutorial is provided only in interactive mode through a
-Jupyter notebook, which you will be able to run in your browser. To
-accomplish this we first need to start the Jupyter server, if you didn’t
-do it already at the very beginning of the tutorial. First make sure you
-are connected to the virtual machine with local forwarding enabled, as
-described in section [sec:sshintro]. Then, on the virtual machine, first
-make sure your are in the ``aiida`` virtual environment:
-
-.. code:: console
-
- workon aiida
-
-If the virtual environment is successfully loaded, your prompt should be
-prefixed with ``(aiida)``. To finally launch the Jupyter server, execute
-the following commands:
-
-.. code:: console
-
- cd ~/examples/aiida-demos/tutorial/
- jupyter notebook --no-browser
-
-If all went well, you should now be able to open up a browser on your
-local machine and point it to the following address
-``http://localhost:8888/?token=2a3ba3...`` (replace the token with the
-one printed on output by the previous command). This should now show you
-a directory navigator.
-
-To open the notebook, click on ``querybuilder`` and then select the file
-``tutorial.ipynb``. Note that there is also a ``solution.ipynb``, which is a
-copy of the same notebook, but which contains the solutions to all the
-exercises. You can use this version at your own discretion if you get stuck at
-some point (but we suggest that you try not to look at it at first).
-
-See below for a rendered version of the notebook, that can also be downloaded
-from :download:`here <../notebooks/querybuilder-tutorial.ipynb>`.
-
-.. toctree::
-
- QueryBuilder Notebook <../notebooks/querybuilder-tutorial.ipynb>
-
-The solutions can also be downloaded from
-:download:`here <../notebooks/querybuilder-solutions.ipynb>`: but again,
-try not to use them at first!
diff --git a/docs/pages/2018_PRACE_MaX/sections/verdi_cmdline.rst b/docs/pages/2018_PRACE_MaX/sections/verdi_cmdline.rst
deleted file mode 100644
index 16710b75..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/verdi_cmdline.rst
+++ /dev/null
@@ -1,444 +0,0 @@
-Verdi command line
-==================
-
-This part of the tutorial will help to familiarize you with the
-command-line utility ``verdi``, one of the most common ways to interact
-with AiiDA. ``verdi`` with its subcommands enables a variety of
-operations such as inspecting the status of ongoing or terminated
-calculations, showing the details of calculations, computers, codes, or
-data structures, access the input and the output of a calculation, etc.
-Similar to the ``bash`` shell, verdi command support Tab completion. Try
-right now to type ``verdi``, followed by a space, in a terminal and tap
-Tab twice to have a list of subcommands. Whenever you need the
-explanation of a command type ``verdi help`` or add ``-h`` flag if you
-are using any of the ``verdi`` subcommands. Finally, fields enclosed in
-angular brackets, such as ````, are placeholders to be replaced by
-the actual value of that field (an integer, a string, etc...).
-
-The list of calculations
-------------------------
-
-Let us try our first ``verdi`` commands. Type in the terminal
-
-.. code:: console
-
- verdi calculation list
-
-(Note: the first time you run this command, it might take a few seconds
-as it is the first time you are accessing the database in the virtual
-machine. Subsequent calls will be faster). This will print the list of
-ongoing calculations, which should be empty. The first output line
-should look like
-
-.. code:: console
-
- PK Creation State Type Computer Job state
- ---- ---------- ------- ------ ---------- -----------
-
- Total results: 0
-
- Info: last time an entry changed state: never
-
-In order to print a list with all calculations that finished correctly
-in the AiiDA database, you can use the ``-s/--states`` flag as follows:
-
-.. code:: console
-
- verdi calculation list --states FINISHED
-
-Another very typical option combination allows to get calculations in
-*any* state (flag ``-a``) generated in the past ``NUM`` days
-(``-p ``): e.g., for calculation in the past 1 day:
-``verdi calculation list -p1 -a``. Since you have not yet run any
-calculations at the virtual machine that you currently use and all the
-existing calculations were imported and belong to a different user, you
-can type (flag ``-A`` shows the calculations of all the users):
-
-.. code:: console
-
- verdi calculation list -A --states IMPORTED
-
-Each row of the output identifies a calculation and shows some
-information about it. For a more detailed list of properties, choose one
-row by noting down its PK (primary key) number (first column of the
-output) and type in the terminal
-
-.. code:: console
-
- verdi calculation show
-
-The output depends on the specific pk chosen and should inform you about
-the input nodes (e.g. pseudopotentials, kpoints, initial structure,
-etc.), and output nodes (e.g. output structure, output parameters,
-etc.).
-
-**PKs/IDs vs. UUIDs**: Beside the (integer) PK, very convenient to
-reference a calculation or data node in your database, every node has a
-UUID (Universally Unique ID) to identify it, that is preserved even when
-you share some nodes with coworkers—while the PK will most likely
-change. You can see the UUID in the output of ``verdi calculation show``
-or ``verdi node show``. Moreover, if you have already a UUID and you
-want to get the corresponding PK in your database, you can use
-``verdi node show -u ``, as we are going to do now.
-
-Let us now consider the node with
-``UUID = ce81c420-7751-48f6-af8e-eb7c6a30cec3``, which identifies a
-relaxation of a BaTiO(\_3) unit cell run with Quantum Espresso ``pw.x``.
-You can check the information on this node and get the PK with:
-
-.. code:: console
-
- $ verdi node show -u ce81c420-7751-48f6-af8e-eb7c6a30cec3
- Property Value
- ------------- ------------------------------------
- type PwCalculation
- pk 4235
- uuid ce81c420-7751-48f6-af8e-eb7c6a30cec3
- label
- description
- ctime 2014-10-27 17:51:21.781045+00:00
- mtime 2018-05-16 11:19:39.848446+00:00
- process state
- finish status
- computer [2] daint
- code pw-SVN-piz-daint
-
- Inputs PK Type
- ---------- ---- -------------
- parameters 4236 ParameterData
- kpoints 4526 KpointsData
- pseudo_Ba 966 UpfData
- pseudo_Ti 4315 UpfData
- settings 4529 ParameterData
- pseudo_O 4342 UpfData
- structure 436 StructureData
-
- Outputs PK Type
- ----------------------- ---- -------------
- output_kpoints 3665 KpointsData
- output_parameters 3670 ParameterData
- output_structure 3666 StructureData
- retrieved 3668 FolderData
- output_trajectory_array 265 ArrayData
- remote_folder 1977 RemoteData
-
-*Keep in mind that you can also use just a part (beginning) of the UUID,
-as long as it is unique, to show the node information information.* For
-example, to display the above information, you could also type
-``verdi node show -u ce81c420``. In what follows, we are going to
-mention only the prefixes of the UUIDs since they are sufficient to
-identify the correct node.
-
-A typical AiiDA graph
----------------------
-
-AiiDA stores inputs required by a calculation as well as the its outputs
-in the database. These objects are connected in a graph that looks like
-Fig. [fig:graph]. We suggest that you have a look to the figure before
-going ahead.
-
-.. figure:: /assets/2018_PRACE_MaX/graph/graph-inputonly.png
- :width: 100%
-
- Graph with all inputs (data, circles; and code, diamond) to
- the Quantum Espresso calculation (square) that you will create in
- Sec. [sec:qe] of this tutorial.
-
-.. figure:: /assets/2018_PRACE_MaX/graph/graph-full.png
- :width: 100%
-
- Same as above, but also with the outputs that the daemon will create and
- connect automatically.
- The RemoteData node is created during submission and can be thought as a
- symbolic link to the remote folder in which the calculation runs on the
- cluster. The other nodes are created when the calculation has finished,
- after retrieval and parsing. The node with linkname “retrieved” contains
- the raw output files stored in the AiiDA repository; all other nodes are
- added by the parser. Additional nodes (symbolized in gray) can be added
- by the parser (e.g., an output StructureData if you performed a
- relaxation calculation, a TrajectoryData for molecular dynamics, …).
-
-You can create a similar graph for any calculation node by using the
-utility ``verdi graph generate ``. For example, before you obtained
-information (in text form) for ``UUID = ce81c420``. To visualize similar
-information in graph(ical) form, run (replacing ```` with the PK of
-the node):
-
-.. code:: console
-
- verdi graph generate
-
-This command will create the file ``.dot`` that can be rendered by
-means of the utility ``dot``. If you now type
-
-.. code:: console
-
- dot -Tpdf -o .pdf .dot
-
-you will create a pdf file ``.pdf``. You can open this file on the
-Amazon machine by using ``evince`` or, if you feel that the ssh
-connection is too slow, copy it via ``scp`` to your local machine. To do
-so, if you are using Linux/Mac OS X, you can type in your *local*
-machine:
-
-.. code:: console
-
- scp aiidatutorial:
-
-and then open the file. Alternatively, you can use graphical software to
-achieve the same, for instance: WinSCP on Windows, Cyberduck on the Mac,
-or the “Connect to server” option in the main menu after clicking on the
-desktop for Ubuntu.
-
-Spend some time to familiarize yourself with the graph structure. Choose
-the root node (highlighted in blue) and trace back the parent
-calculation which produced the structure used as an input. This is an
-example of a Quantum ESPRESSO pw.x calculation, where the input
-structure was actually obtained as the output of a previous calculation.
-We will now inspect the different elements of this graph.
-
-Inspecting the nodes of a graph
--------------------------------
-
-ParameterData and Calculations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, let us have a closer look at the some of the nodes appearing in the
-graph. Choose the node of the type ``ParameterData`` with input link
-name ``parameters`` (to double check, it should have UUID ``d1bbe1ea``)
-and type in the terminal:
-
-.. code:: console
-
- verdi data parameter show
-
-A ``ParameterData`` contains a dictionary (i.e., key–value pairs),
-stored in the database in a format ready to be queried (we will learn
-how to run queries later on in this tutorial). The command above will
-print the content dictionary, containing the parameters used to define
-the input file for the calculation. You can compare the dictionary with
-the content of the raw input file to Quantum ESPRESSO (that was
-generated by AiiDA) via the command
-
-.. code:: console
-
- verdi calculation inputcat
-
-where you substitute the pk of the calculation node. Check the
-consistency of the parameters written in the input file and those stored
-in the ParameterData node. Even if you don’t know the meaning of the
-input flags of a Quantum ESPRESSO calculation, you should be able to see
-how the input dictionary has been converted to Fortran namelists.
-
-The previous command just printed the content of the “default” input
-file ``aiida.in``. To see a list of all the files used to run a
-calculation (input file, submission script, etc.) instead type
-
-.. code:: console
-
- verdi calculation inputls
-
-(Adding a ``--color`` flag allows you to easily distinguish files from
-folders by a different coloring).
-
-Once you know the name of the file you want to visualize, you can call
-the ``verdi calculation inputcat`` command specifying the path. For
-instance, to see the submission script, you can do:
-
-.. code:: console
-
- verdi calculation inputcat -p _aiidasubmit.sh
-
-StructureData
-~~~~~~~~~~~~~
-
-Now let us focus on StructureData objects, representing a crystal
-structure. We can consider for instance the input structure to the
-calculation we were considering before (it should have UUID prefix
-``3a4b1270``). Such objects can be inspected interactively by means of
-an atomic viewer such as the one provided by ``ase``. AiiDA however
-supports several other viewers such as ``xcrysden``, ``jmol``, and
-``vmd``. Type in the terminal
-
-.. code:: console
-
- verdi data structure show --format ase
-
-to show the selected structure (it will take a few seconds to appear,
-and you can rotate the view with the right mouse button—if you receive
-some errors, make sure you started your SSH connection with the ``-X``
-or ``-Y`` flag).
-
-Alternatively, especially if showing them interactively is too slow over
-SSH, you can export the content of a structure node in various popular
-formats such as ``xyz`` or ``xsf``. This is achieved by typing in the
-terminal
-
-.. code:: console
-
- verdi data structure export --format xsf > .xsf
-
-You can open the generated ``xsf`` file and observe the cell and the
-coordinates. Then, you can then copy ``.xsf`` from the Amazon
-machine to your local one and then visualize it, e.g. with xcrysden (if
-you have it installed):
-
-.. code:: console
-
- xcrysden --xsf .xsf
-
-Codes and computers
-~~~~~~~~~~~~~~~~~~~
-
-Let us focus now on the nodes of type ``code``. A code represents (in
-the database) the actual executable used to run the calculation. Find
-the pk of such a node in the graph and type
-
-.. code:: console
-
- verdi code show
-
-The command prints information on the plugin used to interface the code
-to AiiDA, the remote machine on which the code is executed, the path of
-its executable, etc. To show a list of all available codes type
-
-.. code:: console
-
- verdi code list
-
-If you want to show all codes, including hidden ones and those created
-by other users, use ``verdi code list -a -A``. Now, among the entries of
-the output you should also find the code just shown.
-
-Similarly, the list of computers on which AiiDA can submit calculations
-is accessible by means of the command
-
-.. code:: console
-
- verdi computer list -a
-
-(``-a`` shows all computers, also the one imported in your database but
-that you did not configure, i.e., to which you don’t have access).
-Details about each computer can be obtained by the command
-
-.. code:: console
-
- verdi computer show
-
-Now you have the tools to answer the question:
-
-What is the scheduler installed on the computer where the calculations
-of the graph have run?
-
-Calculation results
-~~~~~~~~~~~~~~~~~~~
-
-The results of a calculation can be accessed directly from the
-calculation node. Type in the terminal
-
-.. code:: console
-
- verdi calculation res
-
-which will print the output dictionary of the “scalar” results parsed by
-AiiDA at the end of the calculation. Note that this is actually a
-shortcut for
-
-.. code:: console
-
- verdi data parameter show
-
-where ``pk2`` refers to the ParameterData node attached as an output of
-the calculation node, with link name ``output_parameters``.
-
-By looking at the output of the command, what is the Fermi energy of the
-calculation with UUID prefix ``ce81c420``?
-
-Similarly to what you did for the calculation inputs, you can access the
-output files via the commands
-
-.. code:: console
-
- verdi calculation outputls
-
-and
-
-.. code:: console
-
- verdi calculation outputcat
-
-Use the latter to verify that the Fermi energy that you have found in
-the last step has been extracted correctly from the output file (Hint:
-filter the lines containing the string “Fermi”, e.g. using ``grep``, to
-isolate the relevant lines).
-
-The results of calculations are stored in two ways: ``ParameterData``
-objects are stored in the database, which makes querying them very
-convenient, whereas ``ArrayData`` objects are stored on the disk. Once
-more, use the command ``verdi data array show `` to know the Fermi
-energy obtained from calculation with UUID prefix ``ce81c420`` (you need
-to use, this time, the PK of the output ArrayData of the calculation,
-with link name ``output_trajectory_array``). As you might have realized
-the difference now is that the whole series of values of the Fermi
-energy calculated after each relax/vc-relax step are stored. (The choice
-of what to store in ``ParameterData`` and ``ArrayData`` nodes is made by
-the parser of ``pw.x`` implemented in the ``aiida-quantumespresso``
-plugin.)
-
-(Optional section) Comments
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-AiiDA offers the possibility to attach comments to a calculation node,
-in order to be able to remember more easily its details. Node with UUID
-prefix ce81c420 has no comment already defined, but you can add a very
-instructive one by typing in the terminal
-
-.. code:: console
-
- verdi comment add -c "vc-relax of a BaTiO3 done with QE pw.x"
-
-Now, if you ask for a list of all comments associated to that
-calculation by typing
-
-.. code:: console
-
- verdi comment show
-
-the comment that you just added will appear together with some useful
-information such as its creator and creation date. We let you play with
-the other options of ``verdi comment`` command to learn how to update or
-remove comments.
-
-AiiDA groups of calculations
-----------------------------
-
-In AiiDA, calculations (and more generally nodes) can be organized in
-groups, which are particularly useful to assign a set of calculations or
-data to a common project. This allows you to have quick access to a
-whole set of calculations with no need for tedious browsing of the
-database or writing complex scripts for retrieving the desired nodes.
-Type in the terminal
-
-.. code:: console
-
- verdi group list
-
-to show a list of the groups that already exist in the database. Choose
-the PK of the group named ``tutorial_pbesol`` and look at the
-calculations that it contains by typing
-
-.. code:: console
-
- verdi group show
-
-In this case, we have used the name of the group to organize
-calculations according to the pseudopotential that has been used to
-perform them. Among the rows printed by the last command you will be
-able to find the calculation we have been inspecting until now.
-
-If, instead, you want to know all the groups to which a specific node
-belomngs, you can run
-
-.. code:: console
-
- verdi group list --node
diff --git a/docs/pages/2018_PRACE_MaX/sections/verdi_shell.md b/docs/pages/2018_PRACE_MaX/sections/verdi_shell.md
deleted file mode 100644
index 0569ad01..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/verdi_shell.md
+++ /dev/null
@@ -1,305 +0,0 @@
-# Verdi shell and AiiDA objects
-
-In this section we will use an interactive ipython environment with all the basic AiiDA classes already loaded. We propose two realizations of such a tool. The first consist of a special ipython shell where all the AiiDA classes, methods and functions are accessible. Type in the terminal
-
-```console
- verdi shell
-```
-
-For all the everyday AiiDA-based operations, i.e. creating, querying and using AiiDA objects, the `verdi shell` is probably the best tool. In this case, we suggest that you use two terminals, one for the `verdi shell` and one to execute bash commands.
-
-The second option is based on `jupyter` notebooks and is probably most suitable to the purposes of our tutorial. Go to the browser where you have opened `jupyter` and click `New` \(\to\) `Python 2` (top right corner). This will open an ipython notebook based on cells where you can type portions of python code. The code will not be executed until you press `Shift+Enter` from within a cell. Type in the first cell
-
-``` python
- %aiida
-```
-
-and execute it. This will set exactly the same environment as the `verdi shell`. The notebook will be automatically saved upon any modification and when you think you are done, you can export your notebook in many formats by going to `File` \(\to\) `Download as`. We suggest you to have a look to the drop-down menus `Insert` and `Cell` where you will find the main commands to manage the cells of your notebook. **The `verdi shell` and the `jupyter` notebook are completely equivalent. Use either according to your personal preference.**
-
-Note: you will still need sometimes to type command-line instructions in `bash` in the first terminal you opened today. To differentiate these from the commands to be typed in the `verdi shell`, the latter will be marked in this document by a vertical line on the left, like:
-
-``` python
- some verdi shell command
-```
-
-while command-line instructions in `bash` to be typed on a terminal will be encapsulated between horizontal lines:
-
-```console
- some bash command
-```
-
-Alternatively, to avoid changing terminal, you can execute `bash` commands within the `verdi shell` or the notebook adding an exclamation mark before the command itself
-
-``` python
- !some bash command
-```
-
-## Loading a node
-
-Most AiiDA objects are represented by nodes, identified in the database by its pk number (an integer). You can access a node using the following command in the shell:
-
-``` python
- node = load_node(PK)
-```
-
-Load a node using one of the calculation pks visible in the graph you displayed in the previous section of the tutorial. Then get the energy of the calculation with the command
-
-``` python
- node.res.energy
-```
-
-You can also type
-
-``` python
- node.res.
-```
-
-and then press `TAB` to see all the possible output results of the calculation.
-
-## Loading different kinds of nodes
-
-### Pseudopotentials
-
-From the graph displayed in Section [sec:aiida_graph], find the pk of the barium pseudopotential file (LDA). Load it and verify that it describes barium. Type
-
-``` python
- upf = load_node(PK)
- upf.element
-```
-
-All methods of `UpfData` are accessible by typing `upf.` and then pressing `TAB`.
-
-### k-points
-
-A set of k-points in the Brillouin zone is represented by an instance of the `KpointsData` class. Choose one from the graph of Section [sec:aiida_graph], load it as `kpoints` and inspect its content:
-
-``` python
- kpoints.get_kpoints_mesh()
-```
-
-Then get the full (explicit) list of k-points belonging to this mesh using
-
-``` python
- kpoints.get_kpoints_mesh(print_list=True)
-```
-
-If you incurred in a `AttributeError`, it means that the kpoints instance does not represent a regular mesh but rather a list of k-points defined by their crystal coordinates (typically used when plotting a band structure). In this case, get the list of k-points coordinates using
-
-``` python
- kpoints.get_kpoints()
-```
-
-If you prefer Cartesian (rather than crystal) coordinates, type
-
-``` python
- kpoints.get_kpoints(cartesian=True)
-```
-
-For later use in this tutorial, let us try now to create a kpoints instance, to describe a regular \(2\times2\times2\) mesh of k-points, centered at the Gamma point (i.e. without offset). This can be done with the following commands:
-
-``` python
- from aiida.orm.data.array.kpoints import KpointsData
- kpoints = KpointsData()
- kpoints_mesh = 2
- kpoints.set_kpoints_mesh([kpoints_mesh,kpoints_mesh,kpoints_mesh])
- kpoints.store()
-```
-
-The import performed in the first line is however unpractical as it requires to remember the exact location of the module containing the KpointsData class. Instead, it is easier to use the `DataFactory` function instead of an explicit import.
-
-``` python
- KpointsData = DataFactory("array.kpoints")
-```
-
-This function loads the appropriate class defined in a string (here `array.kpoints`).[1] Therefore, `KpointsData` is not a class instance, but the kpoints class itself!
-
-### Parameters
-
-Nested dictionaries with individual parameters, as well as lists and arrays, are represented in AiiDA with `ParameterData` objects. Get the PK and load the input parameters of a calculation in the graph of Section [sec:aiida_graph]. Then display its content by typing
-
-``` python
- params.get_dict()
-```
-
-where `params` is the `ParameterData` node you loaded. Modify the dictionary content so that the wave-function cutoff is now set to 20 Ry. Note that you cannot modify an object already stored in the database. To save the modification, you must create a new ParameterData object. Similarly to what discussed before, first load the `ParameterData` class by typing
-
-``` python
- ParameterData = DataFactory('parameter')
-```
-
-Then an instance of the class (i.e. the parameter object that we want to create) is created and initialized by the command
-
-``` python
- new_params = ParameterData(dict=YOUR_DICT)
-```
-
-where `YOUR_DICT` is the modified dictionary. Note that the parameter object is not yet stored in the database. In fact, if you simply type `new_params` in the verdi shell, you will be prompted with a string notifying you the “unstored” status. To save an entry in the database corresponding to the `new_params` object, you need to type a last command in the verdi shell:
-
-``` python
- new_params.store()
-```
-
-### Structures
-
-Find a structure in the graph of Section [sec:aiida_graph] and load it. Display its chemical formula, atomic positions and species using
-
-``` python
- structure.get_formula()
- structure.sites
-```
-
-where `structure` is the structure you loaded. If you are familiar with ASE and PYMATGEN, you can convert this structure to those formats by typing
-
-``` python
- structure.get_ase()
- structure.get_pymatgen()
-```
-
-Let’s try now to define a new structure to study, specifically a silicon crystal. In the `verdi shell`, define a cubic unit cell as a \(3\times3\) matrix, with lattice parameter \(a_{lat}=5.4\) Å:
-
-``` python
- alat = 5.4
- the_cell = [[alat/2,alat/2,0.],[alat/2,0.,alat/2],[0.,alat/2,alat/2]]
-```
-
-**Note**: Default units for crystal structure cell and coordinates in AiiDA are Å.
-
-Structures in AiiDA are instances of `StructureData` class: load it in the verdi shell
-
-``` python
- StructureData = DataFactory("structure")
-```
-
-Now, initialize the class instance (i.e. is the structure we want to study) by the command
-
-``` python
- structure = StructureData(cell=the_cell)
-```
-
-which sets the cubic cell defined before. From now on, you can access the cell with the command
-
-``` python
- structure.cell
-```
-
-Finally, append each of the 2 atoms of the cell command. You can do it using commands like
-
-``` python
- structure.append_atom(position=(alat/4.,alat/4.,alat/4.),symbols="Si")
-```
-
-for the first ‘Si’ atom. Repeat it for the other atomic site \(\left(0,0,0\right)\). You can access and inspect[2] the structure sites with the command
-
-``` python
- structure.sites
-```
-
-If you make a mistake, start over from `structure = StructureData(cell=the_cell)`, or equivalently use
-`structure.clear_kinds()` to remove all kinds (atomic species) and sites. Alternatively, AiiDA structures can also be converted directly from ASE structures using[3]
-
-``` python
- from ase.lattice.spacegroup import crystal
- ase_structure = crystal('Si', [(0,0,0)], spacegroup=227,
- cellpar=[alat, alat, alat, 90, 90, 90],primitive_cell=True)
- structure=StructureData(ase=ase_structure)
-```
-
-Now you can store the new structure object in the database with the command:
-
-``` python
- structure.store()
-```
-
-Finally, we can also import the silicon structure from an external (online) repository such as the Crystallography Open Database :
-
-``` python
-from aiida.tools.dbimporters.plugins.cod import CodDbImporter
-importer = CodDbImporter()
-for entry in importer.query(formula='Si',spacegroup='F d -3 m'):
- structure = entry.get_aiida_structure()
- print "Formula", structure.get_formula()
- print "Unit cell volume: ", structure.get_cell_volume()
-```
-
-In that case two duplicate structures are found for Si.
-
-## Accessing inputs and outputs
-
-Load again the calculation node used in Section [loadnode]:
-
-``` python
- calc = load_node(PK)
-```
-
-Then type
-
-``` python
- calc.inp.
-```
-
-and press `TAB`: you will see all the link names between the calculation and its input nodes. You can use a specific linkname to access the corresponding input node, e.g.:
-
-``` python
- calc.inp.structure
-```
-
-You can use the `inp` method multiple times in order to browse the graph. For instance, if the input structure node that you just accessed is the output of another calculation, you can access the latter by typing
-
-``` python
- calc2 = calc.inp.structure.inp.output_structure
-```
-
-Here `calc2` is the `PwCalculation` that produced the structure used as an input for `calc`.
-
-Similarly, if you type:
-
-``` python
- calc2.out.
-```
-
-and then `TAB`, you will list all output link names of the calculation. One of them leads to the structure that was the input of `calc` we loaded previously:
-
-``` python
- calc2.out.output_structure
-```
-
-Note that links have a single name, that was assigned by the calculation that used the corresponding input or produced the corresponding output, as illustrated in Fig. [fig:graph].
-
-For a more programmatic approach, you can get a list of the inputs and outputs of a node, say `calc`, with the methods
-
-``` python
- calc.get_inputs()
- calc.get_outputs()
-```
-
-Alternatively, you can get a dictionary where the keys are the link names and the values are the linked objects, with the methods
-
-``` python
- calc.get_inputs_dict()
- calc.get_outputs_dict()
-```
-
-Note: You will sometime see entries in the dictionary with names like `output_kpoints_3511`. These exist because standard python dictionaries require unique key names while link labels may not be unique. Therefore, we use the link label plus the PK separated by underscores.
-
-## Pseudopotential families
-
-Pseudopotentials in AiiDA are grouped in “families” that contain one single pseudo per element. We will see how to work with UPF pseudopotentials (the format used by Quantum ESPRESSO and some other codes).
-Download and untar the SSSP pseudopotentials via the commands:
-
-```console
- wget https://archive.materialscloud.org/file/2018.0001/v1/SSSP_efficiency_pseudos.tar.gz
- tar -zxvf SSSP_efficiency_pseudos.tar.gz
-```
-
-Then you can upload the whole set of pseudopotentials to AiiDA by to the following `verdi` command:
-
-```console
-verdi data upf uploadfamily SSSP_efficiency_pseudos 'SSSP' 'SSSP pseudopotential library'
-```
-
-In the command above, `SSSP_efficiency_pseudos` is the folder containing the pseudopotentials, ’SSSP’ is the name given to the family and the last argument is its description.
-Finally, you can list all the pseudo families present in the database with
-
-```console
- verdi data upf listfamilies
-```
diff --git a/docs/pages/2018_PRACE_MaX/sections/workflows.rst b/docs/pages/2018_PRACE_MaX/sections/workflows.rst
deleted file mode 100644
index cdc955e9..00000000
--- a/docs/pages/2018_PRACE_MaX/sections/workflows.rst
+++ /dev/null
@@ -1,767 +0,0 @@
-.. rstcheck: ignore-language=python
-
-AiiDA Workflows
-===============
-
-The aim of the last part of this tutorial is to introduce the concept of
-workflows in AiiDA.
-
-In this section, we will ask you to:
-
-1. Understand how to keep the provenance when running small python
- scripts to convert one data object into another (postprocessing,
- preparation of inputs, …)
-
-2. Understand how to represent simple python functions in the AiiDA
- database
-
-3. Learn how to write a simple workflow in AiiDA (without and with
- remote calculation submission)
-
-4. Learn how to write a workflow with checkpoints: this means that, even
- if your workflows requires external calculations to start, them and
- their dependences are managed through the daemon. While you are
- waiting for the calculations to complete, you can stop and even
- shutdown the computer in which AiiDA is running. When you restart,
- the workflow will continue from where it was.
-
-5. (optional) Go a bit deeper in the syntax of workflows with
- checkpoints (WorkChain), e.g. implementing a convergence workflow
- using ``while`` loops.
-
-A note: this is probably the most “complex” part of the tutorial. We
-suggest that you try to understand the underlying logic behind the
-scripts, without focusing too much on the details of the workflows
-implementation or the syntax. If you want, you can then focus more on
-the technicalities in a second reading.
-
-Introduction
-------------
-
-The ultimate aim of this section is to create a workflow to calculate
-the equation of state of silicon. This is a very common task for an *ab
-initio* researcher. An equation of state consists in calculating the
-total energy (E) as a function of the unit cell volume (V). The minimal
-energy is reached at the equilibrium volume (V^{}). Equivalently, the
-equilibrium is defined by a vanishing pressure (p=-dE/dV). In the
-vicinity of the minimum, the functional form of the equation of state
-can be approximated by a parabola. Such an approximation greatly
-simplifies the calculation of the bulk modulus, that is proportional to
-the second derivative of the energy (d:sup:`2E/dV`\ 2) (a more advanced
-treatment requires fitting the curve with, e.g., the Birch–Murnaghan
-expression).
-
-The process of calculating an equation of state puts together several
-operations. First, we need to define and store in the AiiDA database the
-basic structure of, e.g., bulk Si. Next, one has to define several
-structures with different lattice parameters. Those structures must be
-connected between them in the database, in order to ensure that their
-provenance is recorded. In other words, we want to be sure that in the
-future we will know that if we find a bunch of rescaled structures in
-the database, they all descend from the same one. How to link two nodes
-in the database in a easy way is the subject of Sec. [sec:provenancewf].
-
-In the following sections, the newly created structures will then serve
-as an input for total energy calculations performed, in this tutorial,
-with Quantum ESPRESSO. This task is very similar to what you have done
-in the previous part of the tutorial. Finally, you will fit the
-resulting energies as a function of volume to get the bulk modulus. As
-the EOS task is very common, we will show how to automate its
-computation with workflows, and how to deal with both serial and
-parallel (i.e., independent) execution of multiple tasks. Finally, we
-will show how to introduce more complex logic in your workflows such as
-loops and conditional statements (Sec. [sec:convpressure]), with an
-example on a convergence loop to find iteratively the minimum of an EOS.
-
-[sec:provenancewf]Workfunctions: a way to generalize provenance in AiiDA
-------------------------------------------------------------------------
-
-.. figure:: /assets/2018_PRACE_MaX/workfunctions.png
- :width: 100%
-
- Typical graphs created by using a workfunction. (a) The workfunction
- ``create_structure`` takes a ``Str`` object as input and returns a single
- ``StructureData`` object which is used as input for the workfunction
- ``rescale`` together with a ``Float`` object. This latter workfunction
- returns another ``StructureData`` object, defining a crystal having the
- rescaled lattice constant. (b) Graph generated by nesting workfunctions.
- A wrapper workfunction ``create_rescaled`` calls serially
- ``create_structure`` and ``rescale``. This relationship is stored via
- ``CALL`` links.
-
-Imagine to have a function that takes as input a string of the name of a
-chemical element and generates the corresponding bulk structure as a
-``StructureData`` object. The function might look like this (you will
-find this function in the folder
-``/home/aiida/tutorial_scripts/create_rescale.py`` on your virtual
-machine):
-
-.. code:: python
-
- def create_diamond_fcc(element):
- """
- Workfunction to create the crystal structure of a given element.
- For simplicity, only Si and Ge are valid elements.
- :param element: The element to create the structure with.
- :return: The structure.
- """
- import numpy as np
- elem_alat= {
- "Si": 5.431, # Angstrom
- "Ge": 5.658,
- }
-
- # Validate input element
- symbol = str(element)
- if symbol not in elem_alat.keys():
- raise ValueError("Valid elements are only Si and Ge")
-
- # Create cel starting having lattice parameter alat corresponding to the element
- alat = elem_alat[symbol]
- the_cell = np.array([[0., 0.5, 0.5],
- [0.5, 0., 0.5],
- [0.5, 0.5, 0.]]) * alat
-
- # Create a structure data object
- StructureData = DataFactory("structure")
- structure = StructureData(cell=the_cell)
- structure.append_atom(position=(0., 0., 0.), symbols=str(element))
- structure.append_atom(position=(0.25*alat, 0.25*alat, 0.25*alat),
- symbols=str(element))
- return structure
-
-For the equation of state you need another function that takes as input
-a ``StructureData`` object and a rescaling factor, and returns a
-``StructureData`` object with the rescaled lattice parameter (you will
-find this function in the same file ``create_rescale.py`` on your
-virtual machine):
-
-.. code:: python
-
- def rescale(structure, scale):
- """
- Workfunction to rescale a structure
-
- :param structure: An AiiDA structure to rescale
- :param scale: The scale factor (for the lattice constant)
- :return: The rescaled structure
- """
- the_ase = structure.get_ase()
- new_ase = the_ase.copy()
- new_ase.set_cell(the_ase.get_cell() * float(scale), scale_atoms=True)
- new_structure = DataFactory('structure')(ase=new_ase)
- return new_structure
-
-In order to generate the rescaled starting structures, say for five
-different lattice parameters you would combine the two functions. Enter
-the following commands in the ``verdi shell`` from the
-``tutorial_scripts`` folder.
-
-.. code:: python
-
- from create_rescale import create_diamond_fcc, rescale
-
- s0 = create_diamond_fcc("Si")
- rescaled_structures = [rescale(s0, factor) for factor
- in (0.98, 0.99, 1.0, 1.1, 1.2)]
-
-and store them in the database:
-
-.. code:: python
-
- s0.store()
- for struct in rescaled_structures:
- struct.store()
-
-Run the commands above to store all the structures.
-
-As expected, all the structures that you have created are not linked in
-any manner as you can verify via the ``get_inputs()/get_outputs()``
-methods of the StuctureData class. Instead, you would like these objects
-to be connected as sketched in Fig. [Fig:workfunctions]a. Now that you
-are familiar with AiiDA, you know that the way to connect two data nodes
-is through a calculation. In order to “wrap” python functions and
-automate the generation of the needed links, in AiiDA we provide you
-with what we call “workfunctions”. A normal function can be converted to
-a workfunction by using the ``@workfunction`` decorator[9] that takes
-care of storing the execution as a calculation and adding the links
-between the input and output data nodes.
-
-In our case, what you need to do is to modify the two functions as
-follows (note that we import ``workfunction`` as ``wf`` to be shorter,
-but this is not required). You can do it in the file
-``create_rescale.py``:
-
-.. code:: python
-
- # Add this import
- from aiida.work import workfunction as wf
-
- # Add decorators
- @wf
- def create_diamond_fcc(element):
- ...
- ...
-
- @wf
- def rescale(structure, scale):
- ...
- ...
-
-*Important*: when you use workfunctions, you have to make sure that
-their input and output are actually Data nodes, so that they can be
-stored in the database. AiiDA objects such as ``StructureData``,
-ParameterData, etc. carry around information about their provenance as
-stored in the database. This is why we must use the special
-database-storable types Float, Str, etc. as shown in the snippet below.
-
-Try now to run the following script:
-
-.. code:: python
-
- from aiida.orm.data.base import Float, Str
- from create_rescale import create_diamond_fcc, rescale
-
- s0 = create_diamond_fcc(Str("Si"))
- rescaled_structures = [rescale(s0,Float(factor)) for factor in (0.98, 0.99, 1.0, 1.1, 1.2)]
-
-and check now that the output of ``s0`` as well as the input of the
-rescaled structures point to an intermediate ProcessCalculation node,
-representing the execution of the workfunction, see
-Fig. [Fig:workfunctions].
-
-For instance, you can check that the output links of ``s0`` are the five
-``rescale`` calculations:
-
-.. code:: python
-
- s0.get_outputs()
-
-which outputs
-
-.. code:: python
-
- [,
- ,
- ,
- ,
- ]
-
-and the inputs of each ProcessCalculation (“rescale”) are obtained with:
-
-.. code:: python
-
- for s in s0.get_outputs():
- print s.get_inputs()
-
-that will return
-
-.. code:: python
-
- [0.98, ]
- [0.99, ]
- [1.0, ]
- [1.1, ]
- [1.2, ]
-
-Workfunction nesting
-~~~~~~~~~~~~~~~~~~~~
-
-One key advantage of workfunctions is that they can be nested, namely, a
-workfunction can invoke workfunctions inside its definition, and this
-“call” relationship will also be automatically recorded in the database.
-As an example, let us combine the two previously defined workfunctions
-by means of a wrapper workfunction called “create\_rescaled” that takes
-as input the element and the rescale factor.
-
-Type in your shell (or modify the functions defined in
-``create_rescale.py`` and then run):
-
-.. code:: python
-
- @wf
- def create_rescaled(element, scale):
- """
- Workfunction to create and immediately rescale
- a crystal structure of a given element.
- """
- s0 = create_diamond_fcc(element)
- return rescale(s0,scale)
-
-and create an already rescaled structure by typing
-
-.. code:: python
-
- s1 = create_rescaled(element=Str("Si"), scale=Float(0.98))
-
-Now inspect the input links of ``s1``:
-
-.. code:: python
-
- In [6]: s1.get_inputs()
- Out[6]:
- [,
- ,
- ]
-
-The object ``s1`` has three incoming links, corresponding to *two*
-different calculations as input (in this case, pks 5002 and 5005). These
-correspond to the calculations “create\_rescaled” and “rescale” as shown
-in Fig. [Fig:workfunctions]b. It is normal that calculation 5005 has two
-links, don’t worry about that[10]. To see the “call” link, inspect now
-the outputs of the calculation appearing only once in the list. Write
-down its ```` (in general, it will be different from 5002), then in
-the shell load the corresponding node and inspect the outputs:
-
-.. code:: python
-
- In [12]: p1 = load_node()
- In [13]: p1.get_outputs_dict()
-
-You should be able to identify the two \`\`children" calculations as
-well as the final structure (you will see the calculations linked via
-CALL links: these are calculation-to-calculation links representing the
-fact that ``create_rescaled`` called two sub-workfunctions). The
-graphical representation of what you have in the database should match
-Fig. [Fig:workfunctions]b.
-
-[sec:sync] Run a simple workflow
---------------------------------
-
-Let us now use the workfunctions that we have just created to build a
-simple workflow to calculate the equation of state of silicon. We will
-consider five different values of the lattice parameter obtained
-rescaling the experimental minimum, (a=5.431~), by a factor in ([0.96,
-0.98, 1.0, 1.02, 1.04]). We will write a simple script that runs a
-series of five calculations and at the end returns the volume and the
-total energy corresponding to each value of the lattice parameter. For
-your convenience, besides the functions that you have written so far in
-the file ``create_rescale.py``, we provide you with some other utilities
-to get the correct pseudopotential and to generate a pw input file, in
-the module ``common_wf.py`` which has been put in the
-``tutorial_scripts`` folder.
-
-We have already created the following script named
-``simple_sync_workflow.py``, which you are free to look at but please go
-through the lines carefully and make sure you understand them. If you
-decide to create your own new script, make sure to also place it in the
-folder ``tutorial_scripts``, otherwise the imports won’t work.
-
-Besides the functions in the local folder
-
-.. code:: python
-
- from create_rescale import create_diamond_fcc, rescale
- from common_wf import generate_scf_input_params
-
-you need to import few further AiiDA classes and functions:
-
-.. code:: python
-
- from aiida.work import run, Process
- from aiida.work import workfunction as wf
- from aiida.orm.data.base import Str, Float
- from aiida.orm import CalculationFactory, DataFactory
-
-The only imported function that deserves an explanation is ``run``. For
-the time being, you just need to know that it is a function that needs
-to be used to execute a new workflow. The actual body of the script is
-the following. We suggest that you first have a careful look at it
-before running it.
-
-.. code:: python
-
- # Load the calculation class 'PwCalculation' using its entry point 'quantumespresso.pw'
- PwCalculation = CalculationFactory('quantumespresso.pw')
-
- scale_facs = (0.96, 0.98, 1.0, 1.02, 1.04)
- labels = ["c1", "c2", "c3", "c4", "c5"]
-
- @wf
- def run_eos_wf(codename, pseudo_family, element):
- print "Workfunction node identifiers: {}".format(Process.current().calc)
- s0 = create_diamond_fcc(Str(element))
-
- calcs = {}
- for label, factor in zip(labels, scale_facs):
- s = rescale(s0, Float(factor))
- inputs = generate_scf_input_params(s, str(codename), Str(pseudo_family))
- print "Running a scf for {} with scale factor {}".format(element, factor)
- result = run(PwCalculation, **inputs)
- print "RESULT: {}".format(result)
- calcs[label] = get_info(result)
-
- eos = []
- for label in labels:
- eos.append(calcs[label])
-
- # Return information to plot the EOS
- ParameterData = DataFactory("parameter")
- retdict = {
- 'initial_structure': s0,
- 'result': ParameterData(dict={'eos_data': eos})
- }
-
- return retdict
-
-If you look into the previous snippets of code, you will notice that the
-way we submit a QE calculation is slightly different from what you have
-seen in the first part of the tutorial. The following:
-
-.. code:: python
-
- result = run(PwCalculation, **inputs)
-
-runs in the current python session (without the daemon), waits for its
-completion and returns the output in the user-defined variable
-``result``. The latter is a dictionary whose values are the output nodes
-generated by the calculation, with the link labels as keys. For example,
-once the calculation is finished, in order to access the total energy,
-we need to access the ParameterData node which is linked via the
-“output\_parameters” link (see again Fig. 1 of Day 1 Tutorial, to see
-inputs and outputs of a Quantum ESPRESSO calculation). Once the right
-node is retrieved as ``result[output_parameters]``, we need to get the
-``energy`` attribute. The global operation is achieved by the command
-
-.. code:: python
-
- result['output_parameters'].dict.energy
-
-As you see, the function ``run_eos_wf`` has been decorated as a
-workfunction to keep track of the provenance. Finally, in order to get
-the ```` associated to the workfunction (and print on the screen for
-our later reference), we have used the following command to get the node
-corresponding to the ProcessCalculation:
-
-.. code:: python
-
- from aiida.work import Process
- print Process.current().calc
-
-To run the workflow it suffices to call the function ``run_eos_wf`` in a
-python script providing the required input parameters. For simplicity,
-we have included few lines at the end of the script that invoke the
-function with a static choice of parameters:
-
-.. code:: python
-
- def run_eos(codename='pw-5.1@localhost', pseudo_family='GBRV_lda', element="Si"):
- return run_eos_wf(Str(codename), Str(pseudo_family), Str(element))
-
- if __name__ == '__main__':
- run_eos()
-
-Run the workflow by running the following command from the
-``tutorial_scripts`` directory:
-
-.. code:: console
-
- verdi run simple_sync_workflow.py
-
-and write down the ```` of the ProcessCalculation printed on screen
-at execution.
-
-The command above locks the shell until the full workflow has completed
-(we will see in a moment how to avoid this). While the calculation is
-running, you can use (in a different shell) the command
-``verdi work list`` to show ongoing and finished workfunctions. You can
-“grep” for the ```` you are interested in. Additionally, you can use
-the command ``verdi work status `` to show the tree of the
-sub-workfunctions called by the root workfunction with a given ````.
-
-Wait for the calculation to finish, then call the function
-``plot_eos()`` that we provided in the file ``common_wf.py`` to plot
-the equation of state and fit it with a Birch–Murnaghan equation.
-
-[sec:wf-multiple-calcs]Run multiple calculations
-------------------------------------------------
-
-You should have noticed that the calculations for different lattice
-parameters are executed serially, although they might perfectly be
-executed in parallel because their inputs and outputs are not connected
-in any way. In the language of workflows, these calculations are
-executed in a synchronous (or blocking) way, whereas we would like to
-have them running *asynchronously* (i.e., in a non-blocking way, to run
-them in parallel). One way to achieve this to submit the calculation to
-the daemon using the ``submit`` function. Make a copy of the script
-``simple_sync_workflow.py`` that we worked on in the previous section
-and name it ``simple_submit_workflow.py``. To make the new script work
-asynchronously, simply change the following subset of lines:
-
-.. code:: python
-
- from aiida.work import run
- [...]
- for label, factor in zip(labels, scale_facs):
- [...]
- result = run(PwCalculation, **inputs)
- calcs[label] = get_info(result)
- [...]
- eos = []
- for label in labels:
- eos.append(calcs[label])
-
-replacing them with
-
-.. code:: python
-
- from aiida.work import submit
- from time import sleep
- [...]
- for label, factor in zip(labels, scale_facs):
- [...]
- calcs[label] = submit(PwCalculation, **inputs)
- [...]
- # Wait for the calculations to finish
- for calc in calcs.values():
- while not calc.is_finished:
- sleep(1)
-
- eos = []
- for label in labels:
- eos.append(get_info(calcs[label].get_outputs_dict()))
-
-The main differences are:
-
-- ``run`` is replaced by ``submit``
-
-- The return value of ``submit`` is not a dictionary describing the
- outputs of the calculation, but it is the calculation node for that
- submission.
-
-- Each calculation starts in the background and calculation nodes are
- added to the ``calc`` dictionary.
-
-- At the end of the loop, when all calculations have been launched with
- ``submit``, another loop is used to wait for all calculations to
- finish before gathering the results as the final step.
-
-In the next section we will show you another way to achieve this, which
-has the added bonus that it introduces checkpoints in the workfunction,
-from which the calculation can be resumed should it be interrupted.
-
-After applying the modifications, run the script. You will see that all
-calculations start at the same time, without waiting for the previous
-ones to finish.
-
-If in the meantime you run ``verdi work status ``, all five
-calculations are already shown as output. Also, if you run
-``verdi calculation list``, you will see how the calculations are
-submitted to the scheduler.
-
-[sec:workchainsimple]Workchains, or how not to get lost if your computer shuts down or crashes
-----------------------------------------------------------------------------------------------
-
-The simple workflows that we have used so far have been launched by a
-python script that needs to be running for the whole time of the
-execution, namely the time in which the calculations are submitted, and
-the actual time needed by Quantum ESPRESSO to perform the calculation
-and the time taken to retrieve the results. If you had killed the main
-python process during this time, the workflow would not have terminated
-correctly. Perhaps you have kill the calculation and you experienced the
-unpleasant consequences: intermediate calculation results are
-potentially lost and it is extremely difficult to restart a workflow
-from the exact place where it stopped.
-
-In order to overcome this limitation, in AiiDA we have implemented a way
-to insert checkpoints, where the main code defining a workflow can be
-stopped (you can even shut down the machine on which AiiDA is running!).
-We call these workfunctions with checkpoints “workchains” because, as
-you will see, they basically amount to splitting a workfunction in a
-chain of steps. Each step is then ran by the daemon, in a way similar to
-the remote calculations.
-
-The basic rules that allow you to convert your workfunction-based script
-to a workchain-based one are listed in Table [Tab:wf2frag], which focus
-on the code used to perform the calculation of an equation of state. The
-modifications needed are put side-to-side to allow for a direct
-comparison. In the following, when referencing a specific part of the
-code we will refer to the line number appearing in Table [Tab:wf2frag].
-
-\|c\|c\| & Workchains &
-
-.. code:: console
-
- from aiida.work.workchain import WorkChain, ToContext
- # ...
-
- class EquationOfState(WorkChain):
- @classmethod
- def define(cls, spec):
- super(EquationOfState, cls).define(spec)
- spec.input('element', valid_type=Str)
- spec.input('code', valid_type=Str)
- spec.input('pseudo_family', valid_type=Str)
- spec.outline(
- cls.run_pw,
- cls.return_results,
- )
-
-
- def run_pw(self):
- # ...
- self.ctx.s0 = create_diamond_fcc(Str(self.inputs.element))
-
-
- calcs = {}
- for label, factor in zip(labels, scale_facs):
- s = rescale(self.ctx.s0,Float(factor))
- inputs = generate_scf_input_params(
- s, str(self.inputs.code), self.inputs.pseudo_family)
- # ...
- future = self.submit(PwCalculation, **inputs)
- calcs[label] = future
-
- # Ask the workflow to continue when the results are ready
- # and store them in the context
- return ToContext(**calcs)
-
- def return_results(self):
- eos = []
- for label in labels:
- eos.append(get_info(self.ctx[label].get_outputs_dict()))
-
- # Return information to plot the EOS
- ParameterData = DataFactory('parameter')
- retdict = {
- 'initial_structure': self.ctx.s0,
- 'result': ParameterData(dict={'eos_data': eos})
- }
- for link_name, node in retdict.iteritems():
- self.out(link_name, node)
-
-- Instead of using decorated functions you need to define a class,
- inheriting from a prototype class called ``WorkChain`` that is
- provided by AiiDA (line 4)
-
-- Within your class you need to implement a ``define`` classmethod that
- always takes ``cls`` and ``spec`` as inputs. (lines 6–7). Here you
- specify the main information on the workchain, in particular:
-
- - the *inputs* that the workchain expects. This is obtained by means
- of the method, which provides as the key feature the automatic
- validation of the input types via the ``valid_type`` argument
- (lines 8–10). The same holds true for outputs, as you can use the
- ``spec.output()`` method to state what output types are expected
- to be returned by the workchain. Both ``spec.input()`` and
- ``spec.output()`` methods are optional, and if not specified, the
- workchain will accept any set of inputs and will not perform any
- check on the outputs, as long as the values are database storable
- AiiDA types.
-
- - the ``outline`` consisting in a list of “steps” that you want to
- run, put in the right sequence (lines 11–14). This is obtained by
- means of the method ``spec.outline()`` which takes as input the
- steps. *Note*: in this example we just split the main execution in
- two sequential steps, that is, first ``run_pw`` then
- ``return_results``. However, more complex logic is allowed, as
- will be explained in the Sec. [sec:convpressure].
-
-- You need to split your main code into methods, with the names you
- specified before into the outline (``run_pw`` and ``return_results``
- in this example, lines 17 and 35). Where exactly should you split the
- code? Well, the splitting points should be put where you would
- normally block the execution of the script for collecting results in
- a standard workfunction, namely whenever you call the method
- ``.result()``. Each method should accept only one parameter,
- ``self``, e.g. ``def step_name(self)``.
-
-- You will notice that the methods reference the attribute ``ctx``
- through ``self.ctx``, which is called the *context* and is inherited
- from the base class ``WorkChain``. A python function or workfunction
- normally just stores variables in the local scope of the function.
- For instance, in the example of the subsection [sec:sync], you stored
- the ``calc_results`` in the ``eos`` list, that was a local variable.
- In workchains, instead, to preserve variables between different
- steps, you need to store them in a special dictionary called
- *context*. As explained above, the context variable ``ctx`` is
- inherited from the base class ``WorkChain``, and at each step method
- you just need to update its content. AiiDA will take care of saving
- the context somewhere between workflow steps (on disk, in the
- database, …, depending on how AiiDA was configured). For your
- convenience, you can also access the value of a context variable as
- ``self.ctx.varname`` instead of ``self.ctx[’varname’]`` (see e.g.
- lines 19, 24, 38, 43).
-
-- Any submission within the workflow should not call the normal ``run``
- or ``submit`` functions, but ``self.submit`` to which you have to
- pass the Process class, and a dictionary of inputs (line 28).
-
-- The submission in line 28, returns a future and not the actual
- calculation, because at that point in time we have only just launched
- the calculation to the daemon and it is not yet completed. Therefore
- it literally is a “future” result. Yet we still need to add these
- futures to the context, so that in the next step of the workchain,
- when the calculations are in fact completed, we can access them and
- continue the work. To do this, we can use the ``ToContext`` class.
- This class takes a dictionary, where the values are the futures and
- the keys will be the names under which the corresponding calculations
- will be made available in the context when they are done. See line 33
- how the ``ToContext`` object is created and returned from the step.
- By doing this, the workchain will implicitly wait for the results of
- all the futures you have specified, and then call the next step *only
- when all futures have completed*.
-
-- *Return values*: While in a normal workfunction you attach output
- nodes to the ``FunctionCalculation`` by invoking the *return*
- statement, in a workchain you need to call
- ``self.out(link_name, node)`` for each node you want to return (line
- 46-47). Of course, if you have already prepared a dictionary of
- outputs, you can just use the following syntax:
-
- .. code:: python
-
- self.out_many(retdict) # Keys are link names, value the nodes
-
- The advantage of this different syntax is that you can start emitting
- output nodes already in the middle of the execution, and not
- necessarily at the very end as it happens for normal functions
- (*return* is always the last instruction executed in a function).
- Also, note that once you have called ``self.out(link_name, node)`` on
- a given ``link_name``, you can no longer call ``self.out()`` on the
- same ``link_name``: this will raise an exception.
-
-Inspect the example in the table that compares the two versions of
-workfunctions to understand in detail the different syntaxes.
-
-Finally, the workflow has to be run. For this you have to use the
-function ``run`` passing as arguments the ``EquationOfState`` class and
-the inputs as key-value arguments. For example, you can execute
-
-.. code:: python
-
- run(EquationOfState, element=Str('Si'), code=Str('qe-pw-6.2.1@localhost'),
- pseudo_family=Str('GBRV_lda'))
-
-While the workflow is running, you can check (in a different terminal)
-what is happening to the calculations using ``verdi calculation list``.
-You will see that after a few seconds the calculations are all submitted
-to the scheduler and can potentially run at the same time.
-
-**Note:** You will see warnings that say
-``Exception trying to save checkpoint, this means you will not be able to restart in case of a crash until the next successful checkpoint``,
-these are generated by the ``PwCalculation`` which is unable to save a
-checkpoint because it is not in a so called ‘importable path’. Simply
-put this means that if AiiDA were to try and reload the class it
-wouldn’t know which file to find it in. To get around this you could
-simply put the workchain in a different file that is in the ‘PYTHONPATH’
-and then launch it by importing it in your launch file, this way AiiDA
-knows where to find it next time it loads the checkpoint.
-
-As an additional exercise (optional), instead of running the main
-workflow (``EquationOfState``), try to submit it. Note that the file
-where the WorkChain is defined will need to be globally importable (so
-the daemon knows how to load it) and you need to launch it (with
-``submit``) from a different python file. The easiest way to achieve
-this is typically to embed the workflow inside a python package.
-
-**Note:** As good practice, you should try to keep the steps as short as
-possible in term of execution time. The reason is that the daemon can be
-stopped and restarted only between execution steps and not if a step is
-in the middle of a long execution.
-
-Finally, as an optional exercise if you have time, you can jump to the
-Appendix [sec:convpressure], which shows how to introduce more complex
-logic into your WorkChains (if conditionals, while loops etc.). The
-exercise will show how to realize a convergence loop to obtain the
-minimum-volume structure in a EOS using the Newton’s algorithm.
diff --git a/docs/pages/2019_IIT_Mandi_India/index.rst b/docs/pages/2019_IIT_Mandi_India/index.rst
deleted file mode 100644
index 5a9e8fe4..00000000
--- a/docs/pages/2019_IIT_Mandi_India/index.rst
+++ /dev/null
@@ -1,84 +0,0 @@
-.. _Mandi 2019 Homepage:
-
-2019, IIT Mandi, Mandi, India
-=============================
-
-+-----------------+--------------------------------------------------------------------------------+
-| Related resources |
-+=================+================================================================================+
-| Virtual Machine | `Quantum Mobile 19.09.0`_ |
-+-----------------+--------------------------------------------------------------------------------+
-| python packages | `aiida-core 1.0.0b6`_, `aiida-quantumespresso 3.0.0a5`_, `aiidalab 19.08.0a1`_ |
-+-----------------+--------------------------------------------------------------------------------+
-| codes | `Quantum Espresso 6.4.1`_ |
-+-----------------+--------------------------------------------------------------------------------+
-
-.. _Quantum Mobile 19.09.0: https://github.com/marvel-nccr/quantum-mobile/releases/tag/19.09.0
-.. _aiida-core 1.0.0b6: https://pypi.org/project/aiida-core/1.0.0b6
-.. _aiida-quantumespresso 3.0.0a5: https://pypi.org/project/aiida-quantumespresso/3.0.0a5
-.. _aiidalab 19.08.0a1: https://pypi.org/project/aiidalab/19.8.0a1
-.. _Quantum Espresso 6.4.1: https://github.com/QEF/q-e/releases/tag/qe-6.4.1
-
-These are the hands-on materials from the 3-day AiiDA tutorial |tutorial_name| from October 9-11, 2019.
-
-While participants of the tutorial used virtual machines on a cloud service, you can follow the tutorial on your own computer using the Quantum Mobile VirtualBox image linked above.
-The image already contains all the required software.
-
-Getting started
----------------
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- ./sections/setup
- ./sections/first_taste
-
-Sections
---------
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- ./sections/verdi_cmdline
- ./sections/verdi_shell
- ./sections/calculations
- ./sections/querybuilder
- ./sections/workflows
-
-Appendices
-----------
-
-.. toctree::
- :maxdepth: 1
- :numbered:
-
- ./sections/appendix_computer_code_setup
- ./sections/appendix_structure_data
- ./sections/appendix_upf_data
- ./sections/appendix_input_validation
- ./sections/appendix_restarting_calculations
- ./sections/appendix_queries
- ./sections/appendix_workflow_logic
-
-Acknowledgements
-----------------
-
-The |tutorial_name| was made possible by support from IIT Mandi and MARVEL, and kindly hosted by IIT Mandi.
-
-.. image:: sponsors/iit_mandi.jpg
- :target: http://iitmandi.ac.in/
- :width: 90px
-
-.. image:: sponsors/marvel.png
- :target: http://nccr-marvel.ch
- :width: 105px
-
-.. image:: sponsors/epfl.png
- :target: https://epfl.ch
- :width: 105px
-
-.. |tutorial_name| raw:: html
-
- National Workshop on Writing reproducible workflows for computational materials science using AiiDA
diff --git a/docs/pages/2019_IIT_Mandi_India/notebooks/bandstructure.ipynb b/docs/pages/2019_IIT_Mandi_India/notebooks/bandstructure.ipynb
deleted file mode 100644
index c1e2dc00..00000000
--- a/docs/pages/2019_IIT_Mandi_India/notebooks/bandstructure.ipynb
+++ /dev/null
@@ -1,221 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# A real world workchain example: electronic band structure"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "*Import statements - make sure to execute the cell below this one (it may be hidden)*"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "hide_input": false
- },
- "outputs": [],
- "source": [
- "%matplotlib inline\n",
- "%aiida\n",
- "\n",
- "from datetime import datetime, timedelta\n",
- "\n",
- "from aiida.tools.dbimporters.plugins.cod import CodDbImporter\n",
- "from aiida.engine import launch\n",
- "\n",
- "PwBandStructureWorkChain = WorkflowFactory('quantumespresso.pw.band_structure')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Calculating the electronic band structure with an AiiDA workchain\n",
- "This tutorial will show how useful a workchain can be in performing a well defined task, such as computing and visualizing the electronic band structure for a simple crystal structure. The goal of this tutorial is not to show you the intricacies of the actual workchain itself, but rather to serve as an example that workchains can simplify standard workflows in computational materials science. The workchain that we will use here will employ Quantum Espresso's pw.x code to calculate the charge densities for several crystal structures and compute a band structure from those. Many choices that normally face the researcher before being able to perform this calculation, such as the selection of suitable pseudo potentials, energy cutoff values, k-point grids and k-point paths along high symmetry points, are now performed automatically by the workchain. All that remains for the user to do is to simply define a structure, pass it to the workchain and sit back!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Below, we import the crystal structure of Al as an example, and run the PwBandStructureWorkChain for that structure. The estimated run time is noted in a comment in the calculation cell."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Loading the COD importer so we can directly import structure from COD id's\n",
- "importer = CodDbImporter()\n",
- "# Make sure here to define the correct codename that corresponds to the pw.x code installed on your machine of choice\n",
- "codename = 'qe-6.4.1-pw@localhost'\n",
- "code = Code.get_from_string(codename)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Importing example crystal structures from COD to AiiDA structure objects"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Al COD ID='9008460'\n",
- "structure_Al = importer.query(id='9008460')[0].get_aiida_structure()\n",
- "\n",
- "structure_Al.get_formula()\n",
- "\n",
- "# The following structure can be used instead of Al, but will take much longer on the AWS machine.\n",
- "# CaF2 COD ID='1000043' -- approximately 1/2 hour to run\n",
- "# h-BN COD ID='9008997' -- approximately 45 mins to run\n",
- "# GaAs COD ID='9008845' -- approximately 2 hours to run "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Now we run the bandstructure workchain for the selected structures"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The bandstructure workchain follows the following protocol:\n",
- "* Determine the primitive cell of the input structure\n",
- "* Run a vc-relax to relax the structure\n",
- "* Refine the symmetry of the relaxed structure to ensure the primitive cell is used and run a self-consistent field calculation on it\n",
- "* Run a non self-consistent field band structure calculation along a path of high symmetry k-points determined by [seekpath](http://materialscloud.org/tools/seekpath)\n",
- "\n",
- "Numerical parameters for the default 'theos-ht-1.0' protocol are determined as follows: \n",
- "* Suitable pseudopotentials and energy cutoffs are automatically searched from the [SSSP library](http://materialscloud.org/sssp) installed on your machine (it uses the efficiency version 1.1).\n",
- "* K-point mesh is selected to have a minimum k-point density of 0.2 Å-1\n",
- "* A Marzari-Vanderbilt smearing of 0.02 Ry is used for the electronic occupations\n",
- "\n",
- "In case the pseudopotentials are not installed, they can be downloaded in a terminal as:\n",
- "\n",
- " wget https://archive.materialscloud.org/file/2018.0001/v3/SSSP_efficiency_pseudos.tar.gz\n",
- " tar -zxvf SSSP_efficiency_pseudos.tar.gz\n",
- " \n",
- "The protocol looks for a UPF file with a specific hash code, that is unique for each different file. \n",
- "You can check that you have the right\n",
- "one by performing a search in the database:\n",
- "\n",
- " qb=QueryBuilder()\n",
- " qb.append(UpfData, filters={'attributes.md5':{'==':'cfc449ca30b5f3223ec38ddd88ac046d'}})\n",
- " len(qb.all())\n",
- "\n",
- "'md5' is a searchable attribute of the pseudopotential data object."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# This will take approximately 6 minutes on the tutorial AWS (for Al)\n",
- "results = launch.run(\n",
- " PwBandStructureWorkChain,\n",
- " code=code,\n",
- " structure=structure_Al\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "fermi_energy = results['scf_parameters'].dict.fermi_energy\n",
- "results['band_structure'].show_mpl(y_origin=fermi_energy, plot_zero_axis=True)\n",
- "\n",
- "print(\"\"\"Final crystal symmetry: {spacegroup_international} (number {spacegroup_number})\n",
- "Extended Bravais lattice symbol: {bravais_lattice_extended}\n",
- "The system has inversion symmetry: {has_inversion_symmetry}\"\"\".format(\n",
- " **results['seekpath_parameters'].get_dict()))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If you want to use a different pseudopotential family (or version of the family) (for instance [SSSP v1.0](https://archive.materialscloud.org/file/2018.0001/v1/SSSP_efficiency_pseudos.tar.gz) instead of the default SSSP v1.1) you can pass an additional parameter when calling the WorkChain, as follows:\n",
- " \n",
- " protocol = Dict(dict={\n",
- " 'name':'theos-ht-1.0', \n",
- " 'modifiers': {\n",
- " 'pseudo' : 'SSSP-efficiency-1.0'\n",
- " }\n",
- " })\n",
- "\n",
- "(note that only some values are accepted for pseudo, that you can find [here](https://github.com/aiidateam/aiida-quantumespresso/blob/b02250146576eb573ccb45d05047075f54853f9d/aiida_quantumespresso/utils/protocols/pw.py#L24))."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# This will take approximately 6 minutes on the tutorial AWS (for Al)\n",
- "results = launch.run(\n",
- " PwBandStructureWorkChain,\n",
- " code=code,\n",
- " structure=structure_Al,\n",
- " protocol=Dict(dict={\n",
- " 'name':'theos-ht-1.0',\n",
- " 'modifiers': {\n",
- " 'pseudo':'SSSP-efficiency-1.0'\n",
- " }\n",
- " })\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.7.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/docs/pages/2019_IIT_Mandi_India/notebooks/querybuilder-template.ipynb b/docs/pages/2019_IIT_Mandi_India/notebooks/querybuilder-template.ipynb
deleted file mode 100644
index 65dd70ae..00000000
--- a/docs/pages/2019_IIT_Mandi_India/notebooks/querybuilder-template.ipynb
+++ /dev/null
@@ -1,973 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# AiiDA's QueryBuilder"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "*Import statements - make sure to execute the cell below this one (it may be hidden)*"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "hide_input": false
- },
- "outputs": [],
- "source": [
- "from IPython.display import Image\n",
- "from datetime import datetime, timedelta\n",
- "import numpy as np\n",
- "from aiida import load_profile\n",
- "from matplotlib import gridspec, pyplot as plt\n",
- "load_profile()\n",
- "from aiida.orm import load_node, Node, Group, Computer, User, CalcJobNode, Code\n",
- "from aiida.plugins import CalculationFactory, DataFactory\n",
- "\n",
- "PwCalculation = CalculationFactory('quantumespresso.pw')\n",
- "StructureData = DataFactory('structure')\n",
- "KpointsData = DataFactory('array.kpoints')\n",
- "Dict = DataFactory('dict')\n",
- "UpfData = DataFactory('upf')\n",
- "\n",
- "def plot_results(query_res):\n",
- " \"\"\"\n",
- " :param query_res: The result of an instance of the QueryBuilder\n",
- " \"\"\"\n",
- " smearing_unit_set,magnetization_unit_set,pseudo_family_set = set(), set(), set()\n",
- " # Storing results:\n",
- " results_dict = {}\n",
- " for pseudo_family, formula, smearing, smearing_units, mag, mag_units in query_res:\n",
- " if formula not in results_dict:\n",
- " results_dict[formula] = {}\n",
- " # Storing the results:\n",
- " results_dict[formula][pseudo_family] = (smearing, mag)\n",
- " # Adding to the unit set:\n",
- " smearing_unit_set.add(smearing_units)\n",
- " magnetization_unit_set.add(mag_units)\n",
- " pseudo_family_set.add(pseudo_family)\n",
- "\n",
- " # Sorting by formula:\n",
- " sorted_results = sorted(results_dict.items())\n",
- " formula_list = next(zip(*sorted_results))\n",
- " nr_of_results = len(formula_list)\n",
- "\n",
- " # Checks that I have not more than 3 pseudo families.\n",
- " # If more are needed, define more colors\n",
- " #pseudo_list = list(pseudo_family_set)\n",
- " if len(pseudo_family_set) > 3:\n",
- " raise Exception('I was expecting 3 or less pseudo families')\n",
- "\n",
- " colors = ['b', 'r', 'g']\n",
- "\n",
- " # Plotting:\n",
- " plt.clf()\n",
- " fig=plt.figure(figsize=(16, 9), facecolor='w', edgecolor=None)\n",
- " gs = gridspec.GridSpec(2,1, hspace=0.01, left=0.1, right=0.94)\n",
- "\n",
- " # Defining barwidth\n",
- " barwidth = 1. / (len(pseudo_family_set)+1)\n",
- " offset = [-0.5+(0.5+n)*barwidth for n in range(len(pseudo_family_set))]\n",
- " # Axing labels with units:\n",
- " yaxis = (\"Smearing energy [{}]\".format(smearing_unit_set.pop()),\n",
- " \"Total magnetization [{}]\".format(magnetization_unit_set.pop()))\n",
- " # If more than one unit was specified, I will exit:\n",
- " if smearing_unit_set:\n",
- " raise ValueError('Found different units for smearing')\n",
- " if magnetization_unit_set:\n",
- " raise ValueError('Found different units for magnetization')\n",
- " \n",
- " # Making two plots, the top one for the smearing, the bottom one for the magnetization\n",
- " for index in range(2):\n",
- " ax=fig.add_subplot(gs[index])\n",
- " for i,pseudo_family in enumerate(pseudo_family_set):\n",
- " X = np.arange(nr_of_results)+offset[i]\n",
- " Y = np.array([thisres[1][pseudo_family][index] for thisres in sorted_results])\n",
- " ax.bar(X, Y, width=0.2, facecolor=colors[i], edgecolor=colors[i], label=pseudo_family)\n",
- " ax.set_ylabel(yaxis[index], fontsize=14, labelpad=15*index+5)\n",
- " ax.set_xlim(-0.5, nr_of_results-0.5)\n",
- " ax.set_xticks(np.arange(nr_of_results))\n",
- " if index == 0:\n",
- " plt.setp(ax.get_yticklabels()[0], visible=False)\n",
- " ax.xaxis.tick_top()\n",
- " ax.legend(loc=3, prop={'size': 18})\n",
- " else:\n",
- " plt.setp(ax.get_yticklabels()[-1], visible=False)\n",
- " for i in range(0, nr_of_results, 2):\n",
- " ax.axvspan(i-0.5, i+0.5, facecolor='y', alpha=0.2)\n",
- " ax.set_xticklabels(list(formula_list),rotation=90, size=14, ha='center')\n",
- " plt.show()\n",
- "\n",
- "def generate_query_graph(qh, out_file_name):\n",
- "\n",
- " def draw_vertice_settings(idx, vertice, **kwargs):\n",
- " \"\"\"\n",
- " Returns a string with all infos needed in a .dot file to define a node of a graph.\n",
- " :param node:\n",
- " :param kwargs: Additional key-value pairs to be added to the returned string\n",
- " :return: a string\n",
- " \"\"\"\n",
- " if vertice['entity_type'].startswith('process'):\n",
- " shape = \"shape=polygon,sides=4\"\n",
- " elif vertice['entity_type'].startswith('data.code'):\n",
- " shape = \"shape=diamond\"\n",
- " else:\n",
- " shape = \"shape=ellipse\"\n",
- " filters = kwargs.pop('filters', None)\n",
- " additional_string = \"\"\n",
- " if filters:\n",
- " additional_string += '\\nFilters:'\n",
- " for k,v in filters.items():\n",
- " additional_string += \"\\n {} : {}\".format(k,v)\n",
- "\n",
- "\n",
- " label_string = \" ('{}')\".format(vertice['tag'])\n",
- "\n",
- " labelstring = 'label=\"{} {}{}\"'.format(\n",
- " vertice['entity_type'], #.split('.')[-2] or 'Node',\n",
- " label_string,\n",
- " additional_string)\n",
- " #~ return \"N{} [{},{}{}];\".format(idx, shape, labelstring,\n",
- " return \"{} [{},{}];\".format(vertice['tag'], shape, labelstring)\n",
- " nodes = {v['tag']:draw_vertice_settings(idx, v, filters=qh['filters'][v['tag']]) for idx, v in enumerate(qh['path'])}\n",
- " links = [(v['tag'], v['joining_value'], v['joining_keyword']) for v in qh['path'][1:]]\n",
- "\n",
- " with open('temp.dot','w') as fout:\n",
- " fout.write(\"digraph G {\\n\")\n",
- " for l in links:\n",
- " fout.write(' {} -> {} [label=\" {}\"];\\n'.format(*l))\n",
- " for _, n_values in nodes.items():\n",
- " fout.write(\" {}\\n\".format(n_values))\n",
- "\n",
- " fout.write(\"}\\n\")\n",
- " import os\n",
- " os.system('dot temp.dot -Tpng -o {}'.format(out_file_name))\n",
- "\n",
- "def store_formula_in_extra():\n",
- " from aiida.orm import QueryBuilder\n",
- " qb = QueryBuilder()\n",
- " qb.append(StructureData, filters={'extras':{'!has_key':'formula'}})\n",
- " for structure, in qb.all():\n",
- " structure.set_extra('formula', structure.get_formula(mode='count'))\n",
- "\n",
- "store_formula_in_extra()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 1. Introduction to the QueryBuilder\n",
- "As you will use `AiiDA` to run your calculations, the database that stores all the data and the provenance will quickly grow to be very large. To help you find the needle that you might be looking for in this big haystack, we need an efficient search tool. `AiiDA` provides a tool to do exactly this: the `QueryBuilder`. The `QueryBuilder` acts as the gatekeeper to your database, to whom you can ask questions about the contents of your database (also referred to as queries), by specifying what are looking for. In this part of the tutorial, we will focus on how to use the `QueryBuilder` to make these queries and understand/use the results.\n",
- "\n",
- "In order to use the `QueryBuilder`, we first need to import it. We can accomplish this by executing the `import` statement in the following cell. Go ahead and select the next cell, and press `Shift+Enter`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "from aiida.orm import QueryBuilder"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Before we can ask the `QueryBuilder` questions about our database, we first need to create an instance of it (i.e., we create a new query):"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now that we have an instance of our `QueryBuilder` which we named `qb`, we are ready to start asking about the content of our database. For example, we may want to know exactly how many nodes there are in our database. To tell `qb` that we are interested in all the occurrences of the `Node` class in our database, we `append` it to the list of objects it should find. \n",
- "\n",
- "*Note*: The method is called `append` because, as we will see later, you can append multiple nodes to a `QueryBuilder` instance consecutively to search in the graph, as if you had a list: what we are doing is querying a graph, and for every vertice of the graph in our subquery, we will use one `append` call. But we'll see this use better in a few steps."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb.append(Node)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We have now narrowed down the scope of `qb` to just the nodes that are present in our database. To learn how many nodes there are exactly, all we have to do is to ask `qb` to count them."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb.count()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Now as you may have learned in previous sections of the tutorial, nodes come in different kinds and flavors. For example, all our crystal structures that we have stored in the database are saved in nodes that are of the type `StructureData`. If instead of all the nodes, we would rather like to count only the crystal structure nodes, we simply tell our `QueryBuilder` to narrow its scope only to objects of type `StructureData`. Since we want to create a new independent query, we must create a new instance of the `QueryBuilder`. In the next cell, we have typed part of the code to count all the structure nodes. See if you can finish the line with the comment, to tell the `QueryBuilder` that you are only interested in `StructureData` nodes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "qb = QueryBuilder()\n",
- "qb.append() # How do we finish this line to tell the query builder to count only the structure nodes?\n",
- "qb.count()\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.count()\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Instead of just counting how many structure nodes we have, we may also actually want to see some of them. This is as easy as telling our `QueryBuilder` that we are not interested in the `count` but rather that we want to retrieve `all` the nodes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note that this command is very literal and does in fact retrieve **all** the structure nodes that are stored in your database, which may be very slow if your database becomes very large. One solution is to simply tell the `QueryBuilder` that we are, for example, only interested in 5 structure nodes. This can be done with the `limit` method as follows:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Another option is to simply use the concept of array slicing, native to python, to specify a subset of the total return set to be returned. Notice that this example can be very slow in big databases. When you want performance, use the functionality native to the QueryBuilder like `limit`, that limit the number of results directly at the database level!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb.limit(None)\n",
- "qb.all()[:7]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If we want to know a little bit more about the retrieved structure nodes, we can loop through our results. This allows you, for instance, to print the formula of the structures:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(StructureData)\n",
- "qb.limit(5)\n",
- "for structure, in qb.all():\n",
- " print(structure.get_formula())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This is just a simple example how we can employ the `QueryBuilder` to get details about the contents of our database. We have now seen simple queries for the `Node` and `StructureData` classes, but the same rules apply to all the `AiiDA` node classes. For example we may want to count the number of entries for each of the node classes in the following list:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "class_list = [Node, StructureData, KpointsData, Dict, UpfData, Code]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Using the tools we have learned so far, we can build a table of the number of occurrences of each of these node classes that are stored in our database. We simply loop over the `class_list` and create a `QueryBuilder` for each and count the entries."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "for class_name in class_list:\n",
- " qb = QueryBuilder()\n",
- " qb.append(class_name)\n",
- "#TUT_USER_START\n",
- " print() # Finish this line to print the results!\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- " print('{:>15} | {:6}'.format(class_name.__name__, qb.count()))\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "If all went well, you should see something like the following, where of course the numbers may differ for your database\n",
- "\n",
- "Class name | Entries\n",
- "---------------|--------\n",
- " Node | 10273 \n",
- " StructureData | 271 \n",
- " KpointsData | 953 \n",
- " Dict | 2922 \n",
- " UpfData | 85 \n",
- " Code | 10"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 2. Projection and filters\n",
- "Up until now we have always asked the `QueryBuilder` to return the node class. However, we might not necessarily be interested in all the node's properties, but rather just a selected set or even just a single property. We can tell the `QueryBuilder` which properties we would like to be returned, by asking it to **project** those properties in the result. For example, we may only want to get the `uuid`s of a set of nodes. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(Node, project=['uuid'])\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "By using the `project` keyword in the `append` call, we are informing the `QueryBuilder` that we are only interested in the `uuid` property of the `Node` class. Note that the value that we assign to `project` is a list, since we may want to specify more than one property. See if you can get the `QueryBuilder` to return *both* the `id` and the `uuid` of the first 5 `Node`s in the following cell.\n",
- "\n",
- "**Note**: in the context of the QueryBuilder, the `id` is the `pk` of the node."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "#TUT_USER_START\n",
- "qb.append(Node, project=)#? What should the value be for the project key\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(Node, project=['id', 'uuid'])\n",
- "#TUT_SOLUTION_END\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "To give you an idea of the various properties that you can project for some of the `AiiDA` node classes you can consult the following table.\n",
- "Note that this is by no means an exhaustive list:\n",
- "\n",
- "Class | Properties\n",
- "---------|-----------\n",
- "Node | `id`, `uuid`, `node_type`, `label`, `description`, `ctime`, `mtime`\n",
- "Computer | `id`, `uuid`, `name`, `hostname`, `description`, `transport_type`, `scheduler_type`\n",
- "User | `id`, `email`, `first_name`, `last_name`, `institution`\n",
- "Group | `id`, `uuid`, `label`, `type_string`, `time`, `description`"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The same properties can also be used to *filter* for specific nodes in your database. Indeed, up until now, we only asked the `QueryBuilder` to return *all* the instances of a certain type of node, or at best a limited number of those (without specifying which ones). But in general we might be interested in a very specific node. For example, we may have the `id` of a certain node and we would like to know when it was created and last modified. We can tell the `QueryBuilder` to select nodes that only match that criterion, by telling it to **filter** based on that property."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(Node, project=['ctime', 'mtime'], filters={'id': {'==': 1}})\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note the syntax of the `filters` keyword. The value is a dictionary, where the keys indicate the node property that it is supposed to operate on, in this case the `id` property. The value of that key is again itself a dictionary, where the key indicates the logical operator `==` and the value corresponds to the value of the property.\n",
- "\n",
- "You may have multiple criteria that you want to filter for, in which case you can use the logical `or` and `and` operators. Let's say, for example, that you want the `QueryBuilder` to retrieve all the `StructureData` nodes that have a certain `label` **and** were created no longer than 12 days ago. You can translate this criterion by making use of the `and` operator which allows you to specify multiple filters that all have to be satisfied."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(\n",
- " Node, \n",
- " filters={\n",
- " 'and': [\n",
- " {'ctime': {'>': datetime.now() - timedelta(days=12)}},\n",
- " {'label': {'==':'graphene'}}\n",
- " ]\n",
- " }\n",
- ")\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "You will have noticed that the `>` operator, and its related operators, can work with python `datetime` objects. These are just a few of the operators that `QueryBuilder` understands. Below you find a table with some of the logical operators that you can use:\n",
- "\n",
- "Operator | Data type | Example | Description\n",
- "---------------------|-----------------------|------------------------------------|------------------\n",
- "`==` | all | `{'==': '12'}` | equality operator\n",
- "`in` | all | `{'in':['FINISHED', 'PARSING']}` | member of a set\n",
- "`<`, `>`, `<=`, `>=` | float, int, datetime | `{'>': 5.2}` | size comparison operator\n",
- "`like` | char, str | `{'like': 'calculation%'}` | string comparison, `%` is wildcard\n",
- "`ilike` | char, str | `{'ilike': 'caLCulAtion%'}` | string comparison, capital insensitive\n",
- "`or` | | `{'or': [{'<': 5.3}, {'>': 6.3}]}` | logical or operator\n",
- "`and` | | `{'and': [{'>=': 2}, {'<=': 6}]}` | logical and operator"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As an exercise, try to write a query below that will retrieve all `Group` nodes whose `label` property starts with the string `tutorial`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Write your query here\n",
- "#TUT_SOLUTION_START\n",
- "qb = QueryBuilder()\n",
- "qb.append(Group, filters={'label': {'like': 'tutorial%'}})\n",
- "qb.limit(5)\n",
- "qb.all()\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3. Defining relationships between query clauses"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "So far we have seen how we can use the `QueryBuilder` to search the database for entries of a specific node type, potentially projecting only specific properties and filtering for certain property values. However, our nodes do not live in a vacuum, but they are part of a graph and thus are linked one another. Therefore, we typically want to be able to search for nodes based on a certain relationship that they might have with other nodes. Consider for example that you have a `StructureData` node that was produced by some calculation. How would we be able to retrieve that calculation?\n",
- "\n",
- "To accomplish this, we need to be able to tell the `QueryBuilder` what the relationship is between the nodes that we are interested in. With the `QueryBuilder`, we can do the following to find all the structure nodes that have been created as an output by a `PwCalculation` process.\n",
- "\n",
- "**IMPORTANT NOTE**: In the graph, we are not looking for a `PwCalculation` process (since processes do not live in the graph, as you have learnt). We are actually looking for a `CalcJobNode` whose `process_type` column indicates that it was run by a `PwCalculation` process. Since this is a very common pattern, the `QueryBuilder` allows to directly append the `PwCalculation` process class as a shortcut, but it internally unwraps this into a query for a `CalcJobNode` with the appropriate filter on the `process_type`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation, tag='calculation')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Since we are looking for pairs of nodes, we need to `append` the second node as well to the `QueryBuilder` instance. In the next line, to specify the relationship between the nodes, we need to be able to reference back to the `CalcJobNode` that is matched by the previous clause: therefore, we give it a `tag` with the `tag` keyword."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb.append(StructureData, with_incoming='calculation')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The goal was to find `StructureData` nodes, so we `append` that to the `qb`. However, we didn't want to find just any `StructureData` nodes; they had to be an output of `PwCalculation`. \n",
- "\n",
- "Note how we expressed this relation by the `with_incoming` keyword, because we want a `StructureData` node having an *incoming* link from the `CalcJobNode` referenced by the `calculation` tag (i.e., the `StructureData` must be an *output* of the calculation).\n",
- "\n",
- "Now all we have to do is execute the query to retrieve our structures:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "What we did can be visualized schematically, thanks to a little tool we have written for you."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query1.png')\n",
- "Image(filename='query1.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The `with_incoming` keyword is only one of many potential relationships that exist between the various `AiiDA` nodes and that are implemented in the `QueryBuilder`. The table below gives an overview of the implemented relationships, which nodes they are defined for and what relation it implicates. The full documentation can be found [on this page of the AiiDA documentation](https://aiida-core.readthedocs.io/en/latest/querying/querybuilder/append.html#joining-entities)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Entity from\t| Entity to\t| Relationship | Explanation\n",
- "------------|-----------|------------------|------------\n",
- "Node | Node | with_outgoing | One node as input of another node\n",
- "Node | Node | with_incoming | One node as output of another node\n",
- "Node | Node | with_descendants | One node as the ancestor of another node\n",
- "Node | Node | with_ancestors | One node as descendant of another node\n",
- "Group | Node | with_node | The group of a node\n",
- "Node | Group | with_group | The node is a member of a group\n",
- "Computer | Node | with_node | The computer of a node\n",
- "Node | Computer | with_computer | The node of a computer\n",
- "User | Node | with_node | The creator of a node is a user\n",
- "Node | User | with_user | The node was created by a user"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "As an exercise, see if you can write a query that will return all the `UpfData` nodes that are a member of a `Group` whose name starts with the string `SSSP`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "qb = QueryBuilder()\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb = QueryBuilder()\n",
- "qb.append(Group, filters={'label': {'like': 'SSSP%'}}, tag='group')\n",
- "qb.append(UpfData, with_group='group')\n",
- "qb.all()\n",
- "#TUT_SOLUTION_END\n",
- "# Here I also visualize what's going on:\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query2.png')\n",
- "Image(filename='query2.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 4. Attributes and extras"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In section 2, we showed you how you can `project` specific properties of a `Node` and gave a list of properties that a `Node` instance possesses. Since then, we have come across a lot of different `AiiDA` data nodes, such as `StructureData` and `UpfData`, that were secretly `Node`'s in disguise. Or to put it correctly, as `AiiDA` employs the object-oriented programming paradigm, both `StructureData` and `UpfData` are examples of subclasses of the `Node` class and therefore inherit its properties. That means that whatever property a `Node` has, both `StructureData` and `UpfData` will have too. However, there is a semantic difference between a `StructureData` node and a `UpfData`, and so we may want to add a property to one that would not make sense for the other. To solve this, `AiiDA` introduces the concept of `attributes`. These are similar to properties, except that they are specific to the `Node` type that they are attached to. This allows you to add an `attribute` to a certain node, without having to change the implementation of all the others.\n",
- "\n",
- "For example, the `Dict` nodes that are generated as output of `PwCalculation`'s may have an attribute named `wfc_cutoff`. To project for this particular `attribute`, one can use exactly the same syntax as shown in section 2 for the regular `Node` properties, and one has to only prepend `attributes.` to the attribute name. Demonstration:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation, tag='pw')\n",
- "qb.append(Dict, with_incoming='pw', project=[\"attributes.wfc_cutoff\"])\n",
- "qb.limit(5)\n",
- "qb.all()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note that not every `Dict` node has to have this attribute, in which case the `QueryBuilder` will return the python keyword `None`. Similar to the `attributes`, nodes also can have `extras`, which work in the same way, except that `extras` are mutable, which means that their value can be changed even after a node instance has been stored.\n",
- "\n",
- "If you are not sure which attributes a given node has, you can use the `.attributes` property to simply retrieve them all. It will return a dictionary with all the attributes the node has.\n",
- "\n",
- "Note that a node also has a number of additional methods. For instance, you can do `list(node.attributes_keys())` to get only the attribute keys, or `node.get_attribute('wfc_cutoff')` to get the value of a single attribute (these two variants are more efficient if the node has a lot of attributes and you don't need all data). Similarly, for extras, you have `node.extras`, `list(node.extras_keys())`, and `node.get_attribute('SOME_EXTRA_KEY')`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "qb.append(PwCalculation)\n",
- "node, = qb.first()\n",
- "node.attributes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The chemical-element symbol of a pseudopotential, that is represented by a `UpfData` node, is stored in the `element` attribute. Using the knowledge that filtering on attributes works exactly as for normal node properties, see if you can write a query that will search your database for pseudopotentials for silicon."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "qb = QueryBuilder()\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(UpfData, filters={'attributes.element': {'==': 'Si'}})\n",
- "qb.all()\n",
- "#TUT_SOLUTION_END"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**For more exercises on relationships and attributes/extras, have a look at the appendix section on queries.**"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "collapsed": true
- },
- "source": [
- "## 5. A small high-throughput study"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "*The following section assumes that a specific dataset is present in your current AiiDA profile. If you are not running this script on the Virtual Machine of the AiiDA tutorial, this script will not produce the desired output.\n",
- "You can download the Virtual Machine image from [https://aiida-tutorials.readthedocs.io](https://aiida-tutorials.readthedocs.io) along with the tutorial text (choose the correct version of the tutorial, depending on which version of AiiDA you want to try).*"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this part of the tutorial, we will focus on how to systematically retrieve, parse and analyze the results of\n",
- "multiple calculations using AiiDA. We know you’re able to do this yourself, but to save time, a set of calculations\n",
- "have already been done with AiiDA for you on 57 perovskites, using three different pseudopotential families (LDA,\n",
- "PBE and PBESOL, all from GBRV 1.2).\n",
- "\n",
- "**Note**: if you are not following the tutorial on the official virtual machine that comes with this data, but you are working with your own database, you first have to import this archive (download it from: https://drive.google.com/open?id=1eqJaJr7q1VsYYvGxqHxmDN7gBMs534rz) using `verdi import`\n",
- "\n",
- "These calculations are spin-polarized (without spin-orbit coupling), use a Gaussian smearing and perform a variable-cell relaxation of the full unit cell. The idea of this part of the tutorial is to “screen” for magnetic and metallic perovskites in a “high-throughput” way. As you learned in the first part of the tutorial, AiiDA allows to organize calculations in groups. Once more check the list of groups in your database by typing:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "!verdi group list -A"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The calculations needed for this task were put in three different groups whose names start with \"tutorial\" (one for each pseudopotential family). The main task is to make a plot showing, for all perovskites and for each pseudopotential family, the total magnetization and the $-TS$ contribution from the smearing to the total energy."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Start building the query\n",
- "So we first of all need to instantiate a QueryBuilder instance. We `append` the groups of interest, which means that we select only groups that start with the string `tutorial_`. We can execute the query after this append (this will not affect the final results) and check whether we have retrieved 3 groups."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Instantiating QB:\n",
- "qb = QueryBuilder()\n",
- "# Appending the groups I care about:\n",
- "qb.append(Group, filters={'label':{'like':'tutorial_%'}}, project='label', tag='group')\n",
- "# Visualize:\n",
- "print(\"Groups:\", ', '.join([g for g, in qb.all()]))\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query3.png')\n",
- "Image(filename='query3.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the calculations that are members of each group"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# I want every PwCalculation that is a member of the specified groups:\n",
- "#TUT_USER_START\n",
- "qb.append(PwCalculation, tag='calculation', with_group=) # Complete the function call with the correct relationship-tag!\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(PwCalculation, tag='calculation', with_group='group')\n",
- "#TUT_SOLUTION_END\n",
- "#Visualize\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query4.png') \n",
- "Image(filename='query4.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the structures that are input of the calculation. \n",
- "We extend the query to include the structures that are input of the calculations that match the query so far.\n",
- "This means that we `append` StructureData, and defining the relationship with the calculation with corresponding keyword.\n",
- "\n",
- "For simplicity the formulas have been added in the extras of each structure node under the key `formula`. \n",
- "(The function that does this is called `store_formula_in_extra` and can be found in the top cell of this notebook. It also uses the QueryBuilder!)\n",
- "\n",
- "Project the formula, stored in the extras under the key `formula`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "# Complete the function call with the correct relationship-tag!\n",
- "qb.append(StructureData, project=, tag='structure', with_outgoing=)\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(StructureData, project=['extras.formula'], tag='structure', with_outgoing='calculation')\n",
- "#TUT_SOLUTION_END\n",
- "# Visualize:\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query5.png')\n",
- "Image(filename='query5.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Append the output of the calculation\n",
- "Every successful PwCalculation outputs a `Dict` node that stores the parsed results as key-value pairs. You can find these pairs among the attributes of the `Dict` node. To facilitate querying, the parser takes care of storing values always in the same units, and these are documented. For convenience, the units are also added as key/value pairs (with the same key name, but with `_units` appended). \n",
- "Extend the query so that also the output `Dict` of each calculation is returned. Project only\n",
- "the attributes relevant to your analysis.\n",
- "\n",
- "In particular, project (in this order):\n",
- "\n",
- "* The smearing contribution \n",
- "* The units of the smearing contribution\n",
- "* The magnetization \n",
- "* The units of the magnetization\n",
- "\n",
- "(to know the projection keys, you can try to load one `CalcJobNode` from one of the groups, get its output `Dict` and inspect its `attributes` as discussed before, to see the key-value pairs that have been parsed)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#TUT_USER_START\n",
- "# Complete the function call with the correct relationship-tag!\n",
- "qb.append(Dict, tag='results', project=['attributes.energy_smearing', ...], with_incoming=)\n",
- "#TUT_USER_END\n",
- "#TUT_SOLUTION_START\n",
- "qb.append(Dict, tag='results',\n",
- " project=['attributes.energy_smearing', 'attributes.energy_smearing_units',\n",
- " 'attributes.total_magnetization', 'attributes.total_magnetization_units',\n",
- " ], with_incoming='calculation'\n",
- " )\n",
- "#TUT_SOLUTION_END\n",
- "\n",
- "generate_query_graph(qb.get_json_compatible_queryhelp(), 'query6.png') \n",
- "Image(filename='query6.png')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Print the query results\n",
- "We can print the results to see if everything worked."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "results = qb.all()\n",
- "for item in results:\n",
- " print(', '.join(map(str, item)))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Plot the results\n",
- "Getting a long list is not always helpful, and a graph can be much more clear and useful. To help you, we have already prepared a function that visualizes the results of the query. Run the following cell and, if you did everything correctly, you should get a graph with the results of your queries!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "plot_results(results)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.7.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 1
-}
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/__init__.py b/docs/pages/2019_IIT_Mandi_India/scripts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/common_wf.py b/docs/pages/2019_IIT_Mandi_India/scripts/common_wf.py
deleted file mode 100644
index 4a75d0ee..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/common_wf.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Helper functions."""
-from __future__ import absolute_import
-import numpy as np
-from aiida.plugins import CalculationFactory, DataFactory
-from aiida_quantumespresso.utils.pseudopotential import validate_and_prepare_pseudos_inputs
-
-Dict = DataFactory('dict')
-KpointsData = DataFactory('array.kpoints')
-PwCalculation = CalculationFactory('quantumespresso.pw')
-
-
-def generate_scf_input_params(structure, code, pseudo_family):
- """Construct a builder for the `PwCalculation` class and populate its inputs.
-
- :return: `ProcessBuilder` instance for `PwCalculation` with preset inputs
- """
- parameters = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True, # Important that this stays to get stress
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-6,
- }
- }
-
- kpoints = KpointsData()
- kpoints.set_kpoints_mesh([2, 2, 2])
-
- builder = PwCalculation.get_builder()
- builder.code = code
- builder.structure = structure
- builder.kpoints = kpoints
- builder.parameters = Dict(dict=parameters)
- builder.pseudos = validate_and_prepare_pseudos_inputs(
- structure, pseudo_family=pseudo_family)
- builder.metadata.label = "PW test"
- builder.metadata.description = "My first AiiDA calculation of Silicon with Quantum ESPRESSO"
- builder.metadata.options.resources = {'num_machines': 1}
- builder.metadata.options.max_wallclock_seconds = 30 * 60
-
- return builder
-
-
-def birch_murnaghan(V, E0, V0, B0, B01):
- """Compute energy by Birch Murnaghan formula."""
- r = (V0 / V)**(2. / 3.)
- return E0 + 9. / 16. * B0 * V0 * (r - 1.)**2 * (2. + (B01 - 4.) * (r - 1.))
-
-
-def fit_birch_murnaghan_params(volumes_, energies_):
- """Fit Birch Murnaghan parameters."""
- from scipy.optimize import curve_fit
-
- volumes = np.array(volumes_)
- energies = np.array(energies_)
- params, covariance = curve_fit(
- birch_murnaghan,
- xdata=volumes,
- ydata=energies,
- p0=(
- energies.min(), # E0
- volumes.mean(), # V0
- 0.1, # B0
- 3., # B01
- ),
- sigma=None)
- return params, covariance
-
-
-def plot_eos(eos_pk):
- """
- Plots equation of state taking as input the pk of the ProcessCalculation
- printed at the beginning of the execution of run_eos_wf
- """
- import pylab as pl
- from aiida.orm import load_node
- eos_calc = load_node(eos_pk)
-
- data = []
- for V, E, units in eos_calc.outputs.eos.dict.eos:
- data.append((V, E))
-
- data = np.array(data)
- params, _covariance = fit_birch_murnaghan_params(data[:, 0], data[:, 1])
-
- vmin = data[:, 0].min()
- vmax = data[:, 0].max()
- vrange = np.linspace(vmin, vmax, 300)
-
- pl.plot(data[:, 0], data[:, 1], 'o')
- pl.plot(vrange, birch_murnaghan(vrange, *params))
-
- pl.xlabel("Volume (ang^3)")
- # I take the last value in the list of units assuming units do not change
- pl.ylabel("Energy ({})".format(units)) # pylint: disable=undefined-loop-variable
- pl.show()
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/create_rescale.py b/docs/pages/2019_IIT_Mandi_India/scripts/create_rescale.py
deleted file mode 100644
index 508df377..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/create_rescale.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Helper CalcFunctions for equation of state."""
-from __future__ import absolute_import
-from aiida.engine import calcfunction
-
-
-@calcfunction
-def create_diamond_fcc(element):
- """Calculation function to create the crystal structure of a given element.
-
- For simplicity, only Si and Ge are valid elements.
-
- :param element: The element to create the structure with.
- :return: The structure.
- """
- from aiida import orm
-
- import numpy as np
- elem_alat = {
- 'Si': 5.431, # Angstrom
- 'Ge': 5.658, # Angstrom
- }
-
- # Validate input element
- symbol = element.value
-
- if symbol not in elem_alat:
- raise ValueError('Valid elements are only Si and Ge')
-
- # Create cell starting having lattice parameter alat corresponding to the element
- alat = elem_alat[symbol]
- cell = np.array([[0., 0.5, 0.5], [0.5, 0., 0.5], [0.5, 0.5, 0.]]) * alat
-
- # Create a structure data object
- structure = orm.StructureData(cell=cell)
- structure.append_atom(position=(0., 0., 0.), symbols=symbol)
- structure.append_atom(position=(0.25 * alat, 0.25 * alat, 0.25 * alat),
- symbols=symbol)
-
- return structure
-
-
-@calcfunction
-def rescale(structure, scale):
- """Calculation function to rescale a structure
-
- :param structure: An AiiDA structure to rescale
- :param scale: The scale factor (for the lattice constant)
- :return: The rescaled structure
- """
- from aiida import orm
-
- ase = structure.get_ase()
- ase.set_cell(ase.get_cell() * float(scale), scale_atoms=True)
-
- return orm.StructureData(ase=ase)
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/equation_of_state.py b/docs/pages/2019_IIT_Mandi_India/scripts/equation_of_state.py
deleted file mode 100644
index 703dc7e2..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/equation_of_state.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Equation of State WorkChain."""
-from __future__ import absolute_import
-from six.moves import zip
-
-from aiida.engine import WorkChain, ToContext, calcfunction
-from aiida.orm import Code, Dict, Float, Str, StructureData
-from aiida.plugins import CalculationFactory
-
-from create_rescale import create_diamond_fcc, rescale
-from common_wf import generate_scf_input_params
-
-PwCalculation = CalculationFactory('quantumespresso.pw')
-scale_facs = (0.96, 0.98, 1.0, 1.02, 1.04)
-labels = ['c1', 'c2', 'c3', 'c4', 'c5']
-
-
-@calcfunction
-def get_eos_data(**kwargs):
- """Store EOS data in Dict node."""
- eos = [(result.dict.volume, result.dict.energy, result.dict.energy_units)
- for label, result in kwargs.items()]
- return Dict(dict={'eos': eos})
-
-
-class EquationOfState(WorkChain):
- """WorkChain to compute Equation of State using Quantum Espresso."""
-
- @classmethod
- def define(cls, spec):
- """Specify inputs and outputs."""
- super(EquationOfState, cls).define(spec)
- spec.input('code', valid_type=Code)
- spec.input('element', valid_type=Str)
- spec.input('pseudo_family', valid_type=Str)
- spec.output('initial_structure', valid_type=StructureData)
- spec.output('eos', valid_type=Dict)
- spec.outline(
- cls.run_eos,
- cls.results,
- )
-
- def run_eos(self):
- """Run calculations for equation of state."""
- # Create basic structure and attach it as an output
- initial_structure = create_diamond_fcc(self.inputs.element)
- self.out('initial_structure', initial_structure)
-
- calculations = {}
-
- for label, factor in zip(labels, scale_facs):
-
- structure = rescale(initial_structure, Float(factor))
- inputs = generate_scf_input_params(structure, self.inputs.code,
- self.inputs.pseudo_family)
-
- self.report(
- 'Running an SCF calculation for {} with scale factor {}'.
- format(self.inputs.element, factor))
- future = self.submit(PwCalculation, **inputs)
- calculations[label] = future
-
- # Ask the workflow to continue when the results are ready and store them in the context
- return ToContext(**calculations)
-
- def results(self):
- """Process results."""
- inputs = {
- label: self.ctx[label].get_outgoing().get_node_by_label(
- 'output_parameters')
- for label in labels
- }
- eos = get_eos_data(**inputs)
-
- # Attach Equation of State results as output node to be able to plot the EOS later
- self.out('eos', eos)
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/plot_calculation_results.py b/docs/pages/2019_IIT_Mandi_India/scripts/plot_calculation_results.py
deleted file mode 100644
index 628f8a7f..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/plot_calculation_results.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Plot results of your calculations."""
-from __future__ import absolute_import
-from __future__ import print_function
-import sys
-from argparse import ArgumentParser
-from six.moves import map, range, zip
-
-import numpy as np
-from matplotlib import gridspec, pyplot as plt
-
-
-def plot_results(inputfname, outputfname=None, plotformat=None): # pylint: disable=too-many-locals,too-many-statements,too-many-branches
- """
- :param inputfile: the filename of the inputfile
- :param (opt) outputfile:
- The (optional) name for the outputfile.
- :param (opt) format:
- The (optional) file format, if not clear from the input file name
-
- Reads the input file provided by the user.
- The format should be comma separated values:
- formula, pseudo_family, smearing, smearing_units, magnetization, magnetization_units
-
-
- This order has to be respected!
-
- If an outputfile is provided, use matplotlib.pyplot.savefig to save the figure
- Else, calls matplotlib.pyplot.show to show in screen
- """
-
- # Reading the input file given to me:
- with open(inputfname) as f:
- lines = f.readlines()
-
- # Definining the variables I need to read the units and pseudo families
- smearing_unit_set = set()
- magnetization_unit_set = set()
- pseudo_family_set = set()
-
- # Storing results:
- results_dict = {}
-
- # Looping through results:
- for line in lines:
- try:
- (formula, pseudo_family, smearing, smearing_units, magnetization,
- magnetization_units) = [i.strip() for i in line.split(',')]
- smearing, magnetization = list(
- map(float, (smearing, magnetization)))
- except Exception as e: # pylint: disable=broad-except
- print("There was an {} reading line:\n"
- "{}"
- "Exception: {}\n"
- "Skipping this line\n".format(type(e), line, e))
- continue
-
- # If this is a new formula, not present in results,
- # Creating the key-value pair:
- if formula not in results_dict:
- results_dict[formula] = {}
-
- # Storing the results:
- results_dict[formula][pseudo_family] = (smearing, magnetization)
-
- # Adding to the unit set:
- smearing_unit_set.add(smearing_units)
- magnetization_unit_set.add(magnetization_units)
- pseudo_family_set.add(pseudo_family)
-
- # Sorting by formula:
- sorted_results = sorted(results_dict.items())
- formula_list = list(zip(*sorted_results))[0]
- nr_of_results = len(formula_list)
-
- # Checks that I have not more than 3 pseudo families.
- # If more are needed, define more colors
-
- if len(pseudo_family_set) > 3:
- raise Exception('I was expecting 3 or less pseudo families')
-
- colors = ['b', 'r', 'g']
-
- # Plotting:
- gs = gridspec.GridSpec(2, 1, hspace=0.01, left=0.1, right=0.94)
- fig = plt.figure(figsize=(16, 9), facecolor='w', edgecolor=None)
-
- # Defining barwidth
- barwidth = 1. / (len(pseudo_family_set) + 1)
- offset = [
- -0.5 + (0.5 + n) * barwidth for n in range(len(pseudo_family_set))
- ]
-
- # Axing labels with units:
- yaxis = ("Smearing energy [{}]".format(smearing_unit_set.pop()),
- "Total magnetization [{}]".format(magnetization_unit_set.pop()))
- # If more than one unit was specified, I will exit:
- if smearing_unit_set:
- raise Exception('Found different units for smearing')
- if magnetization_unit_set:
- raise Exception('Found different units for magnetization')
-
- # Making two plots, one for the smearing, the lower for magnetization
- for index in range(2):
- ax = fig.add_subplot(gs[index])
- for i, pseudo_family in enumerate(pseudo_family_set):
- X = np.arange(nr_of_results) + offset[i]
- Y = np.array([
- thisres[1][pseudo_family][index] for thisres in sorted_results
- ])
-
- ax.bar(X,
- Y,
- width=0.2,
- facecolor=colors[i],
- edgecolor=colors[i],
- label=pseudo_family)
- ax.set_ylabel(yaxis[index], fontsize=14, labelpad=15 * index + 5)
- ax.set_xlim(-0.5, nr_of_results - 0.5)
- ax.set_xticks(np.arange(nr_of_results))
-
- if index:
- plt.setp(ax.get_yticklabels()[-1], visible=False)
- else:
- plt.setp(ax.get_yticklabels()[0], visible=False)
- ax.xaxis.tick_top()
- ax.legend(loc=3, prop={'size': 18})
-
- for i in range(0, nr_of_results, 2):
- ax.axvspan(i - 0.5, i + 0.5, facecolor='y', alpha=0.2)
- ax.set_xticklabels(list(formula_list),
- rotation=90,
- size=14,
- ha='center')
-
- if outputfname is not None:
- plt.savefig(outputfname, format=plotformat)
- else:
- plt.show()
-
-
-if __name__ == '__main__':
- parser = ArgumentParser()
- parser.add_argument('inputfile',
- help='The input file with the data to plot')
- parser.add_argument('-o',
- '--outputfile',
- help='The outputfile to plot results to',
- default=None)
- parser.add_argument(
- '-f',
- '--format',
- default=None,
- help=
- 'The format to plot, if outputfile is specified and no valid extension is provided'
- )
- parsed_args = parser.parse_args(sys.argv[1:])
- plot_results(inputfname=parsed_args.inputfile,
- outputfname=parsed_args.outputfile,
- plotformat=parsed_args.format)
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/plot_convergence_pressure.py b/docs/pages/2019_IIT_Mandi_India/scripts/plot_convergence_pressure.py
deleted file mode 100644
index 725133d3..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/plot_convergence_pressure.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Plot parabola using matplotlib."""
-from __future__ import absolute_import
-from __future__ import print_function
-from six.moves import range
-from aiida.orm import load_node
-
-
-def parabola(x, a, b, c):
- """Parabola."""
- return a * x**2 + b * x + c
-
-
-def show_parabola_results(pk): # pylint: disable=too-many-locals
- """Plot (and show) parabola using matplotlib."""
- out_p = load_node(pk).outputs.steps.get_dict()
-
- step0 = out_p['step0']
- steps = out_p['steps']
-
- import numpy as np
- import pylab as pl
-
- data = []
- data.append((step0['V'], step0['E']))
- for step in steps:
- data.append((step['V'], step['E']))
-
- data = np.array(data)
- min_V = data[:, 0].min()
- max_V = data[:, 0].max()
-
- min_E = data[:, 1].min()
- max_E = data[:, 1].max()
-
- min_V -= 10.
- max_V += 10.
- min_E -= 0.1
- max_E += 0.5
-
- V_range = np.linspace(min_V, max_V, 500)
-
- for subplot in range(2):
- pl.subplot(1, 2, 1 + subplot)
-
- pl.plot(data[:1, 0], data[:1, 1], 'o', color='red')
- pl.annotate('0', xy=(data[0, 0], data[0, 1]))
-
- pl.plot(data[1:, 0], data[1:, 1], 'o', color='blue')
-
- color = 0.8
- for idx, step in enumerate(steps, start=1):
- pl.plot(V_range,
- parabola(V_range, step['a'], step['b'], step['c']),
- color=(color, color, color))
- parabola_Vmin = -step['b'] / 2. / step['a']
- parabola_Emin = parabola(parabola_Vmin, step['a'], step['b'],
- step['c'])
- pl.plot([parabola_Vmin], [parabola_Emin],
- 'x',
- color=(color, color, color))
- pl.annotate(str(idx), xy=(step['V'], step['E']))
- pl.axvline(step['V'], color=(1., 0.7, 1.), linestyle='--')
- color -= 0.25
- if color <= 0.:
- color = 0.
-
- pl.axis([min_V, max_V, min_E, max_E])
- if subplot == 1:
- # some zoom
- pl.xlim((41.5, 44.))
- pl.ylim((-259.47, -259.45))
- pl.xlabel('Volume (ang^3)')
- pl.ylabel('Energy (eV)')
-
- pl.show()
-
-
-if __name__ == '__main__':
- import sys
- try:
- pk_value = int(sys.argv[1])
- except (IndexError, ValueError):
- print(
- 'Pass as parameter the PK of the WorkChain calculating the pressure',
- file=sys.stderr)
- print('convergence to generate the plot.', file=sys.stderr)
- sys.exit(1)
- show_parabola_results(pk_value)
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/pressure_convergence.py b/docs/pages/2019_IIT_Mandi_India/scripts/pressure_convergence.py
deleted file mode 100644
index 89f42195..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/pressure_convergence.py
+++ /dev/null
@@ -1,233 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Pressure convergence WorkChain"""
-from __future__ import absolute_import
-from __future__ import print_function
-from aiida.engine import WorkChain, ToContext, while_, calcfunction, workfunction
-from aiida.orm import Code, Float, Str, StructureData
-from aiida.plugins import CalculationFactory, DataFactory
-
-from common_wf import generate_scf_input_params
-from create_rescale import rescale
-
-Dict = DataFactory('dict')
-KpointsData = DataFactory('array.kpoints')
-PwCalculation = CalculationFactory('quantumespresso.pw')
-
-
-def get_energy_first_derivative(stress):
- """Return the energy first derivative from the stress.
-
- :param stress: the stress tensor in GPa
- :return: first derivative of the energy in eV/Å^3
- """
- from numpy import trace
-
- GPa_to_eV_over_ang3 = 1. / 160.21766208
-
- # Get the pressure (GPa)
- pressure = trace(stress) / 3.
-
- # Pressure is -dE/dV; moreover p in kbar, we need to convert it to eV/Å^3 to be consistent
- dE = -pressure * GPa_to_eV_over_ang3
-
- return dE
-
-
-def get_volume_energy_and_derivative(output_parameters):
- """Return the volume, energy and energy derivative for given `PwCalculation` output parameters.
-
- Volume is in Å^3, energy in eV and energy derivative eV/Å^3
-
- :param output_parameters: the `output_parameters` `Dict` result node of a `PwCalculation`
- :return: tuple with volume, energy and energy derivative
- """
- V = output_parameters.dict.volume
- E = output_parameters.dict.energy
- dE = get_energy_first_derivative(output_parameters.dict.stress)
-
- return V, E, dE
-
-
-def get_energy_second_derivative(output_parameters_one, output_parameters_two):
- """Return second derivative of the energy with respect to the volume given the results of two `PwCalculations`.
-
- The derivate is computed using the finite differences method.
-
- :param output_parameters_one: the `output_parameters` `Dict` result node of the first `PwCalculation`
- :param output_parameters_two: the `output_parameters` `Dict` result node of the second `PwCalculation`
- :return: the second derivative of the energy with respect to the volume
- """
- dE1 = get_energy_first_derivative(output_parameters_one.dict.stress)
- dE2 = get_energy_first_derivative(output_parameters_two.dict.stress)
- V1 = output_parameters_one.dict.volume
- V2 = output_parameters_two.dict.volume
-
- return (dE2 - dE1) / (V2 - V1)
-
-
-def get_parabola_coefficients(V, E, dE, ddE):
- """Return coefficients of a parabola fit to E = a*V^2 + b*V + c for the given volume and energy.
-
- :param V: volume in Å^3
- :param E: energy in eV
- :param dE: the first derivative of the energy with respect to the volume
- :param ddE: the second derivative of the energy with respect to the volume
- :return: coefficients a, b and c
- """
- a = ddE / 2.
- b = dE - ddE * V
- c = E - V * dE + V**2 * ddE / 2.
-
- return a, b, c
-
-
-@workfunction
-def get_structure(structure, step_data=None):
- """Return a scaled version of the given structure, where the new volume is determined by the given step data."""
- initial_volume = structure.get_cell_volume()
-
- if step_data is None:
- new_volume = initial_volume + 4. # In Å^3
- else:
- # Minimum of a parabola
- new_volume = -step_data.dict.b / 2. / step_data.dict.a
-
- scale_factor = (new_volume / initial_volume)**(1. / 3.)
- scaled_structure = rescale(structure, Float(scale_factor))
- return scaled_structure
-
-
-@calcfunction
-def get_step_data(parameters_first, parameters_second=None):
- """Generate a dictionary with the step parameters from the output parameters of a completed `PwCalculation`."""
-
- # If the parameters of the second calculation are not passed, this is for the first step and we only return
- # a dictionary with the volume, energy and derivative
- if parameters_second is None:
- V, E, dE = get_volume_energy_and_derivative(parameters_first)
- return Dict(dict={'V': V, 'E': E, 'dE': dE})
-
- # Otherwise, this is an iteration step and we return the difference between the steps
- V, E, dE = get_volume_energy_and_derivative(parameters_first)
- ddE = get_energy_second_derivative(parameters_first, parameters_second)
- a, b, c = get_parabola_coefficients(V, E, dE, ddE)
-
- return Dict(dict={
- 'V': V,
- 'E': E,
- 'dE': dE,
- 'ddE': ddE,
- 'a': a,
- 'b': b,
- 'c': c
- })
-
-
-@calcfunction
-def bundle_step_data(step0, **kwargs):
- """Bundle step data into Dict."""
- steps = [step.get_dict() for step in kwargs.values()]
- print((step0, type(step0)))
- print((steps, type(steps)))
- return Dict(dict={'step0': step0.get_dict(), 'steps': steps})
-
-
-class PressureConvergence(WorkChain):
- """Relax a structure using Newton's algorithm on the first derivative of the energy (minus the pressure)."""
-
- @classmethod
- def define(cls, spec):
- """Define spec of WorkChain."""
- # yapf: disable
- # pylint: disable=bad-continuation
- super(PressureConvergence, cls).define(spec)
- spec.input('code', valid_type=Code,
- help='Code setup to run `pw.x` to use for the calculations.')
- spec.input('structure', valid_type=StructureData,
- help='The structure to minimize.')
- spec.input('pseudo_family', valid_type=Str,
- help='Family of pseudopotentials to use for the calculations.')
- spec.input('volume_tolerance', valid_type=Float,
- help='Stop if the volume difference of two consecutive calculations is less than this threshold.')
- spec.output('steps', valid_type=Dict,
- help='The data of all the steps in the minimization process containing info about energy and volume')
- spec.output('structure', valid_type=StructureData,
- help='Final relaxed structure.')
- spec.outline(
- cls.setup,
- cls.put_step0_in_ctx,
- cls.move_next_step,
- while_(cls.not_converged)(
- cls.move_next_step,
- ),
- cls.finish
- )
-
- def setup(self):
- """Launch the first calculation for the input structure, and a second calculation for a shifted volume."""
- scaled_structure = get_structure(self.inputs.structure)
- self.ctx.last_structure = scaled_structure
-
- inputs0 = generate_scf_input_params(self.inputs.structure,
- self.inputs.code,
- self.inputs.pseudo_family)
- inputs1 = generate_scf_input_params(scaled_structure, self.inputs.code,
- self.inputs.pseudo_family)
-
- # Run two `PwCalculations`
- future0 = self.submit(PwCalculation, **inputs0)
- future1 = self.submit(PwCalculation, **inputs1)
-
- # Wait for them to complete before going to the next step
- return ToContext(r0=future0, r1=future1)
-
- def put_step0_in_ctx(self):
- """Store the outputs of the very first step in a specific dictionary."""
- self.ctx.step0 = get_step_data(self.ctx.r0.outputs.output_parameters)
-
- # Prepare the list containing the steps: step 1 will be stored here by move_next_step
- self.ctx.steps = []
-
- def move_next_step(self):
- """Main part of the algorithm.
-
- Compare the results of two consecutive calculations and use Newton's algorithm on the pressure by fitting the
- results with a parabola and setting the next volume to calculate to the parabola minimum.
-
- The oldest calculation gets replaced by the most recent and a new calculation is launched that will replace
- the most recent.
- """
- # Computer the new Volume using Newton's algorithm and create the new corresponding structure by scaling it
- new_step_data = get_step_data(self.ctx.r0.outputs.output_parameters,
- self.ctx.r1.outputs.output_parameters)
- scaled_structure = get_structure(self.inputs.structure, new_step_data)
- self.ctx.steps.append(new_step_data)
-
- # Replace the older step with the latest and set the current structure
- self.ctx.r0 = self.ctx.r1
- self.ctx.last_structure = scaled_structure
-
- inputs = generate_scf_input_params(scaled_structure, self.inputs.code,
- self.inputs.pseudo_family)
- future = self.submit(PwCalculation, **inputs)
-
- return ToContext(r1=future)
-
- def not_converged(self):
- """Return True if the worflow is not converged yet (i.e. the volume changed significantly)."""
- r0_out = self.ctx.r0.outputs.output_parameters
- r1_out = self.ctx.r1.outputs.output_parameters
-
- return abs(r1_out.dict.volume -
- r0_out.dict.volume) > self.inputs.volume_tolerance
-
- def finish(self):
- """Attach the result nodes as outputs."""
- steps = {
- 'step{}'.format(index + 1): step
- for index, step in enumerate(self.ctx.steps)
- }
- bundled_steps = bundle_step_data(step0=self.ctx.step0, **steps)
-
- self.out('steps', bundled_steps)
- self.out('structure', self.ctx.last_structure)
diff --git a/docs/pages/2019_IIT_Mandi_India/scripts/simple_sync_workflow.py b/docs/pages/2019_IIT_Mandi_India/scripts/simple_sync_workflow.py
deleted file mode 100644
index 1a89206e..00000000
--- a/docs/pages/2019_IIT_Mandi_India/scripts/simple_sync_workflow.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Simple workflow example"""
-from __future__ import absolute_import
-from __future__ import print_function
-from six.moves import zip
-
-from aiida.engine import run, Process, calcfunction, workfunction
-from aiida.orm import load_code, Dict, Float, Str
-from aiida.plugins import CalculationFactory
-
-from create_rescale import create_diamond_fcc, rescale
-from common_wf import generate_scf_input_params
-
-# Load the calculation class 'PwCalculation' using its entry point 'quantumespresso.pw'
-PwCalculation = CalculationFactory('quantumespresso.pw')
-
-
-@calcfunction
-def create_eos_dictionary(**kwargs):
- """Create a single `Dict` node from the `Dict` output parameters of completed `PwCalculations`.
-
- The dictionary will contain a list of tuples, where each tuple contains the volume, total energy and its units
- of the results of a calculation.
-
- :return: `Dict` node with the equation of state results
- """
- eos = [(result.dict.volume, result.dict.energy, result.dict.energy_units)
- for label, result in kwargs.items()]
- return Dict(dict={'eos': eos})
-
-
-@workfunction
-def run_eos_wf(code, pseudo_family, element):
- """Run an equation of state of a bulk crystal structure for the given element."""
-
- # This will print the pk of the work function
- print('Running run_eos_wf<{}>'.format(Process.current().pid))
-
- scale_factors = (0.96, 0.98, 1.0, 1.02, 1.04)
- labels = ['c1', 'c2', 'c3', 'c4', 'c5']
-
- calculations = {}
-
- # Create an initial bulk crystal structure for the given element, using the calculation function defined earlier
- initial_structure = create_diamond_fcc(element)
-
- # Loop over the label and scale_factor pairs
- for label, factor in list(zip(labels, scale_factors)):
-
- # Generated the scaled structure from the initial structure
- structure = rescale(initial_structure, Float(factor))
-
- # Generate the inputs for the `PwCalculation`
- inputs = generate_scf_input_params(structure, code, pseudo_family)
-
- # Launch a `PwCalculation` for each scaled structure
- print('Running a scf for {} with scale factor {}'.format(
- element, factor))
- calculations[label] = run(PwCalculation, **inputs)
-
- # Bundle the individual results from each `PwCalculation` in a single dictionary node.
- # Note: since we are 'creating' new data from existing data, we *have* to go through a `calcfunction`, otherwise
- # the provenance would be lost!
- inputs = {
- label: result['output_parameters']
- for label, result in calculations.items()
- }
- eos = create_eos_dictionary(**inputs)
-
- # Finally, return the results of this work function
- result = {'initial_structure': initial_structure, 'eos': eos}
-
- return result
-
-
-def run_eos(code=load_code('qe-6.4.1-pw@localhost'),
- pseudo_family='SSSP',
- element='Si'):
- """Helper function to run EOS WorkChain."""
- return run_eos_wf(code, Str(pseudo_family), Str(element))
-
-
-if __name__ == '__main__':
- run_eos()
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_computer_code_setup.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_computer_code_setup.rst
deleted file mode 100644
index 2a14a59d..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_computer_code_setup.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-.. _2019_mandi_appendix_computer_code_setup:
-
-Setting up computers and codes
-==============================
-
-To setup a computer, please refer to the `online documentation `_.
-Instructions to setup a code for a computer can be `found here `_.
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_input_validation.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_input_validation.rst
deleted file mode 100644
index f41e6e0c..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_input_validation.rst
+++ /dev/null
@@ -1,94 +0,0 @@
-*These appendices consist of optional exercises, and are mentioned in earlier parts of the tutorial. Go through them only if you have time.*
-
-Calculation input validation
-============================
-
-This appendix shows additional ways to debug errors with Quantum ESPRESSO, namely
-how to take advantage of a powerful tool to validate the input to Quantum ESPRESSO
-and possibly suggest the correct name to misspelled keywords.
-
-There are various reasons why you might end up providing a wrong input to a Quantum ESPRESSO calculation.
-Let's check for example this input dictionary, where we inserted two mistakes:
-
-.. code:: python
-
- parameters_dict = {
- 'CTRL': {
- 'calculation': 'scf',
- 'restart_mode': 'from_scratch',
- },
- 'SYSTEM': {
- 'nat': 2,
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-6,
- }
- }
-
-The two mistakes in the dictionary are the following:
-
-- We wrote a wrong namelist name (``CTRL`` instead of ``CONTROL``).
-- We inserted the number of atoms explicitly: while that is indeed how the
- number of atoms is specified in Quantum ESPRESSO, in AiiDA this key is reserved by the system,
- since this information is already contained within the StructureData.
-
-After we correct the dictionary ``parameters_dict``, we could run the calculation directly.
-Alternatively, we can use a tool of the the `aiida-quantumespresso` plugin,
-the 'input helper', which checks the inputs before submitting the calculation.
-
-In your script, after you define ``parameters_dict``,
-you can validate it with the following command (note that you need to pass also an input crystal structure,
-``structure``, to allow the validator to perform all the needed checks):
-
-.. code:: python
-
- PwCalculation = CalculationFactory('quantumespresso.pw')
- validated_dict = PwCalculation.input_helper(parameters_dict, structure=structure)
- parameters = Dict(dict=validated_dict)
-
-
-The ``input_helper`` method will check for the correctness of the input parameters.
-If misspelling or incorrect keys are detected, the method raises an exception,
-which stops the script before submitting the calculation and thus allows for a more effective debugging.
-
-With this utility, you can also provide a list of keys,
-without providing the namelists (useful if you don't remember where to put some variables in the input file).
-Hence, you can provide to ``input_helper`` a dictionary like this one:
-
-.. code:: python
-
- parameters_dict = {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'conv_thr': 1.e-6,
- }
-
- validated_dict = PwCalculation.input_helper(
- parameters_dict,
- structure=structure,
- flat_mode=True
- )
-
-If you print ``validated_dict``, it will look like the following:
-
-.. code:: python
-
- {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-6,
- }
- }
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_queries.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_queries.rst
deleted file mode 100644
index 90adaa64..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_queries.rst
+++ /dev/null
@@ -1,89 +0,0 @@
-*These appendices consist of optional exercises, and are mentioned in earlier parts of the tutorial. Go through them only if you have time.*
-
-Queries in AiiDA - Examples and Exercises
-=========================================
-
-Optional exercises on relationships (Task 3)
---------------------------------------------
-
-**Hint for the exercises:**
-
-- You can have projections on properties of more than one entity in your query.
- You just have to add the ``project`` key (specifying the list of properties that you want to project) along with the corresponding entity when you append it.
-
-**Exercises:** Try to write the following queries:
-
-- Find all descendants of a ``StructureData`` with a certain ``uuid`` (descendants indicate all nodes that can be reached by following outgoing links starting from a given node, with any number of hops).
- For every match, print both the ``StructureData`` node and the descendant.
-
-- Find all the ``FolderData`` nodes created by a specific user.
-
-Optional exercises on attributes and extras (Task 4)
-----------------------------------------------------
-
-**Hint for the exercises:**
-
-- You can easily order or limit the number of the results by using the ``order_by()`` and ``limit()`` methods of the QueryBuilder.
- For example, we can order all our ``CalcJobNode``s by their ``id`` and limit the result to the first 10 as follows:
-
- .. code:: python
-
- qb = QueryBuilder()
- qb.append(CalcJobNode, tag='calc')
- qb.order_by({'calc': 'id'})
- qb.limit(10)
- qb.all()
-
-**Exercises:**
-
-- Write a code snippet to check how many pseudopotentials you have for each element.
-
-- Smearing contribution to the total energy for calculations:
-
- 1. Write a query that returns the smearing contribution to the energy stored in some instances of ``Dict`` output by a ``CalcJobNode`` generated by running a ``PwCalculation`` process.
- 2. Extend the previous query to also get the input structures of the ``CalcJobNode``.
- 3. Which structures have a smearing contribution to the energy smaller or equal to ``-0.02``?
-
-Summarizing what we learned by now - An example
------------------------------------------------
-
-At this point you should be able to do queries with projections, joins and filters.
-Moreover, you saw how to apply filters and projections even on attributes and extras.
-Let's discover the full power of the ``QueryBuilder`` with a complex graph query that allows you to project various properties from different nodes and apply different filters and joins.
-
-Imagine that you would like to get the smearing energy for all the calculations that have a smearing energy below a given value and have a Sn\ :sub:`2`\ O\ :sub:`3` as input.
-Moreover, besides the smearing energy, you would like to print the units of this energy and the formula of the structure that was given to the calculation.
-The graphical representation of this query can be seen in :numref:`fig_qb_example_2_2019` and the actual query follows:
-
-.. _2019_mandi_fig_qb_example_2_2019:
-.. figure:: include/images/qb_example_2.png
- :width: 50%
- :align: center
-
- Complex graph query.
-
-.. code:: python
-
- qb = QueryBuilder()
- qb.append(
- StructureData,
- project=['extras.formula'],
- filters={'extras.formula': 'BaO3Ti'},
- tag='structure'
- )
- qb.append(
- CalcJobNode,
- tag='calculation',
- with_incoming='structure'
- )
- qb.append(
- Dict,
- tag='results',
- filters={'attributes.energy_smearing':{'<=':-1e-8}},
- project=[
- 'attributes.energy_smearing',
- 'attributes.energy_smearing_units',
- ],
- with_incoming='calculation'
- )
- qb.all()
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_restarting_calculations.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_restarting_calculations.rst
deleted file mode 100644
index bb06ea24..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_restarting_calculations.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-*These appendices consist of optional exercises, and are mentioned
-in earlier parts of the tutorial. Go through them only if you
-have time.*
-
-Restarting calculations
-=======================
-
-Up till now, we have presented several cases where, for example, the wrong input parameters were passed to a calculation, causing it to fail.
-Often we had to retype a lot of code, to setup a new calculation with the correct inputs.
-In addition, there are many real-life scenarios where one would need to restart calculations from completed calculations with largely the same inputs.
-For example when we run molecular dynamics, we might want to add more time steps than we initially thought, or as another example you might want to refine the relaxation of a structure with tighter parameters.
-
-In this section, you will learn how to relaunch a calculation from one that has already completed, while having the chance to add or change inputs before launching it.
-As an example, let us first submit a total energy calculation using a parameters dictionary of the form:
-
-.. code:: python
-
- parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-14,
- 'electron_maxstep': 3,
- },
- }
-
-In this case, we set a very low number of self consistent iterations (3), which is too small to be able to reach the desired accuracy of 10\ :sup:`-14`.
-This means the calculation will not converge and will not be successful, despite there not being any actual mistake in the parameters dictionary.
-
-To easily restart from the previous calculation, instead of retyping all the inputs, you can simply use the ``get_builder_restart`` method of the ``CalcJobNode``.
-Just like the ``get_builder`` method of the ``Process`` class, this will create an instance of the ``ProcessBuilder``, except this one will have all the inputs pre-populated based on the node.
-To do so, simply load the node of a terminated calculation job in a ``verdi shell``, that you want to restart from, e.g.:
-
-.. code:: python
-
- failed_calculation = load_node('')
- restart_builder = failed_calculation.get_builder_restart()
-
-If you simply type ``restart_builder``, you can see that all the inputs have already been set to those that were used for the original calculation.
-The only thing that now remains to be done, is to replace those inputs that caused the failure in the first place.
-
-.. code:: python
-
- parameters = restart_builder.parameters.get_dict()
- parameters['ELECTRONS']['electron_maxstep'] = 80
- restart_builder.parameters = Dict(dict=parameters)
-
-Simply giving the calculation some more steps in the convergence cycle will probably already fix the problem.
-
-.. note::
-
- We have to create a new ``Dict`` node as we are changing its contents, and the original input is immutable as it would break the provenance.
-
-However, in this Quantum ESPRESSO example even more can be done, by using the results of the previous calculation to speed up the restart.
-To do so, we simply have to set the input ``parent_folder`` to the remote working directory of the old calculation, i.e.:
-
-.. code:: python
-
- parameters = restart_builder.parameters.get_dict()
- parameters['CONTROL']['restart_mode'] = 'restart'
- restart_builder.parameters = Dict(dict=parameters)
- restart_builder.parent_folder = failed_calculation.outputs.remote_folder
-
-Note that this particular step is specific to a ``PwCalculation``, but the restart builder concept works for any calculation class.
-Any of the inputs can be changed or set.
-For example, you may also want to record that this calculation is a restart, in addition to the provenance graph, by setting the label or description:
-
-.. code:: python
-
- restart_builder.metadata.label = 'Restart from PwCalculation<{}>'.format(failed_calculation.pk)
-
-Ultimately whatever needs to be changed for the restart is up to you, but the restart builder makes it a lot easier.
-Finally, to submit the restart, since it is a process builder, it works exactly as any other builder:
-
-.. code:: python
-
- from aiida.engine import launch
- results, node = launch.run.get_node(restart_builder)
-
-You can now inspect the restarted calculation to verify that this time it actually completed successfully.
-Using the restart builder, the required code to setup a calculation is much shorter than the one needed to launch a new one from scratch.
-There is no need to load or create many of the inputs such as the pseudopotentials, structures and k-points,
-because they were reused from the first calculation.
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_structure_data.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_structure_data.rst
deleted file mode 100644
index 309cddda..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_structure_data.rst
+++ /dev/null
@@ -1,280 +0,0 @@
-.. _2019_mandi_appendix_structure_data:
-
-General comments
-----------------
-
-This section contains an example of how you can use the
-:class:`~aiida:aiida.orm.nodes.data.structure.StructureData` object
-to create complex crystals.
-
-With the :class:`~aiida:aiida.orm.nodes.data.structure.StructureData` class we did not
-try to have a full set of features to manipulate crystal structures.
-Indeed, other libraries such as `ASE `_ exist,
-and we simply provide easy
-ways to convert between the ASE and the AiiDA formats. On the other hand,
-we tried to define a "standard" format for structures in AiiDA, that can be
-used across different codes.
-
-
-How to use ``StructureData``
--------------------------------
-
-Take a look at the following example::
-
- alat = 4. # angstrom
- cell = [[alat, 0., 0.,],
- [0., alat, 0.,],
- [0., 0., alat,],
- ]
- s = StructureData(cell=cell)
- s.append_atom(position=(0.,0.,0.), symbols='Fe')
- s.append_atom(position=(alat/2.,alat/2.,alat/2.), symbols='O')
-
-With the commands above, we have created a crystal structure ``s`` with
-a cubic unit cell and lattice parameter of 4 angstrom, and two atoms in the
-cell: one iron (Fe) atom in the origin, and one oxygen (O) at the center of
-the cube (this cell has been just chosen as an example and most probably does
-not exist).
-
-.. note:: As you can see in the example above, both the cell coordinates and
- the atom coordinates are expressed in angstrom, and the position of
- the atoms are given in a global absolute reference frame.
-
-In this way, any periodic structure can be defined. If you want to import
-from ASE in order to specify the coordinates, e.g., in terms of the crystal
-lattice vectors, see the guide on the conversion to/from ASE below.
-
-When using the :py:meth:`~aiida.orm.nodes.data.structure.StructureData.append_atom`
-method, further parameters can be passed. In particular, one can specify
-the mass of the atom, particularly important if you want e.g. to run a
-phonon calculation. If no mass is specified, the mass provided by
-`NIST `_ (retrieved in October 2014)
-is going to be used. The list of
-masses is stored in the module :py:mod:`aiida.common.constants`, in the
-``elements`` dictionary.
-
-Moreover, in the :class:`~aiida:aiida.orm.nodes.data.structure.StructureData` class
-of AiiDA we also support the storage of crystal structures with alloys,
-vacancies or partial occupancies.
-In this case, the argument of the parameter ``symbols``
-should be a list of symbols, if you want to consider an alloy;
-moreover, you must pass a ``weights`` list, with the same length as ``symbols``,
-and with values between 0. (no occupancy) and 1. (full occupancy), to specify
-the fractional occupancy of that site for each of the symbols specified
-in the ``symbols`` list. The sum of
-all occupancies must be lower or equal to one; if the sum is lower than one,
-it means that there is a given probability of having a vacancy at that
-specific site position.
-
-As an example, you could use::
-
- s.append_atom(position=(0.,0.,0.),symbols=['Ba','Ca'],weights=[0.9,0.1])
-
-to add a site at the origin of a structure ``s`` consisting of an alloy of
-90% of Barium and 10% of Calcium (again, just an example).
-
-The following line instead::
-
- s.append_atom(position=(0.,0.,0.),symbols='Ca',weights=0.9)
-
-would create a site with 90% probability of being occupied by Calcium, and
-10% of being a vacancy.
-
-Utility properties ``s.is_alloy`` and ``s.has_vacancies`` can be used to
-verify, respectively, if more than one element if given in the symbols list,
-and if the sum of all weights is smaller than one.
-
-.. note:: if you pass more than one symbol, the property ``s.is_alloy`` will
- always be ``True``, even if only one symbol has occupancy 1 and
- all others have occupancy zero::
-
- >>> s = StructureData(cell=[[4,0,0],[0,4,0],[0,0,4]])
- >>> s.append_atom(position=(0.,0.,0.), symbols=['Fe', 'O'], weights=[1.,0.])
- >>> s.is_alloy
- True
-
-
-Internals: Kinds and Sites
---------------------------
-Internally, the :py:meth:`~aiida.orm.nodes.data.structure.StructureData.append_atom`
-method works by manipulating the kinds and sites of the current structure.
-Kinds are instances of the :class:`~aiida:aiida.orm.nodes.data.structure.Kind` class and
-represent a chemical species, with given properties (composing element or
-elements, occupancies, mass, ...) and identified
-by a label (normally, simply the element chemical symbol).
-
-Sites are instances of the :class:`~aiida:aiida.orm.nodes.data.structure.Site` class
-and represent instead each single site. Each site refers
-to a :class:`~aiida:aiida.orm.nodes.data.structure.Kind` to
-identify its properties (which element it is, the mass, ...) and to its three
-spatial coordinates.
-
-The :py:meth:`~aiida.orm.nodes.data.structure.StructureData.append_atom` works in
-the following way:
-
-* It creates a new :class:`~aiida:aiida.orm.nodes.data.structure.Kind`
- class with the properties passed as parameters
- (i.e., all parameters except ``position``).
-
-* It tries to identify if an identical Kind already exists in the list
- of kinds of the structure (e.g., in the same atom with the same mass was
- already previously added). Comparison of kinds is performed using
- :py:meth:`aiida.orm.nodes.data.structure.Kind.compare_with`, and in particular
- it returns ``True`` if the mass and the list of symbols and of weights are
- identical (within a threshold). If an identical kind ``k`` is found,
- it simply adds a new site referencing to kind ``k`` and with the provided
- ``position``. Otherwise, it appends ``k`` to the list of kinds of the current
- structure and then creates the site referencing to ``k``. The name of the
- kind is chosen, by default, equal to the name of the chemical symbol (e.g.,
- "Fe" for iron).
-
-* If you pass more than one species for the same chemical symbol, but e.g. with
- different masses, a new kind is created and the name is obtained postponing
- an integer to the chemical symbol name. For instance, the following lines::
-
- s.append_atom(position = [0,0,0], symbols='Fe', mass = 55.8)
- s.append_atom(position = [1,1,1], symbols='Fe', mass = 57)
- s.append_atom(position = [1,1,1], symbols='Fe', mass = 59)
-
- will automatically create three kinds, all for iron, with names ``Fe``,
- ``Fe1`` and ``Fe2``, and masses 55.8, 57. and 59. respecively.
-
-* In case of alloys, the kind name is obtained concatenating all chemical
- symbols names (and a X is the sum of weights is less than one). The same
- rules as above are used to append a digit to the kind name, if needed.
-
-* Finally, you can simply specify the kind_name to automatically generate a
- new kind with a specific name. This is the case if you want a name different
- from the automatically generated one, or for instance if you want to create
- two different species with the same properties (same mass, symbols, ...).
- This is for instance the case in Quantum ESPRESSO in order to describe an
- antiferromagnetic cyrstal, with different magnetizations on the different
- atoms in the unit cell.
-
- In this case, you can for instance use::
-
- s.append_atom(position = [0,0,0], symbols='Fe', mass = 55.845, name='Fe1')
- s.append_atom(position = [2,2,2], symbols='Fe', mass = 55.845, name='Fe2')
-
- To create two species ``Fe1`` and ``Fe2`` for iron, with the same mass.
-
- .. note:: You do not need to specify explicitly the mass if the default one
- is ok for you. However, when you pass explicitly a name and it coincides
- with the name of an existing species, all properties that you
- specify must be identical to the ones of the existing species, or the
- method will raise an exception.
-
- .. note:: If you prefer to work with the
- internal :class:`~aiida:aiida.orm.nodes.data.structure.Kind`
- and :class:`~aiida:aiida.orm.nodes.data.structure.Site` classes,
- you can obtain the same
- result of the two lines above with::
-
- from aiida.orm.nodes.data.structure import Kind, Site
- s.append_kind(Kind(symbols='Fe', mass=55.845, name='Fe1'))
- s.append_kind(Kind(symbols='Fe', mass=55.845, name='Fe1'))
- s.append_site(Site(kind_name='Fe1', position=[0.,0.,0.]))
- s.append_site(Site(kind_name='Fe2', position=[2.,2.,2.]))
-
-
-Conversion to/from ASE
-----------------------
-
-If you have an AiiDA structure ``s``, you can get an ``ase.Atom`` object by
-just calling the :meth:`aiida:aiida.orm.nodes.data.structure.StructureData.get_ase`
-method::
-
- ase_atoms = s.get_ase()
-
-.. note:: As we support alloys and vacancies in AiiDA, while ``ase.Atom`` does not,
- it is not possible to export to ASE a structure with vacancies or alloys.
-
-If instead you have as ASE Atoms object and you want to load the structure
-from it, just pass it when initializing the class::
-
- StructureData = DataFactory('structure')
- # or:
- # from aiida.orm import StructureData
- aiida_structure = StructureData(ase = ase_atoms)
-
-Creating multiple species
-+++++++++++++++++++++++++
-
-We implemented the possibility of specifying different Kinds (species) in the
-``ase.atoms`` and then importing them.
-
-In particular, if you specify atoms with different mass in ASE, during the
-import phase different kinds will be created::
-
- >>> import ase
- >>> StructureData = DataFactory("structure")
- >>> ase_structure = ase.Atoms('Fe2')
- >>> ase_structure[0].mass = 55.
- >>> ase_structure[1].mass = 56.
- >>> ase_structure.cell = cell # defines a periodic cell
- >>> s = StructureData(ase=ase_structure)
- >>> for kind in s.kinds:
- >>> print(kind.name, kind.mass)
- Fe 55.0
- Fe1 56.0
-
-Moreover, even if the mass is the same, but you want to get different species,
-you can use the ASE ``tags`` to specify the number to append to the element
-symbol in order to get the species name::
-
- >>> import ase
- >>> StructureData = DataFactory("structure")
- >>> ase_structure = ase.Atoms('Fe2')
- >>> ase_structure[0].tag = 1
- >>> ase_structure[1].tag = 2
- >>> ase_structure.cell = cell
- >>> s = StructureData(ase=ase_structure)
- >>> for kind in s.kinds:
- >>> print(kind.name)
- Fe1
- Fe2
-
-.. note:: in complicated cases (multiple tags, masses, ...),
- it is possible that exporting a AiiDA structure
- to ASE and then importing it again will not perfectly preserve the kinds and
- kind names.
-
-Conversion to/from pymatgen
----------------------------
-
-AiiDA structure can be converted to pymatgen's `Molecule`_ and
-`Structure`_ objects by using, accordingly,
-:meth:`~aiida:aiida.orm.nodes.data.structure.StructureData.get_pymatgen_molecule`
-and
-:meth:`~aiida:aiida.orm.nodes.data.structure.StructureData.get_pymatgen_structure`
-methods::
-
- pymatgen_molecule = aiida_structure.get_pymatgen_molecule()
- pymatgen_structure = aiida_structure.get_pymatgen_structure()
-
-A single method
-:meth:`~aiida:aiida.orm.nodes.data.structure.StructureData.get_pymatgen` can be
-used for both tasks: converting periodic structures (periodic boundary
-conditions are met in all three directions) to pymatgen's Structure and
-other structures to pymatgen's Molecule::
-
- pymatgen_object = aiida_structure.get_pymatgen()
-
-It is also possible to convert pymatgen's Molecule and Structure
-objects to AiiDA structures::
-
- StructureData = DataFactory("structure")
- from_mol = StructureData(pymatgen_molecule=mol)
- from_struct = StructureData(pymatgen_structure=struct)
-
-Also in this case, a generic converter is provided::
-
- StructureData = DataFactory("structure")
- from_mol = StructureData(pymatgen=mol)
- from_struct = StructureData(pymatgen=struct)
-
-.. note:: Converters work with version 3.0.13 or later of
- pymatgen. Earlier versions may cause errors.
-
-.. _Molecule: http://pymatgen.org/pymatgen.core.html#pymatgen.core.structure.Molecule
-.. _Structure: http://pymatgen.org/pymatgen.core.html#pymatgen.core.structure.Structure
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_upf_data.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_upf_data.rst
deleted file mode 100644
index 99be879b..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_upf_data.rst
+++ /dev/null
@@ -1,124 +0,0 @@
-.. _2019_mandi_appendix_upf_data:
-
-Introduction: Pseudopotential families
-++++++++++++++++++++++++++++++++++++++
-
-The procedure of attaching a pseudopotential file to each atomic species
-can easily become tedious. In many situations, you will not produce a different
-pseudopotential file for every calculation you perform; most likely, when you start a project
-you will stick to a pseudopotential file that is adequate for what you need.
-Furthermore, in a high-throughput calculation, you will like to do calculations
-over several elements while keeping the same functional.
-That is also part of the reason why there are several projects
-(like the `PSLibrary `_
-or `GBRV `_
-to name a few), that intend to develop a set of pseudopotentials that covers most
-of the periodic table for different functionals.
-
-For this reason we introduced the concept of *pseudopotential families*.
-Each family is a set of pseudopotentials that are grouped together in a special type of
-`AiiDA Group of nodes`. Within each family, at most one pseudopotential
-can be present for a given chemical element.
-
-A pseudopotential family does not necessarily have to cover the whole periodic table.
-This means that you can create a pseudopotential family containing only the
-pseudopotentials for a few elements that you are interested in.
-
-.. note::
- In principle, you can group different kinds of pseudopotentials into the same family.
- It is your responsibility to group only those with the same type,
- or obtained using the same functionals, approximations and / or levels of theory.
-
-Creating a pseudopotential family
-+++++++++++++++++++++++++++++++++
-
-.. note::
- The following commands are specific to the `Quantum ESPRESSO
- interface `_.
- For interfaces to other codes, please refer to the respective plugin documentation.
-
-In the following, we will create a pseudopotential family.
-First, you need to collect the pseudopotential files which should go into the family in a
-single folder -- we'll call it ``path/to/folder``. You can then add the family to
-the AiiDA database with ``verdi``::
-
- verdi data upf uploadfamily path/to/folder name_of_the_family "some description for your convenience"
-
-where ``name_of_the_family`` should be a unique name for the family,
-and the final parameter is a string that is set in the ``description`` field of the group.
-
-If the a pseudopotential family with the same ``name_of_the_family`` exists already,
-the pseudopotentials in the folder will be added to the existing group.
-The code will raise an error if you try to add two (different) pseudopotentials for the same element.
-
-After the upload (which may take some seconds, so please be patient)
-the pseudopotential family will be ready for use.
-
-.. hint::
- If you upload pseudopotentials which are already present in your database,
- AiiDA will use the existing ``UPFData`` node instead of creating a duplicate one.
- You can use the optional flag ``--stop-if-existing`` to instead abort
- (without changing anything in the database) if an existing pseudopotential is found.
-
-
-Getting the list of existing families
-+++++++++++++++++++++++++++++++++++++
-
-To see which pseudopotential families already exist in the database, type
-
-.. code-block:: console
-
- $ verdi data upf listfamilies
-
-Add a ``-d`` (or ``--with-description``) flag if you also want to read the description of each family.
-
-You can also filter the groups to get only a list of those containing a given set of elements
-using the ``-e`` option. For instance, if you want to get only the families containing the
-elements ``Ba``, ``Ti`` and ``O``, use
-
-.. code-block:: console
-
- $ verdi data upf listfamilies -e Ba Ti O
-
-
-For more information on the command line options, type
-
-.. code-block:: console
-
- $ verdi data upf listfamilies -h
-
-
-Manually adding pseudopotentials
-++++++++++++++++++++++++++++++++
-
-If you do not want to use pseudopotentials from a family, it is also possible to manually
-add them to the database (even though we discourage this in general).
-
-A possible way of doing it is the following: we start by creating a list of
-pseudopotential filenames that we need to use::
-
- raw_pseudos = [
- "Ba.pbesol-spn-rrkjus_psl.0.2.3-tot-pslib030.UPF",
- "Ti.pbesol-spn-rrkjus_psl.0.2.3-tot-pslib030.UPF",
- "O.pbesol-n-rrkjus_psl.0.1-tested-pslib030.UPF"]
-
-In this simple example, we expect the pseudopotentials to be in the same folder
-of the script. Then, we loop over the filenames and add them to the AiiDA database.
-The ``get_or_create`` method checks if the pseudopotential is already in the database
-and either stores it, or just returns the node already present in the database.
-The second value returned is a boolean and tells us if the pseudopotential was
-already present or not.
-
-::
-
- UpfData = DataFactory('upf')
- pseudos_to_use = []
-
- for filename in raw_pseudos:
- absname = os.path.abspath(filename)
- pseudo, created = UpfData.get_or_create(absname, use_first=True)
- pseudos_to_use.append(pseudo)
-
-.. note::
- When the pseudopotential is created, it is parsed and the elements to which it refers is stored
- in the database and can be accessed using the ``pseudo.element`` property, as shown above.
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/appendix_workflow_logic.rst b/docs/pages/2019_IIT_Mandi_India/sections/appendix_workflow_logic.rst
deleted file mode 100644
index 94eef675..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/appendix_workflow_logic.rst
+++ /dev/null
@@ -1,118 +0,0 @@
-*These appendices consist of optional exercises, and are mentioned
-in earlier parts of the tutorial. Go through them only if you
-have time.*
-
-.. _2019_mandi_workflow_logic:
-
-More workflow logic: while loops and conditional statements
-===========================================================
-
-In the previous sections, you have been introduced to ``WorkChains``, and the reason for using them over 'standard' work functions.
-However, in the :ref:`original example<2019_mandi_workchainsimple>`, the ``spec.outline`` was quite simple, with a 'static' sequence of two steps.
-Most often, however, you need dynamic workflows, where you need to decide at runtime whether to continue to compute or not (e.g. in a convergence loop, where you need to stop if convergence has been achieved).
-To support this scenario, the ``spec.outline`` can support logic: `while` loops and `if/elif/else` blocks.
-The simplest way to explain it is to show an example:
-
-.. code:: python
-
- from aiida.engine import if_, while_
-
- spec.outline(
- cls.s1,
- if_(cls.isA)(
- cls.s2
- ).elif_(cls.isB)(
- cls.s3
- ).else_(
- cls.s4
- ),
- cls.s5,
- while_(cls.condition)(
- cls.s6
- ),
- )
-
-that would *roughly* correspond, in a python syntax, to:
-
-.. code:: python
-
- s1()
- if isA():
- s2()
- elif isB():
- s3()
- else:
- s4()
- s5()
- while condition():
- s6()
-
-The only constraint is that condition functions (in the example above ``isA``, ``isB`` and ``condition``) must be class methods that returns ``True`` or ``False`` depending on whether the condition is met or not.
-
-A suggestion on how to write new workchains: use the outline to help you in designing the logic.
-First create the spec outline writing, almost if you were explaining it in words, what you expect the workflow to do.
-Then, define one by one the methods.
-
-.. _2019_mandi_convpressure:
-
-Pressure convergence
---------------------
-
-For example, we have prepared a simple workflow (using work chains, work functions and calculation functions) to optimize the lattice parameter of silicon efficiently using Newton's algorithm on the energy derivative, i.e. the pressure :math:`p=-dE/dV`.
-You can download this code :download:`here <../scripts/pressure_convergence.py>`
-The outline looks like this:
-
-.. code:: python
-
- spec.outline(
- cls.setup,
- cls.put_step0_in_ctx,
- cls.move_next_step,
- while_(cls.not_converged)(
- cls.move_next_step,
- ),
- cls.finish
- )
-
-This outline already roughly explains the algorithm: after an initialization (``setup``) and putting the first step (number zero) in the ctx (``put_step0_in_ctx``), a function to move to the next step is called (``move_next_step``).
-This is iterated while a given convergence criterion is not met (``not_converged``).
-Finally, some reporting is done, including returning some output nodes (``finish``).
-
-If you are interested in the details of the algorithm, you can inspect the file.
-The main ideas are described here:
-
-``setup``
-Generate a ``pw.x`` calculation for the input structure (with volume
-(V)), and one for a structure where the volume is :math:`V+4 \mbox{\normalfont\AA}^3` (just to get a closeby volume).
-Store the results in the context as ``r0`` and ``r1``
-
-``put_step0_in_ctx``
-Store in the context :math:`V`, :math:`E(V)` and :math:`dE/dV` for the first calculation ``r0``
-
-``move_next_step``
-This is the most important function. Calculate :math:`V`, :math:`E(V)` and :math:`dE/dV` for ``r1``.
-Also, estimate :math:`d^2E/dV^2` from the finite difference of the first derivative of ``r0`` and ``r1`` (helper functions to achieve this are provided).
-Get the :math:`a`, :math:`b` and :math:`c` coefficients of a parabolic fit :math:`E = aV^2 + bV + c` and estimate the expected minimum of the EOS function as the minimum of the fit :math:`V_0 = -b / 2a`.
-Finally, replace ``r0`` with ``r1`` in the context (i.e., get rid of the oldest point) and launch a new pw calculation at volume :math:`V_0`, that will be stored in the context replacing ``r1``.
-In this way, at the next iteration ``r0`` and ``r1`` will contain the latest two simulations.
-Finally, at each step some relevant information (coefficients :math:`a`, :math:`b` and :math:`c`, volumes, energies, energy derivatives, ...) are stored in a list called ``steps``.
-This whole list is stored in the context because it provides quantities to be preserved between different work chain steps.
-
-``not_converged``
-Return ``True`` if convergence has not been achieved yet.
-Convergence is achieved if the difference in volume between the two latest simulations is smaller than a given threshold ``volume_tolerance``.
-
-``finish``
-This is the final step.
-Mainly, we return the output nodes: ``steps`` with the list of results at each step, and ``structure`` with the final converged structure.
-
-The results returned in ``steps`` can be used to represent the evolution of the minimisation algorithm.
-A possible way to visualize it is presented in :numref:`fig_convpressure` obtained with an initial lattice constant of `alat = 5.2`.
-
-.. _2019_mandi_fig_convpressure:
-.. figure:: include/images/convergence_pressure.png
-
- Example of results of the convergence algorithm presented in this section.
- The bottom plot is a zoom near the minimum.
- The dots represent the (volume,energy) points obtained from Quantum ESPRESSO, and the numbers indicate at which iteration they were obtained.
- The parabolas represent the parabolic fits used in the algorithm; the minimum of the parabola is represented with a small cross, in correspondence of the vertical lines, used as the volume for the following step.
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/calculations.rst b/docs/pages/2019_IIT_Mandi_India/sections/calculations.rst
deleted file mode 100644
index c2dcecc3..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/calculations.rst
+++ /dev/null
@@ -1,625 +0,0 @@
-.. _2019_mandi_calculations:
-
-Submit, monitor and debug calculations
-======================================
-
-In this section we'll be learning how to create new data in AiiDA.
-
-We will use the `Quantum Espresso `_ package to launch a simple `density functional theory `_ calculation of a silicon crystal using the :doi:`PBE exchange-correlation functional <10.1103/PhysRevB.54.16533>` and check its results.
-While we're going to debug these issues 'manually' here, workflows (which you'll encounter later in this tutorial) can help you avoid these issues systematically.
-
-Note that besides the ``aiida-quantumespresso`` plugin, AiiDA comes with plugins for a range of other codes, all of which are listed in the `AiiDA plugin registry `_.
-
-Computer setup
---------------
-
-In a production environment, AiiDA would typically be running on your work station or laptop, while launching calculations
-on remote high-performance compute resources that you have SSH access to.
-For this reason AiiDA has the concept of a ``Computer`` to run calculations on.
-
-To keep things simple, Quantum ESPRESSO (together with several other *ab initio* codes) has been installed directly in the
-``codes`` subfolder of your virtual machine,
-and you are going to launch your first calculations on the same computer where AiiDA is installed.
-Nevertheless, we're now going to set up this computer for launching calculations:
-
-.. code:: bash
-
- verdi computer setup --config computer.yml
-
-where ``computer.yml`` is a configuration file in the `YAML format `_) that you can :download:`download here `. This is its content:
-
-.. literalinclude:: include/configuration/computer.yml
-
-.. note::
- When used without the ``--config`` option, ``verdi computer setup`` will prompt you for the required information, just like you have seen when :ref:`setting up a profile<2019_mandi_setup_verdi_quicksetup>`.
- The configuration file should work for the virtual machine that comes with this tutorial
- but may need to be adapted when you are running AiiDA in a different environment,
- as explained in :ref:`this appendix<2019_mandi_appendix_computer_code_setup>`.
-
-Finally, you need to provide AiiDA with information on how to access the ``Computer``.
-For remote computers with ``ssh`` transport, this would involve e.g. an SSH key.
-For ``local`` computers, this is just a "formality" (press enter to confirm the default cooldown time):
-
-.. code:: bash
-
- verdi computer configure local localhost
-
-.. note::
-
- For remote computers with ``ssh`` transport, use ``verdi computer configure ssh`` instead of ``verdi computer configure local``.
-
-Your ``localhost`` computer should now show up in
-
-.. code:: bash
-
- verdi computer list
-
-Before proceeding, test that it works:
-
-.. code:: bash
-
- verdi computer test localhost
-
-
-Code setup
-----------
-
-Now that we have our localhost set up, let's configure the ``Code``, namely the ``pw.x`` executable.
-As with the computer, we have prepared a configuration file for you to :download:`download `.
-This is its content:
-
-.. literalinclude:: include/configuration/code.yml
- :language: yaml
-
-Once you have the configuration file in your local working environment, set up the code:
-
-.. code:: bash
-
- verdi code setup --config code.yml
-
-.. warning::
-
- The configuration should work for the virtual machine that comes with this tutorial.
- If you are following this tutorial in a different environment, you will need to install Quantum ESPRESSO and adapt the configuration to your needs,
- as explained in :ref:`this appendix<2019_mandi_appendix_computer_code_setup>`.
-
-Similar to the computers, you can list all the configured codes with:
-
-.. code:: bash
-
- verdi code list
-
-Verify that it now contains a code named ``qe-6.4.1-pw`` that we just configured.
-You can always check the configuration details of an existing code using:
-
-.. code:: bash
-
- verdi code show qe-6.4.1-pw
-
-.. note::
-
- The ``generic`` profile has already a number of other codes configured.
- See ``verdi -p generic code list``.
-
-
-The AiiDA daemon
-----------------
-
-First of all, check that the AiiDA daemon is actually running.
-The AiiDA daemon is a program that
-
- * runs continuously in the background
- * waits for new calculations to be submitted
- * transfers the inputs of new calculations to your compute resource
- * checks the status of your calculation at the compute resource, and
- * retrieves the results from the compute resource
-
-Check the status of the daemon process by typing in the terminal:
-
-.. code:: bash
-
- verdi daemon status
-
-If the daemon is running, the output should look like
-
-.. code:: bash
-
- Profile: default
- Daemon is running as PID 2050 since 2019-04-30 12:37:12
- Active workers [1]:
- PID MEM % CPU % started
- ----- ------- ------- -------------------
- 2055 2.147 0 2019-04-30 12:37:12
- Use verdi daemon [incr | decr] [num] to increase / decrease the amount of workers
-
-If this is not the case, type in the terminal
-
-.. code:: bash
-
- verdi daemon start
-
-to start the daemon.
-
-Creating a new calculation
---------------------------
-
-In the following, we'll be working in the ``verdi shell``.
-As you go along, feel free to keep track of your commands by
-copying them into a python script ``test_pw.py``.
-
-.. note::
-
- The ``verdi shell`` imports a number of AiiDA internals so that you as the user don't have to.
- You can also make those available to a python script, by running it using
-
- .. code:: bash
-
- verdi run
-
-
-Every calculation sent to a cluster is linked to a *code*, which describes
-the executable file to be used as well as some metadata.
-Let's have a look at the codes already installed on your machine:
-
-.. code:: bash
-
- verdi code list
-
-There should be a number of them. Here, we're interested in the "PWscf" executable of Quantum Espresso, i.e. in codes for the ``quantumespresso.pw`` plugin:
-
-.. code:: bash
-
- verdi code list -P quantumespresso.pw
-
-Pick the correct codename, that might look like, e.g.
-``qe-6.4.1-pw@localhost`` and load it in the verdi shell.
-
-.. code:: python
-
- code = load_code("")
-
-.. note::
-
- ``load_code`` returns an object of type ``Code``, which is the general AiiDA class for describing simulation codes.
-
-Let's build the inputs for a new ``PwCalculation`` (defined by the ``quantumespresso.pw`` plugin, the default plugin for the code you chose before)
-
-.. code:: python
-
- builder = code.get_builder()
-
-As the first step, assign a (short) label or a (long) description to your
-calculation, that you might find convenient in the future.
-
-.. code:: python
-
- builder.metadata.label = "PW test"
- builder.metadata.description = "My first AiiDA calc with Quantum ESPRESSO on Si"
-
-This information will be saved in the database for later queries or
-inspection. Note that you can press TAB after writing ``builder.`` to
-see all inputs available for this calculation.
-In order to figure out which data type is expected for a particular input, such as ``builder.structure``,
-and whether the input is optional or required, use ``builder.structure??``.
-
-Now, specify the number of machines (a.k.a. cluster nodes)
-you are going to run on and the maximum time allowed for the
-calculation.
-The general options grouped under ``builder.metadata.options`` are independent of
-the code or plugin, and will be passed to the scheduler that handles the
-queue on your compute resource .
-
-.. code:: python
-
- builder.metadata.options.resources = {'num_machines': 1}
- builder.metadata.options.max_wallclock_seconds = 30 * 60
-
-Again, to see the list of available options, type
-``builder.metadata.options.`` and hit the TAB button.
-
-Preparation of inputs
-~~~~~~~~~~~~~~~~~~~~~
-
-A Quantum Espresso calculation needs a number of inputs:
-
-1. `Pseudopotentials `_
-2. a structure
-3. a mesh in reciprocal space (k-points)
-4. a number of input parameters
-
-These are mirrored in the inputs of the ``aiida-quantumespresso`` plugin
-(see `documentation `_).
-We'll start with the structure, k-points, and pseudopotentials
-and leave the input parameters as the last thing to setup.
-
-.. admonition:: Exercise
-
- Use what you learned in the previous section to load the ``structure`` and ``kpoints`` inputs for your calculation:
-
- * Use a silicon crystal structure
- * Define a ``2x2x2`` mesh of k-points.
-
- Note: If you just copy and paste code that you executed previously,
- this may result in duplication of information on your database.
- In fact, you can re-use an existing structure stored in your database [#f1]_. Use a combination of the bash command
- ``verdi data structure list`` and of the shell command ``load_node()``
- to get an object representing the structure created earlier.
-
-Attaching the input information to the calculation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Once you've created a ``structure`` node and a ``kpoints`` node,
-attach it to the calculation:
-
-.. code:: python
-
- builder.structure = structure
- builder.kpoints = kpoints
-
-.. note::
-
- The builder accepts both *stored* and *unstored* data nodes.
- AiiDA will take care of storing the unstored nodes upon submission.
- If you decide not to submit, nothing will be stored in the database.
-
-PWscf also needs information on the pseudopotentials,
-in the form of a dictionary, where keys are the names of the elements and the values are the corresponding ``UpfData`` objects containing the information on the pseudopotential.
-However, instead of creating the dictionary by hand, we can use a helper function that picks the right pseudopotentials for our structure from a pseudopotential *family*.
-You can list the preconfigured families from the command line:
-
-.. code:: bash
-
- verdi data upf listfamilies
-
-Pick the one you configured earlier (or one of the ``SSSP`` families that
-we provide) and link it to the calculation using the command:
-
-.. code:: python
-
- from aiida.orm.nodes.data.upf import get_pseudos_from_structure
- builder.pseudos = get_pseudos_from_structure(structure, '')
-
-Print the content of the `pseudos` namespace, e.g. ``print(builder.pseudos)`` to see what the helper function created.
-
-Preparing and debugging input parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Finally, we need to specify a number of input parameters (i.e. plane wave cutoffs, convergence thresholds, etc.).
-to launch the Quantum ESPRESSO calculation.
-The structure of the parameter dictionary closely follows the structure of the `PWscf input file `_.
-
-Since these are often the parameters to tune in a calculation,
-let's **introduce a few mistakes intentionally**
-and use this part of the tutorial to learn how to debug problems.
-
-Define a set of input parameters for Quantum ESPRESSO, preparing a
-dictionary of the form:
-
-.. code:: python
-
- parameters_dict = {
- 'CONTROL': {
- 'calculation': 'scf',
- 'tstress': True,
- 'tprnfor': True,
- },
- 'SYSTEM': {
- 'ecutwfc': 30.,
- 'ecutrho': 200.,
- 'mickeymouse': 240.,
- },
- 'ELECTRONS': {
- 'conv_thr': 1.e-8,
- },
- }
-
-This dictionary is almost a valid input for the Quantum ESPRESSO plugin,
-except for an invalid key ``mickeymouse``. When Quantum ESPRESSO
-receives an unrecognized key, it will stop.
-By default, the AiiDA plugin will *not* validate your input and simply pass
-it on to the code.
-
-Let's wrap the ``parameters_dict`` python dictionary in an AiiDA ``Dict`` node and see what happens.
-
-.. code:: python
-
- builder.parameters = Dict(dict=parameters_dict)
-
-Simulate submission
-~~~~~~~~~~~~~~~~~~~
-
-At this stage, you have created in memory (it's not yet stored in the
-database) the input of the graph shown below. The outputs will
-be created by the daemon later on.
-
-.. figure:: include/images/verdi_graph/si/graph-full.png
- :alt:
-
-In order to check which input files AiiDA creates,
-we can perform a *dry run* of the submission process.
-Let's tell the builder that we want a dry run and that
-we don't want to store the provenance of the dry run:
-
-.. code:: python
-
- builder.metadata.dry_run = True
- builder.metadata.store_provenance = False
-
-It's time to run:
-
-.. code:: python
-
- from aiida.engine import run
- run(builder)
-
-.. note::
-
- Instead of using the builder, you can also simply pass the calculation class
- as the first argument, followed by the inputs as keyword arguments, e.g.:
-
- .. code:: python
-
- run(PwCalculation, structure=structure, pseudos={'Si': pseudo_node}, ....)
-
- The builder is simply a convenience wrapper providing tab-completion in the shell and automatic help strings.
-
-This creates a folder of the form ``submit_test/[date]-0000[x]`` in the
-current directory. In your second terminal:
-
- * open the input file ``aiida.in`` within this folder
- * compare it to input data nodes you created earlier
- * verify that the `pseudo` folder contains the needed pseudopotentials
- * have a look at the submission script ``_aiidasubmit.sh``
-
-.. note::
-
- The files created by a dry run are only intended for inspection
- and cannot be used to correct the inputs of your calculation.
-
-Submitting the calculation
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Up to now we've just been playing around and our calculation has been kept
-in memory and not in the database.
-Now that we have inspected the input files and convinced ourselves that
-Quantum ESPRESSO will have all the information it needs to perform the
-calculation, we will submit the calculation properly.
-Doing so will make sure that all inputs are stored in the database,
-will run and store the calculation and link the outputs to it.
-
-Let's revert the following values in our builder to their defaults:
-
-.. code:: python
-
- builder.metadata.dry_run = False
- builder.metadata.store_provenance = True
-
-And then rely on the submit machinery of AiiDA,
-
-.. code:: python
-
- from aiida.engine import submit
- calculation = submit(builder)
-
-As soon as you have executed these lines, the ``calculation`` variable contains a ``PwCalculation`` instance, already submitted to the daemon.
-
-.. note::
-
- You may have noticed that we used ``submit`` here instead of ``run``.
- The difference is that ``submit`` will hands over the calculation to the daemon running in the background,
- while ``run`` will execute all tasks in the current shell.
-
- All processes in AiiDA (you will soon get to know more) can be "launched" using one of available functions:
-
- * run
- * run_get_node
- * run_get_pk
- * submit
-
- which are explained in more detail in the `online documentation `_.
-
-
-The calculation is now stored in the database and was assigned a "database primary key" or ``pk`` (``calculation.pk``) as well as a UUID (``calculation.uuid``).
-See the :ref:`previous section <2019-aiida-identifiers>` for more details on these identifiers.
-
-Note that while AiiDA will prevent you from changing the content of stored nodes,
-the concept of "extras" allows you to set extra attributes, e.g. as a way of
-labelling nodes and providing information for querying.
-
-For example, let's add an extra attribute called ``element``, with value ``Si``:
-
-.. code:: python
-
- calculation.set_extra("element", "Si")
-
-In the mean time, after you submitted your calculation, the daemon
-picked it up and started to: generate the input files, submit the calculation
-to the queue, wait for it to run and finish, retrieve the output files,
-parse them, store them in the database and set the state of the
-calculation to ``Finished``.
-
-.. note::
-
- If the daemon is not running, the calculation will remain in the
- ``NEW`` state until you start the daemon.
-
-Checking the status of the calculation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can check the calculation status from the command line:
-
-.. code:: bash
-
- verdi process list
-
-.. note::
-
- Since you are running your DFT calculation directly on the VM,
- ``verdi`` commands can be a bit slow until the calculation finishes.
-
-If you don't see any calculation in the
-output, the calculation you submitted has already finished.
-
-By default, the command only prints calculations that are still active [#f2]_.
-Let's also list your finished calculations (and limit those only
-to the one created in the past day):
-
-.. code:: bash
-
- verdi process list -a -p1
-
-as explained in the first section.
-
-Similar to the dry run, we can also inspect the input files of the *actual*
-calculation:
-
-.. code:: bash
-
- verdi calcjob inputls -c
-
-for the ``pk_number`` of your calculation. This will show the
-contents of the input directory (``-c`` prints directories in color).
-Check the content of input files with
-
-.. code:: bash
-
- verdi calcjob inputcat | less
-
-Troubleshooting
----------------
-
-Your calculation should end up in a FAILED state
-(last column of ``verdi process list -a -p1``), and correspondingly the
-error code near the "Finished" status of the State should be non-zero,
-
-.. code:: bash
-
- $ verdi process list -a -p1
- PK Created State Process label Process status
- ---- --------- ---------------- --------------- ----------------
- 98 16h ago Finished [115] PwCalculation
- ...
- $ # Anything but [0] after the Finished state signals a failure
-
-This was expected, since we used an invalid key in the input parameters.
-Situations like this happen in real life, so AiiDA provides
-tools to trace back to the source of the problem and correct it.
-
-A first way to proceed is to inspect the output file of
-PWscf.
-
-.. code:: bash
-
- verdi calcjob outputcat | less
-
-This might be enough to understand the reason why the calculation
-failed.
-
-AiiDA provides further tools for troubleshooting in a more compact way.
-For any calculation, both successful and failed, you can get a summary by:
-
-.. code:: bash
-
- $ verdi process show
- Property Value
- ------------- ---------------------------------------------------
- type CalcJobNode
- pk 98
- uuid 4c444afd-f6e2-4896-b9ae-8cb8a5ec75c5
- label PW test
- description My first AiiDA calc with Quantum ESPRESSO on Si
- ctime 2019-05-01 15:59:39.180018+00:00
- mtime 2019-05-01 16:01:44.870902+00:00
- process state Finished
- exit status 115
- computer [1] localhost
-
- Inputs PK Type
- ---------- ---- -------------
- pseudos
- Si 50 UpfData
- code 2 Code
- kpoints 10 KpointsData
- parameters 96 Dict
- settings 97 Dict
- structure 9 StructureData
-
- Outputs PK Type
- ------------- ---- ----------
- remote_folder 99 RemoteData
- retrieved 100 FolderData
-
- Log messages
- ---------------------------------------------
- There are 2 log messages for this calculation
- Run 'verdi process report 98' to see them
-
-The last part of the output alerts you to the fact that there
-are some log messages waiting for you, if you run
-``verdi process report ``.
-
-Let's now correct our input parameters dictionary by leaving out the invalid
-key and see if our calculation succeeds:
-
-.. code:: python
-
- parameters_dict = {
- "CONTROL": {
- "calculation": "scf",
- },
- "SYSTEM": {
- "ecutwfc": 30.,
- "ecutrho": 200.,
- },
- "ELECTRONS": {
- "conv_thr": 1.e-6,
- }
- }
- builder.parameters = Dict(dict=parameters_dict)
- calculation = submit(builder)
-
-If you have been using the separate script approach, modify
-the script to remove the faulty input and run it again with:
-
-.. code:: bash
-
- verdi run test_pw.py
-
-Use ``verdi process list -a -p1`` to verify that
-the calculation reaches the finished status, with exit code zero.
-
-Using the calculation results
------------------------------
-
-Now you can access the results as you have seen earlier. For example,
-note down the pk of the calculation so that you can load it in the
-``verdi shell`` and check the total energy with the commands:
-
-.. code:: python
-
- calculation = load_node()
- calculation.res.energy
-
-Besides writing input files, running the software for you, storing the output
-files, and connecting it all together in your provenance graph,
-many AiiDA plugins will parse the output of your code and make output values
-of interest available through an output dictionary node (as depicted in the
-graph above).
-In the case of the ``aiida-quantumespresso`` plugin this output node
-is available at ``calculation.outputs.output_parameters`` and you can access
-all the available attributes (not only the energy) using:
-
-.. code:: python
-
- calculation.outputs.output_parameters.attributes
-
-While the name of this output dictionary node can be chosen by the plugin,
-AiiDA provides the "results" shortcut ``calculation.res``
-that plugin developers can use to provide what they consider the result of the
-calculation.
-
-
-.. rubric:: Footnotes
-
-.. [#f1] In order to avoid duplication of KpointsData, you would first need to learn how to query the database, therefore we will ignore this issue for now.
-.. [#f2] A process is considered active if it is either ``Created``, ``Running`` or ``Waiting``. If a process is no longer active, but terminated, it will have a state ``Finished``, ``Killed`` or ``Excepted``.
diff --git a/docs/pages/2019_IIT_Mandi_India/sections/first_taste.rst b/docs/pages/2019_IIT_Mandi_India/sections/first_taste.rst
deleted file mode 100644
index 406ea80e..00000000
--- a/docs/pages/2019_IIT_Mandi_India/sections/first_taste.rst
+++ /dev/null
@@ -1,331 +0,0 @@
-A first taste
-=============
-
-Let's start with a quick demo of how AiiDA can make your life easier as a computational scientist.
-
-To get started, type ``workon aiida`` in your terminal to enter the *virtual environment* where AiiDA is installed.
-You have entered the the virtual environment when the prompt starts with ``(aiida)``, e.g.::
-
- (aiida) username@hostname:~$
-
-.. note::
-
- You need to retype ``workon aiida`` whenever you open a new terminal.
-
-We'll be using the ``verdi`` command-line interface,
-which lets you manage your AiiDA installation, inspect the contents of your database, control running calculations and more.
-
-Here are some first tasks for you:
-
- * The ``verdi`` command supports **tab-completion**:
- In the terminal, type ``verdi``, followed by a space and press the 'Tab' key twice to show a list of all the available sub commands.
- * For help on any ``verdi`` command, simply append the ``-h`` or ``--help`` flag:
-
- .. code:: bash
-
- verdi -h
-
-Getting help
-------------
-
-There are a number of helpful resources available to you for getting more information about AiiDA.
-Please consider:
-
- * consulting the extensive `AiiDA documentation `_
- * asking in the `Slack channel of the tutorial `_
- * asking your neighbor
- * asking a tutor
- * opening a new issue on the `tutorial issue tracker