This commit is contained in:
Marc Beninca 2020-10-30 10:28:17 +01:00
parent 761d26d48b
commit 160e486e88
250 changed files with 5 additions and 12 deletions

3
cnam/thesis/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
/*.pdf
/*.pdf.asc
/*.pdf.vrf

148
cnam/thesis/build.py Executable file
View file

@ -0,0 +1,148 @@
#! /usr/bin/python3 -B
import os
import shutil
import subprocess
import sys
MAIN = 'main'
TMP = 'tmp'
ENGLISH = 'english'
FRENCH = 'french'
LANGUAGES = [ENGLISH, FRENCH]
DOCUMENTS = [
{ENGLISH: 'thesis', FRENCH: 'mémoire'},
{ENGLISH: 'presentation', FRENCH: 'présentation'},
]
def run(command):
subprocess.call(command)
def errun(command):
return subprocess.check_output(
command, stderr=subprocess.STDOUT)
def build(directory, sign):
# temporary directory
tmp = os.path.join(directory, TMP)
# for each language
for language in LANGUAGES:
# languages
other_languages = [lang for lang in LANGUAGES if lang is not language]
languages = [language, *other_languages]
other_languages = ','.join(other_languages)
summaries = ''.join(
[f'\\summary{{{lang}}}' for lang in languages])
# display languages
for item in ['', language, other_languages, languages, summaries]:
print(item)
# for each document
for document in DOCUMENTS:
# display language
print()
print(document[language])
# clean
os.chdir(directory)
wipe(tmp)
os.makedirs(tmp)
# move into document directory
os.chdir(document[ENGLISH])
# prepare variables
variables = {
'name': MAIN,
'ENGLISH': ENGLISH,
'FRENCH': FRENCH,
'mainlanguage': language,
'otherlanguages': other_languages,
'summaries': summaries,
}
# transform variables
variables = ''.join([f'\\def\\{k}{{{v}}}'
for k, v in variables.items()])
# prepare build command
command = ['xelatex',
'-output-directory', tmp,
f'{variables}\\input{{{MAIN}}}',
]
# pre build
run(command)
# if it's the main document
if document[ENGLISH] == 'thesis':
# build glossaries
run(['makeglossaries',
'-d', tmp,
MAIN,
])
# build references
run(['biber',
'--input-directory', tmp,
'--output-directory', tmp,
MAIN,
])
# re build
run(command)
# final build
run(command)
# rename the document
pdf = f'{document[language]}.pdf'
os.rename(os.path.join(tmp, f'{MAIN}.pdf'),
os.path.join(tmp, pdf),
)
# if signature is disabled
if not sign:
# fetch the document from temporary directory
os.rename(os.path.join(tmp, pdf),
os.path.join(directory, pdf),
)
# if signature is enabled
else:
# sign the document
run(['gpg',
'--armor',
'--detach-sign',
os.path.join(tmp, pdf),
])
signature = f'{pdf}.asc'
# fetch the document and signature from temporary directory
for f in [pdf, signature]:
os.rename(os.path.join(tmp, f),
os.path.join(directory, f),
)
# verify the document signature
lines = errun(['gpg', '--verify',
os.path.join(directory, signature),
os.path.join(directory, pdf),
]).decode('u8').splitlines()
id = lines[2].index('"')
lines = [
lines[0],
lines[1],
lines[2][:id] + lines[4][id:]
.replace('@', ' @ ')
.replace('.', ' ⋅ ')
] + lines[5:]
# write verification file
buffer = os.linesep.join(lines).encode('u8')
with open(os.path.join(directory, f'{pdf}.vrf'), 'bw') as f:
f.write(buffer)
# clean
wipe(tmp)
def wipe(directory):
shutil.rmtree(directory, ignore_errors=True)
def main():
file = os.path.realpath(__file__)
directory = os.path.dirname(file)
build(directory, len(sys.argv) == 1)
if __name__ == '__main__':
main()

40
cnam/thesis/index.rst Normal file
View file

@ -0,0 +1,40 @@
Mémoire
=======
* :download:`Planning <schedule.html>`
+----------+---------------------------------------------+-------------------------------------------------+
| | Documents | Signatures |
+----------+---------------------------------------------+-------------------------------------------------+
| | :download:`Sujet <sujet.pdf>` | :download:`Sujet <sujet.pdf.asc>` |
| +---------------------------------------------+-------------------------------------------------+
| Français | :download:`Mémoire <mémoire.pdf>` | :download:`Mémoire <mémoire.pdf.asc>` |
| +---------------------------------------------+-------------------------------------------------+
| | :download:`Présentation <présentation.pdf>` | :download:`Présentation <présentation.pdf.asc>` |
+----------+---------------------------------------------+-------------------------------------------------+
| | :download:`Thesis <thesis.pdf>` | :download:`Thesis <thesis.pdf.asc>` |
| English +---------------------------------------------+-------------------------------------------------+
| | :download:`Presentation <presentation.pdf>` | :download:`Presentation <presentation.pdf.asc>` |
+----------+---------------------------------------------+-------------------------------------------------+
.. literalinclude:: mémoire.pdf.vrf
+-----------------------------------+-------------------------+
| | |
| .. todo:: | .. todo:: |
| | |
| * mémoire | * thesis |
| | |
| * séparer les chapitres | * separate chapters |
| * rédiger l’introduction | * write introduction |
| * rédiger la conclusion | * write conclusion |
| | |
| * présentation | * presentation |
| | |
| * couleur des barres | * bars color |
| * page de garde manuelle | * manual title page |
| * plan | * contents |
| * marges | * margins |
| * page de fin | * final page |
| | |
+-----------------------------------+-------------------------+

View file

@ -0,0 +1,66 @@
\documentclass[aspectratio=1610]{beamer}
\input{../settings}
\maketitle
\input{toc}
\section{Intro}
\begin{frm}\end{frm}
\section{Section 1}
\begin{frm}\end{frm}
\subsection{SubSection 1}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 1}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 2}
\begin{frm}\end{frm}
\subsection{SubSection 2}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 3}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 4}
\begin{frm}\end{frm}
\section{Section 2}
\begin{frm}\end{frm}
\subsection{SubSection 3}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 5}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 6}
\begin{frm}\end{frm}
\subsection{SubSection 4}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 7}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 8}
\begin{frm}\end{frm}
\section{Section 3}
\begin{frm}\end{frm}
\subsection{SubSection 5}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 9}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 10}
\begin{frm}\end{frm}
\subsection{SubSection 6}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 11}
\begin{frm}\end{frm}
\subsubsection{SubSubSection 12}
\begin{frm}\end{frm}
\section{Outro}
\begin{frm}\end{frm}
\end{document}

View file

@ -0,0 +1,45 @@
% set pdf and title page metadata
\author[\authorshort]{\authorlong}
\title[\titleshort]{\titlelong}
\subtitle{\titlesub}
% set title page metadata
\logo{\includegraphics[height=7.5em]{../../cnam}}
\institute[\instituteshort]{\institutelong}
\date[\typeshort \dateshort]{\typelong\\\datelong}
% pdf
\hypersetup{
pdfinfo={
Creator={XeLaTeX / beamer},
},
}
% set theme
\usetheme{Berkeley}
% set theme color
\usecolortheme{seahorse}
% set background image
\usebackgroundtemplate{\includegraphics[width=\paperwidth]{../../paper}}
% remove navigation symbols
\beamertemplatenavigationsymbolsempty
% set page numbering
\addtobeamertemplate{navigation symbols}{}{
\color{black}\normalsize\textbf\insertframenumber}
% handle multiple columns
\usepackage{multicol}
% set environments
% set frame with automatic title
\newenvironment{frm}{\begin{frame}\frametitle{%
\insertsectionhead\\
\ifx\insertsubsection\empty\else
\insertsubsectionhead
\ifx\insertsubsubsection\empty\else
\ / \insertsubsubsectionhead
\fi\fi
}}{\end{frame}}

View file

@ -0,0 +1,15 @@
\newcommand{\toc}[1]{%
\tableofcontents[sections={#1},currentsection,currentsubsection]}
\newcommand{\plan}{\begin{frame}%
{\titlelong\\\titlesub}%
\begin{multicols}{3}\columnbreak\toc{1}\columnbreak\end{multicols}%
\begin{multicols}{3}%
\toc{2}\columnbreak\toc{3}\columnbreak\toc{4}%
\end{multicols}%
\begin{multicols}{3}\columnbreak\toc{5}\columnbreak\end{multicols}%
\end{frame}}
\AtBeginSection{\plan}
\AtBeginSubsection{\plan}
\AtBeginSubsubsection{\plan}

533
cnam/thesis/schedule.html Normal file
View file

@ -0,0 +1,533 @@
<!doctype html><html><head><style>
body { font-family: "DejaVu Sans"; }
table { border-spacing: 0; }
.what { text-align: right; }
td { border-style: solid; border-width: 1px 0px; }
td:nth-child(14n+2),td:nth-child(14n+3),td:nth-child(14n+4),
td:nth-child(14n+5),td:nth-child(14n+6),td:nth-child(14n+7),
td:nth-child(14n+8) { background-color: #f0f0f0; }
td:nth-child(14n+9),td:nth-child(14n+10),td:nth-child(14n+11),
td:nth-child(14n+12),td:nth-child(14n+13),td:nth-child(14n+14),
td:nth-child(14n+15) { background-color: #e0e0e0; }
td.W { background-color: #f0c000; }
td.X { background-color: #00c000; }
</style></head><body><table><tr>
<th class="" rowspan="2" />
<th class="year" colspan="105">2020</th>
<th class="year" colspan="182">2021</th>
</tr><tr>
<th class="week" colspan="7">39</th>
<th class="week" colspan="7">40</th>
<th class="week" colspan="7">41</th>
<th class="week" colspan="7">42</th>
<th class="week" colspan="7">43</th>
<th class="week" colspan="7">44</th>
<th class="week" colspan="7">45</th>
<th class="week" colspan="7">46</th>
<th class="week" colspan="7">47</th>
<th class="week" colspan="7">48</th>
<th class="week" colspan="7">49</th>
<th class="week" colspan="7">50</th>
<th class="week" colspan="7">51</th>
<th class="week" colspan="7">52</th>
<th class="week" colspan="7">53</th>
<th class="week" colspan="7">01</th>
<th class="week" colspan="7">02</th>
<th class="week" colspan="7">03</th>
<th class="week" colspan="7">04</th>
<th class="week" colspan="7">05</th>
<th class="week" colspan="7">06</th>
<th class="week" colspan="7">07</th>
<th class="week" colspan="7">08</th>
<th class="week" colspan="7">09</th>
<th class="week" colspan="7">10</th>
<th class="week" colspan="7">11</th>
<th class="week" colspan="7">12</th>
<th class="week" colspan="7">13</th>
<th class="week" colspan="7">14</th>
<th class="week" colspan="7">15</th>
<th class="week" colspan="7">16</th>
<th class="week" colspan="7">17</th>
<th class="week" colspan="7">18</th>
<th class="week" colspan="7">19</th>
<th class="week" colspan="7">20</th>
<th class="week" colspan="7">21</th>
<th class="week" colspan="7">22</th>
<th class="week" colspan="7">23</th>
<th class="week" colspan="7">24</th>
<th class="week" colspan="7">25</th>
<th class="week" colspan="7">26</th>
</tr><tr>
<th class="what">Sujet</th>
<!--0921--><td class="W"/><td class="W"/><td class="W"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--0928--><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--1005--><td class="X"/><td class="X"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Validation</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/>
<!--1012--><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/>
<!--1019--><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Désignation</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="W"/>
<!--1026--><td class="W"/><td class="W"/><td class="W"/><td class="W"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Plan</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Recherches</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Programmes</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Mémoire</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--1012--><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--1019--><td class="X"/><td class="X"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="X"/><td class="X"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Relectures</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Approbation</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Édition</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1019--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr><tr>
<th class="what">Présentation</th>
<!--0921--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0928--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1005--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1012--><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--1019--><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/><td class="X"/>
<!--1026--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1102--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1109--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1116--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1123--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1130--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1207--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1214--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1221--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--1228--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0104--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0111--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0118--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0125--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0201--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0208--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0215--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0222--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0301--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0308--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0315--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0322--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0329--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0405--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0412--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0419--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0426--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0503--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0510--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0517--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0524--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0531--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0607--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0614--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0621--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
<!--0628--><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/><td class="⋅"/>
</tr></table></body></html>

111
cnam/thesis/settings.tex Normal file
View file

@ -0,0 +1,111 @@
% define variables ─────────────────────────────────────────────────────────────
\def\todo{TODO}
% author
\def\authorname{BENINCA}
\def\authorshort{M. \authorname}
\def\authorlong{Marc \authorname}
% date
\def\dateshort{2021}
\def\datelong{\ml{Month DD, \dateshort}{JJ Mois \dateshort}}
% institute
\def\instituteshort{CNAM}
\def\institutelong{Conservatoire National des Arts et Métiers}
% manage languages ─────────────────────────────────────────────────────────────
% use package
\usepackage{polyglossia}
% use recommended package
\usepackage{csquotes}
% set main
\setmainlanguage{\mainlanguage}
% set others
\setotherlanguages{\otherlanguages}
% expand function ifstrequal
\newcommand{\ifstreq}[4]{\expandafter\ifstrequal\expandafter{#1}{#2}{#3}{#4}}
% return text, according to variable mainlanguage
% 1: english text
% 2: french text
% FIXME english→\ENGLISH, french→\FRENCH
\newcommand{\ml}[2]{%
\ifstreq{\mainlanguage}{english}{\ifstrempty{#1}{\todo}{#1}}{%
\ifstreq{\mainlanguage}{french}{\ifstrempty{#2}{\todo}{#2}}{%
ERROR%
}}%
}
% return text as english
% 1: text
\newcommand{\en}[1]{\textenglish{#1}}
% return text as french
% 1: text
\newcommand{\fr}[1]{\textfrench{#1}}
% define multilingual variables ────────────────────────────────────────────────
% title
\def\titleshort{\ml{Incremental Live OS}{SE autonomes incrémentaux}}
\ml
{\def\titlelong{Incremental Live Operating Systems}
\def\titlesub{a reversal of conventional approaches}}
{\def\titlelong{Systèmes d’Exploitation autonomes incrémentaux}
\def\titlesub{une inversion des approches conventionnelles}}
% type
\ml
{\def\typeshort{Thesis}}
{\def\typeshort{Mémoire}}
\ml
{\def\typelong{\instituteshort\ Master's \typeshort}}
{\def\typelong{\typeshort\ d’Ingénieur \instituteshort}}
% key words (part a)
\def\kwaen{one, two, three, four}
\def\kwafr{un, deux, trois, quatre}
% key words (part b)
\def\kwben{five, six, seven, eight}
\def\kwbfr{cinq, six, sept, huit}
% return key words (part a)
% 1: language
\newcommand{\kwa}[1]{%
\ifstreq{#1}{\ENGLISH}{\kwaen}{}%
\ifstreq{#1}{\FRENCH}{\kwafr}{}%
}
% return key words (part b)
% 1: language
\newcommand{\kwb}[1]{%
\ifstreq{#1}{\ENGLISH}{\kwben}{}%
\ifstreq{#1}{\FRENCH}{\kwbfr}{}%
}
% final variable kw
\ml
{\def\kw{\kwaen, \kwben}}
{\def\kw{\kwafr, \kwbfr}}
% set links and pdf metadata ───────────────────────────────────────────────────
\usepackage{hyperref}
\hypersetup{
pdfinfo={
Subject={\typelong},
Keywords={\kw},
},
}
% include settings ─────────────────────────────────────────────────────────────
\input{settings}
% begin document ───────────────────────────────────────────────────────────────
\begin{document}

143
cnam/thesis/sujet.tex Normal file
View file

@ -0,0 +1,143 @@
\documentclass[10pt]{article}
\usepackage{fontspec}
\usepackage[a4paper,portrait,
bmargin=10mm,lmargin=15mm,rmargin=15mm,tmargin=10mm]{geometry}
\pagenumbering{gobble}
\setlength{\parindent}{0em}
\setlength{\parskip}{0em}
\setmainfont{DejaVu Sans}
\newcommand{\hr}{\rule{\textwidth}{1pt}}
\newenvironment{itmz}{\begin{itemize}
\setlength{\itemsep}{0em}
}{\end{itemize}}
\begin{document}
CNAM / UAMM91 \hfill Mémoire ingénieur / Sujet \hfill IRSM ↔ CYC9104A
Marc Beninca \hfill \textbf{Systèmes d’exploitation autonomes incrémentaux} \hfill 2020 → 2021
\hr
\section{Problématique : maintenance des systèmes d’exploitation}
En fonction des cas d’utilisation, maintenir des systèmes d’exploitation peut nécessiter de penser :\\
mises à jour, indisponibilité, sauvegardes, tests, instantanés, restaurations, recettes de configuration.
\subsection{Systèmes de fichiers, installés sur partitions, avec accès en écriture}
\subsubsection{Système de fichiers conventionnel : ext2, ext3, ext4, jfs, xfs}
\begin{itmz}
\item{\textbf{avantages} : instantanéité de toutes les modifications apportées aux fichiers du système}
\item{\textbf{inconvénients} : nécessité de régulièrement réaliser et tester des sauvegardes du système}
\end{itmz}
\subsubsection{Système de fichiers géré par des recettes de configuration : ansible, chef, puppet}
\begin{itmz}
\item{\textbf{avantages} : possibilité de remettre rapidement en état certains pans entiers du système}
\item{\textbf{inconvénients} : pas de résolution des écarts de configuration non gérés par les recettes}
\end{itmz}
\subsubsection{Système de fichiers avec gestion d’instantanés : btrfs, zfs}
\begin{itmz}
\item{\textbf{avantages} : permet de sauvegarder et restaurer un état des fichiers du système à un instant}
\item{\textbf{inconvénients} : réduit progressivement l’espace disponible, pas encore utilisé par défaut}
\end{itmz}
\subsection{Images autonomes, sans installation, avec accès en lecture seule}
\subsubsection{Amorçage sans gestion de persistance}
\begin{itmz}
\item{\textbf{avantages} : démarrer sur un système autonome dans un état ayant été figé au préalable}
\item{\textbf{inconvénients} : perdre au redémarrage toutes modifications faites aux fichiers du système}
\end{itmz}
\subsubsection{Amorçage avec gestion de persistance}
\begin{itmz}
\item{\textbf{avantages} : conservation sur une partition marquée des fichiers modifiés depuis le démarrage}
\item{\textbf{inconvénients} : pas de séparation entre la persistance des fichiers systèmes et des données}
\end{itmz}
\hr
\section{Proposition : fonctionnement autonome incrémental}
Mettre en œuvre un système d’exploitation hybride entre un système installé et un système autonome :\\
cumuler les avantages des deux, en images incrémentales ou complètes, sans les divers inconvénients.
\begin{itmz}
\item{\textbf{avantages} : redémarrage = restauration, mise à jour = sauvegarde, séparation système/données}
\item{\textbf{inconvénients} : maintenance exhaustive si effectuée régulièrement et d’une façon manuelle}
\end{itmz}
\subsection{Miroirs de dépôts officiels distribution et éditeurs}
\begin{itmz}
\item{synchronisation locale pour accès rapide, stable et hors-ligne : \textbf{apt-mirror}, \textbf{debmirror}, \textbf{ftpsync}}
\item{vérification d’intégrité des dépôts locaux avant utilisation de leurs paquets logiciels synchronisés}
\end{itmz}
\subsection{Construction d’un système de fichiers autonome (debian gnu/linux)}
\begin{itmz}
\item{prise en compte du type de machine hôte pour le choix des paquets de base : physique, virtuelle}
\item{création d’un système de fichiers de base minimal à partir des dépôts locaux : \textbf{debootstrap}}
\item{intégration des paquets nécessaires à la construction d’autres systèmes autonomes, si besoin}
\item{transformation effective en système d’exploitation autonome : \textbf{live-boot}, \textbf{update-initramfs}}
\item{détermination des autres paquets logiciels à installer et à configurer, en fonction des besoins}
\item{déport des données à rendre persistantes, avec des liens symboliques pointant vers partition(s)}
\end{itmz}
\subsection{Encapsulation dans un fichier image}
\begin{itmz}
\item{utilisation d’un format de fichier amorçable adapté au montage en lecture seule : \textbf{squashfs}}
\item{choix d’un des divers algorithmes de compression disponibles : \textbf{gzip}, \textbf{lzma}, \textbf{lzo}, \textbf{lz4}, \textbf{xz}, \textbf{zstd}}
\item{niveau supplémentaire d’encapsulation avec un format de fichier amorçable hybride : \textbf{iso}}
\end{itmz}
\subsection{Sécurité du fichier image produit}
\begin{itmz}
\item{assurer l’intégrité du fichier final par le calcul d’une somme de contrôle : \textbf{sha256}, \textbf{sha512}}
\item{garantir l’authenticité de l’image grâce à une signature numérique associée au fichier : \textbf{gpg}}
\end{itmz}
\subsection{Amorçage de fichier(s) image(s) sécurisé(s)}
\begin{itmz}
\item{chargeur de démarrage avec gestion de signature numérique : \textbf{grub}, \textbf{bios}, \textbf{uefi}, \textbf{secure boot}}
\item{création d’un menu de démarrage à choix multiple d’images : \textbf{grub.cfg}, \textbf{squash4}, \textbf{iso9660}}
\item{vérification d’authenticité et d’intégrité de fichiers images : \textbf{gcry\_sha256}, \textbf{gcry\_sha512}, \textbf{pgp}}
\item{chargement d’image(s) en mémoire vive d’une machine hôte : complet, partiel avec \textbf{overlayfs}}
\end{itmz}
\subsection{Mise à niveau incrémentale}
\begin{itmz}
\item{fabrication d’une nouvelle image, à partir de la plus récente, pour le prochain redémarrage}
\item{si le redémarrage est différé, mise à jour du système d’exploitation actuellement en mémoire}
\item{si le redémarrage est nécessaire et critique, réduction de sa durée effective : \textbf{kexec-tools}}
\end{itmz}
\hr
\section{Automatisations potentiellement implémentables}
\begin{itmz}
\item{vérification d’intégrité des dépôts, voire le processus de synchronisation, de façon parallélisée}
\item{construction de systèmes de fichiers autonomes complets, à partir de différents profils versionnés}
\item{création de nouveaux fichiers images, par la mise à jour d’images amorçables déjà existantes}
\item{génération à la volée de menus de démarrage, à choix multiples d’images amorçables détectées}
\end{itmz}
\end{document}

View file

@ -0,0 +1,11 @@
\ml
{\def\acronyms{Acronyms}}
{\def\acronyms{Abréviations}}
\printglossary[type=\acronymtype,
title=\acronyms]
\newacronym{os}
{\ml{OS}{SE}}
{\ml{Operating System}{Système d’Exploitation}}
\pagebreak

View file

@ -0,0 +1,20 @@
\ml
{\def\back{Summaries}}
{\def\back{Résumés}}
\chapter*{}
\addcontentsline{toc}{chapter}{\back}
\begin{center}\cnam\\
\vspace{1em}\begin{large}\textbf{
\titlelong\\
\titlesub
}\end{large}\end{center}
\typelong,\\
Bordeaux \dateshort.
\input{summaries}
\thispagestyle{empty}
\pagebreak

View file

@ -0,0 +1,7 @@
\ml
{\def\bib{References}}
{\def\bib{Références}}
\printbibliography[heading=bibintoc,
title=\bib]
\pagebreak

View file

@ -0,0 +1,5 @@
\def\outro{Conclusion}
\chapter*{\outro}
\addcontentsline{toc}{chapter}{\outro}
\pagebreak

View file

@ -0,0 +1,4 @@
\renewcommand{\listfigurename}{Figures}
\listoffigures
\pagebreak

View file

@ -0,0 +1,64 @@
\begin{center}
\cnam
{\bfseries
\begin{large}
{\larger[2] C}ONSERVATOIRE {\larger[2] N}ATIONAL
DES {\larger[2] A}RTS ET {\larger[2] M}ÉTIERS
\ml
{ASSOCIATE REGIONAL CENTER OF NEW-AQUITAINE}
{CENTRE RÉGIONAL ASSOCIÉ DE NOUVELLE-AQUITAINE}
\hrq
\ml{THESIS}{MÉMOIRE}
\ml{defended in order to obtain}{présenté en vue d’obtenir}
\ml{MASTER'S DEGREE from the CNAM}{le DIPLÔME d’INGÉNIEUR CNAM}
\ml{SPECIALIZATION: Computer Science}{SPÉCIALITÉ : Informatique}
\ml
{OPTION: Networks, Systems and Multimedia}
{OPTION : Réseaux, Systèmes et Multimédia}
\vfill
\ml{by}{par}
\vfill
\authorlong
\hrq
\titlelong\\
\titlesub
\ml
{Defended on \datelong}
{Soutenu le \datelong}
\hrq
JURY
\end{large}
\vspace{1em}
\begin{small}
{\renewcommand{\arraystretch}{1.5} \begin{tabular}[t]{rllll}
\ml{PRESIDENT:}{PRÉSIDENT :} & \tt & \first & \last & \textit{\renewcommand{\arraystretch}{1} \begin{tabular}[t]{@{}l@{}}\role\\\org\end{tabular}} \\
\ml{MEMBERS:}{MEMBRES :} & \tt & \first & \last & \textit{\renewcommand{\arraystretch}{1} \begin{tabular}[t]{@{}l@{}}\role\\\org\end{tabular}} \\
& \tt & \first & \last & \textit{\renewcommand{\arraystretch}{1} \begin{tabular}[t]{@{}l@{}}\role\\\org\end{tabular}}
\end{tabular}}
\end{small}
}
\end{center}
\thispagestyle{empty}
\pagebreak

View file

@ -0,0 +1,15 @@
\ml
{\def\gloss{Glossary}}
{\def\gloss{Glossaire}}
\printglossary
[title=\gloss]
\newglossaryentry{exp}{
name={expression},
plural={expressions},
description={\ml
{english description}
{description en français}},
}
\pagebreak

View file

@ -0,0 +1,11 @@
\def\intro{Introduction}
\chapter*{\intro}
\addcontentsline{toc}{chapter}{\intro}
\gls{os}
\Glspl{exp}
Debian\cite{debian-handbook}
\pagebreak

View file

@ -0,0 +1,7 @@
@book{debian-handbook,
author = "Raphaël Hertzog and Roland Mas",
title = "The Debian Administrator's Handbook",
edition = "Buster",
year = "2020",
url = "https://debian-handbook.info",
}

156
cnam/thesis/thesis/main.tex Normal file
View file

@ -0,0 +1,156 @@
% set default size and document class
\documentclass[12pt]{report}
\input{../settings}
\singlespacing
\input{front}
\onehalfspacing
\input{thanks}
\input{acronyms}
\input{glossary}
\input{toc}
\input{introduction}
\ml
{\chapter{\todo}}
{\chapter{Problématique : maintenance des systèmes d’exploitation}}
\begin{itmz}
\item{\ml{}
{mises à jour}}
\item{\ml{}
{indisponibilité}}
\item{\ml{}
{sauvegardes}}
\item{\ml{}
{tests}}
\item{\ml{}
{instantanés}}
\item{\ml{}
{restaurations}}
\item{\ml{}
{recettes de configuration}}
\end{itmz}
\ml
{\section{\todo}}
{\section{Systèmes de fichiers, installés sur partitions, avec accès en écriture}}
\ml
{\subsection{\todo}}
{\subsection{Système de fichiers conventionnel}}
\ml
{\subsection{\todo}}
{\subsection{Système de fichiers géré par des recettes configuration}}
\ml
{\subsection{\todo}}
{\subsection{Système de fichiers avec gestion d’instantanés}}
\ml
{\section{\todo}}
{\section{Images autonomes, sans installation, avec accès en lecture seule}}
\ml
{\subsection{\todo}}
{\subsection{Amorçage sans gestion de persistance}}
\ml
{\subsection{\todo}}
{\subsection{Amorçage avec gestion de persistance}}
\ml
{\chapter{\todo}}
{\chapter{Proposition : fonctionnement autonome incrémental}}
\ml{Pros}{Avantages}:
\begin{itmz}
\item{\ml{}
{redémarrage = restauration}}
\item{\ml{}
{Mise à jour = sauvegarde}}
\item{\ml{}
{séparation système et données}}
\end{itmz}
\ml{Cons}{Inconvénients}:
\begin{itmz}
\item{\ml{}
{maintenance manuelle exhaustive}}
\end{itmz}
\ml
{\section{\todo}}
{\section{Mise en œuvre}}
\ml
{\subsection{\todo}}
{\subsection{Miroirs de dépôts officiels distribution et éditeurs tiers}}
\ml
{\subsection{\todo}}
{\subsection{Construction d’un système de fichiers autonome (Debian GNU/Linux)}}
\ml
{\subsection{\todo}}
{\subsection{Encapsulation dans un fichier image}}
\ml
{\subsection{\todo}}
{\subsection{Sécurité du fichier image produit}}
\ml
{\subsection{\todo}}
{\subsection{Amorçage de fichier(s) image(s) sécurisé(s)}}
\ml
{\subsection{\todo}}
{\subsection{Mise à niveau incrémentale}}
\ml
{\section{\todo}}
{\section{Automatisations potentiellement implémentables}}
\ml
{\subsection{\todo}}
{\subsection{Vérification d’intégrité de dépôts}}
\ml
{\subsection{\todo}}
{\subsection{Construction de systèmes de fichiers autonomes complets}}
\ml
{\subsection{\todo}}
{\subsection{Création de nouveaux fichiers par mise à jour d’images}}
\ml
{\subsection{\todo}}
{\subsection{Génération à la volée de menus de démarrage}}
\ml
{\chapter{Results}}
{\chapter{Résultats}}
\input{conclusion}
\appendix
\ml
{\chapter{Appendix}}
{\chapter{Annexe}}
\pagebreak
\input{bibliography}
\input{figures}
\input{tables}
\singlespacing
\input{back}
\end{document}

View file

@ -0,0 +1,76 @@
% variables
\def\first{\ml{First}{Prénom}}
\def\last{\ml{LAST}{NOM}}
\def\org{\ml{Organization}{Organisme}}
\def\role{\ml{Role}{Fonction}}
\def\tt{\ml{Title}{Civilité}}
% acronyms, glossary
\usepackage[acronym,toc]{glossaries}
\makeglossaries
% tune table of contents
\usepackage{tocloft}
% links
\hypersetup{
pdfinfo={
Title={\titlelong\ - \titlesub},
Author={\authorlong},
Creator={XeLaTeX / report},
},
colorlinks,
citecolor=blue,
filecolor=blue,
linkcolor=blue,
urlcolor=blue,
}
% adjust chapter titles
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}{50\p@}{0pt}{}{}
\patchcmd{\@makeschapterhead}{50\p@}{0pt}{}{}
\makeatother
% set paper geometry
\usepackage{geometry}
\geometry{a4paper,portrait,top=20mm,bottom=20mm,left=20mm,right=20mm}
% images
\usepackage{graphicx}
% set fonts
\usepackage{fontspec}
% set relative sizes
\usepackage{relsize}
\setlength{\parindent}{0em}
\setlength{\parskip}{1em}
\setmainfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
% set spacings
\usepackage{setspace}
% lists of figures, tables
\usepackage{tocbibind}
% references after polyglossia
\usepackage[sorting=anyt]{biblatex}
\bibliography{\name}
% commands
\newcommand{\cnam}{\includegraphics[height=1in]{../../cnam}}
\newcommand{\hr}{\rule{\textwidth}{1pt}}
\newcommand{\hrq}{\rule{.25\textwidth}{1pt}}
% environments
\newenvironment{itmz}{\begin{itemize}
%\setlength{\itemsep}{0em}
%\setlength{\parsep}{0em}
%\setlength{\parskip}{0em}
}{\end{itemize}}

View file

@ -0,0 +1,45 @@
\newcommand{\summary}[1]{
\begin{#1}
\begin{center}
\hr
\textbf{%
\ifstreq{#1}{\ENGLISH}{SUMMARY}{%
\ifstreq{#1}{\FRENCH}{RÉSUMÉ}{%
}}%
}
\end{center}
\ifstreq{#1}{\ENGLISH}{%
Line 1.\\
Line 2.\\
Line 3.}{%
\ifstreq{#1}{\FRENCH}{%
Ligne 1.\\
Ligne 2.\\
Ligne 3.}{%
}}
\ifstreq{#1}{\ENGLISH}{%
Line 4.\\
Line 5.\\
Line 6…}{%
\ifstreq{#1}{\FRENCH}{%
Ligne 4.\\
Ligne 5.\\
Ligne 6…}{%
}}
\textbf{%
\ifstreq{#1}{\ENGLISH}{Key words:}{%
\ifstreq{#1}{\FRENCH}{Mots clés :}{%
}} \kwa{#1},\\\kwb{#1}.%
}
\end{#1}
}
\summaries

View file

@ -0,0 +1,7 @@
\ml
{\def\tables{Tables}}
{\def\tables{Tableaux}}
\renewcommand{\listtablename}{\tables}
\listoftables
\pagebreak

View file

@ -0,0 +1,7 @@
\ml
{\def\thanks{Acknowledgements}}
{\def\thanks{Remerciements}}
\chapter*{\thanks}
\addcontentsline{toc}{chapter}{\thanks}
\pagebreak

View file

@ -0,0 +1,10 @@
\ml
{\def\toc{Contents}}
{\def\toc{Plan}}
\renewcommand{\contentsname}{\toc}
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}
\tableofcontents
\pagebreak

8
cnam/thesis/work.sh Executable file
View file

@ -0,0 +1,8 @@
#! /usr/bin/bash
FILE="$(realpath "${BASH_SOURCE[0]}")"
DIRECTORY="$(dirname "${FILE}")"
cd "${DIRECTORY}"
gedit --new-window thesis/* &
gedit --new-window index.rst build.py settings.tex presentation/* &
evince mémoire.pdf présentation.pdf &