Initial commit

This commit is contained in:
2025-11-27 21:27:47 +01:00
commit a7b4f3d603
54 changed files with 16169 additions and 0 deletions

259
.gitignore vendored Normal file
View File

@@ -0,0 +1,259 @@
ltximg/
*.autosave
slprj/
matlab/slprj/
*.slxc
# ============================================================
# ============================================================
# LATEX
# ============================================================
# ============================================================
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# makeidx
*.idx
*.ilg
*.ind
*.ist
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# easy-todo
*.lod
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 80 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 213 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 128 KiB

1
inkscape/figs Symbolic link
View File

@@ -0,0 +1 @@
../paper/figs

211
inkscape/tikz.org Normal file
View File

@@ -0,0 +1,211 @@
#+TITLE: Closed-Loop Shaping using Complementary Filters
:DRAWER:
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results file raw replace
#+PROPERTY: header-args:latex+ :buffer no
#+PROPERTY: header-args:latex+ :tangle no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports results
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
:END:
#+begin_src latex :file detail_control_cf_arch.pdf
\tikzset{block/.default={0.8cm}{0.6cm}}
\tikzset{addb/.append style={scale=0.7}}
\tikzset{node distance=0.6}
\def\cdist{0.7}
\begin{tikzpicture}
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
\node[block, right=0.3 of addfb] (K){$k$};
\node[block, right=2.2 of K] (G){$G^\prime$};
\node[addb={+}{}{}{}{}, right=0.3 of G] (adddy){};
\coordinate[] (KG) at ($(K.east)+(0.3, 0)$);
\node[block, below=of KG] (Gm){$G$};
\node[block, below=0.4 of Gm] (Hh){$H_H$};
\node[addb={+}{}{}{}{}, below=0.4 of Hh] (addcf){};
\node[block, right=0.3 of addcf] (Hl) {$H_L$};
\node[addb={+}{}{}{}{}, right=2.1 of Hl] (addn) {};
\draw[->] (addfb.east) -- (K.west) node[above left]{};
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
\draw[->] (KG) node[branch]{} -- (Gm.north);
\draw[->] (Gm.south) -- (Hh.north);
\draw[->] (Hh.south) -- (addcf.north) node[above left]{};
\draw[->] (Hl.west) -- (addcf.east);
\draw[->] (addcf.west) -| (addfb.south) node[below right]{};
\draw[->] (G.east) -- (adddy.west);
\draw[<-] (addn.east) -- ++(0.5, 0) coordinate[](endpos) node[above left]{$n$};
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
\draw[->] (adddy-|addn) node[branch]{} -- (addn.north);
\draw[<-] (addfb.west) -- ++(-0.5, 0) node[above right](r){$r$};
\draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$};
\draw[<-] (adddy.north) -- ++(0, 0.5) node[below right]{$d_y$};
\begin{scope}[on background layer]
\node[fit={(Hl.south east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
\end{scope}
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/detail_control_cf_arch.png]]
#+begin_src latex :file detail_control_cf_arch_eq.pdf
\tikzset{block/.default={0.8cm}{0.6cm}}
\tikzset{addb/.append style={scale=0.7}}
\tikzset{node distance=0.6}
\def\cdist{0.7}
\begin{tikzpicture}
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
\node[addb={+}{}{}{}{-}, right=0.3 of addfb] (addK){};
\node[block, right=0.6 of addK] (K){$k$};
\node[block, right=1.5 of K] (G){$G^\prime$};
\node[addb={+}{}{}{}{}, right=0.3 of G] (adddy){};
\node[block, below right=0.5 and -0.15 of K] (Gm){$G$};
\node[block, below left =0.5 and -0.15 of K] (Hh){$H_H$};
\node[block, below=1.5 of K] (Hl) {$H_L$};
\node[addb={+}{}{}{}{}, right=3.0 of Hl] (addn) {};
\draw[->] (addfb.east) -- (addK.west);
\draw[->] (addK.east) -- (K.west);
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
\draw[->] (G.east) -- (adddy.west);
\draw[->] ($(G.west)+(-0.5, 0)$) node[branch](cffb){} |- (Gm.east);
\draw[->] (Gm.west) -- (Hh.east);
\draw[->] (Hh.west) -| (addK.south);
\draw[<-] (addn.east) -- ++(0.5, 0) coordinate[](endpos) node[above left]{$n$};
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
\draw[->] (adddy-|addn) node[branch]{} -- (addn.north);
\draw[<-] (addfb.west) -- ++(-0.5, 0) node[above right](r){$r$};
\draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$};
\draw[<-] (adddy.north) -- ++(0, 0.5) node[below right]{$d_y$};
\draw[->] (Hl.west) -| (addfb.south) node[below right]{};
\begin{scope}[on background layer]
\node[fit={(Hl.south -| cffb) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
\end{scope}
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/detail_control_cf_arch_eq.png]]
#+begin_src latex :file detail_control_cf_arch_class.pdf
\tikzset{block/.default={0.8cm}{0.6cm}}
\tikzset{addb/.append style={scale=0.7}}
\tikzset{node distance=0.6}
\def\cdist{0.7}
\begin{tikzpicture}
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
\node[block, right=of addfb] (K){$K$};
\node[block, right=of K] (G){$G^\prime$};
\node[addb={+}{}{}{}{}, right=of G] (adddy){};
\node[addb={+}{}{}{}{}, below right=0.7 and 0.3 of adddy] (addn) {};
\node[block] (Hl) at (K|-addn) {$H_L$};
\draw[->] (addfb.east) -- (K.west) node[above left]{};
\draw[->] (K.east) -- (G.west) node[above left]{$u$};
\draw[->] (G.east) -- (adddy.west);
\draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$};
\draw[->] (G-|addn)node[branch]{} -- (addn.north);
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
\draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right](r){$r$};
\draw[->] (addn.west) -- (Hl.east);
\draw[->] (Hl.west) -| (addfb.south);
\draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$};
\begin{scope}[on background layer]
\node[fit={(Hl.south east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
\end{scope}
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/detail_control_cf_arch_class.png]]
#+begin_src latex :file detail_control_cf_input_uncertainty.pdf
\tikzset{block/.default={0.8cm}{0.6cm}}
\tikzset{addb/.append style={scale=0.7}}
\tikzset{node distance=0.6}
\def\cdist{0.7}
\begin{tikzpicture}
% Blocs
\node[block] (G) {$G$};
\node[addb, left= of G] (addi) {};
\node[block, above left=0.3 and 0.3 of addi] (deltai) {$\Delta_I$};
\node[block, left= of deltai] (wi) {$w_I$};
\node[branch] (branch) at ($(wi.west|-addi)+(-0.4, 0)$) {};
% Connections and labels
\draw[->] (branch.center) |- (wi.west);
\draw[->] ($(branch)+(-0.6, 0)$) -- (addi.west);
\draw[->] (wi.east) -- (deltai.west);
\draw[->] (deltai.east) -| (addi.north);
\draw[->] (addi.east) -- (G.west);
\draw[->] (G.east) -- ++(0.6, 0);
\begin{scope}[on background layer]
\node[fit={(branch|-wi.north) (G.south east)}, inner sep=6pt, draw, dashed, fill=black!20!white] (Gp) {};
\node[below left] at (Gp.north east) {$G\prime$};
\end{scope}
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/detail_control_cf_input_uncertainty.png]]
#+begin_src latex :file detail_control_cf_arch_tunable_params.pdf
\tikzset{block/.default={0.8cm}{0.6cm}}
\tikzset{addb/.append style={scale=0.7}}
\tikzset{node distance=0.6}
\def\cdist{0.7}
\begin{tikzpicture}
\node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
\node[block, right=of addfb] (Hh){$H_H^{-1}$};
\node[block, right=of Hh] (Ginv){$G^{-1}$};
\node[block, right=of Ginv] (G){$G^\prime$};
\node[addb={+}{}{}{}{}, right=of G] (adddy){};
\node[addb={+}{}{}{}{}, below right=1.2 and 0.3 of adddy] (addn) {};
\node[block] (Hl) at (Hh|-addn) {$H_L$};
\node[color=colorred] (wb) at ($0.5*(Hh.south) + 0.5*(Hl.north)$) {$\bullet$};
\draw[-, color=colorred] ($(wb) + (-0.6, 0)$)node[left]{$\omega_0$} -- (wb.center);
\draw[->, color=colorred] (wb.center) -- (Hh.south);
\draw[->, color=colorred] (wb.center) -- (Hl.north);
\draw[->] (addfb.east) -- (Hh.west);
\draw[->] (Hh.east) -- (Ginv.west);
\draw[->] (Ginv.east) -- (G.west) node[above left]{$u$};
\draw[->] (G.east) -- (adddy.west);
\draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$};
\draw[->] (G-|addn)node[branch]{} -- (addn.north);
\draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$};
\draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right](r){$r$};
\draw[->] (addn.west) -- (Hl.east);
\draw[->] (Hl.west) -| (addfb.south);
\draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$};
\begin{scope}[on background layer]
\node[fit={(Hl.south -| Ginv.east) (r.north west)}, inner sep=4pt, draw, fill=black!20!white, dashed, label={RT controller}] (Kfb) {};
\end{scope}
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/detail_control_cf_arch_tunable_params.png]]

View File

@@ -0,0 +1,238 @@
%% Clear Workspace and Close figures
clear; close all; clc;
%% Intialize Laplace variable
s = zpk('s');
%% Path for functions, data and scripts
addpath('./src/'); % Path for functions
%% Colors for the figures
colors = colororder;
%% Initialize Frequency Vector
freqs = logspace(-1, 3, 1000);
%% Analytical Complementary Filters - Effect of alpha
freqs_study = logspace(-2, 2, 1000);
alphas = [0.1, 1, 10];
w0 = 2*pi*1;
s = tf('s');
figure;
hold on;
for i = 1:length(alphas)
alpha = alphas(i);
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\alpha = %g$', alphas(i)));
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Relative Frequency $\frac{\omega}{\omega_0}$'); ylabel('Magnitude');
hold off;
ylim([1e-3, 20]);
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
%% Analytical Complementary Filters - Effect of w0
freqs_study = logspace(-1, 3, 1000);
alpha = [1];
w0s = [2*pi*1, 2*pi*10, 2*pi*100];
s = tf('s');
figure;
hold on;
for i = 1:length(w0s)
w0 =w0s(i);
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\omega_0 = %g$ Hz', w0/2/pi));
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs_study(1), freqs_study(end)]); ylim([1e-3, 20]);
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
%% Test model
freqs = logspace(0, 3, 1000); % Frequency Vector [Hz]
m = 20; % mass [kg]
k = 1e6; % stiffness [N/m]
c = 1e2; % damping [N/(m/s)]
% Plant dynamics
G = 1/(m*s^2 + c*s + k);
% Uncertainty weight
wI = generateWF('n', 2, 'w0', 2*pi*50, 'G0', 0.1, 'Ginf', 10, 'Gc', 1);
%% Bode plot of the plant with dynamical uncertainty
figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-', 'DisplayName', 'G');
plotMagUncertainty(wI, freqs, 'G', G, 'DisplayName', '$\Pi_i$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-8, 7e-5]);
hold off;
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% Phase
ax2 = nexttile;
hold on;
plotPhaseUncertainty(wI, freqs, 'G', G);
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))), 'k-');
set(gca,'xscale','log');
yticks(-360:90:90);
ylim([-270 45]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
%% Analytical Complementary Filters
w0 = 2*pi*20;
alpha = 1;
Hh = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
%% Specifications
figure;
hold on;
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:));
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:));
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:));
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'color', colors(1,:));
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'color', colors(2,:));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
xticks([0.1, 1, 10, 100, 1000]);
%% Obtained controller
omega = 2*pi*1000;
K = 1/(Hh*G) * 1/((1+s/omega+(s/omega)^2));
K = zpk(minreal(K));
%% Bode plot of the controller K
figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
plot(freqs, abs(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
ylim([8e3, 1e8])
% Phase
ax2 = nexttile;
plot(freqs, 180/pi*angle(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
set(gca,'xscale','log');
yticks(-180:45:180);
ylim([-180 45]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
num_delta_points = 50;
theta = linspace(0, 2*pi, num_delta_points);
delta_points = exp(1j * theta);
% Get frequency responses for all components
G_resp = squeeze(freqresp(G, freqs, 'Hz'));
K_resp = squeeze(freqresp(K, freqs, 'Hz'));
Hl_resp = squeeze(freqresp(Hl, freqs, 'Hz'));
wI_resp = squeeze(freqresp(wI, freqs, 'Hz'));
% Calculate nominal responses
nom_L = G_resp .* K_resp .* Hl_resp;
nom_S = 1 ./ (1 + nom_L);
nom_T = nom_L ./ (1 + nom_L);
% Store all the points in the complex plane that L can take
loop_region_points = zeros(length(freqs), num_delta_points);
% Initialize arrays to store magnitude bounds
S_mag_min = ones(length(freqs), 1) * inf;
S_mag_max = zeros(length(freqs), 1);
T_mag_min = ones(length(freqs), 1) * inf;
T_mag_max = zeros(length(freqs), 1);
% Calculate magnitude bounds for all delta values
for i = 1:num_delta_points
% Perturbed loop gain
loop_perturbed = nom_L .* (1 + wI_resp .* delta_points(i));
loop_region_points(:,i) = loop_perturbed;
% Perturbed sensitivity function
S_perturbed = 1 ./ (1 + loop_perturbed);
S_mag = abs(S_perturbed);
% Update S magnitude bounds
S_mag_min = min(S_mag_min, S_mag);
S_mag_max = max(S_mag_max, S_mag);
% Perturbed complementary sensitivity function
T_perturbed = loop_perturbed ./ (1 + loop_perturbed);
T_mag = abs(T_perturbed);
% Update T magnitude bounds
T_mag_min = min(T_mag_min, T_mag);
T_mag_max = max(T_mag_max, T_mag);
end
% At frequencies where |wI| > 1, T min is zero
T_mag_min(abs(wI_resp)>1) = 1e-10;
%% Nyquist plot to check Robust Stability
figure;
hold on;
plot(real(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), imag(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), 'k', 'DisplayName', '$L(j\omega)$ - Nominal');
plot(alphaShape(real(loop_region_points(:)), imag(loop_region_points(:)), 0.1), 'FaceColor', [0, 0, 0], 'EdgeColor', 'none', 'FaceAlpha', 0.3, 'DisplayName', '$L(j\omega)$ - $\forall G \in \Pi_i$');
plot(-1, 0, 'k+', 'MarkerSize', 5, 'HandleVisibility', 'off');
hold off;
grid on;
axis equal
xlim([-1.4, 0.2]); ylim([-1.2, 0.4]);
xticks(-1.4:0.2:0.2); yticks(-1.2:0.2:0.4);
xlabel('Real Part'); ylabel('Imaginary Part');
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
leg.ItemTokenSize(1) = 18;
%% Robust Performance
figure;
hold on;
plot(freqs, abs(nom_S), 'color', colors(2,:), 'DisplayName', '$|S|$ - Nom.');
plot(freqs, abs(nom_T), 'color', colors(1,:), 'DisplayName', '$|T|$ - Nom.');
patch([freqs, fliplr(freqs)], [S_mag_max', fliplr(S_mag_min')], colors(2,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
patch([freqs, fliplr(freqs)], [T_mag_max', fliplr(T_mag_min')], colors(1,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:), 'DisplayName', 'Specs.');
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:), 'DisplayName', 'Specs.');
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:), 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
hold off;
xlabel('Frequency [Hz]'); ylabel('Magnitude');
xlim([freqs(1), freqs(end)]);
ylim([1e-4, 5]);
xticks([0.1, 1, 10, 100, 1000]);
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 3);
leg.ItemTokenSize(1) = 18;

1
matlab/figs Symbolic link
View File

@@ -0,0 +1 @@
../paper/figs

529
matlab/index.org Normal file
View File

@@ -0,0 +1,529 @@
#+TITLE: Closed-Loop Shaping using Complementary Filters
:DRAWER:
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments no
#+PROPERTY: header-args:matlab+ :exports none
#+PROPERTY: header-args:matlab+ :results none
#+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:matlab+ :tangle dehaeze26_control.m
:END:
* Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
#+begin_src matlab :noweb yes :results silent
<<m-init-path-tangle>>
#+end_src
#+begin_src matlab :noweb yes :results silent
<<m-init-other>>
%% Initialize Frequency Vector
freqs = logspace(-1, 3, 1000);
#+end_src
* Complementary filter design
#+begin_src matlab :exports none :results none
%% Analytical Complementary Filters - Effect of alpha
freqs_study = logspace(-2, 2, 1000);
alphas = [0.1, 1, 10];
w0 = 2*pi*1;
s = tf('s');
figure;
hold on;
for i = 1:length(alphas)
alpha = alphas(i);
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\alpha = %g$', alphas(i)));
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Relative Frequency $\frac{\omega}{\omega_0}$'); ylabel('Magnitude');
hold off;
ylim([1e-3, 20]);
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_analytical_effect_alpha.pdf', 'width', 'half', 'height', 'normal');
#+end_src
#+begin_src matlab :exports none :results none
%% Analytical Complementary Filters - Effect of w0
freqs_study = logspace(-1, 3, 1000);
alpha = [1];
w0s = [2*pi*1, 2*pi*10, 2*pi*100];
s = tf('s');
figure;
hold on;
for i = 1:length(w0s)
w0 =w0s(i);
Hh2 = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl2 = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
plot(freqs_study, abs(squeeze(freqresp(Hh2, freqs_study, 'Hz'))), 'color', colors(i,:), 'DisplayName', sprintf('$\\omega_0 = %g$ Hz', w0/2/pi));
plot(freqs_study, abs(squeeze(freqresp(Hl2, freqs_study, 'Hz'))), 'color', colors(i,:), 'HandleVisibility', 'off');
end
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs_study(1), freqs_study(end)]); ylim([1e-3, 20]);
leg = legend('location', 'southeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_analytical_effect_w0.pdf', 'width', 'half', 'height', 'normal');
#+end_src
* Numerical Example
*** Plant
#+begin_src matlab
%% Test model
freqs = logspace(0, 3, 1000); % Frequency Vector [Hz]
m = 20; % mass [kg]
k = 1e6; % stiffness [N/m]
c = 1e2; % damping [N/(m/s)]
% Plant dynamics
G = 1/(m*s^2 + c*s + k);
% Uncertainty weight
wI = generateWF('n', 2, 'w0', 2*pi*50, 'G0', 0.1, 'Ginf', 10, 'Gc', 1);
#+end_src
#+begin_src matlab :exports none :results none
%% Bode plot of the plant with dynamical uncertainty
figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2,1]);
hold on;
plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))), 'k-', 'DisplayName', 'G');
plotMagUncertainty(wI, freqs, 'G', G, 'DisplayName', '$\Pi_i$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-8, 7e-5]);
hold off;
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% Phase
ax2 = nexttile;
hold on;
plotPhaseUncertainty(wI, freqs, 'G', G);
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))), 'k-');
set(gca,'xscale','log');
yticks(-360:90:90);
ylim([-270 45]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_bode_plot_mech_sys.pdf', 'width', 'half', 'height', 450);
#+end_src
*** Requirements and choice of complementary filters
#+begin_src matlab
%% Analytical Complementary Filters
w0 = 2*pi*20;
alpha = 1;
Hh = (s/w0)^2*((s/w0)+1+alpha)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
Hl = ((1+alpha)*(s/w0)+1)/(((s/w0)+1)*((s/w0)^2 + alpha*(s/w0) + 1));
#+end_src
#+begin_src matlab :exports none :results none
%% Specifications
figure;
hold on;
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:));
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:));
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:));
plot(freqs, abs(squeeze(freqresp(Hl, freqs, 'Hz'))), '-', 'color', colors(1,:));
plot(freqs, abs(squeeze(freqresp(Hh, freqs, 'Hz'))), '-', 'color', colors(2,:));
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([1e-3, 10]);
xticks([0.1, 1, 10, 100, 1000]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
% exportFig('figs/detail_control_cf_specs_S_T.pdf', 'width', 'half', 'height', 'normal');
#+end_src
*** Controller analysis
#+begin_src matlab
%% Obtained controller
omega = 2*pi*1000;
K = 1/(Hh*G) * 1/((1+s/omega+(s/omega)^2));
K = zpk(minreal(K));
#+end_src
#+begin_src matlab :exports none :results none
%% Bode plot of the controller K
figure;
tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
plot(freqs, abs(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude'); set(gca, 'XTickLabel',[]);
ylim([8e3, 1e8])
% Phase
ax2 = nexttile;
plot(freqs, 180/pi*angle(squeeze(freqresp(K*Hl, freqs, 'Hz'))), 'k-');
set(gca,'xscale','log');
yticks(-180:45:180);
ylim([-180 45]);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_bode_Kfb.pdf', 'width', 'half', 'height', 500);
#+end_src
*** Robustness and Performance analysis
#+begin_src matlab
num_delta_points = 50;
theta = linspace(0, 2*pi, num_delta_points);
delta_points = exp(1j * theta);
% Get frequency responses for all components
G_resp = squeeze(freqresp(G, freqs, 'Hz'));
K_resp = squeeze(freqresp(K, freqs, 'Hz'));
Hl_resp = squeeze(freqresp(Hl, freqs, 'Hz'));
wI_resp = squeeze(freqresp(wI, freqs, 'Hz'));
% Calculate nominal responses
nom_L = G_resp .* K_resp .* Hl_resp;
nom_S = 1 ./ (1 + nom_L);
nom_T = nom_L ./ (1 + nom_L);
% Store all the points in the complex plane that L can take
loop_region_points = zeros(length(freqs), num_delta_points);
% Initialize arrays to store magnitude bounds
S_mag_min = ones(length(freqs), 1) * inf;
S_mag_max = zeros(length(freqs), 1);
T_mag_min = ones(length(freqs), 1) * inf;
T_mag_max = zeros(length(freqs), 1);
% Calculate magnitude bounds for all delta values
for i = 1:num_delta_points
% Perturbed loop gain
loop_perturbed = nom_L .* (1 + wI_resp .* delta_points(i));
loop_region_points(:,i) = loop_perturbed;
% Perturbed sensitivity function
S_perturbed = 1 ./ (1 + loop_perturbed);
S_mag = abs(S_perturbed);
% Update S magnitude bounds
S_mag_min = min(S_mag_min, S_mag);
S_mag_max = max(S_mag_max, S_mag);
% Perturbed complementary sensitivity function
T_perturbed = loop_perturbed ./ (1 + loop_perturbed);
T_mag = abs(T_perturbed);
% Update T magnitude bounds
T_mag_min = min(T_mag_min, T_mag);
T_mag_max = max(T_mag_max, T_mag);
end
% At frequencies where |wI| > 1, T min is zero
T_mag_min(abs(wI_resp)>1) = 1e-10;
#+end_src
#+begin_src matlab
%% Nyquist plot to check Robust Stability
figure;
hold on;
plot(real(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), imag(squeeze(freqresp(G*K*Hl, freqs, 'Hz'))), 'k', 'DisplayName', '$L(j\omega)$ - Nominal');
plot(alphaShape(real(loop_region_points(:)), imag(loop_region_points(:)), 0.1), 'FaceColor', [0, 0, 0], 'EdgeColor', 'none', 'FaceAlpha', 0.3, 'DisplayName', '$L(j\omega)$ - $\forall G \in \Pi_i$');
plot(-1, 0, 'k+', 'MarkerSize', 5, 'HandleVisibility', 'off');
hold off;
grid on;
axis equal
xlim([-1.4, 0.2]); ylim([-1.2, 0.4]);
xticks(-1.4:0.2:0.2); yticks(-1.2:0.2:0.4);
xlabel('Real Part'); ylabel('Imaginary Part');
leg = legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 1);
leg.ItemTokenSize(1) = 18;
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_nyquist_robustness', 'width', 'half', 'height', 'normal');
#+end_src
#+begin_src matlab :exports none :results none
%% Robust Performance
figure;
hold on;
plot(freqs, abs(nom_S), 'color', colors(2,:), 'DisplayName', '$|S|$ - Nom.');
plot(freqs, abs(nom_T), 'color', colors(1,:), 'DisplayName', '$|T|$ - Nom.');
patch([freqs, fliplr(freqs)], [S_mag_max', fliplr(S_mag_min')], colors(2,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
patch([freqs, fliplr(freqs)], [T_mag_max', fliplr(T_mag_min')], colors(1,:), 'FaceAlpha', 0.2, 'EdgeColor', 'none', 'HandleVisibility', 'off');
plot([1, 100], [0.01, 100], ':', 'color', colors(2,:), 'DisplayName', 'Specs.');
plot([300, 1000], [0.01, 0.01], ':', 'color', colors(1,:), 'DisplayName', 'Specs.');
plot(freqs, 1./abs(squeeze(freqresp(wI, freqs, 'Hz'))), ':', 'color', colors(1,:), 'HandleVisibility', 'off');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
hold off;
xlabel('Frequency [Hz]'); ylabel('Magnitude');
xlim([freqs(1), freqs(end)]);
ylim([1e-4, 5]);
xticks([0.1, 1, 10, 100, 1000]);
leg = legend('location', 'southwest', 'FontSize', 8, 'NumColumns', 3);
leg.ItemTokenSize(1) = 18;
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/detail_control_cf_robust_perf.pdf', 'width', 'half', 'height', 'normal');
#+end_src
* Matlab Functions :noexport:
** =generateWF=: Generate Weighting Functions
#+begin_src matlab :tangle src/generateWF.m :comments none :mkdirp yes :eval no
function [W] = generateWF(args)
% generateWF -
%
% Syntax: [W] = generateWeight(args)
%
% Inputs:
% - n - Weight Order (integer)
% - G0 - Low frequency Gain
% - G1 - High frequency Gain
% - Gc - Gain of the weight at frequency w0
% - w0 - Frequency at which |W(j w0)| = Gc [rad/s]
%
% Outputs:
% - W - Generated Weighting Function
%% Argument validation
arguments
args.n (1,1) double {mustBeInteger, mustBePositive} = 1
args.G0 (1,1) double {mustBeNumeric, mustBePositive} = 0.1
args.Ginf (1,1) double {mustBeNumeric, mustBePositive} = 10
args.Gc (1,1) double {mustBeNumeric, mustBePositive} = 1
args.w0 (1,1) double {mustBeNumeric, mustBePositive} = 1
end
% Verification of correct relation between G0, Gc and Ginf
mustBeBetween(args.G0, args.Gc, args.Ginf);
%% Initialize the Laplace variable
s = zpk('s');
%% Create the weighting function according to formula
W = (((1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
(args.G0/args.Gc)^(1/args.n))/...
((1/args.Ginf)^(1/args.n)*(1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
(1/args.Gc)^(1/args.n)))^args.n;
%% Custom validation function
function mustBeBetween(a,b,c)
if ~((a > b && b > c) || (c > b && b > a))
eid = 'createWeight:inputError';
msg = 'Gc should be between G0 and Ginf.';
throwAsCaller(MException(eid,msg))
end
#+end_src
** =generateCF=: Generate Complementary Filters
#+begin_src matlab :tangle src/generateCF.m :comments none :mkdirp yes :eval no
function [H1, H2] = generateCF(W1, W2, args)
% generateCF -
%
% Syntax: [H1, H2] = generateCF(W1, W2, args)
%
% Inputs:
% - W1 - Weighting Function for H1
% - W2 - Weighting Function for H2
% - args:
% - method - H-Infinity solver ('lmi' or 'ric')
% - display - Display synthesis results ('on' or 'off')
%
% Outputs:
% - H1 - Generated H1 Filter
% - H2 - Generated H2 Filter
%% Argument validation
arguments
W1
W2
args.method char {mustBeMember(args.method,{'lmi', 'ric'})} = 'ric'
args.display char {mustBeMember(args.display,{'on', 'off'})} = 'on'
end
%% The generalized plant is defined
P = [W1 -W1;
0 W2;
1 0];
%% The standard H-infinity synthesis is performed
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', args.method, 'DISPLAY', args.display);
%% H1 is defined as the complementary of H2
H1 = 1 - H2;
#+end_src
** =plotMagUncertainty=
#+begin_src matlab :tangle src/plotMagUncertainty.m :comments none :mkdirp yes :eval no
function [p] = plotMagUncertainty(W, freqs, args)
% plotMagUncertainty -
%
% Syntax: [p] = plotMagUncertainty(W, freqs, args)
%
% Inputs:
% - W - Multiplicative Uncertainty Weight
% - freqs - Frequency Vector [Hz]
% - args - Optional Arguments:
% - G
% - color_i
% - opacity
%
% Outputs:
% - p - Plot Handle
arguments
W
freqs double {mustBeNumeric, mustBeNonnegative}
args.G = tf(1)
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
args.opacity (1,1) double {mustBeNumeric, mustBeNonnegative} = 0.3
args.DisplayName char = ''
end
% Get defaults colors
colors = get(groot, 'defaultAxesColorOrder');
p = patch([freqs flip(freqs)], ...
[abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(W, freqs, 'Hz')))); ...
flip(abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*max(1 - abs(squeeze(freqresp(W, freqs, 'Hz'))), 1e-6))], 'w', ...
'DisplayName', args.DisplayName);
if args.color_i == 0
p.FaceColor = [0; 0; 0];
else
p.FaceColor = colors(args.color_i, :);
end
p.EdgeColor = 'none';
p.FaceAlpha = args.opacity;
end
#+end_src
** =plotPhaseUncertainty=
#+begin_src matlab :tangle src/plotPhaseUncertainty.m :comments none :mkdirp yes :eval no
function [p] = plotPhaseUncertainty(W, freqs, args)
% plotPhaseUncertainty -
%
% Syntax: [p] = plotPhaseUncertainty(W, freqs, args)
%
% Inputs:
% - W - Multiplicative Uncertainty Weight
% - freqs - Frequency Vector [Hz]
% - args - Optional Arguments:
% - G
% - color_i
% - opacity
%
% Outputs:
% - p - Plot Handle
arguments
W
freqs double {mustBeNumeric, mustBeNonnegative}
args.G = tf(1)
args.unwrap logical {mustBeNumericOrLogical} = false
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
args.DisplayName char = ''
end
% Get defaults colors
colors = get(groot, 'defaultAxesColorOrder');
% Compute Phase Uncertainty
Dphi = 180/pi*asin(abs(squeeze(freqresp(W, freqs, 'Hz'))));
Dphi(abs(squeeze(freqresp(W, freqs, 'Hz'))) > 1) = 360;
% Compute Plant Phase
if args.unwrap
G_ang = 180/pi*unwrap(angle(squeeze(freqresp(args.G, freqs, 'Hz'))));
else
G_ang = 180/pi*angle(squeeze(freqresp(args.G, freqs, 'Hz')));
end
p = patch([freqs flip(freqs)], [G_ang+Dphi; flip(G_ang-Dphi)], 'w', ...
'DisplayName', args.DisplayName);
if args.color_i == 0
p.FaceColor = [0; 0; 0];
else
p.FaceColor = colors(args.color_i, :);
end
p.EdgeColor = 'none';
p.FaceAlpha = args.opacity;
end
#+end_src
* Helping Functions :noexport:
:PROPERTIES:
:HEADER-ARGS:matlab+: :tangle no
:END:
** Initialize Path
#+NAME: m-init-path-tangle
#+BEGIN_SRC matlab
%% Path for functions, data and scripts
addpath('./src/'); % Path for functions
#+END_SRC
** Initialize other elements
#+NAME: m-init-other
#+BEGIN_SRC matlab
%% Colors for the figures
colors = colororder;
#+END_SRC

34
matlab/src/generateCF.m Normal file
View File

@@ -0,0 +1,34 @@
function [H1, H2] = generateCF(W1, W2, args)
% generateCF -
%
% Syntax: [H1, H2] = generateCF(W1, W2, args)
%
% Inputs:
% - W1 - Weighting Function for H1
% - W2 - Weighting Function for H2
% - args:
% - method - H-Infinity solver ('lmi' or 'ric')
% - display - Display synthesis results ('on' or 'off')
%
% Outputs:
% - H1 - Generated H1 Filter
% - H2 - Generated H2 Filter
%% Argument validation
arguments
W1
W2
args.method char {mustBeMember(args.method,{'lmi', 'ric'})} = 'ric'
args.display char {mustBeMember(args.display,{'on', 'off'})} = 'on'
end
%% The generalized plant is defined
P = [W1 -W1;
0 W2;
1 0];
%% The standard H-infinity synthesis is performed
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', args.method, 'DISPLAY', args.display);
%% H1 is defined as the complementary of H2
H1 = 1 - H2;

43
matlab/src/generateWF.m Normal file
View File

@@ -0,0 +1,43 @@
function [W] = generateWF(args)
% generateWF -
%
% Syntax: [W] = generateWeight(args)
%
% Inputs:
% - n - Weight Order (integer)
% - G0 - Low frequency Gain
% - G1 - High frequency Gain
% - Gc - Gain of the weight at frequency w0
% - w0 - Frequency at which |W(j w0)| = Gc [rad/s]
%
% Outputs:
% - W - Generated Weighting Function
%% Argument validation
arguments
args.n (1,1) double {mustBeInteger, mustBePositive} = 1
args.G0 (1,1) double {mustBeNumeric, mustBePositive} = 0.1
args.Ginf (1,1) double {mustBeNumeric, mustBePositive} = 10
args.Gc (1,1) double {mustBeNumeric, mustBePositive} = 1
args.w0 (1,1) double {mustBeNumeric, mustBePositive} = 1
end
% Verification of correct relation between G0, Gc and Ginf
mustBeBetween(args.G0, args.Gc, args.Ginf);
%% Initialize the Laplace variable
s = zpk('s');
%% Create the weighting function according to formula
W = (((1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
(args.G0/args.Gc)^(1/args.n))/...
((1/args.Ginf)^(1/args.n)*(1/args.w0)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.Ginf)^(2/args.n)))*s + ...
(1/args.Gc)^(1/args.n)))^args.n;
%% Custom validation function
function mustBeBetween(a,b,c)
if ~((a > b && b > c) || (c > b && b > a))
eid = 'createWeight:inputError';
msg = 'Gc should be between G0 and Ginf.';
throwAsCaller(MException(eid,msg))
end

View File

@@ -0,0 +1,42 @@
function [p] = plotMagUncertainty(W, freqs, args)
% plotMagUncertainty -
%
% Syntax: [p] = plotMagUncertainty(W, freqs, args)
%
% Inputs:
% - W - Multiplicative Uncertainty Weight
% - freqs - Frequency Vector [Hz]
% - args - Optional Arguments:
% - G
% - color_i
% - opacity
%
% Outputs:
% - p - Plot Handle
arguments
W
freqs double {mustBeNumeric, mustBeNonnegative}
args.G = tf(1)
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
args.opacity (1,1) double {mustBeNumeric, mustBeNonnegative} = 0.3
args.DisplayName char = ''
end
% Get defaults colors
colors = get(groot, 'defaultAxesColorOrder');
p = patch([freqs flip(freqs)], ...
[abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*(1 + abs(squeeze(freqresp(W, freqs, 'Hz')))); ...
flip(abs(squeeze(freqresp(args.G, freqs, 'Hz'))).*max(1 - abs(squeeze(freqresp(W, freqs, 'Hz'))), 1e-6))], 'w', ...
'DisplayName', args.DisplayName);
if args.color_i == 0
p.FaceColor = [0; 0; 0];
else
p.FaceColor = colors(args.color_i, :);
end
p.EdgeColor = 'none';
p.FaceAlpha = args.opacity;
end

View File

@@ -0,0 +1,52 @@
function [p] = plotPhaseUncertainty(W, freqs, args)
% plotPhaseUncertainty -
%
% Syntax: [p] = plotPhaseUncertainty(W, freqs, args)
%
% Inputs:
% - W - Multiplicative Uncertainty Weight
% - freqs - Frequency Vector [Hz]
% - args - Optional Arguments:
% - G
% - color_i
% - opacity
%
% Outputs:
% - p - Plot Handle
arguments
W
freqs double {mustBeNumeric, mustBeNonnegative}
args.G = tf(1)
args.unwrap logical {mustBeNumericOrLogical} = false
args.color_i (1,1) double {mustBeInteger, mustBeNonnegative} = 0
args.opacity (1,1) double {mustBeNumeric, mustBePositive} = 0.3
args.DisplayName char = ''
end
% Get defaults colors
colors = get(groot, 'defaultAxesColorOrder');
% Compute Phase Uncertainty
Dphi = 180/pi*asin(abs(squeeze(freqresp(W, freqs, 'Hz'))));
Dphi(abs(squeeze(freqresp(W, freqs, 'Hz'))) > 1) = 360;
% Compute Plant Phase
if args.unwrap
G_ang = 180/pi*unwrap(angle(squeeze(freqresp(args.G, freqs, 'Hz'))));
else
G_ang = 180/pi*angle(squeeze(freqresp(args.G, freqs, 'Hz')));
end
p = patch([freqs flip(freqs)], [G_ang+Dphi; flip(G_ang-Dphi)], 'w', ...
'DisplayName', args.DisplayName);
if args.color_i == 0
p.FaceColor = [0; 0; 0];
else
p.FaceColor = colors(args.color_i, :);
end
p.EdgeColor = 'none';
p.FaceAlpha = args.opacity;
end

111
paper/.latexmkrc Normal file
View File

@@ -0,0 +1,111 @@
#!/bin/env perl
# Shebang is only to get syntax highlighting right across GitLab, GitHub and IDEs.
# This file is not meant to be run, but read by `latexmk`.
# ======================================================================================
# Perl `latexmk` configuration file
# ======================================================================================
# ======================================================================================
# PDF Generation/Building/Compilation
# ======================================================================================
@default_files=('dehaeze26_control.tex');
# PDF-generating modes are:
# 1: pdflatex, as specified by $pdflatex variable (still largely in use)
# 2: postscript conversion, as specified by the $ps2pdf variable (useless)
# 3: dvi conversion, as specified by the $dvipdf variable (useless)
# 4: lualatex, as specified by the $lualatex variable (best)
# 5: xelatex, as specified by the $xelatex variable (second best)
$pdf_mode = 1;
# Treat undefined references and citations as well as multiply defined references as
# ERRORS instead of WARNINGS.
# This is only checked in the *last* run, since naturally, there are undefined references
# in initial runs.
# This setting is potentially annoying when debugging/editing, but highly desirable
# in the CI pipeline, where such a warning should result in a failed pipeline, since the
# final document is incomplete/corrupted.
#
# However, I could not eradicate all warnings, so that `latexmk` currently fails with
# this option enabled.
# Specifically, `microtype` fails together with `fontawesome`/`fontawesome5`, see:
# https://tex.stackexchange.com/a/547514/120853
# The fix in that answer did not help.
# Setting `verbose=silent` to mute `microtype` warnings did not work.
# Switching between `fontawesome` and `fontawesome5` did not help.
$warnings_as_errors = 0;
# Show used CPU time. Looks like: https://tex.stackexchange.com/a/312224/120853
$show_time = 1;
# Default is 5; we seem to need more owed to the complexity of the document.
# Actual documents probably don't need this many since they won't use all features,
# plus won't be compiling from cold each time.
$max_repeat=7;
# --shell-escape option (execution of code outside of latex) is required for the
#'svg' package.
# It converts raw SVG files to the PDF+PDF_TEX combo using InkScape.
#
# SyncTeX allows to jump between source (code) and output (PDF) in IDEs with support
# (many have it). A value of `1` is enabled (gzipped), `-1` is enabled but uncompressed,
# `0` is off.
# Testing in VSCode w/ LaTeX Workshop only worked for the compressed version.
# Adjust this as needed. Of course, only relevant for local use, no effect on a remote
# CI pipeline (except for slower compilation, probably).
#
# %O and %S will forward Options and the Source file, respectively, given to latexmk.
#
# `set_tex_cmds` applies to all *latex commands (latex, xelatex, lualatex, ...), so
# no need to specify these each. This allows to simply change `$pdf_mode` to get a
# different engine. Check if this works with `latexmk --commands`.
set_tex_cmds("--shell-escape -interaction=nonstopmode --synctex=1 %O %S");
# Use default pdf viewer
$pdf_previewer = 'zathura';
# option 2 is same as 1 (run biber when necessary), but also deletes the
# regeneratable bbl-file in a clenaup (`latexmk -c`). Do not use if original
# bib file is not available!
$bibtex_use = 2; # default: 1
# Change default `biber` call, help catch errors faster/clearer. See
# https://web.archive.org/web/20200526101657/https://www.semipol.de/2018/06/12/latex-best-practices.html#database-entries
$biber = "biber --validate-datamodel %O %S";
# Glossaries
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
sub run_makeglossaries {
if ( $silent ) {
system "makeglossaries -q -s '$_[0].ist' '$_[0]'";
}
else {
system "makeglossaries -s '$_[0].ist' '$_[0]'";
};
}
# ======================================================================================
# Auxiliary Files
# ======================================================================================
# Let latexmk know about generated files, so they can be used to detect if a
# rerun is required, or be deleted in a cleanup.
# loe: List of Examples (KOMAScript)
# lol: List of Listings (`listings` and `minted` packages)
# run.xml: biber runs
# glg: glossaries log
# glstex: generated from glossaries-extra
push @generated_exts, 'loe', 'lol', 'run.xml', 'glstex', 'glo', 'gls', 'glg', 'acn', 'acr', 'alg';
# Also delete the *.glstex files from package glossaries-extra. Problem is,
# that that package generates files of the form "basename-digit.glstex" if
# multiple glossaries are present. Latexmk looks for "basename.glstex" and so
# does not find those. For that purpose, use wildcard.
# Also delete files generated by gnuplot/pgfplots contour plots
# (.dat, .script, .table).
$clean_ext = "%R-*.glstex %R_contourtmp*.*";

6343
paper/IEEEtran.cls Normal file

File diff suppressed because it is too large Load Diff

176
paper/dehaeze26_control.bib Normal file
View File

@@ -0,0 +1,176 @@
@article{furutani04_nanom_cuttin_machin_using_stewar,
author = {Furutani, K. and Suzuki, M. and Kudoh, R.},
title = {Nanometre-Cutting Machine Using a Stewart-Platform Parallel
Mechanism},
journal = {Measurement Science and Technology},
volume = 15,
number = 2,
pages = {467--474},
year = 2004,
doi = {10.1088/0957-0233/15/2/022},
url = {https://doi.org/10.1088/0957-0233/15/2/022},
keywords = {parallel robot, cubic configuration},
}
@article{du14_piezo_actuat_high_precis_flexib,
author = {Du, Z. and Shi, R. and Dong, W.},
title = {A Piezo-Actuated High-Precision Flexible Parallel Pointing
Mechanism: Conceptual Design, Development, and Experiments},
journal = {IEEE Transactions on Robotics},
volume = 30,
number = 1,
pages = {131--137},
year = 2014,
doi = {10.1109/tro.2013.2288800},
url = {https://doi.org/10.1109/tro.2013.2288800},
keywords = {parallel robot},
}
@article{yang19_dynam_model_decoup_contr_flexib,
author = {Yang, X. and Wu, H. and Chen, B. and Kang, S. and Cheng, S.},
title = {Dynamic Modeling and Decoupled Control of a Flexible
Stewart Platform for Vibration Isolation},
journal = {Journal of Sound and Vibration},
volume = 439,
pages = {398--412},
year = 2019,
doi = {10.1016/j.jsv.2018.10.007},
url = {https://doi.org/10.1016/j.jsv.2018.10.007},
issn = {0022-460X},
keywords = {parallel robot, flexure, decoupled control},
month = 1,
publisher = {Elsevier BV},
}
@book{schmidt20_desig_high_perfor_mechat_third_revis_edition,
author = {Schmidt, R. M. and Schitter, G. and Rankers, A.},
title = {The Design of High Performance Mechatronics - Third Revised
Edition},
year = 2020,
publisher = {Ios Press},
isbn = {978-1-64368-050-7},
keywords = {favorite},
}
@book{skogestad07_multiv_feedb_contr,
author = {Skogestad, S. and Postlethwaite, I.},
title = {Multivariable Feedback Control: Analysis and Design -
Second Edition},
year = 2007,
publisher = {John Wiley},
isbn = {0470011688},
keywords = {favorite},
}
@techreport{bibel92_guidel_h,
author = {Bibel, J. E. and Malyevac, D. S.},
institution = {Naval Surface Warfare Center Dahlgren div va},
title = {Guidelines for the selection of weighting functions for
H-infinity control},
year = 1992,
}
@article{jiao18_dynam_model_exper_analy_stewar,
author = {Jiao, J. and Wu, Y. and Yu, K. and Zhao, R.},
title = {Dynamic Modeling and Experimental Analyses of Stewart
Platform With Flexible Hinges},
journal = {Journal of Vibration and Control},
volume = 25,
number = 1,
pages = {151--171},
year = 2018,
doi = {10.1177/1077546318772474},
url = {https://doi.org/10.1177/1077546318772474},
keywords = {parallel robot, flexure},
}
@article{thayer02_six_axis_vibrat_isolat_system,
author = {Thayer, D. and Campbell, M. and Vagners, J. and
von Flotow, A.},
title = {Six-Axis Vibration Isolation System Using Soft Actuators
and Multiple Sensors},
journal = {Journal of Spacecraft and Rockets},
volume = 39,
number = 2,
pages = {206--212},
year = 2002,
doi = {10.2514/2.3821},
url = {https://doi.org/10.2514/2.3821},
keywords = {parallel robot},
}
@article{hauge04_sensor_contr_space_based_six,
author = {Hauge, G. S. and Campbell, M. E.},
title = {Sensors and Control of a Space-Based Six-Axis Vibration
Isolation System},
journal = {Journal of Sound and Vibration},
volume = 269,
number = {3-5},
pages = {913--931},
year = 2004,
doi = {10.1016/s0022-460x(03)00206-2},
url = {https://doi.org/10.1016/s0022-460x(03)00206-2},
keywords = {parallel robot, favorite},
}
@article{collette15_sensor_fusion_method_high_perfor,
author = {Collette, C. and Matichard, F.},
title = {Sensor Fusion Methods for High Performance Active Vibration
Isolation Systems},
journal = {Journal of Sound and Vibration},
volume = 342,
pages = {1--21},
year = 2015,
doi = {10.1016/j.jsv.2015.01.006},
url = {https://doi.org/10.1016/j.jsv.2015.01.006},
keywords = {complementary filters},
}
@article{verma20_virtual_sensor_fusion_high_precis_contr,
author = {Verma, M. and Dehaeze, T. and Zhao, G. and
Watchi, J. and Collette, C.},
title = {Virtual Sensor Fusion for High Precision Control},
journal = {Mechanical Systems and Signal Processing},
volume = 150,
pages = 107241,
year = 2020,
doi = {10.1016/j.ymssp.2020.107241},
url = {https://doi.org/10.1016/j.ymssp.2020.107241},
keywords = {complementary filters},
}
@article{saxena12_advan_inter_model_contr_techn,
author = {Saxena, S. and Hote, Y. V.},
title = {Advances in Internal Model Control Technique: a Review and
Future Prospects},
journal = {IETE Technical Review},
volume = 29,
number = 6,
pages = 461,
year = 2012,
doi = {10.4103/0256-4602.105001},
url = {https://doi.org/10.4103/0256-4602.105001},
}

531
paper/dehaeze26_control.org Normal file
View File

@@ -0,0 +1,531 @@
#+TITLE: Closed-Loop Shaping using Complementary Filters
:DRAWER:
#+BIND: org-latex-image-default-option "scale=1"
#+BIND: org-latex-image-default-width ""
#+OPTIONS: toc:nil date:nil
#+AUTHOR:
#+AUTHOR: @@latex:\IEEEauthorblockN{Dehaeze Thomas}@@
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\@@
#+AUTHOR: @@latex:Grenoble, France\\@@
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
#+AUTHOR: @@latex:thomas.dehaeze@esrf.fr@@
#+AUTHOR: @@latex:}\and@@
#+AUTHOR: @@latex:\IEEEauthorblockN{Verma Mohit}@@
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{BEAMS Department}\\@@
#+AUTHOR: @@latex:\textit{Free University of Brussels}, Belgium\\@@
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
#+AUTHOR: @@latex:mohit.verma@ulb.ac.be@@
#+AUTHOR: @@latex:}\and@@
#+AUTHOR: @@latex:\IEEEauthorblockN{Collette Christophe}@@
#+AUTHOR: @@latex:\IEEEauthorblockA{\textit{BEAMS Department}\\@@
#+AUTHOR: @@latex:\textit{Free University of Brussels}, Belgium\\@@
#+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@
#+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@
#+AUTHOR: @@latex:ccollett@ulb.ac.be@@
#+AUTHOR: @@latex:}@@
#+LaTeX_CLASS: IEEEtran
#+LaTeX_CLASS_OPTIONS: [lettersize,journal]
#+LATEX_HEADER: \input{preamble.tex}
#+LATEX_HEADER_EXTRA: \input{preamble_extra.tex}
# #+LaTeX_HEADER: \addbibresource{dehaeze26_control.bib}
\bibliographystyle{IEEEtran}
#+BIND: org-latex-bib-compiler "biber"
:END:
* Build :noexport:
#+NAME: startblock
#+BEGIN_SRC emacs-lisp :results none :tangle no
(add-to-list 'org-latex-classes
'("IEEEtran"
"\\documentclass{IEEEtran}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
))
;; Remove automatic org heading labels
(defun my-latex-filter-removeOrgAutoLabels (text backend info)
"Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))
(add-to-list 'org-export-filter-headline-functions
'my-latex-filter-removeOrgAutoLabels)
;; Remove all org comments in the output LaTeX file
(defun delete-org-comments (backend)
(loop for comment in (reverse (org-element-map (org-element-parse-buffer)
'comment 'identity))
do
(setf (buffer-substring (org-element-property :begin comment)
(org-element-property :end comment))
"")))
(add-hook 'org-export-before-processing-hook 'delete-org-comments)
;; Use no package by default
(setq org-latex-packages-alist nil)
(setq org-latex-default-packages-alist nil)
;; Do not include the subtitle inside the title
(setq org-latex-subtitle-separate t)
(setq org-latex-subtitle-format "\\subtitle{%s}")
(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing
org-ref-acronyms-before-parsing))
#+END_SRC
* Notes :noexport:
** Journal
Mechanical Systems and Signal Processing: https://www.sciencedirect.com/journal/mechanical-systems-and-signal-processing
But:
#+begin_quote
The following subject areas are currently outside the MSSP scope:
- *Theoretical control* - papers better suited to a specialist controls journal
#+end_quote
Other option: http://www.ieee-asme-mechatronics.info/
** TODO [#A] Choose between IEEE and MSSP
Then, make sure the file well compiles to a PDF
* Title Page :ignore:
#+begin_export latex
\begin{abstract}
This document describes the most common article elements and how to use the IEEEtran class with \LaTeX \ to produce files that are suitable for submission to the IEEE. IEEEtran can produce conference, journal, and technical note (correspondence) papers with a suitable choice of class options.
\end{abstract}
\begin{IEEEkeywords}
Article submission, IEEE, IEEEtran, journal, \LaTeX, paper, template, typesetting.
\end{IEEEkeywords}
#+end_export
* Introduction :ignore:
Once the system is properly decoupled using one of the approaches described in Section ref:sec:detail_control_decoupling, SISO controllers can be individually tuned for each decoupled "directions".
Several ways to design a controller to obtain a given performance while ensuring good robustness properties can be implemented.
In some cases "fixed" controller structures are utilized, such as PI and PID controllers, whose parameters are manually tuned [[cite:&furutani04_nanom_cuttin_machin_using_stewar;&du14_piezo_actuat_high_precis_flexib;&yang19_dynam_model_decoup_contr_flexib]].
Another popular method is Open-Loop shaping, which was used during the conceptual phase.
Open-loop shaping involves tuning the controller through a series of "standard" filters (leads, lags, notches, low-pass filters, ...) to shape the open-loop transfer function $G(s)K(s)$ according to desired specifications, including bandwidth, gain and phase margins [[cite:&schmidt20_desig_high_perfor_mechat_third_revis_edition, chapt. 4.4.7]].
Open-Loop shaping is very popular because the open-loop transfer function is a linear function of the controller, making it relatively straightforward to tune the controller to achieve desired open-loop characteristics.
Another key advantage is that controllers can be tuned directly from measured frequency response functions of the plant without requiring an explicit model.
However, the behavior (i.e. performance) of a feedback system is a function of closed-loop transfer functions.
Specifications can therefore be expressed in terms of the magnitude of closed-loop transfer functions, such as the sensitivity, plant sensitivity, and complementary sensitivity transfer functions [[cite:&skogestad07_multiv_feedb_contr, chapt. 3]].
With open-loop shaping, closed-loop transfer functions are changed only indirectly, which may make it difficult to directly address the specifications that are in terms of the closed-loop transfer functions.
In order to synthesize a controller that directly shapes the closed-loop transfer functions (and therefore the performance metric), $\mathcal{H}_\infty\text{-synthesis}$ may be used [[cite:&skogestad07_multiv_feedb_contr]].
This approach requires a good model of the plant and expertise in selecting weighting functions that will define the wanted shape of different closed-loop transfer functions [[cite:&bibel92_guidel_h]].
$\mathcal{H}_{\infty}\text{-synthesis}$ has been applied for the Stewart platform [[cite:&jiao18_dynam_model_exper_analy_stewar]], yet when benchmarked against more basic decentralized controllers, the performance gains proved small [[cite:&thayer02_six_axis_vibrat_isolat_system;&hauge04_sensor_contr_space_based_six]].
In this section, an alternative controller synthesis scheme is proposed in which complementary filters are used for directly shaping the closed-loop transfer functions (i.e., directly addressing the closed-loop performances).
In Section ref:ssec:detail_control_cf_control_arch, the proposed control architecture is presented.
In Section ref:ssec:detail_control_cf_trans_perf, typical performance requirements are translated into the shape of the complementary filters.
The design of the complementary filters is briefly discussed in Section ref:ssec:detail_control_cf_analytical_complementary_filters, and analytical formulas are proposed such that it is possible to change the closed-loop behavior of the system in real time.
Finally, in Section ref:ssec:detail_control_cf_simulations, a numerical example is used to show how the proposed control architecture can be implemented in practice.
* Control Architecture
<<ssec:detail_control_cf_control_arch>>
*** Virtual Sensor Fusion
The idea of using complementary filters in the control architecture originates from sensor fusion techniques [[cite:&collette15_sensor_fusion_method_high_perfor]], where two sensors are combined using complementary filters.
Building upon this concept, "virtual sensor fusion" [[cite:&verma20_virtual_sensor_fusion_high_precis_contr]] replaces one physical sensor with a model $G$ of the plant.
The corresponding control architecture is illustrated in Figure ref:fig:detail_control_cf_arch, where $G^\prime$ represents the physical plant to be controlled, $G$ is a model of the plant, $k$ is the controller, and $H_L$ and $H_H$ are complementary filters satisfying $H_L(s) + H_H(s) = 1$.
In this arrangement, the physical plant is controlled at low frequencies, while the plant model is utilized at high frequencies to enhance robustness.
#+name: fig:detail_control_cf_arch_and_eq
#+caption: Control architecture for virtual sensor fusion (\subref{fig:detail_control_cf_arch}). An equivalent architecture is shown in (\subref{fig:detail_control_cf_arch_eq}). The signals are the reference signal $r$, the output perturbation $d_y$, the measurement noise $n$ and the control input $u$.
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_arch}Virtual Sensor Fusion}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/detail_control_cf_arch.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_arch_eq}Equivalent Architecture}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.9
[[file:figs/detail_control_cf_arch_eq.png]]
#+end_subfigure
#+end_figure
Although the control architecture shown in Figure ref:fig:detail_control_cf_arch appears to be a multi-loop system, it should be noted that no non-linear saturation-type elements are present in the inner loop (containing $k$, $G$, and $H_H$, all numerically implemented).
Consequently, this structure is mathematically equivalent to the single-loop architecture illustrated in Figure ref:fig:detail_control_cf_arch_eq.
*** Asymptotic behavior
When considering the extreme case of very high values for $k$, the effective controller $K(s)$ converges to the inverse of the plant model multiplied by the inverse of the high-pass filter, as expressed in eqref:eq:detail_control_cf_high_k.
\begin{equation}\label{eq:detail_control_cf_high_k}
\lim_{k\to\infty} K(s) = \lim_{k\to\infty} \frac{k}{1+H_H(s) G(s) k} = \big( H_H(s) G(s) \big)^{-1}
\end{equation}
If the resulting $K$ is improper, a low-pass filter with sufficiently high corner frequency can be added to ensure its causal realization.
Furthermore, for $K$ to be stable, both $G$ and $H_H$ must be minimum phase transfer functions.
With these assumptions, the resulting control architecture is illustrated in Figure ref:fig:detail_control_cf_arch_class, where the complementary filters $H_L$ and $H_H$ remain the only tuning parameters.
The dynamics of this closed-loop system are described by equations eqref:eq:detail_control_cf_cl_system_y and eqref:eq:detail_control_cf_cl_system_y.
#+name: fig:detail_control_cf_arch_class
#+caption: Equivalent classical feedback control architecture
#+RESULTS:
[[file:figs/detail_control_cf_arch_class.png]]
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf}
\begin{align}
y &= \frac{ H_H dy + G^{\prime} G^{-1} r - G^{\prime} G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_y}\\
u &= \frac{ -G^{-1} H_L dy + G^{-1} r - G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_u}
\end{align}
\end{subequations}
At frequencies where the model accurately represents the physical plant ($G^{-1} G^{\prime} \approx 1$), the denominator simplifies to $H_H + G^\prime G^{-1} H_L \approx H_H + H_L = 1$, and the closed-loop transfer functions are then described by equations eqref:eq:detail_control_cf_cl_performance_y and eqref:eq:detail_control_cf_cl_performance_u.
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf_perfect}
\begin{alignat}{5}
y &= H_H dy &&+ r &&- H_L n \label{eq:detail_control_cf_cl_performance_y} \\
u &= -G^{-1} H_L dy &&+ G^{-1} r &&- G^{-1} H_L n \label{eq:detail_control_cf_cl_performance_u}
\end{alignat}
\end{subequations}
The sensitivity transfer function equals the high-pass filter $S = \frac{y}{dy} = H_H$, and the complementary sensitivity transfer function equals the low-pass filter $T = \frac{y}{n} = H_L$.
Hence, when the plant model closely approximates the actual dynamics, the closed-loop transfer functions converge to the designed complementary filters, allowing direct translation of performance requirements into the design of the complementary.
* Translating the performance requirements into the shape of the complementary filters
<<ssec:detail_control_cf_trans_perf>>
*** Introduction :ignore:
Performance specifications in a feedback system can usually be expressed as upper bounds on the magnitudes of closed-loop transfer functions such as the sensitivity and complementary sensitivity transfer functions [[cite:&bibel92_guidel_h]].
The design of a controller $K(s)$ to obtain the desired shape of these closed-loop transfer functions is known as closed-loop shaping.
In the proposed control architecture, the closed-loop transfer functions eqref:eq:detail_control_cf_sf_cl_tf_K_inf are expressed in terms of the complementary filters $H_L(s)$ and $H_H(s)$ rather than directly through the controller $K(s)$.
Therefore, performance requirements must be translated into constraints on the shape of these complementary filters.
*** Nominal Stability (NS)
A closed-loop system is stable when all its elements (here $K$, $G^\prime$, and $H_L$) are stable and the sensitivity function $S = \frac{1}{1 + G^\prime K H_L}$ is stable.
For the nominal system ($G^\prime = G$), the sensitivity transfer function equals the high-pass filter: $S(s) = H_H(s)$.
Nominal stability is therefore guaranteed when $H_L$, $H_H$, and $G$ are stable, and both $G$ and $H_H$ are minimum phase (ensuring $K$ is stable).
Consequently, stable and minimum phase complementary filters must be employed.
*** Nominal Performance (NP)
Performance specifications can be formalized using weighting functions $w_H$ and $w_L$, where performance is achieved when eqref:eq:detail_control_cf_weights is satisfied.
The weighting functions define the maximum magnitude of the closed-loop transfer functions as a function of frequency, effectively determining their "shape".
\begin{subequations}\label{eq:detail_control_cf_weights}
\begin{align}
|w_H(j\omega) S(j\omega)| &\le 1 \quad \forall\omega\\
|w_L(j\omega) T(j\omega)| &\le 1 \quad \forall\omega
\end{align}
\end{subequations}
For the nominal system, $S = H_H$ and $T = H_L$, hence the performance specifications can be converted on the shape of the complementary filters eqref:eq:detail_control_cf_nominal_performance.
\begin{equation}\label{eq:detail_control_cf_nominal_performance}
\Aboxed{\text{NP} \Longleftrightarrow {\begin{cases*}
|w_H(j\omega) H_H(j\omega)| \le 1 & \forall\omega \\
|w_L(j\omega) H_L(j\omega)| \le 1 & \forall\omega
\end{cases*}}}
\end{equation}
For disturbance rejection, the magnitude of the sensitivity function $|S(j\omega)| = |H_H(j\omega)|$ should be minimized, particularly at low frequencies where disturbances are usually most prominent.
Similarly, for noise attenuation, the magnitude of the complementary sensitivity function $|T(j\omega)| = |H_L(j\omega)|$ should be minimized, especially at high frequencies where measurement noise typically dominates.
Classical stability margins (gain and phase margins) are also related to the maximum amplitude of the sensitivity transfer function.
Typically, maintaining $|S|_{\infty} \le 2$ ensures a gain margin of at least 2 and a phase margin of at least $\SI{29}{\degree}$.
Therefore, by carefully selecting the shape of the complementary filters, nominal performance specifications can be directly addressed in an intuitive manner.
*** Robust Stability (RS)
Robust stability refers to a control system's ability to maintain stability despite discrepancies between the actual system $G^\prime$ and the model $G$ used for controller design.
These discrepancies may arise from unmodeled dynamics or nonlinearities.
To represent these model-plant differences, input multiplicative uncertainty as illustrated in Figure ref:fig:detail_control_cf_input_uncertainty is employed.
The set of possible plants $\Pi_i$ is described by eqref:eq:detail_control_cf_multiplicative_uncertainty, with the weighting function $w_I$ selected such that all possible plants $G^\prime$ are contained within the set $\Pi_i$.
\begin{equation}\label{eq:detail_control_cf_multiplicative_uncertainty}
\Pi_i: \quad G^\prime(s) = G(s)\big(1 + w_I(s)\Delta_I(s)\big); \quad |\Delta_I(j\omega)| \le 1 \ \forall\omega
\end{equation}
#+name: fig:detail_control_cf_input_uncertainty_nyquist
#+caption: Input multiplicative uncertainty to model the differences between the model and the physical plant (\subref{fig:detail_control_cf_input_uncertainty}). Effect of this uncertainty is displayed on the Nyquist plot (\subref{fig:detail_control_cf_nyquist_uncertainty})
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_input_uncertainty}Input multiplicative uncertainty}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_control_cf_input_uncertainty.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_nyquist_uncertainty}Nyquist plot - Effect of multiplicative uncertainty}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_control_cf_nyquist_uncertainty.png]]
#+end_subfigure
#+end_figure
When considering input multiplicative uncertainty, robust stability can be derived graphically from the Nyquist plot (illustrated in Figure ref:fig:detail_control_cf_nyquist_uncertainty), yielding to eqref:eq:detail_control_cf_robust_stability_graphically, as demonstrated in [[cite:&skogestad07_multiv_feedb_contr, chapt. 7.5.1]].
\begin{equation}\label{eq:detail_control_cf_robust_stability_graphically}
\text{RS} \Longleftrightarrow \left|w_I(j\omega) L(j\omega) \right| \le \left| 1 + L(j\omega) \right| \quad \forall\omega
\end{equation}
After algebraic manipulation, robust stability is guaranteed when the low-pass complementary filter $H_L$ satisfies eqref:eq:detail_control_cf_condition_robust_stability.
\begin{equation}\label{eq:detail_control_cf_condition_robust_stability}
\boxed{\text{RS} \Longleftrightarrow |w_I(j\omega) H_L(j\omega)| \le 1 \quad \forall \omega}
\end{equation}
*** Robust Performance (RP)
Robust performance ensures that performance specifications eqref:eq:detail_control_cf_weights are met even when the plant dynamics fluctuates within specified bounds eqref:eq:detail_control_cf_robust_perf_S.
\begin{equation}\label{eq:detail_control_cf_robust_perf_S}
\text{RP} \Longleftrightarrow |w_H(j\omega) S(j\omega)| \le 1 \quad \forall G^\prime \in \Pi_I, \ \forall\omega
\end{equation}
Transforming this condition into constraints on the complementary filters yields:
\begin{equation}\label{eq:detail_control_cf_robust_performance}
\boxed{\text{RP} \Longleftrightarrow | w_H(j\omega) H_H(j\omega) | + | w_I(j\omega) H_L(j\omega) | \le 1, \ \forall\omega}
\end{equation}
The robust performance condition effectively combines both nominal performance eqref:eq:detail_control_cf_nominal_performance and robust stability conditions eqref:eq:detail_control_cf_condition_robust_stability.
If both NP and RS conditions are satisfied, robust performance will be achieved within a factor of 2 [[cite:&skogestad07_multiv_feedb_contr, chapt. 7.6]].
Therefore, for SISO systems, ensuring robust stability and nominal performance is typically sufficient.
* Complementary filter design
<<ssec:detail_control_cf_analytical_complementary_filters>>
As proposed in Section ref:sec:detail_control_sensor, complementary filters can be shaped using standard $\mathcal{H}_{\infty}\text{-synthesis}$ techniques.
This approach is particularly well-suited since performance requirements were expressed as upper bounds on the magnitude of the complementary filters.
Alternatively, analytical formulas for complementary filters may be employed.
For some applications, first-order complementary filters as shown in Equation eqref:eq:detail_control_cf_1st_order are sufficient.
\begin{subequations}\label{eq:detail_control_cf_1st_order}
\begin{align}
H_L(s) &= \frac{1}{1 + s/\omega_0} \\
H_H(s) &= \frac{s/\omega_0}{1 + s/\omega_0}
\end{align}
\end{subequations}
These filters can be transformed into the digital domain using the Bilinear transformation, resulting in the digital filter representations shown in Equation eqref:eq:detail_control_cf_1st_order_z.
\begin{subequations}\label{eq:detail_control_cf_1st_order_z}
\begin{align}
H_L(z^{-1}) &= \frac{T_s \omega_0 + T_s \omega_0 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}} \\
H_H(z^{-1}) &= \frac{2 - 2 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}}
\end{align}
\end{subequations}
A significant advantage of using analytical formulas for complementary filters is that key parameters such as $\omega_0$ can be tuned in real-time, as illustrated in Figure ref:fig:detail_control_cf_arch_tunable_params.
This real-time tunability allows rapid testing of different control bandwidths to evaluate performance and robustness characteristics.
#+name: fig:detail_control_cf_arch_tunable_params
#+caption: Implemented digital complementary filters with parameter $\omega_0$ that can be changed in real time
[[file:figs/detail_control_cf_arch_tunable_params.png]]
For many practical applications, first order complementary filters are not sufficient.
Specifically, a slope of $+2$ at low frequencies for the sensitivity transfer function (enabling accurate tracking of ramp inputs) and a slope of $-2$ for the complementary sensitivity transfer function are often desired.
For these cases, the complementary filters analytical formula in Equation eqref:eq:detail_control_cf_2nd_order is proposed.
\begin{subequations}\label{eq:detail_control_cf_2nd_order}
\begin{align}
H_L(s) &= \frac{(1+\alpha) (\frac{s}{\omega_0})+1}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}\\
H_H(s) &= \frac{(\frac{s}{\omega_0})^2 \left((\frac{s}{\omega_0})+1+\alpha\right)}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}
\end{align}
\end{subequations}
The influence of parameters $\alpha$ and $\omega_0$ on the frequency response of these complementary filters is illustrated in Figure ref:fig:detail_control_cf_analytical_effect.
The parameter $\alpha$ primarily affects the damping characteristics near the crossover frequency as well as high and low frequency magnitudes, while $\omega_0$ determines the frequency at which the transition between high-pass and low-pass behavior occurs.
These filters can also be implemented in the digital domain with analytical formulas, preserving the ability to adjust $\alpha$ and $\omega_0$ in real-time.
#+name: fig:detail_control_cf_analytical_effect
#+caption: Shape of proposed analytical complementary filters. Effect of $\alpha$ (\subref{fig:detail_control_cf_analytical_effect_alpha}) and $\omega_0$ (\subref{fig:detail_control_cf_analytical_effect_w0}) are shown.
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_analytical_effect_alpha}Effect of $\alpha$}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_control_cf_analytical_effect_alpha.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_analytical_effect_w0}Effect of $\omega_0$}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_control_cf_analytical_effect_w0.png]]
#+end_subfigure
#+end_figure
* Numerical Example
<<ssec:detail_control_cf_simulations>>
*** Procedure :ignore:
To implement the proposed control architecture in practice, the following procedure is proposed:
1. Identify the plant to be controlled to obtain the plant model $G$.
2. Design the weighting function $w_I$ such that all possible plants $G^\prime$ are contained within the uncertainty set $\Pi_i$.
3. Translate performance requirements into upper bounds on the complementary filters as explained in Section ref:ssec:detail_control_cf_trans_perf.
4. Design the weighting functions $w_H$ and $w_L$ and generate the complementary filters using $\mathcal{H}_{\infty}\text{-synthesis}$ as described in Section ref:ssec:detail_control_sensor_hinf_method.
If the synthesis fails to produce filters satisfying the defined upper bounds, either revise the requirements or develop a more accurate model $G$ that will allow for a smaller $w_I$.
For simpler cases, the analytical formulas for complementary filters presented in Section ref:ssec:detail_control_cf_analytical_complementary_filters can be employed.
5. If $K(s) = H_H^{-1}(s) G^{-1}(s)$ is not proper, add low-pass filters with sufficiently high corner frequencies to ensure realizability.
*** Plant :ignore:
To evaluate this control architecture, a simple test model representative of many synchrotron positioning stages is utilized (Figure ref:fig:detail_control_cf_test_model).
In this model, a payload with mass $m$ is positioned on top of a stage.
The objective is to accurately position the sample relative to the X-ray beam.
The relative position $y$ between the payload and the X-ray is measured, which typically involves measuring the relative position between the focusing optics and the sample.
Various disturbance forces affect positioning stability, including stage vibrations $d_w$ and direct forces applied to the sample $d_F$ (such as cable forces).
The positioning stage itself is characterized by stiffness $k$, internal damping $c$, and a controllable force $F$.
The model of the plant $G(s)$ from actuator force $F$ to displacement $y$ is described by Equation eqref:eq:detail_control_cf_test_plant_tf.
\begin{equation}\label{eq:detail_control_cf_test_plant_tf}
G(s) = \frac{1}{m s^2 + c s + k}, \quad m = \SI{20}{\kg},\ k = 1\si{\N/\mu\m},\ c = 10^2\si{\N\per(\m\per\s)}
\end{equation}
The plant dynamics include uncertainties related to limited support compliance, unmodeled flexible dynamics and payload dynamics.
These uncertainties are represented using a multiplicative input uncertainty weight eqref:eq:detail_control_cf_test_plant_uncertainty, which specifies the magnitude of uncertainty as a function of frequency.
\begin{equation}\label{eq:detail_control_cf_test_plant_uncertainty}
w_I(s) = 10 \cdot \frac{(s+100)^2}{(s+1000)^2}
\end{equation}
Figure ref:fig:detail_control_cf_bode_plot_mech_sys illustrates both the nominal plant dynamics and the complete set of possible plants $\Pi_i$ encompassed by the uncertainty model.
#+name: fig:detail_control_cf_test_model_plant
#+caption: Schematic of the test system (\subref{fig:detail_control_cf_test_model}). Bode plot of the transfer function $G(s)$ from $F$ to $y$ and the associated uncertainty set (\subref{fig:detail_control_cf_bode_plot_mech_sys}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_test_model}Test model}
#+attr_latex: :options {0.3\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_control_cf_test_model.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_bode_plot_mech_sys}Bode plot of $G(s)$ and associated uncertainty set}
#+attr_latex: :options {0.66\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_control_cf_bode_plot_mech_sys.png]]
#+end_subfigure
#+end_figure
*** Requirements and choice of complementary filters
As discussed in Section ref:ssec:detail_control_cf_trans_perf, nominal performance requirements can be expressed as upper bounds on the shape of the complementary filters.
For this example, the requirements are:
- track ramp inputs (i.e. constant velocity scans) with zero steady-state error: a $+2$ slope at low frequencies for the magnitude of the sensitivity function $|S(j\omega)|$ is required
- filtering of measurement noise above $\SI{300}{Hz}$, where sensor noise is significant (requiring a filtering factor of approximately 100 above this frequency)
- maximizing disturbance rejection
Additionally, robust stability must be ensured, requiring the closed-loop system to remain stable despite the dynamic uncertainties modeled by $w_I$.
This condition is satisfied when the magnitude of the low-pass complementary filter $|H_L(j\omega)|$ remains below the inverse of the uncertainty weight magnitude $|w_I(j\omega)|$, as expressed in Equation eqref:eq:detail_control_cf_condition_robust_stability.
Robust performance is achieved when both nominal performance and robust stability conditions are simultaneously satisfied.
All requirements imposed on $H_L$ and $H_H$ are visualized in Figure ref:fig:detail_control_cf_specs_S_T.
While $\mathcal{H}_\infty\text{-synthesis}$ could be employed to design the complementary filters, analytical formulas were used for this relatively simple example.
The second-order complementary filters from Equation eqref:eq:detail_control_cf_2nd_order were selected with parameters $\alpha = 1$ and $\omega_0 = 2\pi \cdot 20\,\text{Hz}$.
There magnitudes are displayed in Figure ref:fig:detail_control_cf_specs_S_T, confirming that these complementary filters are fulfilling the specifications.
#+name: fig:detail_control_cf_specs_S_T_obtained_filters
#+caption: Performance requirement and complementary filters used (\subref{fig:detail_control_cf_specs_S_T}). Obtained controller from the complementary filters and the plant inverse is shown in (\subref{fig:detail_control_cf_bode_Kfb}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_specs_S_T}Specifications and complementary filters}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_control_cf_specs_S_T.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_bode_Kfb}Bode plot of $K(s) \cdot H_L(s)$}
#+attr_latex: :options {0.48\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_control_cf_bode_Kfb.png]]
#+end_subfigure
#+end_figure
*** Controller analysis
The controller to be implemented takes the form $K(s) = \tilde{G}^{-1}(s) H_H^{-1}(s)$, where $\tilde{G}^{-1}(s)$ represents the plant inverse, which must be both stable and proper.
To ensure properness, low-pass filters with high corner frequencies are added as shown in Equation eqref:eq:detail_control_cf_test_plant_inverse.
\begin{equation}\label{eq:detail_control_cf_test_plant_inverse}
\tilde{G}^{-1}(s) = \frac{m s^2 + c s + k}{1 + \frac{s}{2\pi \cdot 1000} + \left( \frac{s}{2\pi \cdot 1000} \right)^2}
\end{equation}
The Bode plot of the controller multiplied by the complementary low-pass filter, $K(s) \cdot H_L(s)$, is presented in Figure ref:fig:detail_control_cf_bode_Kfb.
The frequency response reveals several important characteristics:
- The presence of two integrators at low frequencies, enabling accurate tracking of ramp inputs
- A notch at the plant resonance frequency (arising from the plant inverse)
- A lead component near the control bandwidth of approximately 20 Hz, enhancing stability margins
*** Robustness and Performance analysis
Robust stability is assessed using the Nyquist plot shown in Figure ref:fig:detail_control_cf_nyquist_robustness.
Even when considering all possible plants within the uncertainty set, the Nyquist plot remains sufficiently distant from the critical point $(-1,0)$, indicating robust stability with adequate margins.
Performance is evaluated by examining the closed-loop sensitivity and complementary sensitivity transfer functions, as illustrated in Figure ref:fig:detail_control_cf_robust_perf.
It is shown that the sensitivity transfer function achieves the desired $+2$ slope at low frequencies and that the complementary sensitivity transfer function nominally provides the wanted noise filtering.
#+name: fig:detail_control_cf_simulation_results
#+caption: Validation of Robust stability with the Nyquist plot (\subref{fig:detail_control_cf_nyquist_robustness}) and validation of the nominal and robust performance with the magnitude of the closed-loop transfer functions (\subref{fig:detail_control_cf_robust_perf})
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_nyquist_robustness}Robust Stability}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.8
[[file:figs/detail_control_cf_nyquist_robustness.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_control_cf_robust_perf}Nominal and Robust performance}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 0.8
[[file:figs/detail_control_cf_robust_perf.png]]
#+end_subfigure
#+end_figure
* Conclusion
:PROPERTIES:
:UNNUMBERED: t
:END:
In this section, a control architecture in which complementary filters are used for closed-loop shaping has been presented.
This approach differs from traditional open-loop shaping in that no controller is manually designed; rather, appropriate complementary filters are selected to achieve the desired closed-loop behavior.
The method shares conceptual similarities with mixed-sensitivity $\mathcal{H}_{\infty}\text{-synthesis}$, as both approaches aim to shape closed-loop transfer functions, but with notable distinctions in implementation and complexity.
While $\mathcal{H}_{\infty}\text{-synthesis}$ offers greater flexibility and can be readily generalized to MIMO plants, the presented approach provides a simpler alternative that requires minimal design effort.
Implementation only necessitates extracting a model of the plant and selecting appropriate analytical complementary filters, making it particularly interesting for applications where simplicity and intuitive parameter tuning are valued.
Due to time constraints, an extensive literature review comparing this approach with similar existing architectures, such as Internal Model Control [[cite:&saxena12_advan_inter_model_contr_techn]], was not conducted.
Consequently, it remains unclear whether the proposed architecture offers significant advantages over existing methods in the literature.
The control architecture has been presented for SISO systems, but can be applied to MIMO systems when sufficient decoupling is achieved.
It will be experimentally validated with the NASS during the experimental phase.
* Bibliography :ignore:
\bibliography{dehaeze26_control}
* Footnotes
[fn:1]$n$ corresponds to the number of degrees of freedom, here $n = 3$

BIN
paper/dehaeze26_control.pdf Normal file

Binary file not shown.

409
paper/dehaeze26_control.tex Normal file
View File

@@ -0,0 +1,409 @@
% Created 2025-11-27 Thu 21:31
% Intended LaTeX compiler: pdflatex
\documentclass[lettersize,journal]{IEEEtran}
\input{preamble.tex}
\input{preamble_extra.tex}
\author{ \IEEEauthorblockN{Dehaeze Thomas} \IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\ Grenoble, France\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ thomas.dehaeze@esrf.fr }\and \IEEEauthorblockN{Verma Mohit} \IEEEauthorblockA{\textit{BEAMS Department}\\ \textit{Free University of Brussels}, Belgium\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ mohit.verma@ulb.ac.be }\and \IEEEauthorblockN{Collette Christophe} \IEEEauthorblockA{\textit{BEAMS Department}\\ \textit{Free University of Brussels}, Belgium\\ \textit{Precision Mechatronics Laboratory} \\ \textit{University of Liege}, Belgium \\ ccollett@ulb.ac.be }}
\title{Closed-Loop Shaping using Complementary Filters}
\begin{document}
\maketitle
\begin{abstract}
This document describes the most common article elements and how to use the IEEEtran class with \LaTeX \ to produce files that are suitable for submission to the IEEE. IEEEtran can produce conference, journal, and technical note (correspondence) papers with a suitable choice of class options.
\end{abstract}
\begin{IEEEkeywords}
Article submission, IEEE, IEEEtran, journal, \LaTeX, paper, template, typesetting.
\end{IEEEkeywords}
Once the system is properly decoupled using one of the approaches described in Section \ref{sec:detail_control_decoupling}, SISO controllers can be individually tuned for each decoupled ``directions''.
Several ways to design a controller to obtain a given performance while ensuring good robustness properties can be implemented.
In some cases ``fixed'' controller structures are utilized, such as PI and PID controllers, whose parameters are manually tuned \cite{furutani04_nanom_cuttin_machin_using_stewar,du14_piezo_actuat_high_precis_flexib,yang19_dynam_model_decoup_contr_flexib}.
Another popular method is Open-Loop shaping, which was used during the conceptual phase.
Open-loop shaping involves tuning the controller through a series of ``standard'' filters (leads, lags, notches, low-pass filters, \ldots{}) to shape the open-loop transfer function \(G(s)K(s)\) according to desired specifications, including bandwidth, gain and phase margins \cite[, chapt. 4.4.7]{schmidt20_desig_high_perfor_mechat_third_revis_edition}.
Open-Loop shaping is very popular because the open-loop transfer function is a linear function of the controller, making it relatively straightforward to tune the controller to achieve desired open-loop characteristics.
Another key advantage is that controllers can be tuned directly from measured frequency response functions of the plant without requiring an explicit model.
However, the behavior (i.e. performance) of a feedback system is a function of closed-loop transfer functions.
Specifications can therefore be expressed in terms of the magnitude of closed-loop transfer functions, such as the sensitivity, plant sensitivity, and complementary sensitivity transfer functions \cite[, chapt. 3]{skogestad07_multiv_feedb_contr}.
With open-loop shaping, closed-loop transfer functions are changed only indirectly, which may make it difficult to directly address the specifications that are in terms of the closed-loop transfer functions.
In order to synthesize a controller that directly shapes the closed-loop transfer functions (and therefore the performance metric), \(\mathcal{H}_\infty\text{-synthesis}\) may be used \cite{skogestad07_multiv_feedb_contr}.
This approach requires a good model of the plant and expertise in selecting weighting functions that will define the wanted shape of different closed-loop transfer functions \cite{bibel92_guidel_h}.
\(\mathcal{H}_{\infty}\text{-synthesis}\) has been applied for the Stewart platform \cite{jiao18_dynam_model_exper_analy_stewar}, yet when benchmarked against more basic decentralized controllers, the performance gains proved small \cite{thayer02_six_axis_vibrat_isolat_system,hauge04_sensor_contr_space_based_six}.
In this section, an alternative controller synthesis scheme is proposed in which complementary filters are used for directly shaping the closed-loop transfer functions (i.e., directly addressing the closed-loop performances).
In Section \ref{ssec:detail_control_cf_control_arch}, the proposed control architecture is presented.
In Section \ref{ssec:detail_control_cf_trans_perf}, typical performance requirements are translated into the shape of the complementary filters.
The design of the complementary filters is briefly discussed in Section \ref{ssec:detail_control_cf_analytical_complementary_filters}, and analytical formulas are proposed such that it is possible to change the closed-loop behavior of the system in real time.
Finally, in Section \ref{ssec:detail_control_cf_simulations}, a numerical example is used to show how the proposed control architecture can be implemented in practice.
\section{Control Architecture}
\label{ssec:detail_control_cf_control_arch}
\subsubsection{Virtual Sensor Fusion}
The idea of using complementary filters in the control architecture originates from sensor fusion techniques \cite{collette15_sensor_fusion_method_high_perfor}, where two sensors are combined using complementary filters.
Building upon this concept, ``virtual sensor fusion'' \cite{verma20_virtual_sensor_fusion_high_precis_contr} replaces one physical sensor with a model \(G\) of the plant.
The corresponding control architecture is illustrated in Figure \ref{fig:detail_control_cf_arch}, where \(G^\prime\) represents the physical plant to be controlled, \(G\) is a model of the plant, \(k\) is the controller, and \(H_L\) and \(H_H\) are complementary filters satisfying \(H_L(s) + H_H(s) = 1\).
In this arrangement, the physical plant is controlled at low frequencies, while the plant model is utilized at high frequencies to enhance robustness.
\begin{figure}[htbp]
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/detail_control_cf_arch.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_arch}Virtual Sensor Fusion}
\end{subfigure}
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.9]{figs/detail_control_cf_arch_eq.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_arch_eq}Equivalent Architecture}
\end{subfigure}
\caption{\label{fig:detail_control_cf_arch_and_eq}Control architecture for virtual sensor fusion (\subref{fig:detail_control_cf_arch}). An equivalent architecture is shown in (\subref{fig:detail_control_cf_arch_eq}). The signals are the reference signal \(r\), the output perturbation \(d_y\), the measurement noise \(n\) and the control input \(u\).}
\end{figure}
Although the control architecture shown in Figure \ref{fig:detail_control_cf_arch} appears to be a multi-loop system, it should be noted that no non-linear saturation-type elements are present in the inner loop (containing \(k\), \(G\), and \(H_H\), all numerically implemented).
Consequently, this structure is mathematically equivalent to the single-loop architecture illustrated in Figure \ref{fig:detail_control_cf_arch_eq}.
\subsubsection{Asymptotic behavior}
When considering the extreme case of very high values for \(k\), the effective controller \(K(s)\) converges to the inverse of the plant model multiplied by the inverse of the high-pass filter, as expressed in \eqref{eq:detail_control_cf_high_k}.
\begin{equation}\label{eq:detail_control_cf_high_k}
\lim_{k\to\infty} K(s) = \lim_{k\to\infty} \frac{k}{1+H_H(s) G(s) k} = \big( H_H(s) G(s) \big)^{-1}
\end{equation}
If the resulting \(K\) is improper, a low-pass filter with sufficiently high corner frequency can be added to ensure its causal realization.
Furthermore, for \(K\) to be stable, both \(G\) and \(H_H\) must be minimum phase transfer functions.
With these assumptions, the resulting control architecture is illustrated in Figure \ref{fig:detail_control_cf_arch_class}, where the complementary filters \(H_L\) and \(H_H\) remain the only tuning parameters.
The dynamics of this closed-loop system are described by equations \eqref{eq:detail_control_cf_cl_system_y} and \eqref{eq:detail_control_cf_cl_system_y}.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/detail_control_cf_arch_class.png}
\caption{\label{fig:detail_control_cf_arch_class}Equivalent classical feedback control architecture}
\end{figure}
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf}
\begin{align}
y &= \frac{ H_H dy + G^{\prime} G^{-1} r - G^{\prime} G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_y}\\
u &= \frac{ -G^{-1} H_L dy + G^{-1} r - G^{-1} H_L n }{H_H + G^\prime G^{-1} H_L} \label{eq:detail_control_cf_cl_system_u}
\end{align}
\end{subequations}
At frequencies where the model accurately represents the physical plant (\(G^{-1} G^{\prime} \approx 1\)), the denominator simplifies to \(H_H + G^\prime G^{-1} H_L \approx H_H + H_L = 1\), and the closed-loop transfer functions are then described by equations \eqref{eq:detail_control_cf_cl_performance_y} and \eqref{eq:detail_control_cf_cl_performance_u}.
\begin{subequations}\label{eq:detail_control_cf_sf_cl_tf_K_inf_perfect}
\begin{alignat}{5}
y &= H_H dy &&+ r &&- H_L n \label{eq:detail_control_cf_cl_performance_y} \\
u &= -G^{-1} H_L dy &&+ G^{-1} r &&- G^{-1} H_L n \label{eq:detail_control_cf_cl_performance_u}
\end{alignat}
\end{subequations}
The sensitivity transfer function equals the high-pass filter \(S = \frac{y}{dy} = H_H\), and the complementary sensitivity transfer function equals the low-pass filter \(T = \frac{y}{n} = H_L\).
Hence, when the plant model closely approximates the actual dynamics, the closed-loop transfer functions converge to the designed complementary filters, allowing direct translation of performance requirements into the design of the complementary.
\section{Translating the performance requirements into the shape of the complementary filters}
\label{ssec:detail_control_cf_trans_perf}
Performance specifications in a feedback system can usually be expressed as upper bounds on the magnitudes of closed-loop transfer functions such as the sensitivity and complementary sensitivity transfer functions \cite{bibel92_guidel_h}.
The design of a controller \(K(s)\) to obtain the desired shape of these closed-loop transfer functions is known as closed-loop shaping.
In the proposed control architecture, the closed-loop transfer functions \eqref{eq:detail_control_cf_sf_cl_tf_K_inf} are expressed in terms of the complementary filters \(H_L(s)\) and \(H_H(s)\) rather than directly through the controller \(K(s)\).
Therefore, performance requirements must be translated into constraints on the shape of these complementary filters.
\subsubsection{Nominal Stability (NS)}
A closed-loop system is stable when all its elements (here \(K\), \(G^\prime\), and \(H_L\)) are stable and the sensitivity function \(S = \frac{1}{1 + G^\prime K H_L}\) is stable.
For the nominal system (\(G^\prime = G\)), the sensitivity transfer function equals the high-pass filter: \(S(s) = H_H(s)\).
Nominal stability is therefore guaranteed when \(H_L\), \(H_H\), and \(G\) are stable, and both \(G\) and \(H_H\) are minimum phase (ensuring \(K\) is stable).
Consequently, stable and minimum phase complementary filters must be employed.
\subsubsection{Nominal Performance (NP)}
Performance specifications can be formalized using weighting functions \(w_H\) and \(w_L\), where performance is achieved when \eqref{eq:detail_control_cf_weights} is satisfied.
The weighting functions define the maximum magnitude of the closed-loop transfer functions as a function of frequency, effectively determining their ``shape''.
\begin{subequations}\label{eq:detail_control_cf_weights}
\begin{align}
|w_H(j\omega) S(j\omega)| &\le 1 \quad \forall\omega\\
|w_L(j\omega) T(j\omega)| &\le 1 \quad \forall\omega
\end{align}
\end{subequations}
For the nominal system, \(S = H_H\) and \(T = H_L\), hence the performance specifications can be converted on the shape of the complementary filters \eqref{eq:detail_control_cf_nominal_performance}.
\begin{equation}\label{eq:detail_control_cf_nominal_performance}
\Aboxed{\text{NP} \Longleftrightarrow {\begin{cases*}
|w_H(j\omega) H_H(j\omega)| \le 1 & \forall\omega \\
|w_L(j\omega) H_L(j\omega)| \le 1 & \forall\omega
\end{cases*}}}
\end{equation}
For disturbance rejection, the magnitude of the sensitivity function \(|S(j\omega)| = |H_H(j\omega)|\) should be minimized, particularly at low frequencies where disturbances are usually most prominent.
Similarly, for noise attenuation, the magnitude of the complementary sensitivity function \(|T(j\omega)| = |H_L(j\omega)|\) should be minimized, especially at high frequencies where measurement noise typically dominates.
Classical stability margins (gain and phase margins) are also related to the maximum amplitude of the sensitivity transfer function.
Typically, maintaining \(|S|_{\infty} \le 2\) ensures a gain margin of at least 2 and a phase margin of at least \(\SI{29}{\degree}\).
Therefore, by carefully selecting the shape of the complementary filters, nominal performance specifications can be directly addressed in an intuitive manner.
\subsubsection{Robust Stability (RS)}
Robust stability refers to a control system's ability to maintain stability despite discrepancies between the actual system \(G^\prime\) and the model \(G\) used for controller design.
These discrepancies may arise from unmodeled dynamics or nonlinearities.
To represent these model-plant differences, input multiplicative uncertainty as illustrated in Figure \ref{fig:detail_control_cf_input_uncertainty} is employed.
The set of possible plants \(\Pi_i\) is described by \eqref{eq:detail_control_cf_multiplicative_uncertainty}, with the weighting function \(w_I\) selected such that all possible plants \(G^\prime\) are contained within the set \(\Pi_i\).
\begin{equation}\label{eq:detail_control_cf_multiplicative_uncertainty}
\Pi_i: \quad G^\prime(s) = G(s)\big(1 + w_I(s)\Delta_I(s)\big); \quad |\Delta_I(j\omega)| \le 1 \ \forall\omega
\end{equation}
\begin{figure}[htbp]
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_input_uncertainty.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_input_uncertainty}Input multiplicative uncertainty}
\end{subfigure}
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_nyquist_uncertainty.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_nyquist_uncertainty}Nyquist plot - Effect of multiplicative uncertainty}
\end{subfigure}
\caption{\label{fig:detail_control_cf_input_uncertainty_nyquist}Input multiplicative uncertainty to model the differences between the model and the physical plant (\subref{fig:detail_control_cf_input_uncertainty}). Effect of this uncertainty is displayed on the Nyquist plot (\subref{fig:detail_control_cf_nyquist_uncertainty})}
\end{figure}
When considering input multiplicative uncertainty, robust stability can be derived graphically from the Nyquist plot (illustrated in Figure \ref{fig:detail_control_cf_nyquist_uncertainty}), yielding to \eqref{eq:detail_control_cf_robust_stability_graphically}, as demonstrated in \cite[, chapt. 7.5.1]{skogestad07_multiv_feedb_contr}.
\begin{equation}\label{eq:detail_control_cf_robust_stability_graphically}
\text{RS} \Longleftrightarrow \left|w_I(j\omega) L(j\omega) \right| \le \left| 1 + L(j\omega) \right| \quad \forall\omega
\end{equation}
After algebraic manipulation, robust stability is guaranteed when the low-pass complementary filter \(H_L\) satisfies \eqref{eq:detail_control_cf_condition_robust_stability}.
\begin{equation}\label{eq:detail_control_cf_condition_robust_stability}
\boxed{\text{RS} \Longleftrightarrow |w_I(j\omega) H_L(j\omega)| \le 1 \quad \forall \omega}
\end{equation}
\subsubsection{Robust Performance (RP)}
Robust performance ensures that performance specifications \eqref{eq:detail_control_cf_weights} are met even when the plant dynamics fluctuates within specified bounds \eqref{eq:detail_control_cf_robust_perf_S}.
\begin{equation}\label{eq:detail_control_cf_robust_perf_S}
\text{RP} \Longleftrightarrow |w_H(j\omega) S(j\omega)| \le 1 \quad \forall G^\prime \in \Pi_I, \ \forall\omega
\end{equation}
Transforming this condition into constraints on the complementary filters yields:
\begin{equation}\label{eq:detail_control_cf_robust_performance}
\boxed{\text{RP} \Longleftrightarrow | w_H(j\omega) H_H(j\omega) | + | w_I(j\omega) H_L(j\omega) | \le 1, \ \forall\omega}
\end{equation}
The robust performance condition effectively combines both nominal performance \eqref{eq:detail_control_cf_nominal_performance} and robust stability conditions \eqref{eq:detail_control_cf_condition_robust_stability}.
If both NP and RS conditions are satisfied, robust performance will be achieved within a factor of 2 \cite[, chapt. 7.6]{skogestad07_multiv_feedb_contr}.
Therefore, for SISO systems, ensuring robust stability and nominal performance is typically sufficient.
\section{Complementary filter design}
\label{ssec:detail_control_cf_analytical_complementary_filters}
As proposed in Section \ref{sec:detail_control_sensor}, complementary filters can be shaped using standard \(\mathcal{H}_{\infty}\text{-synthesis}\) techniques.
This approach is particularly well-suited since performance requirements were expressed as upper bounds on the magnitude of the complementary filters.
Alternatively, analytical formulas for complementary filters may be employed.
For some applications, first-order complementary filters as shown in Equation \eqref{eq:detail_control_cf_1st_order} are sufficient.
\begin{subequations}\label{eq:detail_control_cf_1st_order}
\begin{align}
H_L(s) &= \frac{1}{1 + s/\omega_0} \\
H_H(s) &= \frac{s/\omega_0}{1 + s/\omega_0}
\end{align}
\end{subequations}
These filters can be transformed into the digital domain using the Bilinear transformation, resulting in the digital filter representations shown in Equation \eqref{eq:detail_control_cf_1st_order_z}.
\begin{subequations}\label{eq:detail_control_cf_1st_order_z}
\begin{align}
H_L(z^{-1}) &= \frac{T_s \omega_0 + T_s \omega_0 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}} \\
H_H(z^{-1}) &= \frac{2 - 2 z^{-1}}{T_s \omega_0 + 2 + (T_s \omega_0 - 2) z^{-1}}
\end{align}
\end{subequations}
A significant advantage of using analytical formulas for complementary filters is that key parameters such as \(\omega_0\) can be tuned in real-time, as illustrated in Figure \ref{fig:detail_control_cf_arch_tunable_params}.
This real-time tunability allows rapid testing of different control bandwidths to evaluate performance and robustness characteristics.
\begin{figure}[htbp]
\centering
\includegraphics[scale=1]{figs/detail_control_cf_arch_tunable_params.png}
\caption{\label{fig:detail_control_cf_arch_tunable_params}Implemented digital complementary filters with parameter \(\omega_0\) that can be changed in real time}
\end{figure}
For many practical applications, first order complementary filters are not sufficient.
Specifically, a slope of \(+2\) at low frequencies for the sensitivity transfer function (enabling accurate tracking of ramp inputs) and a slope of \(-2\) for the complementary sensitivity transfer function are often desired.
For these cases, the complementary filters analytical formula in Equation \eqref{eq:detail_control_cf_2nd_order} is proposed.
\begin{subequations}\label{eq:detail_control_cf_2nd_order}
\begin{align}
H_L(s) &= \frac{(1+\alpha) (\frac{s}{\omega_0})+1}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}\\
H_H(s) &= \frac{(\frac{s}{\omega_0})^2 \left((\frac{s}{\omega_0})+1+\alpha\right)}{\left((\frac{s}{\omega_0})+1\right) \left((\frac{s}{\omega_0})^2 + \alpha (\frac{s}{\omega_0}) + 1\right)}
\end{align}
\end{subequations}
The influence of parameters \(\alpha\) and \(\omega_0\) on the frequency response of these complementary filters is illustrated in Figure \ref{fig:detail_control_cf_analytical_effect}.
The parameter \(\alpha\) primarily affects the damping characteristics near the crossover frequency as well as high and low frequency magnitudes, while \(\omega_0\) determines the frequency at which the transition between high-pass and low-pass behavior occurs.
These filters can also be implemented in the digital domain with analytical formulas, preserving the ability to adjust \(\alpha\) and \(\omega_0\) in real-time.
\begin{figure}[htbp]
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_analytical_effect_alpha.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_analytical_effect_alpha}Effect of $\alpha$}
\end{subfigure}
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_analytical_effect_w0.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_analytical_effect_w0}Effect of $\omega_0$}
\end{subfigure}
\caption{\label{fig:detail_control_cf_analytical_effect}Shape of proposed analytical complementary filters. Effect of \(\alpha\) (\subref{fig:detail_control_cf_analytical_effect_alpha}) and \(\omega_0\) (\subref{fig:detail_control_cf_analytical_effect_w0}) are shown.}
\end{figure}
\section{Numerical Example}
\label{ssec:detail_control_cf_simulations}
To implement the proposed control architecture in practice, the following procedure is proposed:
\begin{enumerate}
\item Identify the plant to be controlled to obtain the plant model \(G\).
\item Design the weighting function \(w_I\) such that all possible plants \(G^\prime\) are contained within the uncertainty set \(\Pi_i\).
\item Translate performance requirements into upper bounds on the complementary filters as explained in Section \ref{ssec:detail_control_cf_trans_perf}.
\item Design the weighting functions \(w_H\) and \(w_L\) and generate the complementary filters using \(\mathcal{H}_{\infty}\text{-synthesis}\) as described in Section \ref{ssec:detail_control_sensor_hinf_method}.
If the synthesis fails to produce filters satisfying the defined upper bounds, either revise the requirements or develop a more accurate model \(G\) that will allow for a smaller \(w_I\).
For simpler cases, the analytical formulas for complementary filters presented in Section \ref{ssec:detail_control_cf_analytical_complementary_filters} can be employed.
\item If \(K(s) = H_H^{-1}(s) G^{-1}(s)\) is not proper, add low-pass filters with sufficiently high corner frequencies to ensure realizability.
\end{enumerate}
To evaluate this control architecture, a simple test model representative of many synchrotron positioning stages is utilized (Figure \ref{fig:detail_control_cf_test_model}).
In this model, a payload with mass \(m\) is positioned on top of a stage.
The objective is to accurately position the sample relative to the X-ray beam.
The relative position \(y\) between the payload and the X-ray is measured, which typically involves measuring the relative position between the focusing optics and the sample.
Various disturbance forces affect positioning stability, including stage vibrations \(d_w\) and direct forces applied to the sample \(d_F\) (such as cable forces).
The positioning stage itself is characterized by stiffness \(k\), internal damping \(c\), and a controllable force \(F\).
The model of the plant \(G(s)\) from actuator force \(F\) to displacement \(y\) is described by Equation \eqref{eq:detail_control_cf_test_plant_tf}.
\begin{equation}\label{eq:detail_control_cf_test_plant_tf}
G(s) = \frac{1}{m s^2 + c s + k}, \quad m = \SI{20}{\kg},\ k = 1\si{\N/\mu\m},\ c = 10^2\si{\N\per(\m\per\s)}
\end{equation}
The plant dynamics include uncertainties related to limited support compliance, unmodeled flexible dynamics and payload dynamics.
These uncertainties are represented using a multiplicative input uncertainty weight \eqref{eq:detail_control_cf_test_plant_uncertainty}, which specifies the magnitude of uncertainty as a function of frequency.
\begin{equation}\label{eq:detail_control_cf_test_plant_uncertainty}
w_I(s) = 10 \cdot \frac{(s+100)^2}{(s+1000)^2}
\end{equation}
Figure \ref{fig:detail_control_cf_bode_plot_mech_sys} illustrates both the nominal plant dynamics and the complete set of possible plants \(\Pi_i\) encompassed by the uncertainty model.
\begin{figure}[htbp]
\begin{subfigure}{0.3\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_test_model.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_test_model}Test model}
\end{subfigure}
\begin{subfigure}{0.66\textwidth}
\begin{center}
\includegraphics[scale=1,scale=1]{figs/detail_control_cf_bode_plot_mech_sys.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_bode_plot_mech_sys}Bode plot of $G(s)$ and associated uncertainty set}
\end{subfigure}
\caption{\label{fig:detail_control_cf_test_model_plant}Schematic of the test system (\subref{fig:detail_control_cf_test_model}). Bode plot of the transfer function \(G(s)\) from \(F\) to \(y\) and the associated uncertainty set (\subref{fig:detail_control_cf_bode_plot_mech_sys}).}
\end{figure}
\subsubsection{Requirements and choice of complementary filters}
As discussed in Section \ref{ssec:detail_control_cf_trans_perf}, nominal performance requirements can be expressed as upper bounds on the shape of the complementary filters.
For this example, the requirements are:
\begin{itemize}
\item track ramp inputs (i.e. constant velocity scans) with zero steady-state error: a \(+2\) slope at low frequencies for the magnitude of the sensitivity function \(|S(j\omega)|\) is required
\item filtering of measurement noise above \(\SI{300}{Hz}\), where sensor noise is significant (requiring a filtering factor of approximately 100 above this frequency)
\item maximizing disturbance rejection
\end{itemize}
Additionally, robust stability must be ensured, requiring the closed-loop system to remain stable despite the dynamic uncertainties modeled by \(w_I\).
This condition is satisfied when the magnitude of the low-pass complementary filter \(|H_L(j\omega)|\) remains below the inverse of the uncertainty weight magnitude \(|w_I(j\omega)|\), as expressed in Equation \eqref{eq:detail_control_cf_condition_robust_stability}.
Robust performance is achieved when both nominal performance and robust stability conditions are simultaneously satisfied.
All requirements imposed on \(H_L\) and \(H_H\) are visualized in Figure \ref{fig:detail_control_cf_specs_S_T}.
While \(\mathcal{H}_\infty\text{-synthesis}\) could be employed to design the complementary filters, analytical formulas were used for this relatively simple example.
The second-order complementary filters from Equation \eqref{eq:detail_control_cf_2nd_order} were selected with parameters \(\alpha = 1\) and \(\omega_0 = 2\pi \cdot 20\,\text{Hz}\).
There magnitudes are displayed in Figure \ref{fig:detail_control_cf_specs_S_T}, confirming that these complementary filters are fulfilling the specifications.
\begin{figure}[htbp]
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_specs_S_T.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_specs_S_T}Specifications and complementary filters}
\end{subfigure}
\begin{subfigure}{0.48\textwidth}
\begin{center}
\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_control_cf_bode_Kfb.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_bode_Kfb}Bode plot of $K(s) \cdot H_L(s)$}
\end{subfigure}
\caption{\label{fig:detail_control_cf_specs_S_T_obtained_filters}Performance requirement and complementary filters used (\subref{fig:detail_control_cf_specs_S_T}). Obtained controller from the complementary filters and the plant inverse is shown in (\subref{fig:detail_control_cf_bode_Kfb}).}
\end{figure}
\subsubsection{Controller analysis}
The controller to be implemented takes the form \(K(s) = \tilde{G}^{-1}(s) H_H^{-1}(s)\), where \(\tilde{G}^{-1}(s)\) represents the plant inverse, which must be both stable and proper.
To ensure properness, low-pass filters with high corner frequencies are added as shown in Equation \eqref{eq:detail_control_cf_test_plant_inverse}.
\begin{equation}\label{eq:detail_control_cf_test_plant_inverse}
\tilde{G}^{-1}(s) = \frac{m s^2 + c s + k}{1 + \frac{s}{2\pi \cdot 1000} + \left( \frac{s}{2\pi \cdot 1000} \right)^2}
\end{equation}
The Bode plot of the controller multiplied by the complementary low-pass filter, \(K(s) \cdot H_L(s)\), is presented in Figure \ref{fig:detail_control_cf_bode_Kfb}.
The frequency response reveals several important characteristics:
\begin{itemize}
\item The presence of two integrators at low frequencies, enabling accurate tracking of ramp inputs
\item A notch at the plant resonance frequency (arising from the plant inverse)
\item A lead component near the control bandwidth of approximately 20 Hz, enhancing stability margins
\end{itemize}
\subsubsection{Robustness and Performance analysis}
Robust stability is assessed using the Nyquist plot shown in Figure \ref{fig:detail_control_cf_nyquist_robustness}.
Even when considering all possible plants within the uncertainty set, the Nyquist plot remains sufficiently distant from the critical point \((-1,0)\), indicating robust stability with adequate margins.
Performance is evaluated by examining the closed-loop sensitivity and complementary sensitivity transfer functions, as illustrated in Figure \ref{fig:detail_control_cf_robust_perf}.
It is shown that the sensitivity transfer function achieves the desired \(+2\) slope at low frequencies and that the complementary sensitivity transfer function nominally provides the wanted noise filtering.
\begin{figure}[htbp]
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.8]{figs/detail_control_cf_nyquist_robustness.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_nyquist_robustness}Robust Stability}
\end{subfigure}
\begin{subfigure}{0.49\textwidth}
\begin{center}
\includegraphics[scale=1,scale=0.8]{figs/detail_control_cf_robust_perf.png}
\end{center}
\subcaption{\label{fig:detail_control_cf_robust_perf}Nominal and Robust performance}
\end{subfigure}
\caption{\label{fig:detail_control_cf_simulation_results}Validation of Robust stability with the Nyquist plot (\subref{fig:detail_control_cf_nyquist_robustness}) and validation of the nominal and robust performance with the magnitude of the closed-loop transfer functions (\subref{fig:detail_control_cf_robust_perf})}
\end{figure}
\section*{Conclusion}
In this section, a control architecture in which complementary filters are used for closed-loop shaping has been presented.
This approach differs from traditional open-loop shaping in that no controller is manually designed; rather, appropriate complementary filters are selected to achieve the desired closed-loop behavior.
The method shares conceptual similarities with mixed-sensitivity \(\mathcal{H}_{\infty}\text{-synthesis}\), as both approaches aim to shape closed-loop transfer functions, but with notable distinctions in implementation and complexity.
While \(\mathcal{H}_{\infty}\text{-synthesis}\) offers greater flexibility and can be readily generalized to MIMO plants, the presented approach provides a simpler alternative that requires minimal design effort.
Implementation only necessitates extracting a model of the plant and selecting appropriate analytical complementary filters, making it particularly interesting for applications where simplicity and intuitive parameter tuning are valued.
Due to time constraints, an extensive literature review comparing this approach with similar existing architectures, such as Internal Model Control \cite{saxena12_advan_inter_model_contr_techn}, was not conducted.
Consequently, it remains unclear whether the proposed architecture offers significant advantages over existing methods in the literature.
The control architecture has been presented for SISO systems, but can be applied to MIMO systems when sufficient decoupling is achieved.
It will be experimentally validated with the NASS during the experimental phase.
\bibliography{dehaeze26_control}
\end{document}

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="201.584pt" height="127.565pt" viewBox="0 0 201.584 127.565">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 7.265625 -0.875 C 7.265625 -0.9375 7.265625 -1.046875 7.140625 -1.046875 C 7.03125 -1.046875 7.03125 -0.953125 7.015625 -0.890625 C 6.953125 -0.171875 6.609375 0 6.359375 0 C 5.875 0 5.796875 -0.5 5.65625 -1.421875 L 5.53125 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.28125 -3.609375 6.046875 -4.21875 6.046875 -4.984375 C 6.046875 -5.9375 4.921875 -6.78125 3.46875 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.46875 L 0.578125 -6.46875 C 1.34375 -6.46875 1.375 -6.359375 1.375 -6 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.890625 -0.03125 3.25 0 L 3.25 -0.3125 L 3 -0.3125 C 2.25 -0.3125 2.21875 -0.421875 2.21875 -0.78125 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.953125 C 4.65625 -2.59375 4.65625 -2.28125 4.65625 -1.625 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.484375 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.09375 0.21875 7.265625 -0.59375 7.265625 -0.875 Z M 5.03125 -4.984375 C 5.03125 -4.3125 4.796875 -3.5 3.328125 -3.5 L 2.21875 -3.5 L 2.21875 -6.078125 C 2.21875 -6.296875 2.21875 -6.421875 2.4375 -6.453125 C 2.546875 -6.46875 2.828125 -6.46875 3.03125 -6.46875 C 3.921875 -6.46875 5.03125 -6.421875 5.03125 -4.984375 Z M 5.03125 -4.984375 "/>
</g>
<g id="glyph-0-1">
<path d="M 6.796875 -4.484375 L 6.609375 -6.71875 L 0.546875 -6.71875 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.390625 C 3.140625 -6.34375 3.140625 -6.234375 3.140625 -6.015625 L 3.140625 -0.78125 C 3.140625 -0.453125 3.140625 -0.3125 2.09375 -0.3125 L 1.703125 -0.3125 L 1.703125 0 C 2.109375 -0.03125 3.109375 -0.03125 3.578125 -0.03125 C 4.03125 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.0625 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6.015625 C 4.015625 -6.21875 4.015625 -6.34375 4.203125 -6.390625 C 4.3125 -6.40625 4.578125 -6.40625 4.765625 -6.40625 C 6.265625 -6.40625 6.40625 -6.078125 6.546875 -4.484375 Z M 6.796875 -4.484375 "/>
</g>
<g id="glyph-0-2">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.90625 -1.28125 3.875 -1.234375 3.859375 -1.1875 C 3.578125 -0.265625 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.28125 -2.921875 3.546875 -2.921875 C 3.8125 -2.921875 4.015625 -3.078125 4.015625 -3.390625 C 4.015625 -4.0625 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
</g>
<g id="glyph-0-3">
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.6875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.625 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.59375 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.328125 -4.015625 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
</g>
<g id="glyph-0-4">
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.359375 4.53125 -3.65625 4.234375 -4.015625 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.453125 -4.390625 2 -3.953125 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.609375 2.484375 -4.171875 3.109375 -4.171875 C 3.734375 -4.171875 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.28125 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
</g>
<g id="glyph-0-6">
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.71875 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.953125 -4.140625 2.765625 -4.03125 2.765625 -3.765625 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.46875 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
</g>
<g id="glyph-0-7">
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.46875 C 1.015625 -6.46875 1.09375 -6.40625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
</g>
<g id="glyph-0-8">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.90625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.515625 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.125 -0.984375 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.359375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
</g>
<g id="glyph-1-0">
<path d="M 8.09375 -2.984375 C 8.09375 -3.203125 7.890625 -3.203125 7.71875 -3.203125 L 4.53125 -3.203125 L 4.53125 -6.390625 C 4.53125 -6.5625 4.53125 -6.765625 4.328125 -6.765625 C 4.109375 -6.765625 4.109375 -6.578125 4.109375 -6.390625 L 4.109375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.109375 -2.78125 L 4.109375 0.390625 C 4.109375 0.5625 4.109375 0.765625 4.3125 0.765625 C 4.53125 0.765625 4.53125 0.578125 4.53125 0.390625 L 4.53125 -2.78125 L 7.71875 -2.78125 C 7.875 -2.78125 8.09375 -2.78125 8.09375 -2.984375 Z M 8.09375 -2.984375 "/>
</g>
<g id="glyph-2-0">
<path d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</g>
<g id="glyph-3-0">
<path d="M 4.859375 -1.421875 C 4.859375 -1.515625 4.765625 -1.515625 4.75 -1.515625 C 4.640625 -1.515625 4.640625 -1.484375 4.609375 -1.34375 C 4.40625 -0.609375 4.171875 -0.109375 3.734375 -0.109375 C 3.546875 -0.109375 3.421875 -0.21875 3.421875 -0.578125 C 3.421875 -0.75 3.46875 -0.96875 3.5 -1.125 C 3.546875 -1.296875 3.546875 -1.34375 3.546875 -1.4375 C 3.546875 -2.078125 2.921875 -2.375 2.078125 -2.484375 C 2.375 -2.65625 2.703125 -2.96875 2.921875 -3.21875 C 3.40625 -3.734375 3.859375 -4.171875 4.34375 -4.171875 C 4.40625 -4.171875 4.421875 -4.171875 4.4375 -4.15625 C 4.546875 -4.140625 4.5625 -4.140625 4.640625 -4.078125 C 4.65625 -4.0625 4.65625 -4.0625 4.6875 -4.03125 C 4.203125 -4.015625 4.125 -3.625 4.125 -3.5 C 4.125 -3.34375 4.234375 -3.15625 4.5 -3.15625 C 4.75 -3.15625 5.046875 -3.375 5.046875 -3.765625 C 5.046875 -4.0625 4.8125 -4.390625 4.359375 -4.390625 C 4.09375 -4.390625 3.625 -4.3125 2.921875 -3.515625 C 2.578125 -3.140625 2.1875 -2.734375 1.8125 -2.59375 L 2.84375 -6.78125 C 2.84375 -6.78125 2.84375 -6.890625 2.71875 -6.890625 C 2.484375 -6.890625 1.765625 -6.8125 1.515625 -6.78125 C 1.421875 -6.78125 1.3125 -6.765625 1.3125 -6.59375 C 1.3125 -6.46875 1.40625 -6.46875 1.5625 -6.46875 C 2.03125 -6.46875 2.046875 -6.40625 2.046875 -6.296875 L 2.03125 -6.109375 L 0.578125 -0.390625 C 0.546875 -0.25 0.546875 -0.234375 0.546875 -0.171875 C 0.546875 0.0625 0.75 0.109375 0.828125 0.109375 C 0.96875 0.109375 1.109375 0.015625 1.171875 -0.09375 C 1.21875 -0.1875 1.671875 -2.03125 1.71875 -2.265625 C 2.0625 -2.25 2.875 -2.078125 2.875 -1.421875 C 2.875 -1.359375 2.875 -1.3125 2.84375 -1.21875 C 2.828125 -1.09375 2.8125 -0.984375 2.8125 -0.875 C 2.8125 -0.28125 3.203125 0.109375 3.71875 0.109375 C 4.015625 0.109375 4.28125 -0.046875 4.5 -0.421875 C 4.75 -0.859375 4.859375 -1.421875 4.859375 -1.421875 Z M 4.859375 -1.421875 "/>
</g>
<g id="glyph-3-1">
<path d="M 7.15625 -2.59375 C 7.15625 -2.671875 7.109375 -2.703125 7.03125 -2.703125 C 6.796875 -2.703125 6.21875 -2.671875 5.984375 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.390625 -2.703125 4.390625 -2.515625 C 4.390625 -2.40625 4.46875 -2.40625 4.6875 -2.40625 C 4.6875 -2.40625 4.984375 -2.40625 5.203125 -2.375 C 5.46875 -2.34375 5.515625 -2.328125 5.515625 -2.1875 C 5.515625 -2.109375 5.40625 -1.65625 5.3125 -1.296875 C 5.03125 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.40625 -0.65625 1.40625 -2.171875 C 1.40625 -2.484375 1.5 -4.125 2.546875 -5.40625 C 3.078125 -6.078125 4.03125 -6.6875 5.015625 -6.6875 C 6.03125 -6.6875 6.625 -5.921875 6.625 -4.765625 C 6.625 -4.375 6.59375 -4.359375 6.59375 -4.265625 C 6.59375 -4.171875 6.703125 -4.171875 6.734375 -4.171875 C 6.859375 -4.171875 6.859375 -4.1875 6.921875 -4.359375 L 7.546875 -6.890625 C 7.546875 -6.921875 7.515625 -7 7.4375 -7 C 7.40625 -7 7.390625 -6.984375 7.28125 -6.875 L 6.59375 -6.109375 C 6.5 -6.25 6.046875 -7 4.9375 -7 C 2.734375 -7 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.09375 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.3125 -0.625 C 5.390625 -0.375 5.65625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.828125 -0.046875 5.828125 -0.046875 C 5.84375 -0.0625 5.9375 -0.453125 6 -0.65625 L 6.1875 -1.421875 C 6.21875 -1.59375 6.265625 -1.75 6.3125 -1.921875 C 6.421875 -2.375 6.421875 -2.390625 7 -2.40625 C 7.046875 -2.40625 7.15625 -2.40625 7.15625 -2.59375 Z M 7.15625 -2.59375 "/>
</g>
<g id="glyph-3-2">
<path d="M 7.125 -0.203125 C 7.125 -0.3125 7.03125 -0.3125 6.84375 -0.3125 C 6.484375 -0.3125 6.203125 -0.3125 6.203125 -0.484375 C 6.203125 -0.546875 6.21875 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.65625 -6.375 7.671875 -6.46875 8.40625 -6.46875 C 8.65625 -6.46875 8.734375 -6.46875 8.734375 -6.671875 C 8.734375 -6.78125 8.625 -6.78125 8.609375 -6.78125 L 7.328125 -6.75 L 6.046875 -6.78125 C 5.96875 -6.78125 5.859375 -6.78125 5.859375 -6.578125 C 5.859375 -6.46875 5.953125 -6.46875 6.140625 -6.46875 C 6.140625 -6.46875 6.34375 -6.46875 6.515625 -6.453125 C 6.703125 -6.421875 6.78125 -6.421875 6.78125 -6.296875 C 6.78125 -6.25 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.703125 -6.015625 C 3.796875 -6.375 3.828125 -6.46875 4.546875 -6.46875 C 4.796875 -6.46875 4.875 -6.46875 4.875 -6.671875 C 4.875 -6.78125 4.765625 -6.78125 4.75 -6.78125 L 3.46875 -6.75 L 2.1875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.28125 -6.46875 2.484375 -6.46875 2.65625 -6.453125 C 2.84375 -6.421875 2.921875 -6.421875 2.921875 -6.296875 C 2.921875 -6.25 2.921875 -6.21875 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.640625 -0.03125 L 6.28125 -0.015625 C 6.5 -0.015625 6.71875 0 6.921875 0 C 7 0 7.125 0 7.125 -0.203125 Z M 7.125 -0.203125 "/>
</g>
<g id="glyph-3-3">
<path d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</g>
<g id="glyph-3-4">
<path d="M 5.671875 -1.421875 C 5.671875 -1.515625 5.578125 -1.515625 5.546875 -1.515625 C 5.453125 -1.515625 5.453125 -1.484375 5.390625 -1.34375 C 5.203125 -0.671875 4.875 -0.109375 4.390625 -0.109375 C 4.21875 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.328125 -1.140625 C 4.515625 -1.671875 4.9375 -2.765625 4.9375 -3.328125 C 4.9375 -3.984375 4.5 -4.390625 3.796875 -4.390625 C 2.890625 -4.390625 2.40625 -3.75 2.25 -3.515625 C 2.1875 -4.078125 1.78125 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.5 -4.171875 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.296875 -3.265625 2.8125 -4.171875 3.765625 -4.171875 C 4.203125 -4.171875 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.8125 -1.59375 3.65625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.90625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.671875 -1.34375 5.671875 -1.421875 Z M 5.671875 -1.421875 "/>
</g>
<g id="glyph-3-5">
<path d="M 4.828125 -3.78125 C 4.859375 -3.921875 4.859375 -3.9375 4.859375 -4.015625 C 4.859375 -4.1875 4.71875 -4.28125 4.578125 -4.28125 C 4.46875 -4.28125 4.3125 -4.21875 4.234375 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.09375 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.40625 -0.796875 2.96875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.109375 1.078125 -1.53125 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.671875 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.875 0.015625 Z M 4.828125 -3.78125 "/>
</g>
<g id="glyph-3-6">
<path d="M 4.328125 -3.734375 C 4.328125 -4.09375 4.015625 -4.390625 3.5 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.0625 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.03125 C 2.1875 -3.15625 2.46875 -3.625 2.703125 -3.84375 C 2.78125 -3.90625 3.078125 -4.171875 3.5 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.5 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.734375 Z M 4.328125 -3.734375 "/>
</g>
<g id="glyph-3-7">
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.859375 -1.515625 4.828125 -1.515625 C 4.71875 -1.515625 4.71875 -1.484375 4.6875 -1.34375 C 4.515625 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.65625 -0.875 3.6875 -1.046875 L 5.125 -6.78125 C 5.125 -6.78125 5.125 -6.890625 4.984375 -6.890625 C 4.84375 -6.890625 3.90625 -6.796875 3.734375 -6.78125 C 3.65625 -6.765625 3.59375 -6.71875 3.59375 -6.59375 C 3.59375 -6.46875 3.6875 -6.46875 3.828125 -6.46875 C 4.3125 -6.46875 4.328125 -6.40625 4.328125 -6.296875 L 4.296875 -6.109375 L 3.703125 -3.75 C 3.515625 -4.125 3.234375 -4.390625 2.78125 -4.390625 C 1.625 -4.390625 0.390625 -2.921875 0.390625 -1.484375 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.921875 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.4375 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.8125 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.0625 -1.1875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.765625 1.640625 -3.21875 C 1.953125 -3.796875 2.40625 -4.171875 2.796875 -4.171875 C 3.4375 -4.171875 3.578125 -3.359375 3.578125 -3.296875 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
</g>
<g id="glyph-4-0">
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.890625 1.671875 -3.890625 C 1.390625 -3.890625 1.328125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.359375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
</g>
<g id="glyph-5-0">
<path d="M 5.546875 -0.140625 C 5.546875 -0.25 5.484375 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.1875 -0.25 5.0625 -0.265625 C 4.90625 -0.28125 4.90625 -0.296875 4.90625 -0.375 C 4.90625 -0.40625 4.921875 -0.484375 4.9375 -0.515625 L 5.84375 -4.1875 C 5.90625 -4.4375 5.921875 -4.5 6.4375 -4.5 C 6.59375 -4.5 6.671875 -4.5 6.671875 -4.65625 C 6.671875 -4.671875 6.65625 -4.75 6.5625 -4.75 C 6.359375 -4.75 5.859375 -4.71875 5.65625 -4.71875 C 5.53125 -4.71875 5.296875 -4.71875 5.171875 -4.734375 C 5.03125 -4.734375 4.875 -4.75 4.734375 -4.75 C 4.6875 -4.75 4.59375 -4.75 4.59375 -4.59375 C 4.59375 -4.5 4.671875 -4.5 4.8125 -4.5 C 4.8125 -4.5 4.953125 -4.5 5.078125 -4.484375 C 5.21875 -4.46875 5.234375 -4.453125 5.234375 -4.390625 C 5.234375 -4.390625 5.234375 -4.34375 5.203125 -4.234375 L 4.796875 -2.59375 L 2.46875 -2.59375 L 2.875 -4.203125 C 2.9375 -4.4375 2.953125 -4.5 3.484375 -4.5 C 3.609375 -4.5 3.6875 -4.5 3.6875 -4.65625 C 3.6875 -4.671875 3.671875 -4.75 3.578125 -4.75 C 3.375 -4.75 2.875 -4.71875 2.671875 -4.71875 C 2.546875 -4.71875 2.3125 -4.71875 2.1875 -4.734375 C 2.046875 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.25 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.5 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.5 -0.25 2.34375 -0.25 C 2.21875 -0.25 2.203125 -0.25 2.078125 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.953125 -0.515625 L 2.40625 -2.34375 L 4.734375 -2.34375 L 4.28125 -0.546875 C 4.234375 -0.3125 4.21875 -0.25 3.671875 -0.25 C 3.546875 -0.25 3.46875 -0.25 3.46875 -0.109375 C 3.46875 -0.03125 3.515625 0 3.578125 0 C 3.78125 0 4.28125 -0.03125 4.484375 -0.03125 C 4.59375 -0.03125 4.84375 -0.03125 4.953125 -0.015625 C 5.09375 -0.015625 5.265625 0 5.40625 0 C 5.4375 0 5.546875 0 5.546875 -0.140625 Z M 5.546875 -0.140625 "/>
</g>
<g id="glyph-5-1">
<path d="M 5.015625 -1.734375 C 5.015625 -1.75 5 -1.828125 4.890625 -1.828125 C 4.8125 -1.828125 4.796875 -1.796875 4.75 -1.6875 C 4.484375 -1.015625 4.1875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.9375 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.953125 -4.5 3.59375 -4.5 C 3.796875 -4.5 3.875 -4.5 3.875 -4.65625 C 3.875 -4.65625 3.859375 -4.75 3.75 -4.75 C 3.59375 -4.75 3.40625 -4.734375 3.234375 -4.734375 L 2.6875 -4.71875 L 2.203125 -4.734375 C 2.0625 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.1875 0 C 4.359375 0 4.359375 0 4.421875 -0.140625 C 4.484375 -0.328125 5.015625 -1.671875 5.015625 -1.734375 Z M 5.015625 -1.734375 "/>
</g>
<g id="glyph-5-2">
<path d="M 6.703125 -1 C 6.703125 -1.078125 6.625 -1.078125 6.59375 -1.078125 C 6.5 -1.078125 6.5 -1.046875 6.46875 -0.96875 C 6.3125 -0.40625 6 -0.125 5.734375 -0.125 C 5.578125 -0.125 5.5625 -0.21875 5.5625 -0.375 C 5.5625 -0.53125 5.59375 -0.625 5.71875 -0.9375 C 5.796875 -1.140625 6.078125 -1.890625 6.078125 -2.28125 C 6.078125 -2.390625 6.078125 -2.671875 5.828125 -2.875 C 5.703125 -2.96875 5.5 -3.0625 5.1875 -3.0625 C 4.546875 -3.0625 4.171875 -2.65625 3.953125 -2.359375 C 3.890625 -2.953125 3.40625 -3.0625 3.046875 -3.0625 C 2.46875 -3.0625 2.078125 -2.71875 1.875 -2.4375 C 1.828125 -2.90625 1.40625 -3.0625 1.125 -3.0625 C 0.828125 -3.0625 0.671875 -2.84375 0.578125 -2.6875 C 0.421875 -2.4375 0.328125 -2.03125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.59375 -2.125 C 0.703125 -2.53125 0.828125 -2.875 1.109375 -2.875 C 1.28125 -2.875 1.328125 -2.71875 1.328125 -2.53125 C 1.328125 -2.40625 1.265625 -2.140625 1.21875 -1.953125 L 1.078125 -1.328125 L 0.84375 -0.4375 C 0.828125 -0.34375 0.78125 -0.171875 0.78125 -0.15625 C 0.78125 0 0.90625 0.0625 1.015625 0.0625 C 1.140625 0.0625 1.25 -0.015625 1.28125 -0.078125 C 1.328125 -0.140625 1.375 -0.375 1.40625 -0.515625 L 1.5625 -1.140625 C 1.609375 -1.296875 1.640625 -1.453125 1.6875 -1.609375 C 1.765625 -1.890625 1.765625 -1.953125 1.96875 -2.234375 C 2.171875 -2.515625 2.5 -2.875 3.015625 -2.875 C 3.421875 -2.875 3.421875 -2.515625 3.421875 -2.390625 C 3.421875 -2.21875 3.40625 -2.125 3.3125 -1.734375 L 3.015625 -0.5625 C 2.984375 -0.421875 2.921875 -0.1875 2.921875 -0.15625 C 2.921875 0 3.046875 0.0625 3.15625 0.0625 C 3.28125 0.0625 3.390625 -0.015625 3.421875 -0.078125 C 3.46875 -0.140625 3.515625 -0.375 3.546875 -0.515625 L 3.703125 -1.140625 C 3.75 -1.296875 3.796875 -1.453125 3.828125 -1.609375 C 3.90625 -1.90625 3.90625 -1.921875 4.046875 -2.140625 C 4.265625 -2.46875 4.609375 -2.875 5.15625 -2.875 C 5.546875 -2.875 5.5625 -2.546875 5.5625 -2.390625 C 5.5625 -1.96875 5.265625 -1.203125 5.15625 -0.90625 C 5.078125 -0.703125 5.046875 -0.640625 5.046875 -0.53125 C 5.046875 -0.15625 5.359375 0.0625 5.703125 0.0625 C 6.40625 0.0625 6.703125 -0.890625 6.703125 -1 Z M 6.703125 -1 "/>
</g>
<g id="glyph-5-3">
<path d="M 3.859375 -2.625 C 3.890625 -2.71875 3.890625 -2.734375 3.890625 -2.78125 C 3.890625 -2.90625 3.78125 -3 3.671875 -3 C 3.59375 -3 3.453125 -2.96875 3.375 -2.828125 C 3.359375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.125 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.890625 -2.046875 C 1.96875 -2.28125 2 -2.359375 2 -2.46875 C 2 -2.8125 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.953125 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.875 1.328125 -2.875 C 1.4375 -2.875 1.5 -2.796875 1.5 -2.625 C 1.5 -2.46875 1.4375 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 1 -1.125 1 -0.8125 C 1 -0.703125 1 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.265625 0.78125 C 2.078125 1 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 1 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1.015625 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.4375 1.421875 C 2.140625 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.625 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0.136719 14 L 118 14 L 118 127 L 0.136719 127 Z M 0.136719 14 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 52 92 L 95 92 L 95 127.132812 L 52 127.132812 Z M 52 92 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 157 92 L 200 92 L 200 127.132812 L 157 127.132812 Z M 157 92 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 67 97 L 101 97 L 101 127.132812 L 67 127.132812 Z M 67 97 "/>
</clipPath>
<clipPath id="clip-4">
<path clip-rule="nonzero" d="M 173 97 L 201.035156 97 L 201.035156 127.132812 L 173 127.132812 Z M 173 97 "/>
</clipPath>
<clipPath id="clip-5">
<path clip-rule="nonzero" d="M 180 15 L 201.035156 15 L 201.035156 47 L 180 47 Z M 180 15 "/>
</clipPath>
<clipPath id="clip-6">
<path clip-rule="nonzero" d="M 0.136719 15 L 32 15 L 32 47 L 0.136719 47 Z M 0.136719 15 "/>
</clipPath>
<clipPath id="clip-7">
<path clip-rule="nonzero" d="M 100 97 L 133 97 L 133 127.132812 L 100 127.132812 Z M 100 97 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.128906 126.136719 L 116.660156 126.136719 L 116.660156 14.949219 L 1.128906 14.949219 Z M 1.128906 126.136719 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -25.132948 -95.654848 L 90.792267 -95.654848 L 90.792267 15.911804 L -25.132948 15.911804 Z M -25.132948 -95.654848 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="29.839948" y="10.647691"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="36.32441" y="10.647691"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="46.80122" y="10.647691"/>
<use xlink:href="#glyph-0-3" x="51.214546" y="10.647691"/>
<use xlink:href="#glyph-0-4" x="56.178917" y="10.647691"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-5" x="61.417322" y="10.647691"/>
<use xlink:href="#glyph-0-6" x="65.27861" y="10.647691"/>
<use xlink:href="#glyph-0-3" x="69.167698" y="10.647691"/>
<use xlink:href="#glyph-0-7" x="74.13207" y="10.647691"/>
<use xlink:href="#glyph-0-7" x="76.890274" y="10.647691"/>
<use xlink:href="#glyph-0-8" x="79.648479" y="10.647691"/>
<use xlink:href="#glyph-0-6" x="84.061805" y="10.647691"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972254 -0.00165186 C 6.972254 3.851286 3.852276 6.975183 -0.000662015 6.975183 C -3.84968 6.975183 -6.973578 3.851286 -6.973578 -0.00165186 C -6.973578 -3.85067 -3.84968 -6.974568 -0.000662015 -6.974568 C 3.852276 -6.974568 6.972254 -3.85067 6.972254 -0.00165186 Z M 6.972254 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="21.85418" y="33.714034"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="16.468545" y="45.534725"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 15.975507 -8.5032 L 38.654141 -8.5032 L 38.654141 8.503816 L 15.975507 8.503816 Z M 15.975507 -8.5032 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="50.657958" y="34.255189"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 102.013997 -8.5032 L 124.688712 -8.5032 L 124.688712 8.503816 L 102.013997 8.503816 Z M 102.013997 -8.5032 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="133.845287" y="34.53922"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="141.651667" y="30.936506"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.641716 -0.00165186 C 147.641716 3.851286 144.517819 6.975183 140.664881 6.975183 C 136.815863 6.975183 133.691965 3.851286 133.691965 -0.00165186 C 133.691965 -3.85067 136.815863 -6.974568 140.664881 -6.974568 C 144.517819 -6.974568 147.641716 -3.85067 147.641716 -0.00165186 Z M 147.641716 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="162.041139" y="33.714034"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.318077 -34.513469 L 58.992792 -34.513469 L 58.992792 -17.506453 L 36.318077 -17.506453 Z M 36.318077 -34.513469 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="69.766797" y="60.120986"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.318077 -63.859293 L 58.992792 -63.859293 L 58.992792 -46.848357 L 36.318077 -46.848357 Z M 36.318077 -63.859293 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="65.778397" y="88.619804"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0" x="74.031255" y="90.108727"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 80.621094 113.195312 C 80.621094 109.355469 77.507812 106.242188 73.671875 106.242188 C 69.832031 106.242188 66.71875 109.355469 66.71875 113.195312 C 66.71875 117.03125 69.832031 120.144531 73.671875 120.144531 C 77.507812 120.144531 80.621094 117.03125 80.621094 113.195312 Z M 80.621094 113.195312 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 54.63031 -82.669311 C 54.63031 -78.816374 51.506413 -75.692476 47.657395 -75.692476 C 43.804457 -75.692476 40.680559 -78.816374 40.680559 -82.669311 C 40.680559 -86.51833 43.804457 -89.642227 47.657395 -89.642227 C 51.506413 -89.642227 54.63031 -86.51833 54.63031 -82.669311 Z M 54.63031 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="69.347228" y="116.100096"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 63.633564 -91.17086 L 86.308279 -91.17086 L 86.308279 -74.163844 L 63.633564 -74.163844 Z M 63.633564 -91.17086 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="93.793864" y="115.840979"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-1" x="102.046721" y="117.330899"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 185.914062 113.195312 C 185.914062 109.355469 182.804688 106.242188 178.964844 106.242188 C 175.128906 106.242188 172.015625 109.355469 172.015625 113.195312 C 172.015625 117.03125 175.128906 120.144531 178.964844 120.144531 C 182.804688 120.144531 185.914062 117.03125 185.914062 113.195312 Z M 185.914062 113.195312 "/>
<g clip-path="url(#clip-2)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 160.282331 -82.669311 C 160.282331 -78.816374 157.162353 -75.692476 153.309415 -75.692476 C 149.460397 -75.692476 146.336499 -78.816374 146.336499 -82.669311 C 146.336499 -86.51833 149.460397 -89.642227 153.309415 -89.642227 C 157.162353 -89.642227 160.282331 -86.51833 160.282331 -82.669311 Z M 160.282331 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="174.641172" y="116.100096"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972254 -0.00165186 L 10.844789 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052887 -0.00165186 L 1.608094 1.683763 L 3.085772 -0.00165186 L 1.608094 -1.683148 Z M 6.052887 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 34.155183, 30.806948)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 39.151927 -0.00165186 L 96.87936 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054697 -0.00165186 L 1.609904 1.683763 L 3.087582 -0.00165186 L 1.609904 -1.683148 Z M 6.054697 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 119.899473, 30.806948)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-3" x="117.855812" y="27.001923"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -0.00165186 L 47.657395 -12.375736 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053623 0.00145466 L 1.608831 1.68295 L 3.086509 0.00145466 L 1.608831 -1.683961 Z M 6.053623 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 40.310699)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 75.65625 30.808594 C 75.65625 29.710938 74.765625 28.820312 73.671875 28.820312 C 72.574219 28.820312 71.683594 29.710938 71.683594 30.808594 C 71.683594 31.902344 72.574219 32.792969 73.671875 32.792969 C 74.765625 32.792969 75.65625 31.902344 75.65625 30.808594 Z M 75.65625 30.808594 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -35.011255 L 47.657395 -41.71764 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052448 0.00145466 L 1.607655 1.68295 L 3.089252 0.00145466 L 1.607655 -1.683961 Z M 6.052448 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 69.554059)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.657395 -64.357079 L 47.657395 -71.059544 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055211 0.00145466 L 1.610418 1.68295 L 3.088096 0.00145466 L 1.610418 -1.683961 Z M 6.055211 0.00145466 " transform="matrix(0, 0.996602, 0.996602, 0, 73.670425, 98.797398)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 63.135778 -82.669311 L 59.263243 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 82.035156 113.195312 L 86.464844 114.871094 L 84.992188 113.195312 L 86.464844 111.515625 Z M 82.035156 113.195312 "/>
<g clip-path="url(#clip-3)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052735 0.00102149 L 1.607942 1.682517 L 3.08562 0.00102149 L 1.607942 -1.684394 Z M 6.052735 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 88.067321, 113.194294)"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 40.680559 -82.669311 L -0.000662015 -82.669311 L -0.000662015 -11.6075 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052518 0.000662015 L 1.607725 1.682158 L 3.089323 0.000662015 L 1.607725 -1.684753 Z M 6.052518 0.000662015 " transform="matrix(0, -0.996602, -0.996602, 0, 26.176441, 45.203824)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 125.190417 -0.00165186 L 129.059033 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052511 -0.00165186 L 1.607718 1.683763 L 3.089316 -0.00165186 L 1.607718 -1.683148 Z M 6.052511 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 151.968058, 30.806948)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 164.919183 -82.669311 L 174.455498 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 187.328125 113.195312 L 191.757812 114.871094 L 190.285156 113.195312 L 191.757812 111.515625 Z M 187.328125 113.195312 "/>
<g clip-path="url(#clip-4)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054905 0.00102149 L 1.610112 1.682517 L 3.08779 0.00102149 L 1.610112 -1.684394 Z M 6.054905 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 193.362452, 113.194294)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-4" x="190.273864" y="109.387984"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 147.641716 -0.00165186 L 169.822565 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 198.628906 30.808594 L 194.199219 29.128906 L 195.671875 30.808594 L 194.199219 32.484375 Z M 198.628906 30.808594 "/>
<g clip-path="url(#clip-5)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055163 -0.00165186 L 1.61037 1.683763 L 3.088048 -0.00165186 L 1.61037 -1.683148 Z M 6.055163 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 192.594322, 30.806948)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="191.009356" y="25.071506"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 153.309415 -0.00165186 L 153.309415 -71.059544 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055211 -0.0007148 L 1.610418 1.6847 L 3.088096 -0.0007148 L 1.610418 -1.682211 Z M 6.055211 -0.0007148 " transform="matrix(0, 0.996602, 0.996602, 0, 178.965556, 98.797398)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 180.953125 30.808594 C 180.953125 29.710938 180.0625 28.820312 178.964844 28.820312 C 177.867188 28.820312 176.980469 29.710938 176.980469 30.808594 C 176.980469 31.902344 177.867188 32.792969 178.964844 32.792969 C 180.0625 32.792969 180.953125 31.902344 180.953125 30.808594 Z M 180.953125 30.808594 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.60651 -0.00165186 L -21.146744 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 17.8125 30.808594 L 13.382812 29.128906 L 14.855469 30.808594 L 13.382812 32.484375 Z M 17.8125 30.808594 "/>
<g clip-path="url(#clip-6)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053508 -0.00165186 L 1.608715 1.683763 L 3.086393 -0.00165186 L 1.608715 -1.683148 Z M 6.053508 -0.00165186 " transform="matrix(0.996602, 0, 0, -0.996602, 11.779565, 30.806948)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-6" x="8.907329" y="27.001923"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 146.336499 -82.669311 L 91.442916 -82.669311 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 114.101562 113.195312 L 118.53125 114.871094 L 117.058594 113.195312 L 118.53125 111.515625 Z M 114.101562 113.195312 "/>
<g clip-path="url(#clip-7)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054902 0.00102149 L 1.610109 1.682517 L 3.087787 0.00102149 L 1.610109 -1.684394 Z M 6.054902 0.00102149 " transform="matrix(-0.996602, 0, 0, 0.996602, 120.135887, 113.194294)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="116.494454" y="107.457567"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-2" x="121.361856" y="108.94649"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 140.664881 11.608116 L 140.664881 21.14835 " transform="matrix(0.996602, 0, 0, -0.996602, 26.176441, 30.806948)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051912 -0.00164896 L 1.607119 1.683766 L 3.088717 -0.00164896 L 1.607119 -1.683145 Z M 6.051912 -0.00164896 " transform="matrix(0, 0.996602, 0.996602, 0, 166.364925, 16.410061)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-7" x="170.169421" y="20.433322"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-3" x="175.3368" y="21.922245"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="190.299pt" height="74.602pt" viewBox="0 0 190.299 74.602">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 7.25 -0.875 C 7.25 -0.9375 7.25 -1.046875 7.125 -1.046875 C 7.015625 -1.046875 7.015625 -0.953125 7 -0.875 C 6.9375 -0.171875 6.59375 0 6.34375 0 C 5.859375 0 5.78125 -0.5 5.640625 -1.421875 L 5.515625 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.265625 -3.609375 6.046875 -4.203125 6.046875 -4.984375 C 6.046875 -5.9375 4.90625 -6.765625 3.453125 -6.765625 L 0.34375 -6.765625 L 0.34375 -6.453125 L 0.578125 -6.453125 C 1.34375 -6.453125 1.359375 -6.34375 1.359375 -6 L 1.359375 -0.765625 C 1.359375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.875 -0.03125 3.234375 0 L 3.234375 -0.3125 L 3 -0.3125 C 2.234375 -0.3125 2.21875 -0.421875 2.21875 -0.765625 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.9375 C 4.65625 -2.578125 4.65625 -2.28125 4.65625 -1.609375 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.46875 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.078125 0.21875 7.25 -0.59375 7.25 -0.875 Z M 5.015625 -4.984375 C 5.015625 -4.296875 4.78125 -3.5 3.3125 -3.5 L 2.21875 -3.5 L 2.21875 -6.0625 C 2.21875 -6.296875 2.21875 -6.40625 2.4375 -6.4375 C 2.53125 -6.453125 2.828125 -6.453125 3.015625 -6.453125 C 3.90625 -6.453125 5.015625 -6.421875 5.015625 -4.984375 Z M 5.015625 -4.984375 "/>
</g>
<g id="glyph-0-1">
<path d="M 6.78125 -4.484375 L 6.59375 -6.703125 L 0.546875 -6.703125 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.375 C 3.125 -6.34375 3.125 -6.234375 3.125 -6 L 3.125 -0.78125 C 3.125 -0.453125 3.125 -0.3125 2.09375 -0.3125 L 1.6875 -0.3125 L 1.6875 0 C 2.09375 -0.03125 3.109375 -0.03125 3.5625 -0.03125 C 4.015625 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.046875 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6 C 4.015625 -6.203125 4.015625 -6.34375 4.1875 -6.375 C 4.296875 -6.40625 4.5625 -6.40625 4.75 -6.40625 C 6.25 -6.40625 6.40625 -6.078125 6.53125 -4.484375 Z M 6.78125 -4.484375 "/>
</g>
<g id="glyph-0-2">
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.890625 -1.28125 3.875 -1.234375 3.859375 -1.171875 C 3.5625 -0.25 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.1875 2.5 -4.1875 C 2.578125 -4.1875 3.203125 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.265625 -2.90625 3.546875 -2.90625 C 3.796875 -2.90625 4 -3.078125 4 -3.375 C 4 -4.046875 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.109375 -1.078125 4.109375 -1.171875 Z M 4.109375 -1.171875 "/>
</g>
<g id="glyph-0-3">
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.671875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.609375 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.578125 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.21875 2.46875 -4.21875 C 2.90625 -4.21875 3.328125 -4 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
</g>
<g id="glyph-0-4">
<path d="M 5.296875 0 L 5.296875 -0.3125 C 4.78125 -0.3125 4.53125 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.34375 4.53125 -3.65625 4.21875 -4.015625 C 4.078125 -4.1875 3.75 -4.375 3.1875 -4.375 C 2.453125 -4.375 1.984375 -3.953125 1.71875 -3.34375 L 1.71875 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.890625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -2.578125 C 1.765625 -3.609375 2.484375 -4.15625 3.109375 -4.15625 C 3.734375 -4.15625 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.1875 -0.03125 Z M 5.296875 0 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.28125 -1.234375 L 3.28125 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.125 -3.96875 L 3.125 -4.265625 L 1.71875 -4.265625 L 1.71875 -6.09375 L 1.46875 -6.09375 C 1.453125 -5.28125 1.15625 -4.21875 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.28125 -0.59375 3.28125 -1.234375 Z M 3.28125 -1.234375 "/>
</g>
<g id="glyph-0-6">
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.375 2.875 -4.375 C 2.15625 -4.375 1.796875 -3.71875 1.65625 -3.28125 L 1.65625 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.890625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.796875 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.765625 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.15625 2.875 -4.15625 C 2.9375 -4.15625 2.96875 -4.15625 2.984375 -4.15625 C 2.953125 -4.140625 2.75 -4.015625 2.75 -3.765625 C 2.75 -3.484375 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.453125 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
</g>
<g id="glyph-0-7">
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.875 L 0.328125 -6.765625 L 0.328125 -6.453125 C 1.015625 -6.453125 1.09375 -6.390625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
</g>
<g id="glyph-0-8">
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.890625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.5 -0.140625 2.609375 -0.140625 2.515625 -0.140625 C 2.015625 -0.140625 1.625 -0.4375 1.390625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.28125 L 3.859375 -2.28125 C 4.078125 -2.28125 4.109375 -2.28125 4.109375 -2.5 C 4.109375 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.171875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.109375 -0.984375 4.109375 -1.171875 Z M 3.453125 -2.5 L 1.109375 -2.5 C 1.171875 -3.96875 2 -4.21875 2.34375 -4.21875 C 3.359375 -4.21875 3.453125 -2.875 3.453125 -2.5 Z M 3.453125 -2.5 "/>
</g>
<g id="glyph-1-0">
<path d="M 8.0625 -2.984375 C 8.0625 -3.203125 7.875 -3.203125 7.6875 -3.203125 L 4.515625 -3.203125 L 4.515625 -6.375 C 4.515625 -6.546875 4.515625 -6.75 4.3125 -6.75 C 4.09375 -6.75 4.09375 -6.5625 4.09375 -6.375 L 4.09375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.09375 -2.78125 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.515625 0.765625 4.515625 0.578125 4.515625 0.390625 L 4.515625 -2.78125 L 7.6875 -2.78125 C 7.859375 -2.78125 8.0625 -2.78125 8.0625 -2.984375 Z M 8.0625 -2.984375 "/>
</g>
<g id="glyph-2-0">
<path d="M 6.875 -2.484375 C 6.875 -2.671875 6.6875 -2.671875 6.546875 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.546875 -2.28125 C 6.6875 -2.28125 6.875 -2.28125 6.875 -2.484375 Z M 6.875 -2.484375 "/>
</g>
<g id="glyph-3-0">
<path d="M 7.328125 -0.203125 C 7.328125 -0.3125 7.21875 -0.3125 7.125 -0.3125 C 6.71875 -0.3125 6.59375 -0.40625 6.453125 -0.75 L 5.046875 -4 C 5.03125 -4.03125 5 -4.109375 5 -4.140625 C 5 -4.140625 5.171875 -4.296875 5.28125 -4.375 L 7.015625 -5.703125 C 7.9375 -6.390625 8.328125 -6.421875 8.625 -6.453125 C 8.703125 -6.46875 8.8125 -6.484375 8.8125 -6.65625 C 8.8125 -6.703125 8.78125 -6.765625 8.703125 -6.765625 C 8.484375 -6.765625 8.234375 -6.734375 8 -6.734375 C 7.640625 -6.734375 7.25 -6.765625 6.890625 -6.765625 C 6.828125 -6.765625 6.703125 -6.765625 6.703125 -6.5625 C 6.703125 -6.5 6.75 -6.46875 6.828125 -6.453125 C 7.046875 -6.4375 7.125 -6.390625 7.125 -6.25 C 7.125 -6.078125 6.828125 -5.84375 6.78125 -5.796875 L 2.90625 -2.828125 L 3.703125 -6 C 3.796875 -6.359375 3.8125 -6.453125 4.53125 -6.453125 C 4.78125 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.75 4.796875 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.125 -6.765625 1.984375 -6.765625 1.984375 -6.578125 C 1.984375 -6.453125 2.078125 -6.453125 2.28125 -6.453125 C 2.40625 -6.453125 2.578125 -6.453125 2.703125 -6.4375 C 2.859375 -6.421875 2.921875 -6.390625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.375 -0.3125 0.375 -0.125 C 0.375 0 0.5 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.125 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.5625 2.390625 -0.765625 2.421875 -0.921875 L 2.828125 -2.484375 L 4.296875 -3.625 L 5.453125 -0.953125 C 5.5625 -0.6875 5.5625 -0.671875 5.5625 -0.609375 C 5.5625 -0.3125 5.140625 -0.3125 5.046875 -0.3125 C 4.9375 -0.3125 4.828125 -0.3125 4.828125 -0.109375 C 4.828125 0 4.96875 0 4.96875 0 C 5.375 0 5.78125 -0.03125 6.1875 -0.03125 C 6.40625 -0.03125 6.9375 0 7.15625 0 C 7.203125 0 7.328125 0 7.328125 -0.203125 Z M 7.328125 -0.203125 "/>
</g>
<g id="glyph-3-1">
<path d="M 7.140625 -2.59375 C 7.140625 -2.671875 7.09375 -2.703125 7.015625 -2.703125 C 6.78125 -2.703125 6.203125 -2.671875 5.96875 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.375 -2.703125 4.375 -2.5 C 4.375 -2.390625 4.453125 -2.390625 4.671875 -2.390625 C 4.671875 -2.390625 4.96875 -2.390625 5.203125 -2.375 C 5.453125 -2.34375 5.515625 -2.3125 5.515625 -2.1875 C 5.515625 -2.09375 5.40625 -1.65625 5.296875 -1.28125 C 5.015625 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.390625 -0.65625 1.390625 -2.171875 C 1.390625 -2.484375 1.5 -4.109375 2.53125 -5.40625 C 3.078125 -6.078125 4.03125 -6.671875 5.015625 -6.671875 C 6.015625 -6.671875 6.609375 -5.90625 6.609375 -4.765625 C 6.609375 -4.375 6.578125 -4.359375 6.578125 -4.265625 C 6.578125 -4.15625 6.6875 -4.15625 6.71875 -4.15625 C 6.859375 -4.15625 6.859375 -4.1875 6.90625 -4.359375 L 7.53125 -6.890625 C 7.53125 -6.921875 7.515625 -6.984375 7.421875 -6.984375 C 7.390625 -6.984375 7.375 -6.96875 7.265625 -6.859375 L 6.578125 -6.109375 C 6.484375 -6.234375 6.03125 -6.984375 4.9375 -6.984375 C 2.71875 -6.984375 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.078125 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.296875 -0.625 C 5.390625 -0.375 5.640625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.8125 -0.046875 5.8125 -0.046875 C 5.828125 -0.0625 5.9375 -0.453125 5.984375 -0.65625 L 6.171875 -1.421875 C 6.21875 -1.578125 6.265625 -1.75 6.296875 -1.921875 C 6.40625 -2.375 6.421875 -2.390625 6.984375 -2.390625 C 7.03125 -2.390625 7.140625 -2.40625 7.140625 -2.59375 Z M 7.140625 -2.59375 "/>
</g>
<g id="glyph-3-2">
<path d="M 7.109375 -0.203125 C 7.109375 -0.3125 7.03125 -0.3125 6.828125 -0.3125 C 6.46875 -0.3125 6.1875 -0.3125 6.1875 -0.484375 C 6.1875 -0.546875 6.21875 -0.59375 6.21875 -0.65625 L 7.5625 -6 C 7.640625 -6.359375 7.671875 -6.453125 8.390625 -6.453125 C 8.640625 -6.453125 8.734375 -6.453125 8.734375 -6.65625 C 8.734375 -6.765625 8.625 -6.765625 8.59375 -6.765625 L 7.328125 -6.734375 L 6.046875 -6.765625 C 5.96875 -6.765625 5.859375 -6.765625 5.859375 -6.5625 C 5.859375 -6.453125 5.9375 -6.453125 6.125 -6.453125 C 6.125 -6.453125 6.34375 -6.453125 6.515625 -6.4375 C 6.6875 -6.421875 6.78125 -6.40625 6.78125 -6.28125 C 6.78125 -6.234375 6.765625 -6.21875 6.734375 -6.09375 L 6.140625 -3.671875 L 3.125 -3.671875 L 3.703125 -6 C 3.796875 -6.359375 3.828125 -6.453125 4.53125 -6.453125 C 4.796875 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.765625 4.765625 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.109375 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.0625 -3.375 L 5.375 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.234375 -0.3125 4.234375 -0.109375 C 4.234375 0 4.375 0 4.375 0 L 5.640625 -0.03125 L 6.265625 -0.015625 C 6.484375 -0.015625 6.703125 0 6.921875 0 C 7 0 7.109375 0 7.109375 -0.203125 Z M 7.109375 -0.203125 "/>
</g>
<g id="glyph-3-3">
<path d="M 5.375 -1.421875 C 5.375 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.15625 -1.515625 5.15625 -1.46875 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.375 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.1875 -1.25 4.265625 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.671875 -3.1875 4.71875 -3.34375 C 4.765625 -3.5625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.578125 -4.265625 C 4.53125 -4.265625 4.265625 -4.265625 4.1875 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.46875 1.984375 -2.265625 2.234375 -2.9375 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.34375 0.109375 C 4.703125 0.109375 4.921875 -0.125 5.078125 -0.4375 C 5.25 -0.796875 5.375 -1.421875 5.375 -1.421875 Z M 5.375 -1.421875 "/>
</g>
<g id="glyph-3-4">
<path d="M 5.65625 -1.421875 C 5.65625 -1.515625 5.5625 -1.515625 5.53125 -1.515625 C 5.4375 -1.515625 5.4375 -1.484375 5.390625 -1.34375 C 5.1875 -0.65625 4.859375 -0.109375 4.375 -0.109375 C 4.203125 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.3125 -1.140625 C 4.5 -1.671875 4.921875 -2.75 4.921875 -3.3125 C 4.921875 -3.984375 4.5 -4.375 3.78125 -4.375 C 2.890625 -4.375 2.40625 -3.75 2.234375 -3.515625 C 2.1875 -4.078125 1.78125 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.5 -4.15625 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.28125 -3.265625 2.8125 -4.15625 3.75 -4.15625 C 4.203125 -4.15625 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.796875 -1.578125 3.640625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.890625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.65625 -1.34375 5.65625 -1.421875 Z M 5.65625 -1.421875 "/>
</g>
<g id="glyph-3-5">
<path d="M 4.8125 -3.78125 C 4.859375 -3.90625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.5625 -4.265625 C 4.46875 -4.265625 4.3125 -4.203125 4.21875 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.078125 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.390625 -0.796875 2.96875 -0.109375 2.3125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.359375 1.875 -1.984375 2.203125 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.234375 -4.15625 1.5625 -4.15625 C 1.640625 -4.15625 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.09375 1.0625 -1.53125 1.0625 -1.0625 C 1.0625 -0.1875 1.6875 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.65625 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.953125 1.78125 0.796875 1.390625 C 0.953125 1.390625 1.078125 1.390625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.859375 0.015625 Z M 4.8125 -3.78125 "/>
</g>
<g id="glyph-3-6">
<path d="M 4.3125 -3.734375 C 4.3125 -4.078125 4 -4.375 3.5 -4.375 C 2.859375 -4.375 2.421875 -3.890625 2.234375 -3.609375 C 2.15625 -4.0625 1.796875 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.875 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.46875 -4.15625 1.609375 -4.078125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.015625 C 2.1875 -3.15625 2.46875 -3.609375 2.703125 -3.828125 C 2.78125 -3.90625 3.078125 -4.15625 3.5 -4.15625 C 3.75 -4.15625 3.90625 -4.046875 3.90625 -4.046875 C 3.609375 -4 3.390625 -3.75 3.390625 -3.5 C 3.390625 -3.34375 3.5 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.3125 -3.375 4.3125 -3.734375 Z M 4.3125 -3.734375 "/>
</g>
<g id="glyph-3-7">
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.46875 4.671875 -1.34375 C 4.5 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.640625 -0.875 3.6875 -1.046875 L 5.109375 -6.765625 C 5.109375 -6.765625 5.109375 -6.875 4.984375 -6.875 C 4.828125 -6.875 3.890625 -6.78125 3.71875 -6.765625 C 3.640625 -6.75 3.59375 -6.703125 3.59375 -6.578125 C 3.59375 -6.453125 3.671875 -6.453125 3.828125 -6.453125 C 4.296875 -6.453125 4.3125 -6.390625 4.3125 -6.296875 L 4.296875 -6.09375 L 3.6875 -3.75 C 3.515625 -4.109375 3.234375 -4.375 2.78125 -4.375 C 1.625 -4.375 0.390625 -2.921875 0.390625 -1.46875 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.90625 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.421875 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.796875 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.046875 -1.171875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.75 1.640625 -3.203125 C 1.953125 -3.796875 2.390625 -4.15625 2.796875 -4.15625 C 3.4375 -4.15625 3.578125 -3.34375 3.578125 -3.28125 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
</g>
<g id="glyph-4-0">
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
</g>
<g id="glyph-5-0">
<path d="M 5 -1.734375 C 5 -1.75 4.984375 -1.828125 4.890625 -1.828125 C 4.796875 -1.828125 4.78125 -1.796875 4.75 -1.671875 C 4.484375 -1.015625 4.171875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.921875 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.9375 -4.484375 3.578125 -4.484375 C 3.796875 -4.484375 3.859375 -4.484375 3.859375 -4.640625 C 3.859375 -4.640625 3.859375 -4.734375 3.75 -4.734375 C 3.59375 -4.734375 3.40625 -4.71875 3.234375 -4.71875 L 2.671875 -4.703125 L 2.203125 -4.71875 C 2.046875 -4.71875 1.890625 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.171875 0 C 4.34375 0 4.359375 0 4.40625 -0.140625 C 4.484375 -0.328125 5 -1.671875 5 -1.734375 Z M 5 -1.734375 "/>
</g>
<g id="glyph-5-1">
<path d="M 3.859375 -2.609375 C 3.890625 -2.71875 3.890625 -2.71875 3.890625 -2.765625 C 3.890625 -2.90625 3.78125 -2.984375 3.65625 -2.984375 C 3.578125 -2.984375 3.453125 -2.953125 3.375 -2.828125 C 3.34375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.109375 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.875 -2.046875 C 1.96875 -2.265625 2 -2.359375 2 -2.46875 C 2 -2.796875 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.109375 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.859375 1.3125 -2.859375 C 1.4375 -2.859375 1.484375 -2.78125 1.484375 -2.625 C 1.484375 -2.46875 1.421875 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 0.984375 -1.109375 0.984375 -0.8125 C 0.984375 -0.6875 0.984375 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.25 0.78125 C 2.0625 0.984375 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 0.984375 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.421875 1.421875 C 2.125 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.609375 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0.15625 14 L 84 14 L 84 74 L 0.15625 74 Z M 0.15625 14 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 140 39 L 183 39 L 183 74.207031 L 140 74.207031 Z M 140 39 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 156 44 L 189 44 L 189 74.207031 L 156 74.207031 Z M 156 44 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 168 15 L 189.445312 15 L 189.445312 47 L 168 47 Z M 168 15 "/>
</clipPath>
<clipPath id="clip-4">
<path clip-rule="nonzero" d="M 66 44 L 100 44 L 100 74.207031 L 66 74.207031 Z M 66 44 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.148438 73.214844 L 83.152344 73.214844 L 83.152344 14.921875 L 1.148438 14.921875 Z M 1.148438 73.214844 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -30.801556 -42.693443 L 51.639839 -42.693443 L 51.639839 15.910517 L -30.801556 15.910517 Z M -30.801556 -42.693443 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="13.15096" y="10.626309"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="19.623006" y="10.626309"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="30.079755" y="10.626309"/>
<use xlink:href="#glyph-0-3" x="34.484631" y="10.626309"/>
<use xlink:href="#glyph-0-4" x="39.439497" y="10.626309"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-5" x="44.667871" y="10.626309"/>
<use xlink:href="#glyph-0-6" x="48.521766" y="10.626309"/>
<use xlink:href="#glyph-0-3" x="52.403408" y="10.626309"/>
<use xlink:href="#glyph-0-7" x="57.358274" y="10.626309"/>
<use xlink:href="#glyph-0-7" x="60.111197" y="10.626309"/>
<use xlink:href="#glyph-0-8" x="62.864121" y="10.626309"/>
<use xlink:href="#glyph-0-6" x="67.268997" y="10.626309"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.97312 0.00187653 C 6.97312 3.850424 3.851084 6.972461 -0.00139111 6.972461 C -3.849939 6.972461 -6.971975 3.850424 -6.971975 0.00187653 C -6.971975 -3.850599 -3.849939 -6.972635 -0.00139111 -6.972635 C 3.851084 -6.972635 6.97312 -3.850599 6.97312 0.00187653 Z M 6.97312 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="27.472555" y="33.648486"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="22.097232" y="45.447538"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.480086 -8.5042 L 47.15903 -8.5042 L 47.15903 8.504026 L 24.480086 8.504026 Z M 24.480086 -8.5042 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="62.852802" y="34.133896"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 65.160809 -8.5042 L 87.839753 -8.5042 L 87.839753 8.504026 L 65.160809 8.504026 Z M 65.160809 -8.5042 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="102.59478" y="34.473087"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="110.386212" y="30.876276"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 119.295742 0.00187653 C 119.295742 3.850424 116.173705 6.972461 112.32123 6.972461 C 108.468755 6.972461 105.346719 3.850424 105.346719 0.00187653 C 105.346719 -3.850599 108.468755 -6.972635 112.32123 -6.972635 C 116.173705 -6.972635 119.295742 -3.850599 119.295742 0.00187653 Z M 119.295742 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="139.195515" y="33.648486"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 168.714844 60.296875 C 168.714844 56.464844 165.609375 53.359375 161.78125 53.359375 C 157.949219 53.359375 154.84375 56.464844 154.84375 60.296875 C 154.84375 64.125 157.949219 67.234375 161.78125 67.234375 C 165.609375 67.234375 168.714844 64.125 168.714844 60.296875 Z M 168.714844 60.296875 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 137.658813 -29.706557 C 137.658813 -25.854082 134.536777 -22.732046 130.688229 -22.732046 C 126.835754 -22.732046 123.713717 -25.854082 123.713717 -29.706557 C 123.713717 -33.555105 126.835754 -36.681069 130.688229 -36.681069 C 134.536777 -36.681069 137.658813 -33.555105 137.658813 -29.706557 Z M 137.658813 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="157.464053" y="63.195852"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.480086 -38.208707 L 47.15903 -38.208707 L 47.15903 -21.200481 L 24.480086 -21.200481 Z M 24.480086 -38.208707 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="60.33026" y="62.937231"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0" x="68.56831" y="64.424298"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.97312 0.00187653 L 19.34738 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053597 0.00187653 L 1.608131 1.682671 L 3.088644 0.00187653 L 1.608131 -1.682845 Z M 6.053597 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 48.208997, 30.74796)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.65777 0.00187653 L 60.03203 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052279 0.00187653 L 1.606814 1.682671 L 3.087327 0.00187653 L 1.606814 -1.682845 Z M 6.052279 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 88.675151, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-3" x="86.63592" y="26.949226"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 88.338493 0.00187653 L 100.712753 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054879 0.00187653 L 1.609414 1.682671 L 3.085999 0.00187653 L 1.609414 -1.682845 Z M 6.054879 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 129.141314, 30.74796)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 142.292779 -29.706557 L 157.502398 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 170.128906 60.296875 L 174.550781 61.96875 L 173.078125 60.296875 L 174.550781 58.621094 Z M 170.128906 60.296875 "/>
<g clip-path="url(#clip-2)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05242 0.00130748 L 1.606955 1.682102 L 3.087468 0.00130748 L 1.606955 -1.683414 Z M 6.05242 0.00130748 " transform="matrix(-0.994693, 0, 0, 0.994693, 176.149208, 60.295574)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-4" x="178.705729" y="56.496592"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 130.688229 0.00187653 L 130.688229 -18.09808 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055107 0.00136889 L 1.609641 1.682163 L 3.086227 0.00136889 L 1.609641 -1.683353 Z M 6.055107 0.00136889 " transform="matrix(0, 0.994693, 0.994693, 0, 161.779888, 45.926245)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 163.761719 30.746094 C 163.761719 29.652344 162.875 28.765625 161.78125 28.765625 C 160.683594 28.765625 159.796875 29.652344 159.796875 30.746094 C 159.796875 31.84375 160.683594 32.730469 161.78125 32.730469 C 162.875 32.730469 163.761719 31.84375 163.761719 30.746094 Z M 163.761719 30.746094 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 119.295742 0.00187653 L 152.868432 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 187.042969 30.746094 L 182.621094 29.074219 L 184.09375 30.746094 L 182.621094 32.421875 Z M 187.042969 30.746094 "/>
<g clip-path="url(#clip-3)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053358 0.00187653 L 1.607893 1.682671 L 3.088406 0.00187653 L 1.607893 -1.682845 Z M 6.053358 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 181.021734, 30.74796)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="179.439813" y="25.022505"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.605941 0.00187653 L -26.81556 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052388 0.00187653 L 1.606922 1.682671 L 3.087435 0.00187653 L 1.606922 -1.682845 Z M 6.052388 0.00187653 " transform="matrix(0.994693, 0, 0, -0.994693, 17.41723, 30.74796)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-6" x="8.911577" y="26.949226"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 123.713717 -29.706557 L 52.287809 -29.706557 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 80.601562 60.296875 L 85.023438 61.96875 L 83.550781 60.296875 L 85.023438 58.621094 Z M 80.601562 60.296875 "/>
<g clip-path="url(#clip-4)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05257 0.00130748 L 1.607105 1.682102 L 3.087618 0.00130748 L 1.607105 -1.683414 Z M 6.05257 0.00130748 " transform="matrix(-0.994693, 0, 0, 0.994693, 86.622014, 60.295574)"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 23.981346 -29.706557 L -0.00139111 -29.706557 L -0.00139111 -11.606601 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051729 0.00139111 L 1.61019 1.682186 L 3.086776 0.00139111 L 1.61019 -1.68333 Z M 6.051729 0.00139111 " transform="matrix(0, -0.994693, -0.994693, 0, 31.78654, 45.11727)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 112.32123 11.606427 L 112.32123 26.816045 " transform="matrix(0.994693, 0, 0, -0.994693, 31.78654, 30.74796)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051913 0.0011001 L 1.610374 1.681895 L 3.08696 0.0011001 L 1.610374 -1.683621 Z M 6.051913 0.0011001 " transform="matrix(0, 0.994693, 0.994693, 0, 143.510624, 16.37864)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-7" x="147.308234" y="14.754286"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-1" x="152.465719" y="16.240358"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,246 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="210.395pt" height="105.421pt" viewBox="0 0 210.395 105.421">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 7.25 -0.875 C 7.25 -0.9375 7.25 -1.046875 7.125 -1.046875 C 7.015625 -1.046875 7.015625 -0.953125 7 -0.875 C 6.9375 -0.171875 6.59375 0 6.34375 0 C 5.859375 0 5.78125 -0.5 5.640625 -1.421875 L 5.515625 -2.21875 C 5.34375 -2.859375 4.859375 -3.1875 4.3125 -3.375 C 5.265625 -3.609375 6.046875 -4.203125 6.046875 -4.984375 C 6.046875 -5.9375 4.90625 -6.765625 3.453125 -6.765625 L 0.34375 -6.765625 L 0.34375 -6.453125 L 0.578125 -6.453125 C 1.34375 -6.453125 1.359375 -6.34375 1.359375 -6 L 1.359375 -0.765625 C 1.359375 -0.421875 1.34375 -0.3125 0.578125 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.875 -0.03125 3.234375 0 L 3.234375 -0.3125 L 3 -0.3125 C 2.234375 -0.3125 2.21875 -0.421875 2.21875 -0.765625 L 2.21875 -3.28125 L 3.359375 -3.28125 C 3.515625 -3.28125 3.9375 -3.28125 4.28125 -2.9375 C 4.65625 -2.578125 4.65625 -2.28125 4.65625 -1.609375 C 4.65625 -0.96875 4.65625 -0.578125 5.0625 -0.203125 C 5.46875 0.15625 6.015625 0.21875 6.3125 0.21875 C 7.078125 0.21875 7.25 -0.59375 7.25 -0.875 Z M 5.015625 -4.984375 C 5.015625 -4.296875 4.78125 -3.5 3.3125 -3.5 L 2.21875 -3.5 L 2.21875 -6.0625 C 2.21875 -6.296875 2.21875 -6.40625 2.4375 -6.4375 C 2.53125 -6.453125 2.828125 -6.453125 3.015625 -6.453125 C 3.90625 -6.453125 5.015625 -6.421875 5.015625 -4.984375 Z M 5.015625 -4.984375 "/>
</g>
<g id="glyph-0-1">
<path d="M 6.78125 -4.484375 L 6.59375 -6.703125 L 0.546875 -6.703125 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.078125 0.890625 -6.40625 2.390625 -6.40625 C 2.5625 -6.40625 2.828125 -6.40625 2.921875 -6.375 C 3.125 -6.34375 3.125 -6.234375 3.125 -6 L 3.125 -0.78125 C 3.125 -0.453125 3.125 -0.3125 2.09375 -0.3125 L 1.6875 -0.3125 L 1.6875 0 C 2.09375 -0.03125 3.109375 -0.03125 3.5625 -0.03125 C 4.015625 -0.03125 5.046875 -0.03125 5.453125 0 L 5.453125 -0.3125 L 5.046875 -0.3125 C 4.015625 -0.3125 4.015625 -0.453125 4.015625 -0.78125 L 4.015625 -6 C 4.015625 -6.203125 4.015625 -6.34375 4.1875 -6.375 C 4.296875 -6.40625 4.5625 -6.40625 4.75 -6.40625 C 6.25 -6.40625 6.40625 -6.078125 6.53125 -4.484375 Z M 6.78125 -4.484375 "/>
</g>
<g id="glyph-0-2">
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.015625 -1.28125 3.984375 -1.28125 C 3.890625 -1.28125 3.875 -1.234375 3.859375 -1.171875 C 3.5625 -0.25 2.921875 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.15625 C 1.15625 -3.78125 1.96875 -4.1875 2.5 -4.1875 C 2.578125 -4.1875 3.203125 -4.1875 3.5625 -3.828125 C 3.15625 -3.796875 3.09375 -3.5 3.09375 -3.375 C 3.09375 -3.109375 3.265625 -2.90625 3.546875 -2.90625 C 3.796875 -2.90625 4 -3.078125 4 -3.375 C 4 -4.046875 3.25 -4.4375 2.484375 -4.4375 C 1.25 -4.4375 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.46875 0.109375 C 3.796875 0.109375 4.109375 -1.078125 4.109375 -1.171875 Z M 4.109375 -1.171875 "/>
</g>
<g id="glyph-0-3">
<path d="M 4.671875 -2.125 C 4.671875 -3.390625 3.671875 -4.4375 2.484375 -4.4375 C 1.234375 -4.4375 0.28125 -3.359375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.671875 -0.859375 4.671875 -2.125 Z M 3.84375 -2.203125 C 3.84375 -1.84375 3.84375 -1.3125 3.625 -0.875 C 3.40625 -0.421875 2.96875 -0.140625 2.484375 -0.140625 C 2.046875 -0.140625 1.609375 -0.34375 1.34375 -0.796875 C 1.09375 -1.234375 1.09375 -1.84375 1.09375 -2.203125 C 1.09375 -2.578125 1.09375 -3.125 1.34375 -3.5625 C 1.609375 -4.015625 2.078125 -4.21875 2.46875 -4.21875 C 2.90625 -4.21875 3.328125 -4 3.59375 -3.578125 C 3.84375 -3.15625 3.84375 -2.578125 3.84375 -2.203125 Z M 3.84375 -2.203125 "/>
</g>
<g id="glyph-0-4">
<path d="M 5.296875 0 L 5.296875 -0.3125 C 4.78125 -0.3125 4.53125 -0.3125 4.53125 -0.609375 L 4.53125 -2.5 C 4.53125 -3.34375 4.53125 -3.65625 4.21875 -4.015625 C 4.078125 -4.1875 3.75 -4.375 3.1875 -4.375 C 2.453125 -4.375 1.984375 -3.953125 1.71875 -3.34375 L 1.71875 -4.375 L 0.3125 -4.265625 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.890625 1.09375 -3.40625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -2.578125 C 1.765625 -3.609375 2.484375 -4.15625 3.109375 -4.15625 C 3.734375 -4.15625 3.84375 -3.625 3.84375 -3.0625 L 3.84375 -0.75 C 3.84375 -0.3125 3.734375 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.1875 -0.03125 Z M 5.296875 0 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.28125 -1.234375 L 3.28125 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.375 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.203125 L 1.71875 -3.96875 L 3.125 -3.96875 L 3.125 -4.265625 L 1.71875 -4.265625 L 1.71875 -6.09375 L 1.46875 -6.09375 C 1.453125 -5.28125 1.15625 -4.21875 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.28125 -0.59375 3.28125 -1.234375 Z M 3.28125 -1.234375 "/>
</g>
<g id="glyph-0-6">
<path d="M 3.609375 -3.78125 C 3.609375 -4.09375 3.296875 -4.375 2.875 -4.375 C 2.15625 -4.375 1.796875 -3.71875 1.65625 -3.28125 L 1.65625 -4.375 L 0.28125 -4.265625 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.890625 1.046875 -3.40625 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.796875 -0.03125 2.265625 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.453125 -0.3125 C 1.71875 -0.3125 1.703125 -0.421875 1.703125 -0.765625 L 1.703125 -2.296875 C 1.703125 -3.28125 2.125 -4.15625 2.875 -4.15625 C 2.9375 -4.15625 2.96875 -4.15625 2.984375 -4.15625 C 2.953125 -4.140625 2.75 -4.015625 2.75 -3.765625 C 2.75 -3.484375 2.96875 -3.34375 3.1875 -3.34375 C 3.359375 -3.34375 3.609375 -3.453125 3.609375 -3.78125 Z M 3.609375 -3.78125 "/>
</g>
<g id="glyph-0-7">
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.859375 -0.3125 1.75 -0.3125 1.75 -0.75 L 1.75 -6.875 L 0.328125 -6.765625 L 0.328125 -6.453125 C 1.015625 -6.453125 1.09375 -6.390625 1.09375 -5.90625 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.421875 -0.03125 Z M 2.53125 0 "/>
</g>
<g id="glyph-0-8">
<path d="M 4.109375 -1.171875 C 4.109375 -1.28125 4.03125 -1.296875 3.984375 -1.296875 C 3.890625 -1.296875 3.875 -1.234375 3.859375 -1.15625 C 3.5 -0.140625 2.609375 -0.140625 2.515625 -0.140625 C 2.015625 -0.140625 1.625 -0.4375 1.390625 -0.796875 C 1.09375 -1.28125 1.09375 -1.9375 1.09375 -2.28125 L 3.859375 -2.28125 C 4.078125 -2.28125 4.109375 -2.28125 4.109375 -2.5 C 4.109375 -3.484375 3.578125 -4.4375 2.34375 -4.4375 C 1.1875 -4.4375 0.28125 -3.421875 0.28125 -2.171875 C 0.28125 -0.859375 1.3125 0.109375 2.453125 0.109375 C 3.671875 0.109375 4.109375 -0.984375 4.109375 -1.171875 Z M 3.453125 -2.5 L 1.109375 -2.5 C 1.171875 -3.96875 2 -4.21875 2.34375 -4.21875 C 3.359375 -4.21875 3.453125 -2.875 3.453125 -2.5 Z M 3.453125 -2.5 "/>
</g>
<g id="glyph-1-0">
<path d="M 8.0625 -2.984375 C 8.0625 -3.203125 7.875 -3.203125 7.6875 -3.203125 L 4.515625 -3.203125 L 4.515625 -6.375 C 4.515625 -6.546875 4.515625 -6.75 4.3125 -6.75 C 4.09375 -6.75 4.09375 -6.5625 4.09375 -6.375 L 4.09375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.09375 -2.78125 L 4.09375 0.390625 C 4.09375 0.5625 4.09375 0.765625 4.296875 0.765625 C 4.515625 0.765625 4.515625 0.578125 4.515625 0.390625 L 4.515625 -2.78125 L 7.6875 -2.78125 C 7.859375 -2.78125 8.0625 -2.78125 8.0625 -2.984375 Z M 8.0625 -2.984375 "/>
</g>
<g id="glyph-2-0">
<path d="M 6.875 -2.484375 C 6.875 -2.671875 6.6875 -2.671875 6.546875 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.546875 -2.28125 C 6.6875 -2.28125 6.875 -2.28125 6.875 -2.484375 Z M 6.875 -2.484375 "/>
</g>
<g id="glyph-3-0">
<path d="M 4.859375 -1.421875 C 4.859375 -1.515625 4.765625 -1.515625 4.734375 -1.515625 C 4.640625 -1.515625 4.625 -1.46875 4.59375 -1.34375 C 4.390625 -0.609375 4.171875 -0.109375 3.734375 -0.109375 C 3.546875 -0.109375 3.421875 -0.21875 3.421875 -0.578125 C 3.421875 -0.75 3.453125 -0.96875 3.5 -1.125 C 3.53125 -1.296875 3.53125 -1.34375 3.53125 -1.4375 C 3.53125 -2.078125 2.90625 -2.375 2.078125 -2.484375 C 2.375 -2.65625 2.6875 -2.96875 2.921875 -3.203125 C 3.390625 -3.734375 3.859375 -4.15625 4.34375 -4.15625 C 4.390625 -4.15625 4.40625 -4.15625 4.421875 -4.15625 C 4.546875 -4.125 4.5625 -4.125 4.640625 -4.078125 C 4.65625 -4.0625 4.65625 -4.046875 4.671875 -4.03125 C 4.203125 -4 4.109375 -3.609375 4.109375 -3.5 C 4.109375 -3.34375 4.21875 -3.15625 4.484375 -3.15625 C 4.75 -3.15625 5.03125 -3.375 5.03125 -3.75 C 5.03125 -4.046875 4.796875 -4.375 4.359375 -4.375 C 4.078125 -4.375 3.625 -4.296875 2.90625 -3.5 C 2.578125 -3.125 2.1875 -2.734375 1.8125 -2.578125 L 2.84375 -6.765625 C 2.84375 -6.765625 2.84375 -6.875 2.71875 -6.875 C 2.484375 -6.875 1.765625 -6.796875 1.5 -6.78125 C 1.421875 -6.765625 1.3125 -6.75 1.3125 -6.578125 C 1.3125 -6.453125 1.40625 -6.453125 1.5625 -6.453125 C 2.03125 -6.453125 2.046875 -6.390625 2.046875 -6.296875 L 2.015625 -6.09375 L 0.578125 -0.390625 C 0.546875 -0.25 0.546875 -0.234375 0.546875 -0.171875 C 0.546875 0.0625 0.75 0.109375 0.828125 0.109375 C 0.953125 0.109375 1.109375 0.015625 1.171875 -0.09375 C 1.21875 -0.1875 1.671875 -2.015625 1.71875 -2.265625 C 2.0625 -2.234375 2.875 -2.078125 2.875 -1.421875 C 2.875 -1.359375 2.875 -1.3125 2.84375 -1.21875 C 2.828125 -1.09375 2.796875 -0.984375 2.796875 -0.875 C 2.796875 -0.28125 3.203125 0.109375 3.71875 0.109375 C 4.015625 0.109375 4.28125 -0.046875 4.5 -0.421875 C 4.75 -0.859375 4.859375 -1.421875 4.859375 -1.421875 Z M 4.859375 -1.421875 "/>
</g>
<g id="glyph-3-1">
<path d="M 7.140625 -2.59375 C 7.140625 -2.671875 7.09375 -2.703125 7.015625 -2.703125 C 6.78125 -2.703125 6.203125 -2.671875 5.96875 -2.671875 L 4.59375 -2.703125 C 4.5 -2.703125 4.375 -2.703125 4.375 -2.5 C 4.375 -2.390625 4.453125 -2.390625 4.671875 -2.390625 C 4.671875 -2.390625 4.96875 -2.390625 5.203125 -2.375 C 5.453125 -2.34375 5.515625 -2.3125 5.515625 -2.1875 C 5.515625 -2.09375 5.40625 -1.65625 5.296875 -1.28125 C 5.015625 -0.203125 3.734375 -0.09375 3.390625 -0.09375 C 2.4375 -0.09375 1.390625 -0.65625 1.390625 -2.171875 C 1.390625 -2.484375 1.5 -4.109375 2.53125 -5.40625 C 3.078125 -6.078125 4.03125 -6.671875 5.015625 -6.671875 C 6.015625 -6.671875 6.609375 -5.90625 6.609375 -4.765625 C 6.609375 -4.375 6.578125 -4.359375 6.578125 -4.265625 C 6.578125 -4.15625 6.6875 -4.15625 6.71875 -4.15625 C 6.859375 -4.15625 6.859375 -4.1875 6.90625 -4.359375 L 7.53125 -6.890625 C 7.53125 -6.921875 7.515625 -6.984375 7.421875 -6.984375 C 7.390625 -6.984375 7.375 -6.96875 7.265625 -6.859375 L 6.578125 -6.109375 C 6.484375 -6.234375 6.03125 -6.984375 4.9375 -6.984375 C 2.71875 -6.984375 0.5 -4.796875 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.078125 0.125 4.4375 -0.015625 C 4.9375 -0.21875 5.125 -0.421875 5.296875 -0.625 C 5.390625 -0.375 5.640625 -0.015625 5.75 -0.015625 C 5.796875 -0.015625 5.8125 -0.046875 5.8125 -0.046875 C 5.828125 -0.0625 5.9375 -0.453125 5.984375 -0.65625 L 6.171875 -1.421875 C 6.21875 -1.578125 6.265625 -1.75 6.296875 -1.921875 C 6.40625 -2.375 6.421875 -2.390625 6.984375 -2.390625 C 7.03125 -2.390625 7.140625 -2.40625 7.140625 -2.59375 Z M 7.140625 -2.59375 "/>
</g>
<g id="glyph-3-2">
<path d="M 7.109375 -0.203125 C 7.109375 -0.3125 7.03125 -0.3125 6.828125 -0.3125 C 6.46875 -0.3125 6.1875 -0.3125 6.1875 -0.484375 C 6.1875 -0.546875 6.21875 -0.59375 6.21875 -0.65625 L 7.5625 -6 C 7.640625 -6.359375 7.671875 -6.453125 8.390625 -6.453125 C 8.640625 -6.453125 8.734375 -6.453125 8.734375 -6.65625 C 8.734375 -6.765625 8.625 -6.765625 8.59375 -6.765625 L 7.328125 -6.734375 L 6.046875 -6.765625 C 5.96875 -6.765625 5.859375 -6.765625 5.859375 -6.5625 C 5.859375 -6.453125 5.9375 -6.453125 6.125 -6.453125 C 6.125 -6.453125 6.34375 -6.453125 6.515625 -6.4375 C 6.6875 -6.421875 6.78125 -6.40625 6.78125 -6.28125 C 6.78125 -6.234375 6.765625 -6.21875 6.734375 -6.09375 L 6.140625 -3.671875 L 3.125 -3.671875 L 3.703125 -6 C 3.796875 -6.359375 3.828125 -6.453125 4.53125 -6.453125 C 4.796875 -6.453125 4.875 -6.453125 4.875 -6.65625 C 4.875 -6.765625 4.765625 -6.765625 4.734375 -6.765625 L 3.46875 -6.734375 L 2.1875 -6.765625 C 2.109375 -6.765625 2 -6.765625 2 -6.5625 C 2 -6.453125 2.09375 -6.453125 2.28125 -6.453125 C 2.28125 -6.453125 2.484375 -6.453125 2.65625 -6.4375 C 2.828125 -6.421875 2.921875 -6.40625 2.921875 -6.28125 C 2.921875 -6.234375 2.90625 -6.21875 2.875 -6.09375 L 1.5625 -0.765625 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.609375 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.0625 -3.375 L 5.375 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.234375 -0.3125 4.234375 -0.109375 C 4.234375 0 4.375 0 4.375 0 L 5.640625 -0.03125 L 6.265625 -0.015625 C 6.484375 -0.015625 6.703125 0 6.921875 0 C 7 0 7.109375 0 7.109375 -0.203125 Z M 7.109375 -0.203125 "/>
</g>
<g id="glyph-3-3">
<path d="M 5.375 -1.421875 C 5.375 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.15625 -1.515625 5.15625 -1.46875 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.375 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.1875 -1.25 4.265625 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.671875 -3.1875 4.71875 -3.34375 C 4.765625 -3.5625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.578125 -4.265625 C 4.53125 -4.265625 4.265625 -4.265625 4.1875 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.3125 -0.109375 C 1.796875 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.46875 1.984375 -2.265625 2.234375 -2.9375 C 2.359375 -3.234375 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.15625 1.5625 -4.15625 C 1.65625 -4.15625 1.8125 -4.15625 1.8125 -3.828125 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.15625 C 1.28125 -2.171875 1.0625 -1.5625 1.0625 -1.078125 C 1.0625 -0.140625 1.75 0.109375 2.28125 0.109375 C 2.9375 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.34375 0.109375 C 4.703125 0.109375 4.921875 -0.125 5.078125 -0.4375 C 5.25 -0.796875 5.375 -1.421875 5.375 -1.421875 Z M 5.375 -1.421875 "/>
</g>
<g id="glyph-3-4">
<path d="M 5.65625 -1.421875 C 5.65625 -1.515625 5.5625 -1.515625 5.53125 -1.515625 C 5.4375 -1.515625 5.4375 -1.484375 5.390625 -1.34375 C 5.1875 -0.65625 4.859375 -0.109375 4.375 -0.109375 C 4.203125 -0.109375 4.140625 -0.203125 4.140625 -0.4375 C 4.140625 -0.6875 4.234375 -0.921875 4.3125 -1.140625 C 4.5 -1.671875 4.921875 -2.75 4.921875 -3.3125 C 4.921875 -3.984375 4.5 -4.375 3.78125 -4.375 C 2.890625 -4.375 2.40625 -3.75 2.234375 -3.515625 C 2.1875 -4.078125 1.78125 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.578125 -3.8125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.5 -4.15625 1.609375 -4.03125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.453125 L 2.140625 -2.953125 C 2.28125 -3.265625 2.8125 -4.15625 3.75 -4.15625 C 4.203125 -4.15625 4.296875 -3.796875 4.296875 -3.46875 C 4.296875 -2.859375 3.796875 -1.578125 3.640625 -1.15625 C 3.5625 -0.9375 3.546875 -0.8125 3.546875 -0.703125 C 3.546875 -0.234375 3.890625 0.109375 4.359375 0.109375 C 5.296875 0.109375 5.65625 -1.34375 5.65625 -1.421875 Z M 5.65625 -1.421875 "/>
</g>
<g id="glyph-3-5">
<path d="M 4.8125 -3.78125 C 4.859375 -3.90625 4.859375 -3.9375 4.859375 -4 C 4.859375 -4.1875 4.71875 -4.265625 4.5625 -4.265625 C 4.46875 -4.265625 4.3125 -4.203125 4.21875 -4.0625 C 4.203125 -4.015625 4.125 -3.703125 4.078125 -3.53125 L 3.890625 -2.734375 L 3.4375 -0.953125 C 3.390625 -0.796875 2.96875 -0.109375 2.3125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.90625 C 1.703125 -1.359375 1.875 -1.984375 2.203125 -2.859375 C 2.375 -3.265625 2.40625 -3.375 2.40625 -3.5625 C 2.40625 -4.015625 2.09375 -4.375 1.59375 -4.375 C 0.65625 -4.375 0.28125 -2.9375 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.234375 -4.15625 1.5625 -4.15625 C 1.640625 -4.15625 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.71875 -3.34375 1.640625 -3.15625 C 1.25 -2.09375 1.0625 -1.53125 1.0625 -1.0625 C 1.0625 -0.1875 1.6875 0.109375 2.28125 0.109375 C 2.671875 0.109375 3 -0.0625 3.28125 -0.34375 C 3.15625 0.171875 3.03125 0.65625 2.640625 1.1875 C 2.375 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.953125 1.78125 0.796875 1.390625 C 0.953125 1.390625 1.078125 1.390625 1.21875 1.28125 C 1.3125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.5625 2.03125 3.59375 1.125 3.859375 0.015625 Z M 4.8125 -3.78125 "/>
</g>
<g id="glyph-3-6">
<path d="M 4.3125 -3.734375 C 4.3125 -4.078125 4 -4.375 3.5 -4.375 C 2.859375 -4.375 2.421875 -3.890625 2.234375 -3.609375 C 2.15625 -4.0625 1.796875 -4.375 1.328125 -4.375 C 0.875 -4.375 0.6875 -4 0.59375 -3.8125 C 0.421875 -3.484375 0.28125 -2.875 0.28125 -2.859375 C 0.28125 -2.75 0.40625 -2.75 0.40625 -2.75 C 0.5 -2.75 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.6875 0.9375 -4.15625 1.296875 -4.15625 C 1.46875 -4.15625 1.609375 -4.078125 1.609375 -3.703125 C 1.609375 -3.5 1.578125 -3.390625 1.453125 -2.875 L 0.875 -0.578125 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.0625 0.109375 C 1.1875 0.109375 1.359375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.828125 -1.734375 L 2.15625 -3.015625 C 2.1875 -3.15625 2.46875 -3.609375 2.703125 -3.828125 C 2.78125 -3.90625 3.078125 -4.15625 3.5 -4.15625 C 3.75 -4.15625 3.90625 -4.046875 3.90625 -4.046875 C 3.609375 -4 3.390625 -3.75 3.390625 -3.5 C 3.390625 -3.34375 3.5 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.3125 -3.375 4.3125 -3.734375 Z M 4.3125 -3.734375 "/>
</g>
<g id="glyph-3-7">
<path d="M 4.9375 -1.421875 C 4.9375 -1.515625 4.84375 -1.515625 4.8125 -1.515625 C 4.71875 -1.515625 4.703125 -1.46875 4.671875 -1.34375 C 4.5 -0.6875 4.328125 -0.109375 3.921875 -0.109375 C 3.65625 -0.109375 3.625 -0.359375 3.625 -0.5625 C 3.625 -0.796875 3.640625 -0.875 3.6875 -1.046875 L 5.109375 -6.765625 C 5.109375 -6.765625 5.109375 -6.875 4.984375 -6.875 C 4.828125 -6.875 3.890625 -6.78125 3.71875 -6.765625 C 3.640625 -6.75 3.59375 -6.703125 3.59375 -6.578125 C 3.59375 -6.453125 3.671875 -6.453125 3.828125 -6.453125 C 4.296875 -6.453125 4.3125 -6.390625 4.3125 -6.296875 L 4.296875 -6.09375 L 3.6875 -3.75 C 3.515625 -4.109375 3.234375 -4.375 2.78125 -4.375 C 1.625 -4.375 0.390625 -2.921875 0.390625 -1.46875 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.90625 0.109375 2.40625 0.0625 3 -0.640625 C 3.078125 -0.21875 3.421875 0.109375 3.90625 0.109375 C 4.25 0.109375 4.484375 -0.125 4.640625 -0.4375 C 4.796875 -0.796875 4.9375 -1.421875 4.9375 -1.421875 Z M 3.546875 -3.125 L 3.046875 -1.171875 C 3 -1 3 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.234375 -0.109375 1.09375 -0.65625 1.09375 -1.046875 C 1.09375 -1.53125 1.421875 -2.75 1.640625 -3.203125 C 1.953125 -3.796875 2.390625 -4.15625 2.796875 -4.15625 C 3.4375 -4.15625 3.578125 -3.34375 3.578125 -3.28125 C 3.578125 -3.234375 3.5625 -3.171875 3.546875 -3.125 Z M 3.546875 -3.125 "/>
</g>
<g id="glyph-4-0">
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
</g>
<g id="glyph-5-0">
<path d="M 5.53125 -0.140625 C 5.53125 -0.25 5.46875 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.171875 -0.25 5.046875 -0.265625 C 4.890625 -0.28125 4.890625 -0.296875 4.890625 -0.375 C 4.890625 -0.40625 4.90625 -0.484375 4.921875 -0.515625 L 5.828125 -4.171875 C 5.890625 -4.4375 5.90625 -4.484375 6.421875 -4.484375 C 6.578125 -4.484375 6.65625 -4.484375 6.65625 -4.640625 C 6.65625 -4.671875 6.640625 -4.734375 6.546875 -4.734375 C 6.34375 -4.734375 5.84375 -4.703125 5.640625 -4.703125 C 5.515625 -4.703125 5.28125 -4.703125 5.15625 -4.71875 C 5.015625 -4.71875 4.859375 -4.734375 4.71875 -4.734375 C 4.6875 -4.734375 4.578125 -4.734375 4.578125 -4.578125 C 4.578125 -4.484375 4.65625 -4.484375 4.796875 -4.484375 C 4.796875 -4.484375 4.9375 -4.484375 5.0625 -4.46875 C 5.203125 -4.453125 5.21875 -4.453125 5.21875 -4.375 C 5.21875 -4.375 5.21875 -4.328125 5.203125 -4.21875 L 4.78125 -2.59375 L 2.46875 -2.59375 L 2.859375 -4.203125 C 2.921875 -4.4375 2.9375 -4.484375 3.46875 -4.484375 C 3.59375 -4.484375 3.6875 -4.484375 3.6875 -4.640625 C 3.6875 -4.671875 3.65625 -4.734375 3.578125 -4.734375 C 3.375 -4.734375 2.859375 -4.703125 2.65625 -4.703125 C 2.546875 -4.703125 2.296875 -4.703125 2.1875 -4.71875 C 2.046875 -4.71875 1.875 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.484375 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.484375 -0.25 2.328125 -0.25 C 2.21875 -0.25 2.1875 -0.25 2.0625 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.9375 -0.515625 L 2.40625 -2.34375 L 4.71875 -2.34375 L 4.28125 -0.546875 C 4.21875 -0.3125 4.203125 -0.25 3.65625 -0.25 C 3.546875 -0.25 3.453125 -0.25 3.453125 -0.109375 C 3.453125 -0.03125 3.5 0 3.5625 0 C 3.765625 0 4.265625 -0.03125 4.46875 -0.03125 C 4.578125 -0.03125 4.828125 -0.03125 4.953125 -0.015625 C 5.078125 -0.015625 5.265625 0 5.390625 0 C 5.421875 0 5.53125 0 5.53125 -0.140625 Z M 5.53125 -0.140625 "/>
</g>
<g id="glyph-5-1">
<path d="M 5 -1.734375 C 5 -1.75 4.984375 -1.828125 4.890625 -1.828125 C 4.796875 -1.828125 4.78125 -1.796875 4.75 -1.671875 C 4.484375 -1.015625 4.171875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.921875 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.9375 -4.484375 3.578125 -4.484375 C 3.796875 -4.484375 3.859375 -4.484375 3.859375 -4.640625 C 3.859375 -4.640625 3.859375 -4.734375 3.75 -4.734375 C 3.59375 -4.734375 3.40625 -4.71875 3.234375 -4.71875 L 2.671875 -4.703125 L 2.203125 -4.71875 C 2.046875 -4.71875 1.890625 -4.734375 1.75 -4.734375 C 1.703125 -4.734375 1.609375 -4.734375 1.609375 -4.578125 C 1.609375 -4.484375 1.6875 -4.484375 1.828125 -4.484375 C 1.828125 -4.484375 1.96875 -4.484375 2.09375 -4.46875 C 2.234375 -4.453125 2.25 -4.453125 2.25 -4.375 C 2.25 -4.375 2.25 -4.328125 2.21875 -4.21875 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.171875 0 C 4.34375 0 4.359375 0 4.40625 -0.140625 C 4.484375 -0.328125 5 -1.671875 5 -1.734375 Z M 5 -1.734375 "/>
</g>
<g id="glyph-5-2">
<path d="M 6.6875 -0.984375 C 6.6875 -1.078125 6.609375 -1.078125 6.578125 -1.078125 C 6.484375 -1.078125 6.484375 -1.046875 6.453125 -0.96875 C 6.296875 -0.40625 6 -0.125 5.71875 -0.125 C 5.578125 -0.125 5.546875 -0.21875 5.546875 -0.375 C 5.546875 -0.53125 5.578125 -0.625 5.703125 -0.921875 C 5.78125 -1.140625 6.078125 -1.875 6.078125 -2.265625 C 6.078125 -2.375 6.078125 -2.671875 5.8125 -2.875 C 5.703125 -2.96875 5.5 -3.0625 5.171875 -3.0625 C 4.546875 -3.0625 4.15625 -2.65625 3.9375 -2.359375 C 3.890625 -2.953125 3.390625 -3.0625 3.03125 -3.0625 C 2.46875 -3.0625 2.078125 -2.703125 1.859375 -2.421875 C 1.8125 -2.90625 1.40625 -3.0625 1.125 -3.0625 C 0.828125 -3.0625 0.671875 -2.84375 0.578125 -2.6875 C 0.421875 -2.421875 0.328125 -2.03125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.921875 0.59375 -2.109375 C 0.703125 -2.53125 0.828125 -2.859375 1.109375 -2.859375 C 1.28125 -2.859375 1.328125 -2.71875 1.328125 -2.53125 C 1.328125 -2.390625 1.265625 -2.140625 1.21875 -1.953125 L 1.0625 -1.328125 L 0.84375 -0.4375 C 0.8125 -0.34375 0.78125 -0.171875 0.78125 -0.15625 C 0.78125 0 0.90625 0.0625 1.015625 0.0625 C 1.140625 0.0625 1.25 -0.015625 1.28125 -0.078125 C 1.3125 -0.140625 1.375 -0.375 1.40625 -0.515625 L 1.5625 -1.140625 C 1.609375 -1.296875 1.640625 -1.4375 1.671875 -1.609375 C 1.75 -1.890625 1.765625 -1.9375 1.96875 -2.234375 C 2.171875 -2.5 2.484375 -2.859375 3.015625 -2.859375 C 3.40625 -2.859375 3.421875 -2.515625 3.421875 -2.375 C 3.421875 -2.203125 3.40625 -2.109375 3.296875 -1.734375 L 3.015625 -0.5625 C 2.96875 -0.421875 2.90625 -0.1875 2.90625 -0.15625 C 2.90625 0 3.03125 0.0625 3.15625 0.0625 C 3.28125 0.0625 3.390625 -0.015625 3.421875 -0.078125 C 3.453125 -0.140625 3.515625 -0.375 3.546875 -0.515625 L 3.703125 -1.140625 C 3.734375 -1.296875 3.78125 -1.4375 3.8125 -1.609375 C 3.890625 -1.90625 3.890625 -1.921875 4.03125 -2.125 C 4.25 -2.46875 4.59375 -2.859375 5.140625 -2.859375 C 5.53125 -2.859375 5.546875 -2.546875 5.546875 -2.375 C 5.546875 -1.96875 5.25 -1.1875 5.140625 -0.90625 C 5.0625 -0.703125 5.03125 -0.640625 5.03125 -0.53125 C 5.03125 -0.15625 5.34375 0.0625 5.703125 0.0625 C 6.390625 0.0625 6.6875 -0.890625 6.6875 -0.984375 Z M 6.6875 -0.984375 "/>
</g>
<g id="glyph-5-3">
<path d="M 3.859375 -2.609375 C 3.890625 -2.71875 3.890625 -2.71875 3.890625 -2.765625 C 3.890625 -2.90625 3.78125 -2.984375 3.65625 -2.984375 C 3.578125 -2.984375 3.453125 -2.953125 3.375 -2.828125 C 3.34375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.109375 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.875 -2.046875 C 1.96875 -2.265625 2 -2.359375 2 -2.46875 C 2 -2.796875 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.109375 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.859375 1.3125 -2.859375 C 1.4375 -2.859375 1.484375 -2.78125 1.484375 -2.625 C 1.484375 -2.46875 1.421875 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 0.984375 -1.109375 0.984375 -0.8125 C 0.984375 -0.6875 0.984375 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.25 0.78125 C 2.0625 0.984375 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 0.984375 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.421875 1.421875 C 2.125 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.609375 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0.273438 14 L 129 14 L 129 104.84375 L 0.273438 104.84375 Z M 0.273438 14 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 166 69 L 209 69 L 209 104.84375 L 166 104.84375 Z M 166 69 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 198 90 L 209.519531 90 L 209.519531 92 L 198 92 Z M 198 90 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 181 75 L 209.519531 75 L 209.519531 104.84375 L 181 104.84375 Z M 181 75 "/>
</clipPath>
<clipPath id="clip-4">
<path clip-rule="nonzero" d="M 188 15 L 209.519531 15 L 209.519531 47 L 188 47 Z M 188 15 "/>
</clipPath>
<clipPath id="clip-5">
<path clip-rule="nonzero" d="M 0.273438 15 L 32 15 L 32 47 L 0.273438 47 Z M 0.273438 15 "/>
</clipPath>
<clipPath id="clip-6">
<path clip-rule="nonzero" d="M 83 75 L 116 75 L 116 104.84375 L 83 104.84375 Z M 83 75 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 1.265625 103.855469 L 128.140625 103.855469 L 128.140625 14.917969 L 1.265625 14.917969 Z M 1.265625 103.855469 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -25.132696 -73.51387 L 102.439135 -73.51387 L 102.439135 15.912098 L -25.132696 15.912098 Z M -25.132696 -73.51387 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="35.708154" y="10.624647"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="42.179187" y="10.624647"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="52.634301" y="10.624647"/>
<use xlink:href="#glyph-0-3" x="57.038487" y="10.624647"/>
<use xlink:href="#glyph-0-4" x="61.992578" y="10.624647"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-5" x="67.220135" y="10.624647"/>
<use xlink:href="#glyph-0-6" x="71.073427" y="10.624647"/>
<use xlink:href="#glyph-0-3" x="74.954461" y="10.624647"/>
<use xlink:href="#glyph-0-7" x="79.908552" y="10.624647"/>
<use xlink:href="#glyph-0-7" x="82.661045" y="10.624647"/>
<use xlink:href="#glyph-0-8" x="85.413538" y="10.624647"/>
<use xlink:href="#glyph-0-6" x="89.817725" y="10.624647"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972357 0.00096828 C 6.972357 3.850118 3.849833 6.972643 0.000682573 6.972643 C -3.852395 6.972643 -6.97492 3.850118 -6.97492 0.00096828 C -6.97492 -3.852109 -3.852395 -6.974634 0.000682573 -6.974634 C 3.849833 -6.974634 6.972357 -3.852109 6.972357 0.00096828 Z M 6.972357 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="21.94773" y="33.643223"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="16.573248" y="45.440429"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.427042 0.00096828 C 29.427042 3.850118 26.304517 6.972643 22.45144 6.972643 C 18.598362 6.972643 15.479765 3.850118 15.479765 0.00096828 C 15.479765 -3.852109 18.598362 -6.974634 22.45144 -6.974634 C 26.304517 -6.974634 29.427042 -3.852109 29.427042 0.00096828 Z M 29.427042 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="44.276096" y="33.643223"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="38.902609" y="45.440429"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.93282 -8.502511 L 69.611383 -8.502511 L 69.611383 8.504448 L 46.93282 8.504448 Z M 46.93282 -8.502511 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="81.477775" y="34.183257"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 113.126418 -8.502511 L 135.804982 -8.502511 L 135.804982 8.504448 L 113.126418 8.504448 Z M 113.126418 -8.502511 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="144.759217" y="34.467694"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="152.550425" y="30.871446"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 158.754557 0.00096828 C 158.754557 3.850118 155.632032 6.972643 151.778954 6.972643 C 147.929804 6.972643 144.807279 3.850118 144.807279 0.00096828 C 144.807279 -3.852109 147.929804 -6.974634 151.778954 -6.974634 C 155.632032 -6.974634 158.754557 -3.852109 158.754557 0.00096828 Z M 158.754557 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="172.896678" y="33.643223"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 66.355317 -40.682191 L 89.029953 -40.682191 L 89.029953 -23.675232 L 66.355317 -23.675232 Z M 66.355317 -40.682191 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="99.634056" y="66.129798"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.510322 -40.682191 L 50.188886 -40.682191 L 50.188886 -23.675232 L 27.510322 -23.675232 Z M 27.510322 -40.682191 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="57.022092" y="65.386878"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0" x="65.257859" y="66.872717"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.93282 -69.028432 L 69.611383 -69.028432 L 69.611383 -52.021473 L 46.93282 -52.021473 Z M 46.93282 -69.028432 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="77.129656" y="93.578045"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-1" x="85.365423" y="95.064879"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 194.433594 90.9375 C 194.433594 87.105469 191.328125 84 187.496094 84 C 183.667969 84 180.5625 87.105469 180.5625 90.9375 C 180.5625 94.769531 183.667969 97.875 187.496094 97.875 C 191.328125 97.875 194.433594 94.769531 194.433594 90.9375 Z M 194.433594 90.9375 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 169.096202 -60.524953 C 169.096202 -56.671875 165.973677 -53.54935 162.120599 -53.54935 C 158.271449 -53.54935 155.148925 -56.671875 155.148925 -60.524953 C 155.148925 -64.378031 158.271449 -67.500555 162.120599 -67.500555 C 165.973677 -67.500555 169.096202 -64.378031 169.096202 -60.524953 Z M 169.096202 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="183.182187" y="93.836624"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.972357 0.00096828 L 10.845074 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051986 0.00096828 L 1.609752 1.682026 L 3.086569 0.00096828 L 1.609752 -1.684017 Z M 6.051986 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 34.223259, 30.74315)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.427042 0.00096828 L 41.79931 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.05411 0.00096828 L 1.607949 1.682026 L 3.088693 0.00096828 L 1.607949 -1.684017 Z M 6.05411 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 65.010209, 30.74315)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 70.106274 0.00096828 L 107.992908 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053698 0.00096828 L 1.607537 1.682026 L 3.088281 0.00096828 L 1.607537 -1.684017 Z M 6.053698 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 130.84265, 30.74315)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-3" x="128.802853" y="26.945011"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 136.3038 0.00096828 L 140.172589 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051531 0.00096828 L 1.609297 1.682026 L 3.086114 0.00096828 L 1.609297 -1.684017 Z M 6.051531 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 162.844806, 30.74315)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 98.456443 0.00096828 L 98.456443 -32.178712 L 94.163462 -32.178712 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055228 0.000791884 L 1.609067 1.681849 L 3.085883 0.000791884 L 1.609067 -1.684193 Z M 6.055228 0.000791884 " transform="matrix(-0.994538, 0, 0, 0.994538, 122.73309, 62.745306)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 126.160156 30.742188 C 126.160156 29.648438 125.273438 28.761719 124.179688 28.761719 C 123.082031 28.761719 122.195312 29.648438 122.195312 30.742188 C 122.195312 31.835938 123.082031 32.726562 124.179688 32.726562 C 125.273438 32.726562 126.160156 31.835938 126.160156 30.742188 Z M 126.160156 30.742188 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 65.856498 -32.178712 L 55.318468 -32.178712 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052384 0.000791884 L 1.610151 1.681849 L 3.086967 0.000791884 L 1.610151 -1.684193 Z M 6.052384 0.000791884 " transform="matrix(-0.994538, 0, 0, 0.994538, 84.101356, 62.745306)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.011504 -32.178712 L 22.45144 -32.178712 L 22.45144 -11.609325 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053434 0.000480462 L 1.607273 1.681538 L 3.088018 0.000480462 L 1.607273 -1.684505 Z M 6.053434 0.000480462 " transform="matrix(0, -0.994538, -0.994538, 0, 48.590322, 45.110213)"/>
<g clip-path="url(#clip-2)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 173.730893 -60.524953 L 183.271286 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
</g>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 195.84375 90.9375 L 200.265625 92.609375 L 198.792969 90.9375 L 200.265625 89.261719 Z M 195.84375 90.9375 "/>
<g clip-path="url(#clip-3)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054077 0.000232789 L 1.607916 1.68129 L 3.08866 0.000232789 L 1.607916 -1.684752 Z M 6.054077 0.000232789 " transform="matrix(-0.994538, 0, 0, 0.994538, 201.864758, 90.937268)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-4" x="198.782506" y="87.138413"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 158.754557 0.00096828 L 178.636595 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 207.117188 30.742188 L 202.699219 29.070312 L 204.167969 30.742188 L 202.699219 32.417969 Z M 207.117188 30.742188 "/>
<g clip-path="url(#clip-4)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052037 0.00096828 L 1.609804 1.682026 L 3.086621 0.00096828 L 1.609804 -1.684017 Z M 6.052037 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 201.098208, 30.74315)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="199.516475" y="25.018591"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 162.120599 0.00096828 L 162.120599 -48.918587 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052709 -0.00160062 L 1.610476 1.683384 L 3.087292 -0.00160062 L 1.610476 -1.682658 Z M 6.052709 -0.00160062 " transform="matrix(0, 0.994538, 0.994538, 0, 187.497686, 76.570196)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 189.480469 30.742188 C 189.480469 29.648438 188.59375 28.761719 187.496094 28.761719 C 186.402344 28.761719 185.515625 29.648438 185.515625 30.742188 C 185.515625 31.835938 186.402344 32.726562 187.496094 32.726562 C 188.59375 32.726562 189.480469 31.835938 189.480469 30.742188 Z M 189.480469 30.742188 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.605683 0.00096828 L -21.146077 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 17.914062 30.742188 L 13.492188 29.070312 L 14.964844 30.742188 L 13.492188 32.417969 Z M 17.914062 30.742188 "/>
<g clip-path="url(#clip-5)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053149 0.00096828 L 1.606988 1.682026 L 3.087732 0.00096828 L 1.606988 -1.684017 Z M 6.053149 0.00096828 " transform="matrix(0.994538, 0, 0, -0.994538, 11.893978, 30.74315)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-6" x="9.02769" y="26.945011"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 155.148925 -60.524953 L 74.740965 -60.524953 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 97.398438 90.9375 L 101.816406 92.609375 L 100.347656 90.9375 L 101.816406 89.261719 Z M 97.398438 90.9375 "/>
<g clip-path="url(#clip-6)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051837 0.000232789 L 1.609604 1.68129 L 3.08642 0.000232789 L 1.609604 -1.684752 Z M 6.051837 0.000232789 " transform="matrix(-0.994538, 0, 0, 0.994538, 103.417218, 90.937268)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="99.783237" y="85.211993"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-2" x="104.640559" y="86.697833"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 151.778954 11.607334 L 151.778954 21.147727 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051508 -0.000935665 L 1.609275 1.684049 L 3.086091 -0.000935665 L 1.609275 -1.681993 Z M 6.051508 -0.000935665 " transform="matrix(0, 0.994538, 0.994538, 0, 177.211868, 16.376078)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-7" x="181.008128" y="20.390013"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-3" x="186.164806" y="21.875852"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.434001 -60.524953 L 0.000682573 -60.524953 L 0.000682573 -11.609325 " transform="matrix(0.994538, 0, 0, -0.994538, 26.26104, 30.74315)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053434 -0.000682573 L 1.607273 1.684303 L 3.088018 -0.000682573 L 1.607273 -1.68174 Z M 6.053434 -0.000682573 " transform="matrix(0, -0.994538, -0.994538, 0, 26.26104, 45.110213)"/>
</svg>

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,246 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="237.224pt" height="88.776pt" viewBox="0 0 237.224 88.776">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 7.28125 -0.875 C 7.28125 -0.9375 7.28125 -1.046875 7.140625 -1.046875 C 7.03125 -1.046875 7.03125 -0.953125 7.03125 -0.890625 C 6.96875 -0.171875 6.625 0 6.375 0 C 5.890625 0 5.796875 -0.5 5.671875 -1.4375 L 5.53125 -2.21875 C 5.359375 -2.859375 4.875 -3.1875 4.328125 -3.375 C 5.28125 -3.625 6.0625 -4.21875 6.0625 -5 C 6.0625 -5.953125 4.921875 -6.78125 3.46875 -6.78125 L 0.34375 -6.78125 L 0.34375 -6.484375 L 0.59375 -6.484375 C 1.34375 -6.484375 1.375 -6.375 1.375 -6.015625 L 1.375 -0.78125 C 1.375 -0.421875 1.34375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.40625 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.890625 -0.03125 3.25 0 L 3.25 -0.3125 L 3.015625 -0.3125 C 2.25 -0.3125 2.21875 -0.421875 2.21875 -0.78125 L 2.21875 -3.296875 L 3.375 -3.296875 C 3.53125 -3.296875 3.9375 -3.296875 4.296875 -2.953125 C 4.671875 -2.59375 4.671875 -2.28125 4.671875 -1.625 C 4.671875 -0.96875 4.671875 -0.578125 5.078125 -0.203125 C 5.484375 0.15625 6.03125 0.21875 6.328125 0.21875 C 7.109375 0.21875 7.28125 -0.59375 7.28125 -0.875 Z M 5.03125 -5 C 5.03125 -4.3125 4.796875 -3.515625 3.328125 -3.515625 L 2.21875 -3.515625 L 2.21875 -6.078125 C 2.21875 -6.3125 2.21875 -6.421875 2.4375 -6.453125 C 2.546875 -6.484375 2.828125 -6.484375 3.03125 -6.484375 C 3.921875 -6.484375 5.03125 -6.4375 5.03125 -5 Z M 5.03125 -5 "/>
</g>
<g id="glyph-0-1">
<path d="M 6.8125 -4.484375 L 6.625 -6.734375 L 0.546875 -6.734375 L 0.359375 -4.484375 L 0.609375 -4.484375 C 0.75 -6.09375 0.890625 -6.421875 2.390625 -6.421875 C 2.578125 -6.421875 2.828125 -6.421875 2.9375 -6.40625 C 3.140625 -6.359375 3.140625 -6.25 3.140625 -6.015625 L 3.140625 -0.78125 C 3.140625 -0.453125 3.140625 -0.3125 2.09375 -0.3125 L 1.703125 -0.3125 L 1.703125 0 C 2.109375 -0.03125 3.125 -0.03125 3.578125 -0.03125 C 4.03125 -0.03125 5.0625 -0.03125 5.46875 0 L 5.46875 -0.3125 L 5.0625 -0.3125 C 4.03125 -0.3125 4.03125 -0.453125 4.03125 -0.78125 L 4.03125 -6.015625 C 4.03125 -6.21875 4.03125 -6.359375 4.203125 -6.40625 C 4.3125 -6.421875 4.578125 -6.421875 4.765625 -6.421875 C 6.265625 -6.421875 6.421875 -6.09375 6.5625 -4.484375 Z M 6.8125 -4.484375 "/>
</g>
<g id="glyph-0-2">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.03125 -1.28125 4 -1.28125 C 3.90625 -1.28125 3.890625 -1.25 3.859375 -1.1875 C 3.578125 -0.265625 2.9375 -0.140625 2.5625 -0.140625 C 2.03125 -0.140625 1.15625 -0.5625 1.15625 -2.171875 C 1.15625 -3.78125 1.984375 -4.203125 2.5 -4.203125 C 2.59375 -4.203125 3.21875 -4.1875 3.5625 -3.828125 C 3.15625 -3.8125 3.09375 -3.515625 3.09375 -3.375 C 3.09375 -3.125 3.28125 -2.921875 3.5625 -2.921875 C 3.8125 -2.921875 4.015625 -3.09375 4.015625 -3.390625 C 4.015625 -4.0625 3.265625 -4.453125 2.5 -4.453125 C 1.25 -4.453125 0.34375 -3.375 0.34375 -2.140625 C 0.34375 -0.875 1.328125 0.109375 2.46875 0.109375 C 3.8125 0.109375 4.125 -1.078125 4.125 -1.1875 Z M 4.125 -1.1875 "/>
</g>
<g id="glyph-0-3">
<path d="M 4.6875 -2.125 C 4.6875 -3.40625 3.6875 -4.453125 2.484375 -4.453125 C 1.25 -4.453125 0.28125 -3.375 0.28125 -2.125 C 0.28125 -0.84375 1.3125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.6875 -0.859375 4.6875 -2.125 Z M 3.859375 -2.203125 C 3.859375 -1.84375 3.859375 -1.3125 3.640625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.484375 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.34375 -0.8125 C 1.109375 -1.25 1.109375 -1.84375 1.109375 -2.203125 C 1.109375 -2.59375 1.109375 -3.125 1.34375 -3.5625 C 1.609375 -4.03125 2.078125 -4.234375 2.46875 -4.234375 C 2.90625 -4.234375 3.34375 -4.015625 3.59375 -3.59375 C 3.859375 -3.15625 3.859375 -2.578125 3.859375 -2.203125 Z M 3.859375 -2.203125 "/>
</g>
<g id="glyph-0-4">
<path d="M 5.3125 0 L 5.3125 -0.3125 C 4.796875 -0.3125 4.546875 -0.3125 4.546875 -0.609375 L 4.546875 -2.5 C 4.546875 -3.359375 4.546875 -3.671875 4.234375 -4.03125 C 4.09375 -4.1875 3.765625 -4.390625 3.1875 -4.390625 C 2.46875 -4.390625 2 -3.96875 1.71875 -3.34375 L 1.71875 -4.390625 L 0.3125 -4.28125 L 0.3125 -3.96875 C 1.015625 -3.96875 1.09375 -3.90625 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 L 1.4375 -0.03125 L 2.546875 0 L 2.546875 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.578125 C 1.78125 -3.625 2.484375 -4.171875 3.125 -4.171875 C 3.75 -4.171875 3.859375 -3.640625 3.859375 -3.078125 L 3.859375 -0.75 C 3.859375 -0.3125 3.75 -0.3125 3.078125 -0.3125 L 3.078125 0 L 4.203125 -0.03125 Z M 5.3125 0 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.296875 -1.234375 L 3.296875 -1.796875 L 3.046875 -1.796875 L 3.046875 -1.25 C 3.046875 -0.515625 2.75 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 L 1.71875 -3.96875 L 3.140625 -3.96875 L 3.140625 -4.28125 L 1.71875 -4.28125 L 1.71875 -6.109375 L 1.46875 -6.109375 C 1.453125 -5.296875 1.15625 -4.234375 0.1875 -4.1875 L 0.1875 -3.96875 L 1.03125 -3.96875 L 1.03125 -1.234375 C 1.03125 -0.015625 1.953125 0.109375 2.3125 0.109375 C 3.015625 0.109375 3.296875 -0.59375 3.296875 -1.234375 Z M 3.296875 -1.234375 "/>
</g>
<g id="glyph-0-6">
<path d="M 3.625 -3.78125 C 3.625 -4.109375 3.3125 -4.390625 2.875 -4.390625 C 2.15625 -4.390625 1.796875 -3.734375 1.65625 -3.296875 L 1.65625 -4.390625 L 0.28125 -4.28125 L 0.28125 -3.96875 C 0.96875 -3.96875 1.046875 -3.90625 1.046875 -3.421875 L 1.046875 -0.75 C 1.046875 -0.3125 0.9375 -0.3125 0.28125 -0.3125 L 0.28125 0 L 1.40625 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.671875 0 L 2.671875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.703125 -0.421875 1.703125 -0.78125 L 1.703125 -2.3125 C 1.703125 -3.296875 2.125 -4.171875 2.875 -4.171875 C 2.953125 -4.171875 2.96875 -4.171875 2.984375 -4.15625 C 2.96875 -4.15625 2.765625 -4.03125 2.765625 -3.78125 C 2.765625 -3.5 2.96875 -3.34375 3.1875 -3.34375 C 3.375 -3.34375 3.625 -3.46875 3.625 -3.78125 Z M 3.625 -3.78125 "/>
</g>
<g id="glyph-0-7">
<path d="M 2.53125 0 L 2.53125 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 L 1.765625 -6.890625 L 0.328125 -6.78125 L 0.328125 -6.484375 C 1.03125 -6.484375 1.109375 -6.40625 1.109375 -5.921875 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 L 1.4375 -0.03125 Z M 2.53125 0 "/>
</g>
<g id="glyph-0-8">
<path d="M 4.125 -1.1875 C 4.125 -1.28125 4.046875 -1.296875 4 -1.296875 C 3.90625 -1.296875 3.890625 -1.25 3.859375 -1.15625 C 3.515625 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 L 3.875 -2.296875 C 4.09375 -2.296875 4.125 -2.296875 4.125 -2.5 C 4.125 -3.484375 3.59375 -4.453125 2.34375 -4.453125 C 1.1875 -4.453125 0.28125 -3.421875 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.671875 0.109375 4.125 -1 4.125 -1.1875 Z M 3.46875 -2.5 L 1.109375 -2.5 C 1.171875 -3.984375 2 -4.234375 2.34375 -4.234375 C 3.375 -4.234375 3.46875 -2.890625 3.46875 -2.5 Z M 3.46875 -2.5 "/>
</g>
<g id="glyph-1-0">
<path d="M 8.09375 -2.984375 C 8.09375 -3.203125 7.890625 -3.203125 7.71875 -3.203125 L 4.53125 -3.203125 L 4.53125 -6.390625 C 4.53125 -6.5625 4.53125 -6.765625 4.328125 -6.765625 C 4.109375 -6.765625 4.109375 -6.578125 4.109375 -6.390625 L 4.109375 -3.203125 L 0.921875 -3.203125 C 0.75 -3.203125 0.546875 -3.203125 0.546875 -3 C 0.546875 -2.78125 0.75 -2.78125 0.921875 -2.78125 L 4.109375 -2.78125 L 4.109375 0.390625 C 4.109375 0.5625 4.109375 0.765625 4.3125 0.765625 C 4.53125 0.765625 4.53125 0.578125 4.53125 0.390625 L 4.53125 -2.78125 L 7.71875 -2.78125 C 7.875 -2.78125 8.09375 -2.78125 8.09375 -2.984375 Z M 8.09375 -2.984375 "/>
</g>
<g id="glyph-2-0">
<path d="M 6.890625 -2.484375 C 6.890625 -2.6875 6.703125 -2.6875 6.5625 -2.6875 L 1.15625 -2.6875 C 1.015625 -2.6875 0.828125 -2.6875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</g>
<g id="glyph-2-1">
<path d="M 4.40625 -2.484375 C 4.40625 -3.546875 3.53125 -4.40625 2.484375 -4.40625 C 1.40625 -4.40625 0.5625 -3.53125 0.5625 -2.484375 C 0.5625 -1.421875 1.4375 -0.5625 2.46875 -0.5625 C 3.5625 -0.5625 4.40625 -1.4375 4.40625 -2.484375 Z M 4.40625 -2.484375 "/>
</g>
<g id="glyph-3-0">
<path d="M 7.140625 -0.203125 C 7.140625 -0.3125 7.046875 -0.3125 6.859375 -0.3125 C 6.484375 -0.3125 6.21875 -0.3125 6.21875 -0.484375 C 6.21875 -0.546875 6.234375 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.671875 -6.375 7.6875 -6.484375 8.421875 -6.484375 C 8.671875 -6.484375 8.75 -6.484375 8.75 -6.671875 C 8.75 -6.78125 8.640625 -6.78125 8.609375 -6.78125 L 7.34375 -6.75 L 6.0625 -6.78125 C 5.984375 -6.78125 5.875 -6.78125 5.875 -6.59375 C 5.875 -6.484375 5.96875 -6.484375 6.15625 -6.484375 C 6.15625 -6.484375 6.359375 -6.484375 6.53125 -6.453125 C 6.703125 -6.4375 6.796875 -6.421875 6.796875 -6.296875 C 6.796875 -6.265625 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.71875 -6.015625 C 3.8125 -6.375 3.828125 -6.484375 4.546875 -6.484375 C 4.8125 -6.484375 4.890625 -6.484375 4.890625 -6.671875 C 4.890625 -6.78125 4.78125 -6.78125 4.75 -6.78125 L 3.484375 -6.75 L 2.203125 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.59375 C 2 -6.484375 2.09375 -6.484375 2.28125 -6.484375 C 2.28125 -6.484375 2.5 -6.484375 2.65625 -6.453125 C 2.84375 -6.4375 2.9375 -6.421875 2.9375 -6.296875 C 2.9375 -6.265625 2.921875 -6.234375 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.078125 0 C 3.15625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.1875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.296875 -0.3125 5.109375 -0.3125 4.484375 -0.3125 C 4.34375 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.65625 -0.03125 L 6.296875 -0.015625 C 6.515625 -0.015625 6.734375 0 6.9375 0 C 7.015625 0 7.140625 0 7.140625 -0.203125 Z M 7.140625 -0.203125 "/>
</g>
<g id="glyph-3-1">
<path d="M 7.171875 -2.609375 C 7.171875 -2.671875 7.109375 -2.71875 7.03125 -2.71875 C 6.8125 -2.71875 6.21875 -2.6875 6 -2.6875 L 4.59375 -2.71875 C 4.515625 -2.71875 4.390625 -2.71875 4.390625 -2.515625 C 4.390625 -2.40625 4.46875 -2.40625 4.6875 -2.40625 C 4.6875 -2.40625 4.984375 -2.40625 5.21875 -2.390625 C 5.46875 -2.359375 5.53125 -2.328125 5.53125 -2.203125 C 5.53125 -2.109375 5.421875 -1.65625 5.3125 -1.296875 C 5.03125 -0.203125 3.75 -0.09375 3.40625 -0.09375 C 2.4375 -0.09375 1.40625 -0.65625 1.40625 -2.171875 C 1.40625 -2.484375 1.5 -4.125 2.546875 -5.421875 C 3.078125 -6.09375 4.046875 -6.703125 5.03125 -6.703125 C 6.046875 -6.703125 6.625 -5.9375 6.625 -4.78125 C 6.625 -4.375 6.59375 -4.375 6.59375 -4.265625 C 6.59375 -4.171875 6.703125 -4.171875 6.75 -4.171875 C 6.875 -4.171875 6.875 -4.1875 6.921875 -4.375 L 7.546875 -6.90625 C 7.546875 -6.9375 7.53125 -7 7.4375 -7 C 7.40625 -7 7.40625 -7 7.296875 -6.890625 L 6.59375 -6.125 C 6.515625 -6.265625 6.046875 -7 4.953125 -7 C 2.734375 -7 0.5 -4.8125 0.5 -2.5 C 0.5 -0.921875 1.59375 0.21875 3.203125 0.21875 C 3.640625 0.21875 4.09375 0.125 4.453125 -0.015625 C 4.953125 -0.21875 5.140625 -0.421875 5.3125 -0.625 C 5.40625 -0.375 5.671875 -0.015625 5.765625 -0.015625 C 5.8125 -0.015625 5.828125 -0.046875 5.828125 -0.046875 C 5.859375 -0.0625 5.953125 -0.453125 6 -0.65625 L 6.1875 -1.421875 C 6.234375 -1.59375 6.28125 -1.765625 6.3125 -1.921875 C 6.421875 -2.375 6.4375 -2.390625 7 -2.40625 C 7.0625 -2.40625 7.171875 -2.421875 7.171875 -2.609375 Z M 7.171875 -2.609375 "/>
</g>
<g id="glyph-3-2">
<path d="M 5.78125 -2.375 C 5.890625 -2.796875 6 -3.296875 6 -3.703125 C 6 -3.953125 5.953125 -4.171875 5.796875 -4.296875 C 5.75 -4.359375 5.671875 -4.390625 5.578125 -4.390625 C 5.453125 -4.390625 5.328125 -4.328125 5.234375 -4.234375 C 5.140625 -4.140625 5.09375 -4.03125 5.09375 -3.921875 C 5.09375 -3.8125 5.125 -3.734375 5.203125 -3.671875 C 5.453125 -3.453125 5.578125 -3.140625 5.578125 -2.796875 C 5.578125 -2.671875 5.5625 -2.546875 5.53125 -2.421875 C 5.3125 -1.515625 4.734375 -0.609375 3.9375 -0.609375 C 3.390625 -0.609375 3.0625 -0.984375 2.96875 -1.5 C 3.09375 -1.78125 3.203125 -2.078125 3.265625 -2.375 C 3.296875 -2.46875 3.3125 -2.546875 3.3125 -2.640625 C 3.3125 -2.78125 3.265625 -2.890625 3.125 -2.890625 C 2.9375 -2.890625 2.828125 -2.640625 2.78125 -2.421875 C 2.703125 -2.109375 2.65625 -1.8125 2.65625 -1.53125 C 2.328125 -1 1.84375 -0.609375 1.296875 -0.609375 C 0.703125 -0.609375 0.4375 -1.109375 0.4375 -1.734375 C 0.4375 -1.921875 0.46875 -2.15625 0.515625 -2.375 C 0.671875 -2.96875 1.03125 -3.53125 1.40625 -4.046875 C 1.4375 -4.09375 1.453125 -4.140625 1.453125 -4.1875 C 1.453125 -4.25 1.40625 -4.296875 1.359375 -4.328125 C 1.328125 -4.34375 1.296875 -4.34375 1.265625 -4.34375 C 1.21875 -4.34375 1.140625 -4.3125 1.09375 -4.25 C 0.6875 -3.6875 0.4375 -3.046875 0.28125 -2.421875 C 0.171875 -2.046875 0.125 -1.65625 0.125 -1.3125 C 0.125 -0.5 0.421875 0.109375 1.171875 0.109375 C 1.796875 0.109375 2.3125 -0.328125 2.6875 -0.9375 C 2.796875 -0.328125 3.15625 0.109375 3.8125 0.109375 C 4.84375 0.109375 5.46875 -1.171875 5.78125 -2.375 Z M 5.78125 -2.375 "/>
</g>
<g id="glyph-3-3">
<path d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.3125 -1.515625 5.28125 -1.515625 C 5.171875 -1.515625 5.171875 -1.484375 5.140625 -1.34375 C 5 -0.78125 4.8125 -0.109375 4.390625 -0.109375 C 4.1875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.5625 -2.671875 C 4.59375 -2.828125 4.6875 -3.203125 4.734375 -3.34375 C 4.78125 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.59375 -4.28125 C 4.546875 -4.28125 4.28125 -4.265625 4.203125 -3.9375 L 3.453125 -0.9375 C 3.453125 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.421875 -3.390625 2.421875 -3.578125 C 2.421875 -4.03125 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.8125 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.65625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.765625 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.3125 -0.34375 3.484375 -0.5625 C 3.59375 -0.15625 3.9375 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</g>
<g id="glyph-3-4">
<path d="M 5.671875 -1.421875 C 5.671875 -1.515625 5.578125 -1.515625 5.5625 -1.515625 C 5.453125 -1.515625 5.453125 -1.484375 5.40625 -1.34375 C 5.203125 -0.671875 4.875 -0.109375 4.390625 -0.109375 C 4.21875 -0.109375 4.15625 -0.203125 4.15625 -0.4375 C 4.15625 -0.6875 4.25 -0.921875 4.328125 -1.140625 C 4.515625 -1.671875 4.9375 -2.765625 4.9375 -3.328125 C 4.9375 -4 4.515625 -4.390625 3.796875 -4.390625 C 2.90625 -4.390625 2.421875 -3.75 2.25 -3.53125 C 2.203125 -4.078125 1.78125 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.828125 C 0.421875 -3.484375 0.28125 -2.90625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.703125 0.9375 -4.171875 1.296875 -4.171875 C 1.5 -4.171875 1.609375 -4.046875 1.609375 -3.71875 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.875 L 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.1875 1.5625 -0.65625 1.625 -0.90625 L 1.84375 -1.796875 C 1.90625 -2.015625 1.96875 -2.234375 2.015625 -2.46875 L 2.140625 -2.96875 C 2.296875 -3.265625 2.828125 -4.171875 3.765625 -4.171875 C 4.21875 -4.171875 4.296875 -3.8125 4.296875 -3.484375 C 4.296875 -2.859375 3.8125 -1.59375 3.65625 -1.15625 C 3.5625 -0.9375 3.5625 -0.8125 3.5625 -0.703125 C 3.5625 -0.234375 3.90625 0.109375 4.375 0.109375 C 5.3125 0.109375 5.671875 -1.34375 5.671875 -1.421875 Z M 5.671875 -1.421875 "/>
</g>
<g id="glyph-3-5">
<path d="M 4.828125 -3.78125 C 4.875 -3.921875 4.875 -3.9375 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.484375 -4.28125 4.328125 -4.21875 4.234375 -4.078125 C 4.21875 -4.03125 4.140625 -3.71875 4.09375 -3.53125 L 3.890625 -2.75 L 3.453125 -0.953125 C 3.40625 -0.8125 2.984375 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.546875 1.703125 -0.921875 C 1.703125 -1.375 1.875 -1.984375 2.21875 -2.859375 C 2.375 -3.265625 2.421875 -3.375 2.421875 -3.578125 C 2.421875 -4.03125 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.875 1.234375 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.171875 1.8125 -3.859375 C 1.8125 -3.609375 1.71875 -3.34375 1.65625 -3.15625 C 1.25 -2.109375 1.078125 -1.546875 1.078125 -1.078125 C 1.078125 -0.1875 1.703125 0.109375 2.28125 0.109375 C 2.671875 0.109375 3.015625 -0.0625 3.296875 -0.34375 C 3.15625 0.171875 3.046875 0.671875 2.640625 1.1875 C 2.390625 1.53125 2 1.8125 1.546875 1.8125 C 1.40625 1.8125 0.96875 1.78125 0.796875 1.40625 C 0.953125 1.40625 1.078125 1.40625 1.21875 1.28125 C 1.328125 1.1875 1.421875 1.0625 1.421875 0.875 C 1.421875 0.5625 1.15625 0.53125 1.046875 0.53125 C 0.828125 0.53125 0.5 0.6875 0.5 1.171875 C 0.5 1.671875 0.9375 2.03125 1.546875 2.03125 C 2.578125 2.03125 3.59375 1.140625 3.875 0.015625 Z M 4.828125 -3.78125 "/>
</g>
<g id="glyph-3-6">
<path d="M 4.328125 -3.75 C 4.328125 -4.09375 4.015625 -4.390625 3.515625 -4.390625 C 2.859375 -4.390625 2.421875 -3.90625 2.234375 -3.625 C 2.15625 -4.078125 1.796875 -4.390625 1.328125 -4.390625 C 0.875 -4.390625 0.6875 -4 0.59375 -3.828125 C 0.421875 -3.484375 0.28125 -2.890625 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.765625 0.578125 -2.984375 C 0.75 -3.703125 0.9375 -4.171875 1.296875 -4.171875 C 1.46875 -4.171875 1.609375 -4.09375 1.609375 -3.71875 C 1.609375 -3.515625 1.578125 -3.40625 1.453125 -2.875 L 0.875 -0.59375 C 0.84375 -0.4375 0.78125 -0.203125 0.78125 -0.15625 C 0.78125 0.015625 0.921875 0.109375 1.078125 0.109375 C 1.1875 0.109375 1.375 0.03125 1.4375 -0.171875 C 1.453125 -0.203125 1.796875 -1.5625 1.84375 -1.734375 L 2.15625 -3.03125 C 2.203125 -3.15625 2.46875 -3.625 2.71875 -3.84375 C 2.796875 -3.921875 3.078125 -4.171875 3.515625 -4.171875 C 3.765625 -4.171875 3.921875 -4.046875 3.921875 -4.046875 C 3.625 -4 3.40625 -3.765625 3.40625 -3.515625 C 3.40625 -3.34375 3.515625 -3.15625 3.78125 -3.15625 C 4.046875 -3.15625 4.328125 -3.390625 4.328125 -3.75 Z M 4.328125 -3.75 "/>
</g>
<g id="glyph-3-7">
<path d="M 4.953125 -1.421875 C 4.953125 -1.515625 4.859375 -1.515625 4.828125 -1.515625 C 4.734375 -1.515625 4.71875 -1.484375 4.6875 -1.34375 C 4.515625 -0.703125 4.34375 -0.109375 3.9375 -0.109375 C 3.671875 -0.109375 3.640625 -0.375 3.640625 -0.5625 C 3.640625 -0.8125 3.65625 -0.875 3.703125 -1.046875 L 5.125 -6.78125 C 5.125 -6.78125 5.125 -6.890625 5 -6.890625 C 4.84375 -6.890625 3.90625 -6.8125 3.734375 -6.78125 C 3.65625 -6.78125 3.59375 -6.734375 3.59375 -6.59375 C 3.59375 -6.484375 3.6875 -6.484375 3.828125 -6.484375 C 4.3125 -6.484375 4.328125 -6.40625 4.328125 -6.3125 L 4.296875 -6.109375 L 3.703125 -3.75 C 3.53125 -4.125 3.234375 -4.390625 2.796875 -4.390625 C 1.625 -4.390625 0.390625 -2.9375 0.390625 -1.484375 C 0.390625 -0.546875 0.9375 0.109375 1.71875 0.109375 C 1.921875 0.109375 2.421875 0.0625 3.015625 -0.640625 C 3.09375 -0.21875 3.4375 0.109375 3.921875 0.109375 C 4.265625 0.109375 4.484375 -0.125 4.65625 -0.4375 C 4.8125 -0.796875 4.953125 -1.421875 4.953125 -1.421875 Z M 3.5625 -3.125 L 3.0625 -1.1875 C 3.015625 -1 3.015625 -0.984375 2.859375 -0.8125 C 2.421875 -0.265625 2.015625 -0.109375 1.734375 -0.109375 C 1.25 -0.109375 1.109375 -0.65625 1.109375 -1.046875 C 1.109375 -1.546875 1.421875 -2.765625 1.65625 -3.21875 C 1.953125 -3.8125 2.40625 -4.171875 2.796875 -4.171875 C 3.453125 -4.171875 3.59375 -3.359375 3.59375 -3.296875 C 3.59375 -3.234375 3.5625 -3.1875 3.5625 -3.125 Z M 3.5625 -3.125 "/>
</g>
<g id="glyph-4-0">
<path d="M 5.453125 -1.734375 C 5.453125 -1.90625 5.296875 -1.90625 5.1875 -1.90625 L 1.015625 -1.90625 C 0.90625 -1.90625 0.75 -1.90625 0.75 -1.734375 C 0.75 -1.578125 0.921875 -1.578125 1.015625 -1.578125 L 5.1875 -1.578125 C 5.28125 -1.578125 5.453125 -1.578125 5.453125 -1.734375 Z M 5.453125 -1.734375 "/>
</g>
<g id="glyph-4-1">
<path d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.890625 1.671875 -3.890625 C 1.390625 -3.890625 1.328125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.359375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
</g>
<g id="glyph-5-0">
<path d="M 3.28125 0 L 3.28125 -0.25 L 3.03125 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.421875 C 2.328125 -4.609375 2.3125 -4.609375 2.125 -4.609375 C 1.671875 -4.171875 1.046875 -4.171875 0.765625 -4.171875 L 0.765625 -3.921875 C 0.921875 -3.921875 1.390625 -3.921875 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.078125 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
</g>
<g id="glyph-5-1">
<path d="M 3.59375 -2.21875 C 3.59375 -2.984375 3.5 -3.53125 3.171875 -4.015625 C 2.96875 -4.34375 2.53125 -4.609375 1.96875 -4.609375 C 0.359375 -4.609375 0.359375 -2.71875 0.359375 -2.21875 C 0.359375 -1.71875 0.359375 0.140625 1.96875 0.140625 C 3.59375 0.140625 3.59375 -1.71875 3.59375 -2.21875 Z M 2.953125 -2.3125 C 2.953125 -1.796875 2.953125 -1.28125 2.859375 -0.84375 C 2.71875 -0.203125 2.25 -0.0625 1.96875 -0.0625 C 1.65625 -0.0625 1.234375 -0.25 1.09375 -0.8125 C 1 -1.21875 1 -1.796875 1 -2.3125 C 1 -2.8125 1 -3.34375 1.09375 -3.734375 C 1.25 -4.28125 1.6875 -4.421875 1.96875 -4.421875 C 2.34375 -4.421875 2.71875 -4.1875 2.84375 -3.796875 C 2.953125 -3.40625 2.953125 -2.90625 2.953125 -2.3125 Z M 2.953125 -2.3125 "/>
</g>
<g id="glyph-6-0">
<path d="M 5.546875 -0.140625 C 5.546875 -0.25 5.484375 -0.25 5.3125 -0.25 C 5.203125 -0.25 5.1875 -0.25 5.0625 -0.265625 C 4.90625 -0.28125 4.90625 -0.296875 4.90625 -0.375 C 4.90625 -0.40625 4.921875 -0.484375 4.9375 -0.515625 L 5.84375 -4.1875 C 5.90625 -4.4375 5.921875 -4.5 6.4375 -4.5 C 6.59375 -4.5 6.671875 -4.5 6.671875 -4.65625 C 6.671875 -4.671875 6.65625 -4.75 6.5625 -4.75 C 6.359375 -4.75 5.859375 -4.71875 5.65625 -4.71875 C 5.53125 -4.71875 5.296875 -4.71875 5.171875 -4.734375 C 5.03125 -4.734375 4.875 -4.75 4.734375 -4.75 C 4.6875 -4.75 4.59375 -4.75 4.59375 -4.59375 C 4.59375 -4.5 4.671875 -4.5 4.8125 -4.5 C 4.8125 -4.5 4.953125 -4.5 5.078125 -4.484375 C 5.21875 -4.46875 5.234375 -4.453125 5.234375 -4.390625 C 5.234375 -4.390625 5.234375 -4.34375 5.203125 -4.234375 L 4.796875 -2.59375 L 2.46875 -2.59375 L 2.875 -4.203125 C 2.9375 -4.4375 2.953125 -4.5 3.484375 -4.5 C 3.609375 -4.5 3.6875 -4.5 3.6875 -4.65625 C 3.6875 -4.671875 3.671875 -4.75 3.578125 -4.75 C 3.375 -4.75 2.875 -4.71875 2.671875 -4.71875 C 2.546875 -4.71875 2.3125 -4.71875 2.1875 -4.734375 C 2.046875 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.25 -0.3125 1.234375 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 -0.03125 0.53125 0 0.59375 0 C 0.796875 0 1.296875 -0.03125 1.5 -0.03125 C 1.609375 -0.03125 1.859375 -0.03125 1.96875 -0.015625 C 2.109375 -0.015625 2.28125 0 2.421875 0 C 2.453125 0 2.5625 0 2.5625 -0.140625 C 2.5625 -0.25 2.5 -0.25 2.34375 -0.25 C 2.21875 -0.25 2.203125 -0.25 2.078125 -0.265625 C 1.921875 -0.28125 1.921875 -0.296875 1.921875 -0.375 C 1.921875 -0.375 1.921875 -0.421875 1.953125 -0.515625 L 2.40625 -2.34375 L 4.734375 -2.34375 L 4.28125 -0.546875 C 4.234375 -0.3125 4.21875 -0.25 3.671875 -0.25 C 3.546875 -0.25 3.46875 -0.25 3.46875 -0.109375 C 3.46875 -0.03125 3.515625 0 3.578125 0 C 3.78125 0 4.28125 -0.03125 4.484375 -0.03125 C 4.59375 -0.03125 4.84375 -0.03125 4.953125 -0.015625 C 5.09375 -0.015625 5.265625 0 5.40625 0 C 5.4375 0 5.546875 0 5.546875 -0.140625 Z M 5.546875 -0.140625 "/>
</g>
<g id="glyph-6-1">
<path d="M 5.015625 -1.734375 C 5.015625 -1.75 5 -1.828125 4.890625 -1.828125 C 4.8125 -1.828125 4.796875 -1.796875 4.75 -1.6875 C 4.484375 -1.015625 4.1875 -0.25 2.90625 -0.25 L 2.125 -0.25 C 1.90625 -0.25 1.90625 -0.25 1.90625 -0.3125 C 1.90625 -0.3125 1.90625 -0.359375 1.9375 -0.46875 L 2.859375 -4.171875 C 2.921875 -4.421875 2.953125 -4.5 3.59375 -4.5 C 3.796875 -4.5 3.875 -4.5 3.875 -4.65625 C 3.875 -4.65625 3.859375 -4.75 3.75 -4.75 C 3.59375 -4.75 3.40625 -4.734375 3.234375 -4.734375 L 2.6875 -4.71875 L 2.203125 -4.734375 C 2.0625 -4.734375 1.890625 -4.75 1.75 -4.75 C 1.703125 -4.75 1.609375 -4.75 1.609375 -4.59375 C 1.609375 -4.5 1.6875 -4.5 1.828125 -4.5 C 1.828125 -4.5 1.96875 -4.5 2.09375 -4.484375 C 2.234375 -4.46875 2.25 -4.453125 2.25 -4.390625 C 2.25 -4.390625 2.25 -4.34375 2.21875 -4.234375 L 1.296875 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.6875 -0.25 C 0.5625 -0.25 0.484375 -0.25 0.484375 -0.109375 C 0.484375 0 0.5625 0 0.6875 0 L 4.1875 0 C 4.359375 0 4.359375 0 4.421875 -0.140625 C 4.484375 -0.328125 5.015625 -1.671875 5.015625 -1.734375 Z M 5.015625 -1.734375 "/>
</g>
<g id="glyph-6-2">
<path d="M 3.859375 -2.625 C 3.890625 -2.71875 3.890625 -2.734375 3.890625 -2.78125 C 3.890625 -2.90625 3.78125 -3 3.671875 -3 C 3.59375 -3 3.453125 -2.96875 3.375 -2.828125 C 3.359375 -2.78125 3.296875 -2.5625 3.265625 -2.421875 L 3.125 -1.84375 L 2.84375 -0.734375 C 2.84375 -0.734375 2.53125 -0.125 1.984375 -0.125 C 1.515625 -0.125 1.515625 -0.578125 1.515625 -0.703125 C 1.515625 -1.078125 1.671875 -1.515625 1.890625 -2.046875 C 1.96875 -2.28125 2 -2.359375 2 -2.46875 C 2 -2.8125 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.125 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.953125 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.875 1.328125 -2.875 C 1.4375 -2.875 1.5 -2.796875 1.5 -2.625 C 1.5 -2.46875 1.4375 -2.3125 1.390625 -2.21875 C 1.0625 -1.375 1 -1.125 1 -0.8125 C 1 -0.703125 1 -0.375 1.265625 -0.140625 C 1.484375 0.03125 1.765625 0.0625 1.953125 0.0625 C 2.234375 0.0625 2.484375 -0.03125 2.71875 -0.25 C 2.625 0.140625 2.546875 0.4375 2.265625 0.78125 C 2.078125 1 1.796875 1.21875 1.421875 1.21875 C 1.375 1.21875 1.046875 1.21875 0.90625 1 C 1.28125 0.953125 1.28125 0.609375 1.28125 0.609375 C 1.28125 0.390625 1.078125 0.34375 1.015625 0.34375 C 0.828125 0.34375 0.609375 0.484375 0.609375 0.8125 C 0.609375 1.15625 0.9375 1.421875 1.4375 1.421875 C 2.140625 1.421875 2.984375 0.875 3.203125 0 Z M 3.859375 -2.625 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 0 14 L 131 14 L 131 88.519531 L 0 88.519531 Z M 0 14 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 187 53 L 230 53 L 230 88.519531 L 187 88.519531 Z M 187 53 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 203 58 L 236 58 L 236 88.519531 L 203 88.519531 Z M 203 58 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 215 15 L 236.449219 15 L 236.449219 47 L 215 47 Z M 215 15 "/>
</clipPath>
<clipPath id="clip-4">
<path clip-rule="nonzero" d="M 68 58 L 101 58 L 101 88.519531 L 68 88.519531 Z M 68 58 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 0.992188 87.527344 L 129.941406 87.527344 L 129.941406 14.984375 L 0.992188 14.984375 Z M 0.992188 87.527344 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -30.803567 -56.86746 L 98.567467 -56.86746 L 98.567467 15.912809 L -30.803567 15.912809 Z M -30.803567 -56.86746 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="36.407904" y="10.682257"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="42.893263" y="10.682257"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="53.371522" y="10.682257"/>
<use xlink:href="#glyph-0-3" x="57.785459" y="10.682257"/>
<use xlink:href="#glyph-0-4" x="62.750518" y="10.682257"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-5" x="67.989647" y="10.682257"/>
<use xlink:href="#glyph-0-6" x="71.85147" y="10.682257"/>
<use xlink:href="#glyph-0-3" x="75.741097" y="10.682257"/>
<use xlink:href="#glyph-0-7" x="80.706155" y="10.682257"/>
<use xlink:href="#glyph-0-7" x="83.464742" y="10.682257"/>
<use xlink:href="#glyph-0-8" x="86.223328" y="10.682257"/>
<use xlink:href="#glyph-0-6" x="90.637265" y="10.682257"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.971944 0.00155554 C 6.971944 3.850041 3.852398 6.973506 -0.0000067489 6.973506 C -3.852411 6.973506 -6.971958 3.850041 -6.971958 0.00155554 C -6.971958 -3.850849 -3.852411 -6.974314 -0.0000067489 -6.974314 C 3.852398 -6.974314 6.971944 -3.850849 6.971944 0.00155554 Z M 6.971944 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="27.37246" y="33.751793"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="21.98608" y="45.57412"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.482161 -9.161132 L 50.908167 -9.161132 L 50.908167 9.164243 L 24.482161 9.164243 Z M 24.482161 -9.161132 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="59.405674" y="33.749799"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="68.467033" y="29.501696"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0" x="74.673636" y="29.501696"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-6-0" x="67.659674" y="36.667256"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 68.912182 -8.502735 L 94.084099 -8.502735 L 94.084099 8.505846 L 68.912182 8.505846 Z M 68.912182 -8.502735 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="103.692803" y="34.886082"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="111.500264" y="31.282869"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-5-0" x="117.706867" y="31.282869"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 112.088113 -8.502735 L 134.763609 -8.502735 L 134.763609 8.505846 L 112.088113 8.505846 Z M 112.088113 -8.502735 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-1" x="149.421218" y="34.577093"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-1" x="157.228678" y="30.97388"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 166.217728 0.00155554 C 166.217728 3.850041 163.098182 6.973506 159.245777 6.973506 C 155.393373 6.973506 152.269907 3.850041 152.269907 0.00155554 C 152.269907 -3.850849 155.393373 -6.974314 159.245777 -6.974314 C 163.098182 -6.974314 166.217728 -3.850849 166.217728 0.00155554 Z M 166.217728 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="186.097244" y="33.751793"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 215.679688 74.582031 C 215.679688 70.742188 212.566406 67.628906 208.730469 67.628906 C 204.890625 67.628906 201.777344 70.742188 201.777344 74.582031 C 201.777344 78.421875 204.890625 81.53125 208.730469 81.53125 C 212.566406 81.53125 215.679688 78.421875 215.679688 74.582031 Z M 215.679688 74.582031 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 184.586212 -43.879801 C 184.586212 -40.027397 181.462747 -36.903931 177.614262 -36.903931 C 173.761857 -36.903931 170.638392 -40.027397 170.638392 -43.879801 C 170.638392 -47.732206 173.761857 -50.851752 177.614262 -50.851752 C 181.462747 -50.851752 184.586212 -47.732206 184.586212 -43.879801 Z M 184.586212 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="204.403362" y="77.486728"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 26.355457 -52.384092 L 49.034872 -52.384092 L 49.034872 -35.37551 L 26.355457 -35.37551 Z M 26.355457 -52.384092 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="62.167639" y="77.227576"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-6-1" x="70.421639" y="78.717702"/>
</g>
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
<use xlink:href="#glyph-2-1" x="66.784536" y="55.247477"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 20.684623 -22.270281 L 37.693205 -22.270281 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
<use xlink:href="#glyph-3-2" x="37.872114" y="54.433141"/>
</g>
<g fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1">
<use xlink:href="#glyph-5-1" x="44.052895" y="55.923266"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 37.693205 -22.270281 L 37.693205 -14.295059 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055203 0.00116537 L 1.607107 1.682428 L 3.088499 0.00116537 L 1.607107 -1.684017 Z M 6.055203 0.00116537 " transform="matrix(0, -0.996739, -0.996739, 0, 69.266787, 47.922179)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 37.693205 -22.270281 L 37.693205 -30.241584 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(85.096741%, 32.157898%, 9.411621%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(85.096741%, 32.157898%, 9.411621%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054776 -0.00116537 L 1.610598 1.684017 L 3.088071 -0.00116537 L 1.610598 -1.682428 Z M 6.054776 -0.00116537 " transform="matrix(0, 0.996739, 0.996739, 0, 69.266787, 58.160279)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.971944 0.00155554 L 19.348235 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051767 0.00155554 L 1.60759 1.682819 L 3.088982 0.00155554 L 1.60759 -1.683627 Z M 6.051767 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 48.151558, 30.8453)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 51.405884 0.00155554 L 63.782174 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053027 0.00155554 L 1.608849 1.682819 L 3.086323 0.00155554 L 1.608849 -1.683627 Z M 6.053027 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 92.439365, 30.8453)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 94.581815 0.00155554 L 106.954187 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054059 0.00155554 L 1.609881 1.682819 L 3.087354 0.00155554 L 1.609881 -1.683627 Z M 6.054059 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 135.473493, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-3" x="133.429529" y="27.038752"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 135.265245 0.00155554 L 147.637616 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051539 0.00155554 L 1.607362 1.682819 L 3.088754 0.00155554 L 1.607362 -1.683627 Z M 6.051539 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 176.022879, 30.8453)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 189.218503 -43.879801 L 204.428251 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 217.09375 74.582031 L 221.523438 76.257812 L 220.050781 74.582031 L 221.523438 72.902344 Z M 217.09375 74.582031 "/>
<g clip-path="url(#clip-2)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053459 0.00114106 L 1.609282 1.682404 L 3.086755 0.00114106 L 1.609282 -1.684041 Z M 6.053459 0.00114106 " transform="matrix(-0.996739, 0, 0, 0.996739, 223.127472, 74.580894)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-4" x="225.688734" y="70.773688"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 177.614262 0.00155554 L 177.614262 -32.27164 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052563 0.00188157 L 1.608385 1.683145 L 3.085859 0.00188157 L 1.608385 -1.6833 Z M 6.052563 0.00188157 " transform="matrix(0, 0.996739, 0.996739, 0, 208.728593, 60.182015)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 210.714844 30.84375 C 210.714844 29.75 209.824219 28.859375 208.730469 28.859375 C 207.632812 28.859375 206.742188 29.75 206.742188 30.84375 C 206.742188 31.941406 207.632812 32.832031 208.730469 32.832031 C 209.824219 32.832031 210.714844 31.941406 210.714844 30.84375 Z M 210.714844 30.84375 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 166.217728 0.00155554 L 199.79596 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 234.042969 30.84375 L 229.613281 29.167969 L 231.085938 30.84375 L 229.613281 32.523438 Z M 234.042969 30.84375 "/>
<g clip-path="url(#clip-3)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052683 0.00155554 L 1.608505 1.682819 L 3.085979 0.00155554 L 1.608505 -1.683627 Z M 6.052683 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 228.01002, 30.8453)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-5" x="226.424328" y="25.108068"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.608168 0.00155554 L -26.817915 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.055324 0.00155554 L 1.607227 1.682819 L 3.08862 0.00155554 L 1.607227 -1.683627 Z M 6.055324 0.00155554 " transform="matrix(0.996739, 0, 0, -0.996739, 17.29645, 30.8453)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-6" x="8.773301" y="27.038752"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 170.638392 -43.879801 L 54.164879 -43.879801 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 82.480469 74.582031 L 86.910156 76.257812 L 85.433594 74.582031 L 86.910156 72.902344 Z M 82.480469 74.582031 "/>
<g clip-path="url(#clip-4)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052064 0.00114106 L 1.607886 1.682404 L 3.089278 0.00114106 L 1.607886 -1.684041 Z M 6.052064 0.00114106 " transform="matrix(-0.996739, 0, 0, 0.996739, 88.5128, 74.580894)"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 25.85774 -43.879801 L -0.0000067489 -43.879801 L -0.0000067489 -11.606605 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.052968 0.0000067489 L 1.60879 1.68127 L 3.086263 0.0000067489 L 1.60879 -1.681256 Z M 6.052968 0.0000067489 " transform="matrix(0, -0.996739, -0.996739, 0, 31.695319, 45.244169)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 159.245777 11.605797 L 159.245777 26.815545 " transform="matrix(0.996739, 0, 0, -0.996739, 31.695319, 30.8453)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053785 0.000127299 L 1.609608 1.68139 L 3.087081 0.000127299 L 1.609608 -1.681136 Z M 6.053785 0.000127299 " transform="matrix(0, 0.996739, 0.996739, 0, 190.421748, 16.446422)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-7" x="194.226652" y="14.818726"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-6-2" x="199.394746" y="16.307855"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="172.796pt" height="54.393pt" viewBox="0 0 172.796 54.393">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 7.109375 -2.578125 C 7.109375 -2.65625 7.0625 -2.6875 6.984375 -2.6875 C 6.75 -2.6875 6.171875 -2.65625 5.9375 -2.65625 L 4.5625 -2.6875 C 4.46875 -2.6875 4.359375 -2.6875 4.359375 -2.5 C 4.359375 -2.390625 4.4375 -2.390625 4.65625 -2.390625 C 4.65625 -2.390625 4.953125 -2.390625 5.171875 -2.359375 C 5.4375 -2.34375 5.484375 -2.3125 5.484375 -2.171875 C 5.484375 -2.09375 5.375 -1.640625 5.28125 -1.28125 C 5 -0.203125 3.71875 -0.09375 3.375 -0.09375 C 2.421875 -0.09375 1.390625 -0.65625 1.390625 -2.15625 C 1.390625 -2.46875 1.484375 -4.09375 2.53125 -5.375 C 3.0625 -6.046875 4.015625 -6.640625 4.984375 -6.640625 C 6 -6.640625 6.578125 -5.890625 6.578125 -4.75 C 6.578125 -4.34375 6.546875 -4.34375 6.546875 -4.234375 C 6.546875 -4.140625 6.65625 -4.140625 6.6875 -4.140625 C 6.828125 -4.140625 6.828125 -4.15625 6.875 -4.34375 L 7.5 -6.859375 C 7.5 -6.875 7.46875 -6.953125 7.390625 -6.953125 C 7.359375 -6.953125 7.34375 -6.9375 7.234375 -6.828125 L 6.546875 -6.078125 C 6.453125 -6.21875 6 -6.953125 4.90625 -6.953125 C 2.71875 -6.953125 0.5 -4.765625 0.5 -2.484375 C 0.5 -0.921875 1.59375 0.21875 3.1875 0.21875 C 3.625 0.21875 4.0625 0.125 4.421875 -0.015625 C 4.90625 -0.21875 5.09375 -0.421875 5.28125 -0.625 C 5.359375 -0.375 5.625 -0.015625 5.71875 -0.015625 C 5.765625 -0.015625 5.78125 -0.046875 5.78125 -0.046875 C 5.8125 -0.0625 5.90625 -0.4375 5.953125 -0.65625 L 6.140625 -1.40625 C 6.1875 -1.578125 6.234375 -1.75 6.265625 -1.90625 C 6.375 -2.359375 6.390625 -2.375 6.953125 -2.390625 C 7 -2.390625 7.109375 -2.390625 7.109375 -2.578125 Z M 7.109375 -2.578125 "/>
</g>
<g id="glyph-0-1">
<path d="M 6.8125 -3.671875 C 6.8125 -4.203125 6.546875 -4.359375 6.375 -4.359375 C 6.125 -4.359375 5.890625 -4.09375 5.890625 -3.890625 C 5.890625 -3.75 5.9375 -3.703125 6.03125 -3.625 C 6.140625 -3.515625 6.390625 -3.25 6.390625 -2.78125 C 6.390625 -2.4375 6.109375 -1.484375 5.84375 -0.96875 C 5.59375 -0.453125 5.25 -0.109375 4.765625 -0.109375 C 4.296875 -0.109375 4.03125 -0.40625 4.03125 -0.96875 C 4.03125 -1.25 4.09375 -1.546875 4.140625 -1.6875 L 4.5625 -3.34375 C 4.609375 -3.5625 4.703125 -3.921875 4.703125 -3.984375 C 4.703125 -4.15625 4.5625 -4.25 4.421875 -4.25 C 4.296875 -4.25 4.125 -4.171875 4.046875 -3.96875 C 4.015625 -3.90625 3.5625 -2.015625 3.484375 -1.765625 C 3.421875 -1.46875 3.40625 -1.296875 3.40625 -1.109375 C 3.40625 -1 3.40625 -0.984375 3.40625 -0.9375 C 3.1875 -0.421875 2.890625 -0.109375 2.5 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1 C 1.71875 -1.328125 1.765625 -1.703125 2.234375 -2.921875 C 2.34375 -3.21875 2.390625 -3.359375 2.390625 -3.546875 C 2.390625 -4 2.078125 -4.359375 1.59375 -4.359375 C 0.65625 -4.359375 0.28125 -2.921875 0.28125 -2.84375 C 0.28125 -2.734375 0.40625 -2.734375 0.40625 -2.734375 C 0.5 -2.734375 0.515625 -2.765625 0.5625 -2.921875 C 0.828125 -3.828125 1.21875 -4.140625 1.5625 -4.140625 C 1.640625 -4.140625 1.796875 -4.125 1.796875 -3.8125 C 1.796875 -3.5625 1.703125 -3.296875 1.625 -3.125 C 1.1875 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.734375 0.109375 2.46875 0.109375 C 2.640625 0.109375 3.109375 0.109375 3.5 -0.578125 C 3.75 0.046875 4.4375 0.109375 4.734375 0.109375 C 5.46875 0.109375 5.90625 -0.515625 6.15625 -1.109375 C 6.5 -1.875 6.8125 -3.1875 6.8125 -3.671875 Z M 6.8125 -3.671875 "/>
</g>
<g id="glyph-1-0">
<path d="M 2.515625 -4.71875 C 2.578125 -4.875 2.578125 -4.953125 2.578125 -5 C 2.578125 -5.296875 2.3125 -5.515625 2.03125 -5.515625 C 1.640625 -5.515625 1.546875 -5.1875 1.515625 -5.0625 L 0.3125 -0.765625 C 0.3125 -0.71875 0.28125 -0.671875 0.28125 -0.625 C 0.28125 -0.515625 0.546875 -0.4375 0.625 -0.4375 C 0.625 -0.4375 0.6875 -0.4375 0.75 -0.578125 Z M 2.515625 -4.71875 "/>
</g>
<g id="glyph-2-0">
<path d="M 8.015625 -2.96875 C 8.015625 -3.1875 7.828125 -3.1875 7.65625 -3.1875 L 4.5 -3.1875 L 4.5 -6.34375 C 4.5 -6.515625 4.5 -6.71875 4.296875 -6.71875 C 4.078125 -6.71875 4.078125 -6.515625 4.078125 -6.34375 L 4.078125 -3.1875 L 0.921875 -3.1875 C 0.75 -3.1875 0.546875 -3.1875 0.546875 -2.984375 C 0.546875 -2.765625 0.734375 -2.765625 0.921875 -2.765625 L 4.078125 -2.765625 L 4.078125 0.390625 C 4.078125 0.5625 4.078125 0.765625 4.28125 0.765625 C 4.5 0.765625 4.5 0.578125 4.5 0.390625 L 4.5 -2.765625 L 7.65625 -2.765625 C 7.828125 -2.765625 8.015625 -2.765625 8.015625 -2.96875 Z M 8.015625 -2.96875 "/>
</g>
<g id="glyph-3-0">
<path d="M 7.734375 -0.078125 C 7.734375 -0.078125 7.734375 -0.109375 7.6875 -0.203125 L 4.359375 -6.875 C 4.28125 -7.015625 4.265625 -7.0625 4.09375 -7.0625 C 3.9375 -7.0625 3.921875 -7.015625 3.84375 -6.875 L 0.515625 -0.203125 C 0.46875 -0.109375 0.46875 -0.078125 0.46875 -0.078125 C 0.46875 0 0.515625 0 0.6875 0 L 7.515625 0 C 7.6875 0 7.734375 0 7.734375 -0.078125 Z M 6.4375 -0.75 L 1.125 -0.75 L 3.78125 -6.078125 Z M 6.4375 -0.75 "/>
</g>
<g id="glyph-4-0">
<path d="M 3.6875 -4.609375 C 3.6875 -4.671875 3.640625 -4.703125 3.578125 -4.703125 C 3.4375 -4.703125 3.265625 -4.6875 3.125 -4.6875 L 2.65625 -4.671875 L 2.171875 -4.6875 C 2.03125 -4.6875 1.859375 -4.703125 1.703125 -4.703125 C 1.65625 -4.703125 1.5625 -4.703125 1.5625 -4.546875 C 1.5625 -4.453125 1.640625 -4.453125 1.78125 -4.453125 C 1.78125 -4.453125 1.921875 -4.453125 2.046875 -4.4375 C 2.1875 -4.4375 2.234375 -4.421875 2.234375 -4.34375 C 2.234375 -4.3125 2.21875 -4.265625 2.203125 -4.203125 L 1.28125 -0.546875 C 1.234375 -0.3125 1.21875 -0.25 0.703125 -0.25 C 0.515625 -0.25 0.4375 -0.25 0.4375 -0.09375 C 0.4375 -0.09375 0.4375 0 0.546875 0 C 0.765625 0 1.28125 -0.03125 1.484375 -0.03125 L 1.953125 -0.015625 C 2.109375 -0.015625 2.28125 0 2.4375 0 C 2.46875 0 2.578125 0 2.578125 -0.15625 C 2.578125 -0.25 2.5 -0.25 2.359375 -0.25 C 2.359375 -0.25 2.203125 -0.25 2.0625 -0.265625 C 1.90625 -0.28125 1.90625 -0.296875 1.90625 -0.359375 C 1.90625 -0.359375 1.90625 -0.40625 1.921875 -0.515625 L 2.84375 -4.15625 C 2.90625 -4.390625 2.921875 -4.453125 3.4375 -4.453125 C 3.609375 -4.453125 3.6875 -4.453125 3.6875 -4.609375 Z M 3.6875 -4.609375 "/>
</g>
</g>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 12 0 L 161 0 L 161 53.792969 L 12 53.792969 Z M 12 0 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 85 17 L 128 17 L 128 53.792969 L 85 53.792969 Z M 85 17 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 80 22 L 113 22 L 113 53.792969 L 80 53.792969 Z M 80 22 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 110 22 L 144 22 L 144 53.792969 L 110 53.792969 Z M 110 22 "/>
</clipPath>
<clipPath id="clip-4">
<path clip-rule="nonzero" d="M 151 22 L 171.742188 22 L 171.742188 53.792969 L 151 53.792969 Z M 151 22 "/>
</clipPath>
</defs>
<path fill-rule="nonzero" fill="rgb(79.998779%, 79.998779%, 79.998779%)" fill-opacity="1" d="M 12.746094 52.804688 L 159.847656 52.804688 L 159.847656 0.988281 L 12.746094 0.988281 Z M 12.746094 52.804688 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-dasharray="2.98883 2.98883" stroke-miterlimit="10" d="M -130.926826 -14.978963 L 17.816319 -14.978963 L 17.816319 37.41569 L -130.926826 37.41569 Z M -130.926826 -14.978963 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="146.105691" y="11.003209"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="153.852829" y="11.003209"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -11.337464 -8.505172 L 11.338579 -8.505172 L 11.338579 8.502847 L -11.337464 8.502847 Z M -11.337464 -8.505172 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="138.355183" y="41.35747"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 113.699219 37.992188 C 113.699219 34.183594 110.613281 31.09375 106.804688 31.09375 C 102.996094 31.09375 99.90625 34.183594 99.90625 37.992188 C 99.90625 41.800781 102.996094 44.886719 106.804688 44.886719 C 110.613281 44.886719 113.699219 41.800781 113.699219 37.992188 Z M 113.699219 37.992188 "/>
<g clip-path="url(#clip-1)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -28.847113 -0.00116224 C -28.847113 3.849934 -31.967488 6.974259 -35.818584 6.974259 C -39.669679 6.974259 -42.794004 3.849934 -42.794004 -0.00116224 C -42.794004 -3.852258 -39.669679 -6.972633 -35.818584 -6.972633 C -31.967488 -6.972633 -28.847113 -3.852258 -28.847113 -0.00116224 Z M -28.847113 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-2-0" x="102.51514" y="40.874856"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -72.429668 13.93388 L -49.753626 13.93388 L -49.753626 30.941899 L -72.429668 30.941899 Z M -72.429668 13.93388 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-3-0" x="75.446217" y="18.589549"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="83.656593" y="20.06805"/>
</g>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -113.11304 13.93388 L -90.433047 13.93388 L -90.433047 30.941899 L -113.11304 30.941899 Z M -113.11304 13.93388 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="35.792731" y="17.183243"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-4-0" x="42.846019" y="18.661744"/>
</g>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 20.628906 37.992188 C 20.628906 36.902344 19.746094 36.019531 18.65625 36.019531 C 17.570312 36.019531 16.6875 36.902344 16.6875 37.992188 C 16.6875 39.078125 17.570312 39.960938 18.65625 39.960938 C 19.746094 39.960938 20.628906 39.078125 20.628906 37.992188 Z M 20.628906 37.992188 "/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -124.950716 -0.00116224 L -124.950716 22.43789 L -118.243884 22.43789 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053667 0.000209549 L 1.610095 1.682842 L 3.087336 0.000209549 L 1.610095 -1.682423 Z M 6.053667 0.000209549 " transform="matrix(0.988964, 0, 0, -0.988964, 22.481893, 15.800988)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -141.958735 -0.00116224 L -47.427169 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 98.503906 37.992188 L 94.109375 36.328125 L 95.570312 37.992188 L 94.109375 39.65625 Z M 98.503906 37.992188 "/>
<g clip-path="url(#clip-2)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053012 -0.00116224 L 1.60944 1.68147 L 3.086681 -0.00116224 L 1.60944 -1.683795 Z M 6.053012 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 92.517697, 37.991038)"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -89.935367 22.43789 L -77.560513 22.43789 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.054999 0.000209549 L 1.607477 1.682842 L 3.088667 0.000209549 L 1.607477 -1.682423 Z M 6.054999 0.000209549 " transform="matrix(0.988964, 0, 0, -0.988964, 62.714952, 15.800988)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -49.255946 22.43789 L -35.818584 22.43789 L -35.818584 11.607423 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053728 0.000466423 L 1.610156 1.683099 L 3.087397 0.000466423 L 1.610156 -1.682166 Z M 6.053728 0.000466423 " transform="matrix(0, 0.988964, 0.988964, 0, 106.804226, 23.704489)"/>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M -28.847113 -0.00116224 L -16.472258 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 129.117188 37.992188 L 124.722656 36.328125 L 126.1875 37.992188 L 124.722656 39.65625 Z M 129.117188 37.992188 "/>
<g clip-path="url(#clip-3)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.051893 -0.00116224 L 1.608321 1.68147 L 3.089512 -0.00116224 L 1.608321 -1.683795 Z M 6.051893 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 123.132085, 37.991038)"/>
</g>
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 11.836259 -0.00116224 L 24.211113 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 142.227964, 37.991038)"/>
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 169.351562 37.992188 L 164.957031 36.328125 L 166.417969 37.992188 L 164.957031 39.65625 Z M 169.351562 37.992188 "/>
<g clip-path="url(#clip-4)">
<path fill="none" stroke-width="0.99628" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 6.053225 -0.00116224 L 1.609653 1.68147 L 3.086894 -0.00116224 L 1.609653 -1.683795 Z M 6.053225 -0.00116224 " transform="matrix(0.988964, 0, 0, -0.988964, 163.365143, 37.991038)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

4
paper/preamble.tex Normal file
View File

@@ -0,0 +1,4 @@
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{cases}
\usepackage{empheq}

34
paper/preamble_extra.tex Normal file
View File

@@ -0,0 +1,34 @@
\usepackage{float}
\usepackage{enumitem}
\usepackage{xpatch} % Recommanded for biblatex
\usepackage[ % use biblatex for bibliography
backend=biber, % use biber backend (bibtex replacement) or bibtex
style=ieee, % bib style
hyperref=true, % activate hyperref support
backref=true, % activate backrefs
isbn=false, % don't show isbn tags
url=false, % don't show url tags
doi=false, % don't show doi tags
urldate=long, % display type for dates
maxnames=3, %
minnames=1, %
maxbibnames=5, %
minbibnames=3, %
maxcitenames=2, %
mincitenames=1 %
]{biblatex}
\setlength\bibitemsep{1.1\itemsep}
\usepackage{caption}
\usepackage{subcaption}
% \makeatletter
% \preto\Gin@extensions{png,}
% \DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
% \preto\Gin@extensions{gif,}
% \DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png}
% \makeatother
\usepackage{hypcap}